patches/binutils/2.18/130-avr32-atmel-v1.0.1.patch
author Arnaud Lacombe <lacombar@gmail.com>
Tue Aug 03 06:17:51 2010 +0200 (2010-08-03)
changeset 2064 f5ebe8c429dc
permissions -rw-r--r--
libc/uClibc: add uClibc 0.9.30.3

This version has been released a couple of month ago, but it never reached
crosstool-ng tree. This may be linked to the fact that the current 0.9.30.2,
once patched, has nothing much different from 0.9.30.3, released.

I'm not including any patch with this upgrade, on purpose.

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
mgl@1371
     1
--- a/bfd/archures.c
mgl@1371
     2
+++ b/bfd/archures.c
mgl@1371
     3
@@ -346,6 +346,11 @@ DESCRIPTION
mgl@1371
     4
 .#define bfd_mach_avr4		4
mgl@1371
     5
 .#define bfd_mach_avr5		5
mgl@1371
     6
 .#define bfd_mach_avr6		6
mgl@1371
     7
+.  bfd_arch_avr32,     {* Atmel AVR32 *}
mgl@1371
     8
+.#define bfd_mach_avr32_ap	7000
mgl@1371
     9
+.#define bfd_mach_avr32_uc	3000
mgl@1371
    10
+.#define bfd_mach_avr32_ucr1    3001
mgl@1371
    11
+.#define bfd_mach_avr32_ucr2    3002
mgl@1371
    12
 .  bfd_arch_bfin,        {* ADI Blackfin *}
mgl@1371
    13
 .#define bfd_mach_bfin          1
mgl@1371
    14
 .  bfd_arch_cr16,       {* National Semiconductor CompactRISC (ie CR16). *}
mgl@1371
    15
@@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
mgl@1371
    16
 extern const bfd_arch_info_type bfd_arc_arch;
mgl@1371
    17
 extern const bfd_arch_info_type bfd_arm_arch;
mgl@1371
    18
 extern const bfd_arch_info_type bfd_avr_arch;
mgl@1371
    19
+extern const bfd_arch_info_type bfd_avr32_arch;
mgl@1371
    20
 extern const bfd_arch_info_type bfd_bfin_arch;
mgl@1371
    21
 extern const bfd_arch_info_type bfd_cr16_arch;
mgl@1371
    22
 extern const bfd_arch_info_type bfd_cr16c_arch;
mgl@1371
    23
@@ -509,6 +515,7 @@ static const bfd_arch_info_type * const 
mgl@1371
    24
     &bfd_arc_arch,
mgl@1371
    25
     &bfd_arm_arch,
mgl@1371
    26
     &bfd_avr_arch,
mgl@1371
    27
+    &bfd_avr32_arch,
mgl@1371
    28
     &bfd_bfin_arch,
mgl@1371
    29
     &bfd_cr16_arch,
mgl@1371
    30
     &bfd_cr16c_arch,
mgl@1371
    31
--- a/bfd/config.bfd
mgl@1371
    32
+++ b/bfd/config.bfd
mgl@1371
    33
@@ -335,6 +335,10 @@ case "${targ}" in
mgl@1371
    34
     targ_underscore=yes
mgl@1371
    35
     ;;
mgl@1371
    36
 
mgl@1371
    37
+  avr32-*-*)
mgl@1371
    38
+    targ_defvec=bfd_elf32_avr32_vec
mgl@1371
    39
+    ;;
mgl@1371
    40
+
mgl@1371
    41
   c30-*-*aout* | tic30-*-*aout*)
mgl@1371
    42
     targ_defvec=tic30_aout_vec
mgl@1371
    43
     ;;
mgl@1371
    44
--- a/bfd/configure.in
mgl@1371
    45
+++ b/bfd/configure.in
mgl@1371
    46
@@ -8,7 +8,7 @@ AC_CONFIG_SRCDIR([libbfd.c])
mgl@1371
    47
 AC_CANONICAL_TARGET
mgl@1371
    48
 AC_ISC_POSIX
mgl@1371
    49
 
mgl@1371
    50
-AM_INIT_AUTOMAKE(bfd, 2.18)
mgl@1371
    51
+AM_INIT_AUTOMAKE(bfd, 2.18.atmel.1.0.1.avr32linux.1)
mgl@1371
    52
 
mgl@1371
    53
 dnl These must be called before AM_PROG_LIBTOOL, because it may want
mgl@1371
    54
 dnl to call AC_CHECK_PROG.
mgl@1371
    55
@@ -619,6 +619,7 @@ do
mgl@1371
    56
     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
mgl@1371
    57
     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
mgl@1371
    58
     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
mgl@1371
    59
+    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
mgl@1371
    60
     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
mgl@1371
    61
     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
mgl@1371
    62
     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
mgl@1371
    63
--- /dev/null
mgl@1371
    64
+++ b/bfd/cpu-avr32.c
mgl@1371
    65
@@ -0,0 +1,51 @@
mgl@1371
    66
+/* BFD library support routines for AVR32.
mgl@1371
    67
+   Copyright 2003-2006 Atmel Corporation.
mgl@1371
    68
+
mgl@1371
    69
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
    70
+
mgl@1371
    71
+   This is part of BFD, the Binary File Descriptor library.
mgl@1371
    72
+
mgl@1371
    73
+   This program is free software; you can redistribute it and/or modify
mgl@1371
    74
+   it under the terms of the GNU General Public License as published by
mgl@1371
    75
+   the Free Software Foundation; either version 2 of the License, or
mgl@1371
    76
+   (at your option) any later version.
mgl@1371
    77
+
mgl@1371
    78
+   This program is distributed in the hope that it will be useful,
mgl@1371
    79
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
    80
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
    81
+   GNU General Public License for more details.
mgl@1371
    82
+
mgl@1371
    83
+   You should have received a copy of the GNU General Public License
mgl@1371
    84
+   along with this program; if not, write to the Free Software
mgl@1371
    85
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
mgl@1371
    86
+
mgl@1371
    87
+#include "bfd.h"
mgl@1371
    88
+#include "sysdep.h"
mgl@1371
    89
+#include "libbfd.h"
mgl@1371
    90
+
mgl@1371
    91
+#define N(machine, print, default, next)			\
mgl@1371
    92
+  {								\
mgl@1371
    93
+    32,				/* 32 bits in a word */		\
mgl@1371
    94
+    32,				/* 32 bits in an address */	\
mgl@1371
    95
+    8,				/* 8 bits in a byte */		\
mgl@1371
    96
+    bfd_arch_avr32,		/* architecture */		\
mgl@1371
    97
+    machine,			/* machine */			\
mgl@1371
    98
+    "avr32",			/* arch name */			\
mgl@1371
    99
+    print,			/* printable name */		\
mgl@1371
   100
+    1,				/* section align power */	\
mgl@1371
   101
+    default,			/* the default machine? */	\
mgl@1371
   102
+    bfd_default_compatible,					\
mgl@1371
   103
+    bfd_default_scan,						\
mgl@1371
   104
+    next,							\
mgl@1371
   105
+  }
mgl@1371
   106
+
mgl@1371
   107
+static const bfd_arch_info_type cpu_info[] =
mgl@1371
   108
+{
mgl@1371
   109
+  N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
mgl@1371
   110
+  N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
mgl@1371
   111
+  N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
mgl@1371
   112
+  N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
mgl@1371
   113
+};
mgl@1371
   114
+
mgl@1371
   115
+const bfd_arch_info_type bfd_avr32_arch =
mgl@1371
   116
+  N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
mgl@1371
   117
--- /dev/null
mgl@1371
   118
+++ b/bfd/elf32-avr32.c
mgl@1371
   119
@@ -0,0 +1,3915 @@
mgl@1371
   120
+/* AVR32-specific support for 32-bit ELF.
mgl@1371
   121
+   Copyright 2003-2006 Atmel Corporation.
mgl@1371
   122
+
mgl@1371
   123
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
   124
+
mgl@1371
   125
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
   126
+
mgl@1371
   127
+   This program is free software; you can redistribute it and/or modify
mgl@1371
   128
+   it under the terms of the GNU General Public License as published by
mgl@1371
   129
+   the Free Software Foundation; either version 2 of the License, or
mgl@1371
   130
+   (at your option) any later version.
mgl@1371
   131
+
mgl@1371
   132
+   This program is distributed in the hope that it will be useful,
mgl@1371
   133
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
   134
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
   135
+   GNU General Public License for more details.
mgl@1371
   136
+
mgl@1371
   137
+   You should have received a copy of the GNU General Public License
mgl@1371
   138
+   along with this program; if not, write to the Free Software
mgl@1371
   139
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
mgl@1371
   140
+
mgl@1371
   141
+#include "bfd.h"
mgl@1371
   142
+#include "sysdep.h"
mgl@1371
   143
+#include "bfdlink.h"
mgl@1371
   144
+#include "libbfd.h"
mgl@1371
   145
+#include "elf-bfd.h"
mgl@1371
   146
+#include "elf/avr32.h"
mgl@1371
   147
+#include "elf32-avr32.h"
mgl@1371
   148
+
mgl@1371
   149
+#define xDEBUG
mgl@1371
   150
+#define xRELAX_DEBUG
mgl@1371
   151
+
mgl@1371
   152
+#ifdef DEBUG
mgl@1371
   153
+# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
mgl@1371
   154
+#else
mgl@1371
   155
+# define pr_debug(fmt, args...) do { } while (0)
mgl@1371
   156
+#endif
mgl@1371
   157
+
mgl@1371
   158
+#ifdef RELAX_DEBUG
mgl@1371
   159
+# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
mgl@1371
   160
+#else
mgl@1371
   161
+# define RDBG(fmt, args...) do { } while (0)
mgl@1371
   162
+#endif
mgl@1371
   163
+
mgl@1371
   164
+/* When things go wrong, we want it to blow up, damnit! */
mgl@1371
   165
+#undef BFD_ASSERT
mgl@1371
   166
+#undef abort
mgl@1371
   167
+#define BFD_ASSERT(expr)					\
mgl@1371
   168
+  do								\
mgl@1371
   169
+    {								\
mgl@1371
   170
+      if (!(expr))						\
mgl@1371
   171
+	{							\
mgl@1371
   172
+	  bfd_assert(__FILE__, __LINE__);			\
mgl@1371
   173
+	  abort();						\
mgl@1371
   174
+	}							\
mgl@1371
   175
+    }								\
mgl@1371
   176
+  while (0)
mgl@1371
   177
+
mgl@1371
   178
+/* The name of the dynamic interpreter. This is put in the .interp section. */
mgl@1371
   179
+#define ELF_DYNAMIC_INTERPRETER		"/lib/ld.so.1"
mgl@1371
   180
+
mgl@1371
   181
+#define AVR32_GOT_HEADER_SIZE		8
mgl@1371
   182
+#define AVR32_FUNCTION_STUB_SIZE	8
mgl@1371
   183
+
mgl@1371
   184
+#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
mgl@1371
   185
+#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
mgl@1371
   186
+#define ELF_R_SYM(x) ELF32_R_SYM(x)
mgl@1371
   187
+
mgl@1371
   188
+#define NOP_OPCODE 0xd703
mgl@1371
   189
+
mgl@1371
   190
+
mgl@1371
   191
+/* Mapping between BFD relocations and ELF relocations */
mgl@1371
   192
+
mgl@1371
   193
+static reloc_howto_type *
mgl@1371
   194
+bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
mgl@1371
   195
+
mgl@1371
   196
+static reloc_howto_type *
mgl@1371
   197
+bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
mgl@1371
   198
+
mgl@1371
   199
+static void
mgl@1371
   200
+avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
mgl@1371
   201
+
mgl@1371
   202
+/* Generic HOWTO */
mgl@1371
   203
+#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask)	\
mgl@1371
   204
+  HOWTO(name, align, size, bitsize, pcrel, bitpos,			\
mgl@1371
   205
+	complain_overflow_##complain, bfd_elf_generic_reloc, #name,	\
mgl@1371
   206
+	FALSE, 0, mask, pcrel)
mgl@1371
   207
+
mgl@1371
   208
+static reloc_howto_type elf_avr32_howto_table[] = {
mgl@1371
   209
+  /*   NAME		 ALN SZ BSZ PCREL  BP COMPLAIN  MASK	    */
mgl@1371
   210
+  GENH(R_AVR32_NONE,	  0, 0, 0,  FALSE, 0, dont,	0x00000000),
mgl@1371
   211
+
mgl@1371
   212
+  GENH(R_AVR32_32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   213
+  GENH(R_AVR32_16,	  0, 1, 16, FALSE, 0, bitfield,	0x0000ffff),
mgl@1371
   214
+  GENH(R_AVR32_8,	  0, 0,  8, FALSE, 0, bitfield,	0x000000ff),
mgl@1371
   215
+  GENH(R_AVR32_32_PCREL,  0, 2, 32, TRUE,  0, signed,   0xffffffff),
mgl@1371
   216
+  GENH(R_AVR32_16_PCREL,  0, 1, 16, TRUE,  0, signed,   0x0000ffff),
mgl@1371
   217
+  GENH(R_AVR32_8_PCREL,	  0, 0,  8, TRUE,  0, signed,   0x000000ff),
mgl@1371
   218
+
mgl@1371
   219
+  /* Difference between two symbol (sym2 - sym1).  The reloc encodes
mgl@1371
   220
+     the value of sym1.  The field contains the difference before any
mgl@1371
   221
+     relaxing is done.  */
mgl@1371
   222
+  GENH(R_AVR32_DIFF32,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   223
+  GENH(R_AVR32_DIFF16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
mgl@1371
   224
+  GENH(R_AVR32_DIFF8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
mgl@1371
   225
+
mgl@1371
   226
+  GENH(R_AVR32_GOT32,	  0, 2, 32, FALSE, 0, signed,	0xffffffff),
mgl@1371
   227
+  GENH(R_AVR32_GOT16,	  0, 1, 16, FALSE, 0, signed,	0x0000ffff),
mgl@1371
   228
+  GENH(R_AVR32_GOT8,	  0, 0,  8, FALSE, 0, signed,	0x000000ff),
mgl@1371
   229
+
mgl@1371
   230
+  GENH(R_AVR32_21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
mgl@1371
   231
+  GENH(R_AVR32_16U,	  0, 2, 16, FALSE, 0, unsigned,	0x0000ffff),
mgl@1371
   232
+  GENH(R_AVR32_16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
mgl@1371
   233
+  GENH(R_AVR32_8S,	  0, 1,  8, FALSE, 4, signed,	0x00000ff0),
mgl@1371
   234
+  GENH(R_AVR32_8S_EXT,	  0, 2,  8, FALSE, 0, signed,	0x000000ff),
mgl@1371
   235
+
mgl@1371
   236
+  GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE,  0, signed,	0x1e10ffff),
mgl@1371
   237
+  GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE,  0, signed,	0x0000ffff),
mgl@1371
   238
+  GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
mgl@1371
   239
+  GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE,  0, signed,	0x0000ffff),
mgl@1371
   240
+  GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
mgl@1371
   241
+  GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE,  4, signed,	0x00000ff3),
mgl@1371
   242
+  GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE,  0, unsigned, 0x000000ff),
mgl@1371
   243
+  GENH(R_AVR32_9H_PCREL,  1, 1,  8, TRUE,  4, signed,	0x00000ff0),
mgl@1371
   244
+  GENH(R_AVR32_9UW_PCREL, 2, 1,  7, TRUE,  4, unsigned,	0x000007f0),
mgl@1371
   245
+
mgl@1371
   246
+  GENH(R_AVR32_HI16,	 16, 2, 16, FALSE, 0, dont,	0x0000ffff),
mgl@1371
   247
+  GENH(R_AVR32_LO16,	  0, 2, 16, FALSE, 0, dont,	0x0000ffff),
mgl@1371
   248
+
mgl@1371
   249
+  GENH(R_AVR32_GOTPC,	  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   250
+  GENH(R_AVR32_GOTCALL,   2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
mgl@1371
   251
+  GENH(R_AVR32_LDA_GOT,	  2, 2, 21, FALSE, 0, signed,	0x1e10ffff),
mgl@1371
   252
+  GENH(R_AVR32_GOT21S,	  0, 2, 21, FALSE, 0, signed,	0x1e10ffff),
mgl@1371
   253
+  GENH(R_AVR32_GOT18SW,	  2, 2, 16, FALSE, 0, signed,	0x0000ffff),
mgl@1371
   254
+  GENH(R_AVR32_GOT16S,	  0, 2, 16, FALSE, 0, signed,	0x0000ffff),
mgl@1371
   255
+  GENH(R_AVR32_GOT7UW,	  2, 1,  5, FALSE, 4, unsigned, 0x000001f0),
mgl@1371
   256
+
mgl@1371
   257
+  GENH(R_AVR32_32_CPENT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   258
+  GENH(R_AVR32_CPCALL,	  2, 2, 16, TRUE,  0, signed,	0x0000ffff),
mgl@1371
   259
+  GENH(R_AVR32_16_CP,	  0, 2, 16, TRUE,  0, signed,	0x0000ffff),
mgl@1371
   260
+  GENH(R_AVR32_9W_CP,	  2, 1,  7, TRUE,  4, unsigned, 0x000007f0),
mgl@1371
   261
+
mgl@1371
   262
+  GENH(R_AVR32_RELATIVE,  0, 2, 32, FALSE, 0, signed,	0xffffffff),
mgl@1371
   263
+  GENH(R_AVR32_GLOB_DAT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   264
+  GENH(R_AVR32_JMP_SLOT,  0, 2, 32, FALSE, 0, dont,	0xffffffff),
mgl@1371
   265
+
mgl@1371
   266
+  GENH(R_AVR32_ALIGN,	  0, 1, 0,  FALSE, 0, unsigned, 0x00000000),
mgl@1371
   267
+
mgl@1371
   268
+  GENH(R_AVR32_15S,	  2, 2, 15, FALSE, 0, signed,	0x00007fff),
mgl@1371
   269
+};
mgl@1371
   270
+
mgl@1371
   271
+struct elf_reloc_map
mgl@1371
   272
+{
mgl@1371
   273
+  bfd_reloc_code_real_type bfd_reloc_val;
mgl@1371
   274
+  unsigned char elf_reloc_val;
mgl@1371
   275
+};
mgl@1371
   276
+
mgl@1371
   277
+static const struct elf_reloc_map avr32_reloc_map[] =
mgl@1371
   278
+{
mgl@1371
   279
+  { BFD_RELOC_NONE,			R_AVR32_NONE },
mgl@1371
   280
+
mgl@1371
   281
+  { BFD_RELOC_32,			R_AVR32_32 },
mgl@1371
   282
+  { BFD_RELOC_16,			R_AVR32_16 },
mgl@1371
   283
+  { BFD_RELOC_8,			R_AVR32_8 },
mgl@1371
   284
+  { BFD_RELOC_32_PCREL,			R_AVR32_32_PCREL },
mgl@1371
   285
+  { BFD_RELOC_16_PCREL,			R_AVR32_16_PCREL },
mgl@1371
   286
+  { BFD_RELOC_8_PCREL,			R_AVR32_8_PCREL },
mgl@1371
   287
+  { BFD_RELOC_AVR32_DIFF32,		R_AVR32_DIFF32 },
mgl@1371
   288
+  { BFD_RELOC_AVR32_DIFF16,		R_AVR32_DIFF16 },
mgl@1371
   289
+  { BFD_RELOC_AVR32_DIFF8,		R_AVR32_DIFF8 },
mgl@1371
   290
+  { BFD_RELOC_AVR32_GOT32,		R_AVR32_GOT32 },
mgl@1371
   291
+  { BFD_RELOC_AVR32_GOT16,		R_AVR32_GOT16 },
mgl@1371
   292
+  { BFD_RELOC_AVR32_GOT8,		R_AVR32_GOT8 },
mgl@1371
   293
+
mgl@1371
   294
+  { BFD_RELOC_AVR32_21S,		R_AVR32_21S },
mgl@1371
   295
+  { BFD_RELOC_AVR32_16U,		R_AVR32_16U },
mgl@1371
   296
+  { BFD_RELOC_AVR32_16S,		R_AVR32_16S },
mgl@1371
   297
+  { BFD_RELOC_AVR32_SUB5,		R_AVR32_16S },
mgl@1371
   298
+  { BFD_RELOC_AVR32_8S_EXT,		R_AVR32_8S_EXT },
mgl@1371
   299
+  { BFD_RELOC_AVR32_8S,			R_AVR32_8S },
mgl@1371
   300
+
mgl@1371
   301
+  { BFD_RELOC_AVR32_22H_PCREL,		R_AVR32_22H_PCREL },
mgl@1371
   302
+  { BFD_RELOC_AVR32_18W_PCREL,		R_AVR32_18W_PCREL },
mgl@1371
   303
+  { BFD_RELOC_AVR32_16B_PCREL,		R_AVR32_16B_PCREL },
mgl@1371
   304
+  { BFD_RELOC_AVR32_16N_PCREL,		R_AVR32_16N_PCREL },
mgl@1371
   305
+  { BFD_RELOC_AVR32_11H_PCREL,		R_AVR32_11H_PCREL },
mgl@1371
   306
+  { BFD_RELOC_AVR32_10UW_PCREL,		R_AVR32_10UW_PCREL },
mgl@1371
   307
+  { BFD_RELOC_AVR32_9H_PCREL,		R_AVR32_9H_PCREL },
mgl@1371
   308
+  { BFD_RELOC_AVR32_9UW_PCREL,		R_AVR32_9UW_PCREL },
mgl@1371
   309
+
mgl@1371
   310
+  { BFD_RELOC_HI16,			R_AVR32_HI16 },
mgl@1371
   311
+  { BFD_RELOC_LO16,			R_AVR32_LO16 },
mgl@1371
   312
+
mgl@1371
   313
+  { BFD_RELOC_AVR32_GOTPC,		R_AVR32_GOTPC },
mgl@1371
   314
+  { BFD_RELOC_AVR32_GOTCALL,		R_AVR32_GOTCALL },
mgl@1371
   315
+  { BFD_RELOC_AVR32_LDA_GOT,		R_AVR32_LDA_GOT },
mgl@1371
   316
+  { BFD_RELOC_AVR32_GOT21S,		R_AVR32_GOT21S },
mgl@1371
   317
+  { BFD_RELOC_AVR32_GOT18SW,		R_AVR32_GOT18SW },
mgl@1371
   318
+  { BFD_RELOC_AVR32_GOT16S,		R_AVR32_GOT16S },
mgl@1371
   319
+  /* GOT7UW should never be generated by the assembler */
mgl@1371
   320
+
mgl@1371
   321
+  { BFD_RELOC_AVR32_32_CPENT,		R_AVR32_32_CPENT },
mgl@1371
   322
+  { BFD_RELOC_AVR32_CPCALL,		R_AVR32_CPCALL },
mgl@1371
   323
+  { BFD_RELOC_AVR32_16_CP,		R_AVR32_16_CP },
mgl@1371
   324
+  { BFD_RELOC_AVR32_9W_CP,		R_AVR32_9W_CP },
mgl@1371
   325
+
mgl@1371
   326
+  { BFD_RELOC_AVR32_ALIGN,		R_AVR32_ALIGN },
mgl@1371
   327
+
mgl@1371
   328
+  { BFD_RELOC_AVR32_15S,		R_AVR32_15S },
mgl@1371
   329
+};
mgl@1371
   330
+
mgl@1371
   331
+static reloc_howto_type *
mgl@1371
   332
+bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
   333
+				 bfd_reloc_code_real_type code)
mgl@1371
   334
+{
mgl@1371
   335
+  unsigned int i;
mgl@1371
   336
+
mgl@1371
   337
+  for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
mgl@1371
   338
+    {
mgl@1371
   339
+      if (avr32_reloc_map[i].bfd_reloc_val == code)
mgl@1371
   340
+	return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
mgl@1371
   341
+    }
mgl@1371
   342
+
mgl@1371
   343
+  return NULL;
mgl@1371
   344
+}
mgl@1371
   345
+
mgl@1371
   346
+static reloc_howto_type *
mgl@1371
   347
+bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
   348
+                 const char *r_name)
mgl@1371
   349
+{
mgl@1371
   350
+  unsigned int i;
mgl@1371
   351
+
mgl@1371
   352
+  for (i = 0;
mgl@1371
   353
+       i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
mgl@1371
   354
+       i++)
mgl@1371
   355
+    if (elf_avr32_howto_table[i].name != NULL
mgl@1371
   356
+    && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
mgl@1371
   357
+      return &elf_avr32_howto_table[i];
mgl@1371
   358
+
mgl@1371
   359
+  return NULL;
mgl@1371
   360
+}
mgl@1371
   361
+
mgl@1371
   362
+/* Set the howto pointer for an AVR32 ELF reloc.  */
mgl@1371
   363
+static void
mgl@1371
   364
+avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
   365
+		     arelent *cache_ptr,
mgl@1371
   366
+		     Elf_Internal_Rela *dst)
mgl@1371
   367
+{
mgl@1371
   368
+  unsigned int r_type;
mgl@1371
   369
+
mgl@1371
   370
+  r_type = ELF32_R_TYPE (dst->r_info);
mgl@1371
   371
+  BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
mgl@1371
   372
+  cache_ptr->howto = &elf_avr32_howto_table[r_type];
mgl@1371
   373
+}
mgl@1371
   374
+
mgl@1371
   375
+
mgl@1371
   376
+/* AVR32 ELF linker hash table and associated hash entries. */
mgl@1371
   377
+
mgl@1371
   378
+static struct bfd_hash_entry *
mgl@1371
   379
+avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
mgl@1371
   380
+			    struct bfd_hash_table *table,
mgl@1371
   381
+			    const char *string);
mgl@1371
   382
+static void
mgl@1371
   383
+avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
mgl@1371
   384
+			       struct elf_link_hash_entry *dir,
mgl@1371
   385
+			       struct elf_link_hash_entry *ind);
mgl@1371
   386
+static struct bfd_link_hash_table *
mgl@1371
   387
+avr32_elf_link_hash_table_create(bfd *abfd);
mgl@1371
   388
+
mgl@1371
   389
+/*
mgl@1371
   390
+  Try to limit memory usage to something reasonable when sorting the
mgl@1371
   391
+  GOT.  If just a couple of entries end up getting more references
mgl@1371
   392
+  than this, it won't affect performance at all, but if there are many
mgl@1371
   393
+  of them, we could end up with the wrong symbols being assigned the
mgl@1371
   394
+  first GOT entries.
mgl@1371
   395
+*/
mgl@1371
   396
+#define MAX_NR_GOT_HOLES	2048
mgl@1371
   397
+
mgl@1371
   398
+/*
mgl@1371
   399
+  AVR32 GOT entry.  We need to keep track of refcounts and offsets
mgl@1371
   400
+  simultaneously, since we need the offsets during relaxation, and we
mgl@1371
   401
+  also want to be able to drop GOT entries during relaxation. In
mgl@1371
   402
+  addition to this, we want to keep the list of GOT entries sorted so
mgl@1371
   403
+  that we can keep the most-used entries at the lowest offsets.
mgl@1371
   404
+*/
mgl@1371
   405
+struct got_entry
mgl@1371
   406
+{
mgl@1371
   407
+  struct got_entry *next;
mgl@1371
   408
+  struct got_entry **pprev;
mgl@1371
   409
+  int refcount;
mgl@1371
   410
+  bfd_signed_vma offset;
mgl@1371
   411
+};
mgl@1371
   412
+
mgl@1371
   413
+struct elf_avr32_link_hash_entry
mgl@1371
   414
+{
mgl@1371
   415
+  struct elf_link_hash_entry root;
mgl@1371
   416
+
mgl@1371
   417
+  /* Number of runtime relocations against this symbol.  */
mgl@1371
   418
+  unsigned int possibly_dynamic_relocs;
mgl@1371
   419
+
mgl@1371
   420
+  /* If there are anything but R_AVR32_GOT18 relocations against this
mgl@1371
   421
+     symbol, it means that someone may be taking the address of the
mgl@1371
   422
+     function, and we should therefore not create a stub.  */
mgl@1371
   423
+  bfd_boolean no_fn_stub;
mgl@1371
   424
+
mgl@1371
   425
+  /* If there is a R_AVR32_32 relocation in a read-only section
mgl@1371
   426
+     against this symbol, we could be in trouble. If we're linking a
mgl@1371
   427
+     shared library or this symbol is defined in one, it means we must
mgl@1371
   428
+     emit a run-time reloc for it and that's not allowed in read-only
mgl@1371
   429
+     sections.  */
mgl@1371
   430
+  asection *readonly_reloc_sec;
mgl@1371
   431
+  bfd_vma readonly_reloc_offset;
mgl@1371
   432
+
mgl@1371
   433
+  /* Record which frag (if any) contains the symbol.  This is used
mgl@1371
   434
+     during relaxation in order to avoid having to update all symbols
mgl@1371
   435
+     whenever we move something.  For local symbols, this information
mgl@1371
   436
+     is in the local_sym_frag member of struct elf_obj_tdata.  */
mgl@1371
   437
+  struct fragment *sym_frag;
mgl@1371
   438
+};
mgl@1371
   439
+#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
mgl@1371
   440
+
mgl@1371
   441
+struct elf_avr32_link_hash_table
mgl@1371
   442
+{
mgl@1371
   443
+  struct elf_link_hash_table root;
mgl@1371
   444
+
mgl@1371
   445
+  /* Shortcuts to get to dynamic linker sections.  */
mgl@1371
   446
+  asection *sgot;
mgl@1371
   447
+  asection *srelgot;
mgl@1371
   448
+  asection *sstub;
mgl@1371
   449
+
mgl@1371
   450
+  /* We use a variation of Pigeonhole Sort to sort the GOT.  After the
mgl@1371
   451
+     initial refcounts have been determined, we initialize
mgl@1371
   452
+     nr_got_holes to the highest refcount ever seen and allocate an
mgl@1371
   453
+     array of nr_got_holes entries for got_hole.  Each GOT entry is
mgl@1371
   454
+     then stored in this array at the index given by its refcount.
mgl@1371
   455
+
mgl@1371
   456
+     When a GOT entry has its refcount decremented during relaxation,
mgl@1371
   457
+     it is moved to a lower index in the got_hole array.
mgl@1371
   458
+   */
mgl@1371
   459
+  struct got_entry **got_hole;
mgl@1371
   460
+  int nr_got_holes;
mgl@1371
   461
+
mgl@1371
   462
+  /* Dynamic relocations to local symbols.  Only used when linking a
mgl@1371
   463
+     shared library and -Bsymbolic is not given.  */
mgl@1371
   464
+  unsigned int local_dynamic_relocs;
mgl@1371
   465
+
mgl@1371
   466
+  bfd_boolean relocations_analyzed;
mgl@1371
   467
+  bfd_boolean symbols_adjusted;
mgl@1371
   468
+  bfd_boolean repeat_pass;
mgl@1371
   469
+  bfd_boolean direct_data_refs;
mgl@1371
   470
+  unsigned int relax_iteration;
mgl@1371
   471
+  unsigned int relax_pass;
mgl@1371
   472
+};
mgl@1371
   473
+#define avr32_elf_hash_table(p)				\
mgl@1371
   474
+  ((struct elf_avr32_link_hash_table *)((p)->hash))
mgl@1371
   475
+
mgl@1371
   476
+static struct bfd_hash_entry *
mgl@1371
   477
+avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
mgl@1371
   478
+			    struct bfd_hash_table *table,
mgl@1371
   479
+			    const char *string)
mgl@1371
   480
+{
mgl@1371
   481
+  struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
mgl@1371
   482
+
mgl@1371
   483
+  /* Allocate the structure if it hasn't already been allocated by a
mgl@1371
   484
+     subclass */
mgl@1371
   485
+  if (ret == NULL)
mgl@1371
   486
+    ret = (struct elf_avr32_link_hash_entry *)
mgl@1371
   487
+      bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
mgl@1371
   488
+
mgl@1371
   489
+  if (ret == NULL)
mgl@1371
   490
+    return NULL;
mgl@1371
   491
+
mgl@1371
   492
+  memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
mgl@1371
   493
+
mgl@1371
   494
+  /* Give the superclass a chance */
mgl@1371
   495
+  ret = (struct elf_avr32_link_hash_entry *)
mgl@1371
   496
+    _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
mgl@1371
   497
+
mgl@1371
   498
+  return (struct bfd_hash_entry *)ret;
mgl@1371
   499
+}
mgl@1371
   500
+
mgl@1371
   501
+/* Copy data from an indirect symbol to its direct symbol, hiding the
mgl@1371
   502
+   old indirect symbol.  Process additional relocation information.
mgl@1371
   503
+   Also called for weakdefs, in which case we just let
mgl@1371
   504
+   _bfd_elf_link_hash_copy_indirect copy the flags for us.  */
mgl@1371
   505
+
mgl@1371
   506
+static void
mgl@1371
   507
+avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
mgl@1371
   508
+			       struct elf_link_hash_entry *dir,
mgl@1371
   509
+			       struct elf_link_hash_entry *ind)
mgl@1371
   510
+{
mgl@1371
   511
+  struct elf_avr32_link_hash_entry *edir, *eind;
mgl@1371
   512
+
mgl@1371
   513
+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
mgl@1371
   514
+
mgl@1371
   515
+  if (ind->root.type != bfd_link_hash_indirect)
mgl@1371
   516
+    return;
mgl@1371
   517
+
mgl@1371
   518
+  edir = (struct elf_avr32_link_hash_entry *)dir;
mgl@1371
   519
+  eind = (struct elf_avr32_link_hash_entry *)ind;
mgl@1371
   520
+
mgl@1371
   521
+  edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
mgl@1371
   522
+  edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
mgl@1371
   523
+}
mgl@1371
   524
+
mgl@1371
   525
+static struct bfd_link_hash_table *
mgl@1371
   526
+avr32_elf_link_hash_table_create(bfd *abfd)
mgl@1371
   527
+{
mgl@1371
   528
+  struct elf_avr32_link_hash_table *ret;
mgl@1371
   529
+
mgl@1371
   530
+  ret = bfd_zmalloc(sizeof(*ret));
mgl@1371
   531
+  if (ret == NULL)
mgl@1371
   532
+    return NULL;
mgl@1371
   533
+
mgl@1371
   534
+  if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
mgl@1371
   535
+				      avr32_elf_link_hash_newfunc,
mgl@1371
   536
+                      sizeof (struct elf_avr32_link_hash_entry)))
mgl@1371
   537
+    {
mgl@1371
   538
+      free(ret);
mgl@1371
   539
+      return NULL;
mgl@1371
   540
+    }
mgl@1371
   541
+
mgl@1371
   542
+  /* Prevent the BFD core from creating bogus got_entry pointers */
mgl@1371
   543
+  ret->root.init_got_refcount.glist = NULL;
mgl@1371
   544
+  ret->root.init_plt_refcount.glist = NULL;
mgl@1371
   545
+  ret->root.init_got_offset.glist = NULL;
mgl@1371
   546
+  ret->root.init_plt_offset.glist = NULL;
mgl@1371
   547
+
mgl@1371
   548
+  return &ret->root.root;
mgl@1371
   549
+}
mgl@1371
   550
+
mgl@1371
   551
+
mgl@1371
   552
+/* Initial analysis and creation of dynamic sections and symbols */
mgl@1371
   553
+
mgl@1371
   554
+static asection *
mgl@1371
   555
+create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
mgl@1371
   556
+		       unsigned int align_power);
mgl@1371
   557
+static struct elf_link_hash_entry *
mgl@1371
   558
+create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
mgl@1371
   559
+		      const char *name, asection *sec,
mgl@1371
   560
+		      bfd_vma offset);
mgl@1371
   561
+static bfd_boolean
mgl@1371
   562
+avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
mgl@1371
   563
+static bfd_boolean
mgl@1371
   564
+avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
mgl@1371
   565
+static bfd_boolean
mgl@1371
   566
+avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
mgl@1371
   567
+		    const Elf_Internal_Rela *relocs);
mgl@1371
   568
+static bfd_boolean
mgl@1371
   569
+avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
mgl@1371
   570
+				struct elf_link_hash_entry *h);
mgl@1371
   571
+
mgl@1371
   572
+static asection *
mgl@1371
   573
+create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
mgl@1371
   574
+		       unsigned int align_power)
mgl@1371
   575
+{
mgl@1371
   576
+  asection *sec;
mgl@1371
   577
+
mgl@1371
   578
+  sec = bfd_make_section(dynobj, name);
mgl@1371
   579
+  if (!sec
mgl@1371
   580
+      || !bfd_set_section_flags(dynobj, sec, flags)
mgl@1371
   581
+      || !bfd_set_section_alignment(dynobj, sec, align_power))
mgl@1371
   582
+    return NULL;
mgl@1371
   583
+
mgl@1371
   584
+  return sec;
mgl@1371
   585
+}
mgl@1371
   586
+
mgl@1371
   587
+static struct elf_link_hash_entry *
mgl@1371
   588
+create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
mgl@1371
   589
+		      const char *name, asection *sec,
mgl@1371
   590
+		      bfd_vma offset)
mgl@1371
   591
+{
mgl@1371
   592
+  struct bfd_link_hash_entry *bh = NULL;
mgl@1371
   593
+  struct elf_link_hash_entry *h;
mgl@1371
   594
+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
mgl@1371
   595
+
mgl@1371
   596
+  if (!(_bfd_generic_link_add_one_symbol
mgl@1371
   597
+	(info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
mgl@1371
   598
+	 bed->collect, &bh)))
mgl@1371
   599
+    return NULL;
mgl@1371
   600
+
mgl@1371
   601
+  h = (struct elf_link_hash_entry *)bh;
mgl@1371
   602
+  h->def_regular = 1;
mgl@1371
   603
+  h->type = STT_OBJECT;
mgl@1371
   604
+  h->other = STV_HIDDEN;
mgl@1371
   605
+
mgl@1371
   606
+  return h;
mgl@1371
   607
+}
mgl@1371
   608
+
mgl@1371
   609
+static bfd_boolean
mgl@1371
   610
+avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
mgl@1371
   611
+{
mgl@1371
   612
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
   613
+  flagword flags;
mgl@1371
   614
+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
mgl@1371
   615
+
mgl@1371
   616
+  htab = avr32_elf_hash_table(info);
mgl@1371
   617
+  flags = bed->dynamic_sec_flags;
mgl@1371
   618
+
mgl@1371
   619
+  if (htab->sgot)
mgl@1371
   620
+    return TRUE;
mgl@1371
   621
+
mgl@1371
   622
+  htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
mgl@1371
   623
+  if (!htab->srelgot)
mgl@1371
   624
+    htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
mgl@1371
   625
+					   flags | SEC_READONLY, 2);
mgl@1371
   626
+
mgl@1371
   627
+  if (!htab->sgot || !htab->srelgot)
mgl@1371
   628
+    return FALSE;
mgl@1371
   629
+
mgl@1371
   630
+  htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
mgl@1371
   631
+					  htab->sgot, 0);
mgl@1371
   632
+  if (!htab->root.hgot)
mgl@1371
   633
+    return FALSE;
mgl@1371
   634
+
mgl@1371
   635
+  /* Make room for the GOT header */
mgl@1371
   636
+  htab->sgot->size += bed->got_header_size;
mgl@1371
   637
+
mgl@1371
   638
+  return TRUE;
mgl@1371
   639
+}
mgl@1371
   640
+
mgl@1371
   641
+/* (1) Create all dynamic (i.e. linker generated) sections that we may
mgl@1371
   642
+   need during the link */
mgl@1371
   643
+
mgl@1371
   644
+static bfd_boolean
mgl@1371
   645
+avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
mgl@1371
   646
+{
mgl@1371
   647
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
   648
+  flagword flags;
mgl@1371
   649
+  const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
mgl@1371
   650
+
mgl@1371
   651
+  pr_debug("(1) create dynamic sections\n");
mgl@1371
   652
+
mgl@1371
   653
+  htab = avr32_elf_hash_table(info);
mgl@1371
   654
+  flags = bed->dynamic_sec_flags;
mgl@1371
   655
+
mgl@1371
   656
+  if (!avr32_elf_create_got_section (dynobj, info))
mgl@1371
   657
+    return FALSE;
mgl@1371
   658
+
mgl@1371
   659
+  if (!htab->sstub)
mgl@1371
   660
+    htab->sstub = create_dynamic_section(dynobj, ".stub",
mgl@1371
   661
+					 flags | SEC_READONLY | SEC_CODE, 2);
mgl@1371
   662
+
mgl@1371
   663
+  if (!htab->sstub)
mgl@1371
   664
+    return FALSE;
mgl@1371
   665
+
mgl@1371
   666
+  return TRUE;
mgl@1371
   667
+}
mgl@1371
   668
+
mgl@1371
   669
+/* (2) Go through all the relocs and count any potential GOT- or
mgl@1371
   670
+   PLT-references to each symbol */
mgl@1371
   671
+
mgl@1371
   672
+static bfd_boolean
mgl@1371
   673
+avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
mgl@1371
   674
+		    const Elf_Internal_Rela *relocs)
mgl@1371
   675
+{
mgl@1371
   676
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
   677
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
   678
+  struct elf_link_hash_entry **sym_hashes;
mgl@1371
   679
+  const Elf_Internal_Rela *rel, *rel_end;
mgl@1371
   680
+  struct got_entry **local_got_ents;
mgl@1371
   681
+  struct got_entry *got;
mgl@1371
   682
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
mgl@1371
   683
+  asection *sgot;
mgl@1371
   684
+  bfd *dynobj;
mgl@1371
   685
+
mgl@1371
   686
+  pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
mgl@1371
   687
+	   abfd->filename, sec->name, sec->size);
mgl@1371
   688
+
mgl@1371
   689
+  if (info->relocatable)
mgl@1371
   690
+    return TRUE;
mgl@1371
   691
+
mgl@1371
   692
+  dynobj = elf_hash_table(info)->dynobj;
mgl@1371
   693
+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
mgl@1371
   694
+  sym_hashes = elf_sym_hashes(abfd);
mgl@1371
   695
+  htab = avr32_elf_hash_table(info);
mgl@1371
   696
+  local_got_ents = elf_local_got_ents(abfd);
mgl@1371
   697
+  sgot = htab->sgot;
mgl@1371
   698
+
mgl@1371
   699
+  rel_end = relocs + sec->reloc_count;
mgl@1371
   700
+  for (rel = relocs; rel < rel_end; rel++)
mgl@1371
   701
+    {
mgl@1371
   702
+      unsigned long r_symndx, r_type;
mgl@1371
   703
+      struct elf_avr32_link_hash_entry *h;
mgl@1371
   704
+
mgl@1371
   705
+      r_symndx = ELF32_R_SYM(rel->r_info);
mgl@1371
   706
+      r_type = ELF32_R_TYPE(rel->r_info);
mgl@1371
   707
+
mgl@1371
   708
+      /* Local symbols use local_got_ents, while others store the same
mgl@1371
   709
+	 information in the hash entry */
mgl@1371
   710
+      if (r_symndx < symtab_hdr->sh_info)
mgl@1371
   711
+	{
mgl@1371
   712
+	  pr_debug("  (2a) processing local symbol %lu\n", r_symndx);
mgl@1371
   713
+	  h = NULL;
mgl@1371
   714
+	}
mgl@1371
   715
+      else
mgl@1371
   716
+	{
mgl@1371
   717
+	  h = (struct elf_avr32_link_hash_entry *)
mgl@1371
   718
+	    sym_hashes[r_symndx - symtab_hdr->sh_info];
mgl@1371
   719
+	  while (h->root.type == bfd_link_hash_indirect
mgl@1371
   720
+		 || h->root.type == bfd_link_hash_warning)
mgl@1371
   721
+	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
mgl@1371
   722
+	  pr_debug("  (2a) processing symbol %s\n", h->root.root.root.string);
mgl@1371
   723
+	}
mgl@1371
   724
+
mgl@1371
   725
+      /* Some relocs require special sections to be created.  */
mgl@1371
   726
+      switch (r_type)
mgl@1371
   727
+	{
mgl@1371
   728
+	case R_AVR32_GOT32:
mgl@1371
   729
+	case R_AVR32_GOT16:
mgl@1371
   730
+	case R_AVR32_GOT8:
mgl@1371
   731
+	case R_AVR32_GOT21S:
mgl@1371
   732
+	case R_AVR32_GOT18SW:
mgl@1371
   733
+	case R_AVR32_GOT16S:
mgl@1371
   734
+	case R_AVR32_GOT7UW:
mgl@1371
   735
+	case R_AVR32_LDA_GOT:
mgl@1371
   736
+	case R_AVR32_GOTCALL:
mgl@1371
   737
+	  if (rel->r_addend)
mgl@1371
   738
+	    {
mgl@1371
   739
+	      if (info->callbacks->reloc_dangerous
mgl@1371
   740
+		  (info, _("Non-zero addend on GOT-relative relocation"),
mgl@1371
   741
+		   abfd, sec, rel->r_offset) == FALSE)
mgl@1371
   742
+		return FALSE;
mgl@1371
   743
+	    }
mgl@1371
   744
+	  /* fall through */
mgl@1371
   745
+	case R_AVR32_GOTPC:
mgl@1371
   746
+	  if (dynobj == NULL)
mgl@1371
   747
+	    elf_hash_table(info)->dynobj = dynobj = abfd;
mgl@1371
   748
+	  if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
mgl@1371
   749
+	    return FALSE;
mgl@1371
   750
+	  break;
mgl@1371
   751
+	case R_AVR32_32:
mgl@1371
   752
+	  /* We may need to create .rela.dyn later on.  */
mgl@1371
   753
+	  if (dynobj == NULL
mgl@1371
   754
+	      && (info->shared || h != NULL)
mgl@1371
   755
+	      && (sec->flags & SEC_ALLOC))
mgl@1371
   756
+	    elf_hash_table(info)->dynobj = dynobj = abfd;
mgl@1371
   757
+	  break;
mgl@1371
   758
+	}
mgl@1371
   759
+
mgl@1371
   760
+      if (h != NULL && r_type != R_AVR32_GOT18SW)
mgl@1371
   761
+	h->no_fn_stub = TRUE;
mgl@1371
   762
+
mgl@1371
   763
+      switch (r_type)
mgl@1371
   764
+	{
mgl@1371
   765
+	case R_AVR32_GOT32:
mgl@1371
   766
+	case R_AVR32_GOT16:
mgl@1371
   767
+	case R_AVR32_GOT8:
mgl@1371
   768
+	case R_AVR32_GOT21S:
mgl@1371
   769
+	case R_AVR32_GOT18SW:
mgl@1371
   770
+	case R_AVR32_GOT16S:
mgl@1371
   771
+	case R_AVR32_GOT7UW:
mgl@1371
   772
+	case R_AVR32_LDA_GOT:
mgl@1371
   773
+	case R_AVR32_GOTCALL:
mgl@1371
   774
+	  if (h != NULL)
mgl@1371
   775
+	    {
mgl@1371
   776
+	      got = h->root.got.glist;
mgl@1371
   777
+	      if (!got)
mgl@1371
   778
+		{
mgl@1371
   779
+		  got = bfd_zalloc(abfd, sizeof(struct got_entry));
mgl@1371
   780
+		  if (!got)
mgl@1371
   781
+		    return FALSE;
mgl@1371
   782
+		  h->root.got.glist = got;
mgl@1371
   783
+		}
mgl@1371
   784
+	    }
mgl@1371
   785
+	  else
mgl@1371
   786
+	    {
mgl@1371
   787
+	      if (!local_got_ents)
mgl@1371
   788
+		{
mgl@1371
   789
+		  bfd_size_type size;
mgl@1371
   790
+		  bfd_size_type i;
mgl@1371
   791
+		  struct got_entry *tmp_entry;
mgl@1371
   792
+
mgl@1371
   793
+		  size = symtab_hdr->sh_info;
mgl@1371
   794
+		  size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
mgl@1371
   795
+		  local_got_ents = bfd_zalloc(abfd, size);
mgl@1371
   796
+		  if (!local_got_ents)
mgl@1371
   797
+		    return FALSE;
mgl@1371
   798
+
mgl@1371
   799
+		  elf_local_got_ents(abfd) = local_got_ents;
mgl@1371
   800
+
mgl@1371
   801
+		  tmp_entry = (struct got_entry *)(local_got_ents
mgl@1371
   802
+						   + symtab_hdr->sh_info);
mgl@1371
   803
+		  for (i = 0; i < symtab_hdr->sh_info; i++)
mgl@1371
   804
+		    local_got_ents[i] = &tmp_entry[i];
mgl@1371
   805
+		}
mgl@1371
   806
+
mgl@1371
   807
+	      got = local_got_ents[r_symndx];
mgl@1371
   808
+	    }
mgl@1371
   809
+
mgl@1371
   810
+	  got->refcount++;
mgl@1371
   811
+	  if (got->refcount > htab->nr_got_holes)
mgl@1371
   812
+	    htab->nr_got_holes = got->refcount;
mgl@1371
   813
+	  break;
mgl@1371
   814
+
mgl@1371
   815
+	case R_AVR32_32:
mgl@1371
   816
+	  if ((info->shared || h != NULL)
mgl@1371
   817
+	      && (sec->flags & SEC_ALLOC))
mgl@1371
   818
+	    {
mgl@1371
   819
+	      if (htab->srelgot == NULL)
mgl@1371
   820
+		{
mgl@1371
   821
+		  htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
mgl@1371
   822
+							 bed->dynamic_sec_flags
mgl@1371
   823
+							 | SEC_READONLY, 2);
mgl@1371
   824
+		  if (htab->srelgot == NULL)
mgl@1371
   825
+		    return FALSE;
mgl@1371
   826
+		}
mgl@1371
   827
+
mgl@1371
   828
+	      if (sec->flags & SEC_READONLY
mgl@1371
   829
+		  && !h->readonly_reloc_sec)
mgl@1371
   830
+		{
mgl@1371
   831
+		  h->readonly_reloc_sec = sec;
mgl@1371
   832
+		  h->readonly_reloc_offset = rel->r_offset;
mgl@1371
   833
+		}
mgl@1371
   834
+
mgl@1371
   835
+	      if (h != NULL)
mgl@1371
   836
+		{
mgl@1371
   837
+		  pr_debug("Non-GOT reference to symbol %s\n",
mgl@1371
   838
+			   h->root.root.root.string);
mgl@1371
   839
+		  h->possibly_dynamic_relocs++;
mgl@1371
   840
+		}
mgl@1371
   841
+	      else
mgl@1371
   842
+		{
mgl@1371
   843
+		  pr_debug("Non-GOT reference to local symbol %lu\n",
mgl@1371
   844
+			   r_symndx);
mgl@1371
   845
+		  htab->local_dynamic_relocs++;
mgl@1371
   846
+		}
mgl@1371
   847
+	    }
mgl@1371
   848
+
mgl@1371
   849
+	  break;
mgl@1371
   850
+
mgl@1371
   851
+	  /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
mgl@1371
   852
+	}
mgl@1371
   853
+    }
mgl@1371
   854
+
mgl@1371
   855
+  return TRUE;
mgl@1371
   856
+}
mgl@1371
   857
+
mgl@1371
   858
+/* (3) Adjust a symbol defined by a dynamic object and referenced by a
mgl@1371
   859
+   regular object.  The current definition is in some section of the
mgl@1371
   860
+   dynamic object, but we're not including those sections.  We have to
mgl@1371
   861
+   change the definition to something the rest of the link can
mgl@1371
   862
+   understand.  */
mgl@1371
   863
+
mgl@1371
   864
+static bfd_boolean
mgl@1371
   865
+avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
mgl@1371
   866
+				struct elf_link_hash_entry *h)
mgl@1371
   867
+{
mgl@1371
   868
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
   869
+  struct elf_avr32_link_hash_entry *havr;
mgl@1371
   870
+  bfd *dynobj;
mgl@1371
   871
+
mgl@1371
   872
+  pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
mgl@1371
   873
+
mgl@1371
   874
+  htab = avr32_elf_hash_table(info);
mgl@1371
   875
+  havr = (struct elf_avr32_link_hash_entry *)h;
mgl@1371
   876
+  dynobj = elf_hash_table(info)->dynobj;
mgl@1371
   877
+
mgl@1371
   878
+  /* Make sure we know what is going on here.  */
mgl@1371
   879
+  BFD_ASSERT (dynobj != NULL
mgl@1371
   880
+	      && (h->u.weakdef != NULL
mgl@1371
   881
+		  || (h->def_dynamic
mgl@1371
   882
+		      && h->ref_regular
mgl@1371
   883
+		      && !h->def_regular)));
mgl@1371
   884
+
mgl@1371
   885
+  /* We don't want dynamic relocations in read-only sections. */
mgl@1371
   886
+  if (havr->readonly_reloc_sec)
mgl@1371
   887
+    {
mgl@1371
   888
+      if (info->callbacks->reloc_dangerous
mgl@1371
   889
+	  (info, _("dynamic relocation in read-only section"),
mgl@1371
   890
+	   havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
mgl@1371
   891
+	   havr->readonly_reloc_offset) == FALSE)
mgl@1371
   892
+	return FALSE;
mgl@1371
   893
+    }
mgl@1371
   894
+
mgl@1371
   895
+  /* If this is a function, create a stub if possible and set the
mgl@1371
   896
+     symbol to the stub location.  */
mgl@1371
   897
+  if (0 && !havr->no_fn_stub)
mgl@1371
   898
+    {
mgl@1371
   899
+      if (!h->def_regular)
mgl@1371
   900
+	{
mgl@1371
   901
+	  asection *s = htab->sstub;
mgl@1371
   902
+
mgl@1371
   903
+	  BFD_ASSERT(s != NULL);
mgl@1371
   904
+
mgl@1371
   905
+	  h->root.u.def.section = s;
mgl@1371
   906
+	  h->root.u.def.value = s->size;
mgl@1371
   907
+	  h->plt.offset = s->size;
mgl@1371
   908
+	  s->size += AVR32_FUNCTION_STUB_SIZE;
mgl@1371
   909
+
mgl@1371
   910
+	  return TRUE;
mgl@1371
   911
+	}
mgl@1371
   912
+    }
mgl@1371
   913
+  else if (h->type == STT_FUNC)
mgl@1371
   914
+    {
mgl@1371
   915
+      /* This will set the entry for this symbol in the GOT to 0, and
mgl@1371
   916
+	 the dynamic linker will take care of this. */
mgl@1371
   917
+      h->root.u.def.value = 0;
mgl@1371
   918
+      return TRUE;
mgl@1371
   919
+    }
mgl@1371
   920
+
mgl@1371
   921
+  /* If this is a weak symbol, and there is a real definition, the
mgl@1371
   922
+     processor independent code will have arranged for us to see the
mgl@1371
   923
+     real definition first, and we can just use the same value.  */
mgl@1371
   924
+  if (h->u.weakdef != NULL)
mgl@1371
   925
+    {
mgl@1371
   926
+      BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
mgl@1371
   927
+		 || h->u.weakdef->root.type == bfd_link_hash_defweak);
mgl@1371
   928
+      h->root.u.def.section = h->u.weakdef->root.u.def.section;
mgl@1371
   929
+      h->root.u.def.value = h->u.weakdef->root.u.def.value;
mgl@1371
   930
+      return TRUE;
mgl@1371
   931
+    }
mgl@1371
   932
+
mgl@1371
   933
+  /* This is a reference to a symbol defined by a dynamic object which
mgl@1371
   934
+     is not a function.  */
mgl@1371
   935
+
mgl@1371
   936
+  return TRUE;
mgl@1371
   937
+}
mgl@1371
   938
+
mgl@1371
   939
+
mgl@1371
   940
+/* Garbage-collection of unused sections */
mgl@1371
   941
+
mgl@1371
   942
+static asection *
mgl@1371
   943
+avr32_elf_gc_mark_hook(asection *sec,
mgl@1371
   944
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
mgl@1371
   945
+		       Elf_Internal_Rela *rel,
mgl@1371
   946
+		       struct elf_link_hash_entry *h,
mgl@1371
   947
+		       Elf_Internal_Sym *sym)
mgl@1371
   948
+{
mgl@1371
   949
+  if (h)
mgl@1371
   950
+    {
mgl@1371
   951
+      switch (ELF32_R_TYPE(rel->r_info))
mgl@1371
   952
+	{
mgl@1371
   953
+	  /* TODO: VTINHERIT/VTENTRY */
mgl@1371
   954
+	default:
mgl@1371
   955
+	  switch (h->root.type)
mgl@1371
   956
+	    {
mgl@1371
   957
+	    case bfd_link_hash_defined:
mgl@1371
   958
+	    case bfd_link_hash_defweak:
mgl@1371
   959
+	      return h->root.u.def.section;
mgl@1371
   960
+
mgl@1371
   961
+	    case bfd_link_hash_common:
mgl@1371
   962
+	      return h->root.u.c.p->section;
mgl@1371
   963
+
mgl@1371
   964
+	    default:
mgl@1371
   965
+	      break;
mgl@1371
   966
+	    }
mgl@1371
   967
+	}
mgl@1371
   968
+    }
mgl@1371
   969
+  else
mgl@1371
   970
+    return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
mgl@1371
   971
+
mgl@1371
   972
+  return NULL;
mgl@1371
   973
+}
mgl@1371
   974
+
mgl@1371
   975
+/* Update the GOT entry reference counts for the section being removed. */
mgl@1371
   976
+static bfd_boolean
mgl@1371
   977
+avr32_elf_gc_sweep_hook(bfd *abfd,
mgl@1371
   978
+			struct bfd_link_info *info ATTRIBUTE_UNUSED,
mgl@1371
   979
+			asection *sec,
mgl@1371
   980
+			const Elf_Internal_Rela *relocs)
mgl@1371
   981
+{
mgl@1371
   982
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
   983
+  struct elf_avr32_link_hash_entry **sym_hashes;
mgl@1371
   984
+  struct got_entry **local_got_ents;
mgl@1371
   985
+  const Elf_Internal_Rela *rel, *relend;
mgl@1371
   986
+
mgl@1371
   987
+  if (!(sec->flags & SEC_ALLOC))
mgl@1371
   988
+    return TRUE;
mgl@1371
   989
+
mgl@1371
   990
+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
mgl@1371
   991
+  sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
mgl@1371
   992
+  local_got_ents = elf_local_got_ents(abfd);
mgl@1371
   993
+
mgl@1371
   994
+  relend = relocs + sec->reloc_count;
mgl@1371
   995
+  for (rel = relocs; rel < relend; rel++)
mgl@1371
   996
+    {
mgl@1371
   997
+      unsigned long r_symndx;
mgl@1371
   998
+      unsigned int r_type;
mgl@1371
   999
+      struct elf_avr32_link_hash_entry *h = NULL;
mgl@1371
  1000
+
mgl@1371
  1001
+      r_symndx = ELF32_R_SYM(rel->r_info);
mgl@1371
  1002
+      if (r_symndx >= symtab_hdr->sh_info)
mgl@1371
  1003
+	{
mgl@1371
  1004
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
mgl@1371
  1005
+	  while (h->root.root.type == bfd_link_hash_indirect
mgl@1371
  1006
+		 || h->root.root.type == bfd_link_hash_warning)
mgl@1371
  1007
+	    h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
mgl@1371
  1008
+	}
mgl@1371
  1009
+
mgl@1371
  1010
+      r_type = ELF32_R_TYPE(rel->r_info);
mgl@1371
  1011
+
mgl@1371
  1012
+      switch (r_type)
mgl@1371
  1013
+	{
mgl@1371
  1014
+	case R_AVR32_GOT32:
mgl@1371
  1015
+	case R_AVR32_GOT16:
mgl@1371
  1016
+	case R_AVR32_GOT8:
mgl@1371
  1017
+	case R_AVR32_GOT21S:
mgl@1371
  1018
+	case R_AVR32_GOT18SW:
mgl@1371
  1019
+	case R_AVR32_GOT16S:
mgl@1371
  1020
+	case R_AVR32_GOT7UW:
mgl@1371
  1021
+	case R_AVR32_LDA_GOT:
mgl@1371
  1022
+	case R_AVR32_GOTCALL:
mgl@1371
  1023
+	  if (h)
mgl@1371
  1024
+	    h->root.got.glist->refcount--;
mgl@1371
  1025
+	  else
mgl@1371
  1026
+	    local_got_ents[r_symndx]->refcount--;
mgl@1371
  1027
+	  break;
mgl@1371
  1028
+
mgl@1371
  1029
+	case R_AVR32_32:
mgl@1371
  1030
+	  if (info->shared || h)
mgl@1371
  1031
+	    {
mgl@1371
  1032
+	      if (h)
mgl@1371
  1033
+		h->possibly_dynamic_relocs--;
mgl@1371
  1034
+	      else
mgl@1371
  1035
+		avr32_elf_hash_table(info)->local_dynamic_relocs--;
mgl@1371
  1036
+	    }
mgl@1371
  1037
+
mgl@1371
  1038
+	default:
mgl@1371
  1039
+	  break;
mgl@1371
  1040
+	}
mgl@1371
  1041
+    }
mgl@1371
  1042
+
mgl@1371
  1043
+  return TRUE;
mgl@1371
  1044
+}
mgl@1371
  1045
+
mgl@1371
  1046
+/* Sizing and refcounting of dynamic sections */
mgl@1371
  1047
+
mgl@1371
  1048
+static void
mgl@1371
  1049
+insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
mgl@1371
  1050
+static void
mgl@1371
  1051
+unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
mgl@1371
  1052
+static void
mgl@1371
  1053
+ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
mgl@1371
  1054
+static bfd_boolean
mgl@1371
  1055
+assign_got_offsets(struct elf_avr32_link_hash_table *htab);
mgl@1371
  1056
+static bfd_boolean
mgl@1371
  1057
+allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
mgl@1371
  1058
+static bfd_boolean
mgl@1371
  1059
+avr32_elf_size_dynamic_sections (bfd *output_bfd,
mgl@1371
  1060
+				 struct bfd_link_info *info);
mgl@1371
  1061
+
mgl@1371
  1062
+static void
mgl@1371
  1063
+insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
mgl@1371
  1064
+{
mgl@1371
  1065
+  /* Any entries with got_refcount > htab->nr_got_holes end up in the
mgl@1371
  1066
+   * last pigeonhole without any sorting. We expect the number of such
mgl@1371
  1067
+   * entries to be small, so it is very unlikely to affect
mgl@1371
  1068
+   * performance.  */
mgl@1371
  1069
+  int entry = got->refcount;
mgl@1371
  1070
+
mgl@1371
  1071
+  if (entry > htab->nr_got_holes)
mgl@1371
  1072
+    entry = htab->nr_got_holes;
mgl@1371
  1073
+
mgl@1371
  1074
+  got->pprev = &htab->got_hole[entry];
mgl@1371
  1075
+  got->next = htab->got_hole[entry];
mgl@1371
  1076
+
mgl@1371
  1077
+  if (got->next)
mgl@1371
  1078
+    got->next->pprev = &got->next;
mgl@1371
  1079
+
mgl@1371
  1080
+  htab->got_hole[entry] = got;
mgl@1371
  1081
+}
mgl@1371
  1082
+
mgl@1371
  1083
+/* Decrement the refcount of a GOT entry and update its position in
mgl@1371
  1084
+   the pigeonhole array.  */
mgl@1371
  1085
+static void
mgl@1371
  1086
+unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
mgl@1371
  1087
+{
mgl@1371
  1088
+  BFD_ASSERT(got->refcount > 0);
mgl@1371
  1089
+
mgl@1371
  1090
+  if (got->next)
mgl@1371
  1091
+    got->next->pprev = got->pprev;
mgl@1371
  1092
+
mgl@1371
  1093
+  *(got->pprev) = got->next;
mgl@1371
  1094
+  got->refcount--;
mgl@1371
  1095
+  insert_got_entry(htab, got);
mgl@1371
  1096
+}
mgl@1371
  1097
+
mgl@1371
  1098
+static void
mgl@1371
  1099
+ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
mgl@1371
  1100
+{
mgl@1371
  1101
+  if (got->next)
mgl@1371
  1102
+    got->next->pprev = got->pprev;
mgl@1371
  1103
+
mgl@1371
  1104
+  *(got->pprev) = got->next;
mgl@1371
  1105
+  got->refcount++;
mgl@1371
  1106
+  insert_got_entry(htab, got);
mgl@1371
  1107
+
mgl@1371
  1108
+  BFD_ASSERT(got->refcount > 0);
mgl@1371
  1109
+}
mgl@1371
  1110
+
mgl@1371
  1111
+/* Assign offsets to all GOT entries we intend to keep.  The entries
mgl@1371
  1112
+   that are referenced most often are placed at low offsets so that we
mgl@1371
  1113
+   can use compact instructions as much as possible.
mgl@1371
  1114
+
mgl@1371
  1115
+   Returns TRUE if any offsets or the total size of the GOT changed.  */
mgl@1371
  1116
+
mgl@1371
  1117
+static bfd_boolean
mgl@1371
  1118
+assign_got_offsets(struct elf_avr32_link_hash_table *htab)
mgl@1371
  1119
+{
mgl@1371
  1120
+  struct got_entry *got;
mgl@1371
  1121
+  bfd_size_type got_size = 0;
mgl@1371
  1122
+  bfd_boolean changed = FALSE;
mgl@1371
  1123
+  bfd_signed_vma offset;
mgl@1371
  1124
+  int i;
mgl@1371
  1125
+
mgl@1371
  1126
+  /* The GOT header provides the address of the DYNAMIC segment, so
mgl@1371
  1127
+     we need that even if the GOT is otherwise empty.  */
mgl@1371
  1128
+  if (htab->root.dynamic_sections_created)
mgl@1371
  1129
+    got_size = AVR32_GOT_HEADER_SIZE;
mgl@1371
  1130
+
mgl@1371
  1131
+  for (i = htab->nr_got_holes; i > 0; i--)
mgl@1371
  1132
+    {
mgl@1371
  1133
+      got = htab->got_hole[i];
mgl@1371
  1134
+      while (got)
mgl@1371
  1135
+	{
mgl@1371
  1136
+	  if (got->refcount > 0)
mgl@1371
  1137
+	    {
mgl@1371
  1138
+	      offset = got_size;
mgl@1371
  1139
+	      if (got->offset != offset)
mgl@1371
  1140
+		{
mgl@1371
  1141
+		  RDBG("GOT offset changed: %ld -> %ld\n",
mgl@1371
  1142
+		       got->offset, offset);
mgl@1371
  1143
+		  changed = TRUE;
mgl@1371
  1144
+		}
mgl@1371
  1145
+	      got->offset = offset;
mgl@1371
  1146
+	      got_size += 4;
mgl@1371
  1147
+	    }
mgl@1371
  1148
+	  got = got->next;
mgl@1371
  1149
+	}
mgl@1371
  1150
+    }
mgl@1371
  1151
+
mgl@1371
  1152
+  if (htab->sgot->size != got_size)
mgl@1371
  1153
+    {
mgl@1371
  1154
+      RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
mgl@1371
  1155
+	   got_size);
mgl@1371
  1156
+      changed = TRUE;
mgl@1371
  1157
+    }
mgl@1371
  1158
+  htab->sgot->size = got_size;
mgl@1371
  1159
+
mgl@1371
  1160
+  RDBG("assign_got_offsets: total size %lu (%s)\n",
mgl@1371
  1161
+       got_size, changed ? "changed" : "no change");
mgl@1371
  1162
+
mgl@1371
  1163
+  return changed;
mgl@1371
  1164
+}
mgl@1371
  1165
+
mgl@1371
  1166
+static bfd_boolean
mgl@1371
  1167
+allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
mgl@1371
  1168
+{
mgl@1371
  1169
+  struct bfd_link_info *info = _info;
mgl@1371
  1170
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  1171
+  struct elf_avr32_link_hash_entry *havr;
mgl@1371
  1172
+  struct got_entry *got;
mgl@1371
  1173
+
mgl@1371
  1174
+  pr_debug("  (4b) allocate_dynrelocs: %s\n", h->root.root.string);
mgl@1371
  1175
+
mgl@1371
  1176
+  if (h->root.type == bfd_link_hash_indirect)
mgl@1371
  1177
+    return TRUE;
mgl@1371
  1178
+
mgl@1371
  1179
+  if (h->root.type == bfd_link_hash_warning)
mgl@1371
  1180
+    /* When warning symbols are created, they **replace** the "real"
mgl@1371
  1181
+       entry in the hash table, thus we never get to see the real
mgl@1371
  1182
+       symbol in a hash traversal.  So look at it now.  */
mgl@1371
  1183
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
mgl@1371
  1184
+
mgl@1371
  1185
+  htab = avr32_elf_hash_table(info);
mgl@1371
  1186
+  havr = (struct elf_avr32_link_hash_entry *)h;
mgl@1371
  1187
+
mgl@1371
  1188
+  got = h->got.glist;
mgl@1371
  1189
+
mgl@1371
  1190
+  /* If got is NULL, the symbol is never referenced through the GOT */
mgl@1371
  1191
+  if (got && got->refcount > 0)
mgl@1371
  1192
+    {
mgl@1371
  1193
+      insert_got_entry(htab, got);
mgl@1371
  1194
+
mgl@1371
  1195
+      /* Shared libraries need relocs for all GOT entries unless the
mgl@1371
  1196
+	 symbol is forced local or -Bsymbolic is used.  Others need
mgl@1371
  1197
+	 relocs for everything that is not guaranteed to be defined in
mgl@1371
  1198
+	 a regular object.  */
mgl@1371
  1199
+      if ((info->shared
mgl@1371
  1200
+	   && !info->symbolic
mgl@1371
  1201
+	   && h->dynindx != -1)
mgl@1371
  1202
+	  || (htab->root.dynamic_sections_created
mgl@1371
  1203
+	      && h->def_dynamic
mgl@1371
  1204
+	      && !h->def_regular))
mgl@1371
  1205
+	htab->srelgot->size += sizeof(Elf32_External_Rela);
mgl@1371
  1206
+    }
mgl@1371
  1207
+
mgl@1371
  1208
+  if (havr->possibly_dynamic_relocs
mgl@1371
  1209
+      && (info->shared
mgl@1371
  1210
+	  || (elf_hash_table(info)->dynamic_sections_created
mgl@1371
  1211
+	      && h->def_dynamic
mgl@1371
  1212
+	      && !h->def_regular)))
mgl@1371
  1213
+    {
mgl@1371
  1214
+      pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
mgl@1371
  1215
+	       havr->possibly_dynamic_relocs, h->root.root.string);
mgl@1371
  1216
+      htab->srelgot->size += (havr->possibly_dynamic_relocs
mgl@1371
  1217
+			      * sizeof(Elf32_External_Rela));
mgl@1371
  1218
+    }
mgl@1371
  1219
+
mgl@1371
  1220
+  return TRUE;
mgl@1371
  1221
+}
mgl@1371
  1222
+
mgl@1371
  1223
+/* (4) Calculate the sizes of the linker-generated sections and
mgl@1371
  1224
+   allocate memory for them.  */
mgl@1371
  1225
+
mgl@1371
  1226
+static bfd_boolean
mgl@1371
  1227
+avr32_elf_size_dynamic_sections (bfd *output_bfd,
mgl@1371
  1228
+				 struct bfd_link_info *info)
mgl@1371
  1229
+{
mgl@1371
  1230
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  1231
+  bfd *dynobj;
mgl@1371
  1232
+  asection *s;
mgl@1371
  1233
+  bfd *ibfd;
mgl@1371
  1234
+  bfd_boolean relocs;
mgl@1371
  1235
+
mgl@1371
  1236
+  pr_debug("(4) size dynamic sections\n");
mgl@1371
  1237
+
mgl@1371
  1238
+  htab = avr32_elf_hash_table(info);
mgl@1371
  1239
+  dynobj = htab->root.dynobj;
mgl@1371
  1240
+  BFD_ASSERT(dynobj != NULL);
mgl@1371
  1241
+
mgl@1371
  1242
+  if (htab->root.dynamic_sections_created)
mgl@1371
  1243
+    {
mgl@1371
  1244
+      /* Initialize the contents of the .interp section to the name of
mgl@1371
  1245
+	 the dynamic loader */
mgl@1371
  1246
+      if (info->executable)
mgl@1371
  1247
+	{
mgl@1371
  1248
+	  s = bfd_get_section_by_name(dynobj, ".interp");
mgl@1371
  1249
+	  BFD_ASSERT(s != NULL);
mgl@1371
  1250
+	  s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
mgl@1371
  1251
+	  s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
mgl@1371
  1252
+	}
mgl@1371
  1253
+    }
mgl@1371
  1254
+
mgl@1371
  1255
+  if (htab->nr_got_holes > 0)
mgl@1371
  1256
+    {
mgl@1371
  1257
+      /* Allocate holes for the pigeonhole sort algorithm */
mgl@1371
  1258
+      pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
mgl@1371
  1259
+
mgl@1371
  1260
+      /* Limit the memory usage by clipping the number of pigeonholes
mgl@1371
  1261
+       * at a predefined maximum. All entries with a higher refcount
mgl@1371
  1262
+       * will end up in the last pigeonhole.  */
mgl@1371
  1263
+    if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
mgl@1371
  1264
+    {
mgl@1371
  1265
+        htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
mgl@1371
  1266
+
mgl@1371
  1267
+        pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
mgl@1371
  1268
+                    htab->nr_got_holes);
mgl@1371
  1269
+    }
mgl@1371
  1270
+      htab->got_hole = bfd_zalloc(output_bfd,
mgl@1371
  1271
+				  sizeof(struct got_entry *)
mgl@1371
  1272
+				  * (htab->nr_got_holes + 1));
mgl@1371
  1273
+      if (!htab->got_hole)
mgl@1371
  1274
+	return FALSE;
mgl@1371
  1275
+
mgl@1371
  1276
+      /* Set up .got offsets for local syms.  */
mgl@1371
  1277
+      for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
mgl@1371
  1278
+	{
mgl@1371
  1279
+	  struct got_entry **local_got;
mgl@1371
  1280
+	  struct got_entry **end_local_got;
mgl@1371
  1281
+	  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  1282
+	  bfd_size_type locsymcount;
mgl@1371
  1283
+
mgl@1371
  1284
+	  pr_debug("  (4a) processing file %s...\n", ibfd->filename);
mgl@1371
  1285
+
mgl@1371
  1286
+	  BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
mgl@1371
  1287
+
mgl@1371
  1288
+	  local_got = elf_local_got_ents(ibfd);
mgl@1371
  1289
+	  if (!local_got)
mgl@1371
  1290
+	    continue;
mgl@1371
  1291
+
mgl@1371
  1292
+	  symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
mgl@1371
  1293
+	  locsymcount = symtab_hdr->sh_info;
mgl@1371
  1294
+	  end_local_got = local_got + locsymcount;
mgl@1371
  1295
+
mgl@1371
  1296
+	  for (; local_got < end_local_got; ++local_got)
mgl@1371
  1297
+	    insert_got_entry(htab, *local_got);
mgl@1371
  1298
+	}
mgl@1371
  1299
+    }
mgl@1371
  1300
+
mgl@1371
  1301
+  /* Allocate global sym .got entries and space for global sym
mgl@1371
  1302
+     dynamic relocs */
mgl@1371
  1303
+  elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
mgl@1371
  1304
+
mgl@1371
  1305
+  /* Now that we have sorted the GOT entries, we are ready to
mgl@1371
  1306
+     assign offsets and determine the initial size of the GOT. */
mgl@1371
  1307
+  if (htab->sgot)
mgl@1371
  1308
+    assign_got_offsets(htab);
mgl@1371
  1309
+
mgl@1371
  1310
+  /* Allocate space for local sym dynamic relocs */
mgl@1371
  1311
+  BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
mgl@1371
  1312
+  if (htab->local_dynamic_relocs)
mgl@1371
  1313
+    htab->srelgot->size += (htab->local_dynamic_relocs
mgl@1371
  1314
+			    * sizeof(Elf32_External_Rela));
mgl@1371
  1315
+
mgl@1371
  1316
+  /* We now have determined the sizes of the various dynamic
mgl@1371
  1317
+     sections. Allocate memory for them. */
mgl@1371
  1318
+  relocs = FALSE;
mgl@1371
  1319
+  for (s = dynobj->sections; s; s = s->next)
mgl@1371
  1320
+    {
mgl@1371
  1321
+      if ((s->flags & SEC_LINKER_CREATED) == 0)
mgl@1371
  1322
+	continue;
mgl@1371
  1323
+
mgl@1371
  1324
+      if (s == htab->sgot
mgl@1371
  1325
+	  || s == htab->sstub)
mgl@1371
  1326
+	{
mgl@1371
  1327
+	  /* Strip this section if we don't need it */
mgl@1371
  1328
+	}
mgl@1371
  1329
+      else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
mgl@1371
  1330
+	{
mgl@1371
  1331
+	  if (s->size != 0)
mgl@1371
  1332
+	    relocs = TRUE;
mgl@1371
  1333
+
mgl@1371
  1334
+	  s->reloc_count = 0;
mgl@1371
  1335
+	}
mgl@1371
  1336
+      else
mgl@1371
  1337
+	{
mgl@1371
  1338
+	  /* It's not one of our sections */
mgl@1371
  1339
+	  continue;
mgl@1371
  1340
+	}
mgl@1371
  1341
+
mgl@1371
  1342
+      if (s->size == 0)
mgl@1371
  1343
+	{
mgl@1371
  1344
+	  /* Strip unneeded sections */
mgl@1371
  1345
+	  pr_debug("Stripping section %s from output...\n", s->name);
mgl@1371
  1346
+	  /* deleted function in 2.17
mgl@1371
  1347
+      _bfd_strip_section_from_output(info, s);
mgl@1371
  1348
+      */
mgl@1371
  1349
+	  continue;
mgl@1371
  1350
+	}
mgl@1371
  1351
+
mgl@1371
  1352
+      s->contents = bfd_zalloc(dynobj, s->size);
mgl@1371
  1353
+      if (s->contents == NULL)
mgl@1371
  1354
+	return FALSE;
mgl@1371
  1355
+    }
mgl@1371
  1356
+
mgl@1371
  1357
+  if (htab->root.dynamic_sections_created)
mgl@1371
  1358
+    {
mgl@1371
  1359
+      /* Add some entries to the .dynamic section.  We fill in the
mgl@1371
  1360
+	 values later, in sh_elf_finish_dynamic_sections, but we
mgl@1371
  1361
+	 must add the entries now so that we get the correct size for
mgl@1371
  1362
+	 the .dynamic section.  The DT_DEBUG entry is filled in by the
mgl@1371
  1363
+	 dynamic linker and used by the debugger.  */
mgl@1371
  1364
+#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
mgl@1371
  1365
+
mgl@1371
  1366
+      if (!add_dynamic_entry(DT_PLTGOT, 0))
mgl@1371
  1367
+	return FALSE;
mgl@1371
  1368
+      if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
mgl@1371
  1369
+	return FALSE;
mgl@1371
  1370
+
mgl@1371
  1371
+      if (info->executable)
mgl@1371
  1372
+	{
mgl@1371
  1373
+	  if (!add_dynamic_entry(DT_DEBUG, 0))
mgl@1371
  1374
+	    return FALSE;
mgl@1371
  1375
+	}
mgl@1371
  1376
+      if (relocs)
mgl@1371
  1377
+	{
mgl@1371
  1378
+	  if (!add_dynamic_entry(DT_RELA, 0)
mgl@1371
  1379
+	      || !add_dynamic_entry(DT_RELASZ, 0)
mgl@1371
  1380
+	      || !add_dynamic_entry(DT_RELAENT,
mgl@1371
  1381
+				    sizeof(Elf32_External_Rela)))
mgl@1371
  1382
+	    return FALSE;
mgl@1371
  1383
+	}
mgl@1371
  1384
+    }
mgl@1371
  1385
+#undef add_dynamic_entry
mgl@1371
  1386
+
mgl@1371
  1387
+  return TRUE;
mgl@1371
  1388
+}
mgl@1371
  1389
+
mgl@1371
  1390
+
mgl@1371
  1391
+/* Access to internal relocations, section contents and symbols.
mgl@1371
  1392
+   (stolen from the xtensa port)  */
mgl@1371
  1393
+
mgl@1371
  1394
+static Elf_Internal_Rela *
mgl@1371
  1395
+retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
mgl@1371
  1396
+static void
mgl@1371
  1397
+pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
mgl@1371
  1398
+static void
mgl@1371
  1399
+release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
mgl@1371
  1400
+static bfd_byte *
mgl@1371
  1401
+retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
mgl@1371
  1402
+/*
mgl@1371
  1403
+static void
mgl@1371
  1404
+pin_contents (asection *sec, bfd_byte *contents);
mgl@1371
  1405
+*/
mgl@1371
  1406
+static void
mgl@1371
  1407
+release_contents (asection *sec, bfd_byte *contents);
mgl@1371
  1408
+static Elf_Internal_Sym *
mgl@1371
  1409
+retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
mgl@1371
  1410
+/*
mgl@1371
  1411
+static void
mgl@1371
  1412
+pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
mgl@1371
  1413
+*/
mgl@1371
  1414
+static void
mgl@1371
  1415
+release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
mgl@1371
  1416
+
mgl@1371
  1417
+/* During relaxation, we need to modify relocations, section contents,
mgl@1371
  1418
+   and symbol definitions, and we need to keep the original values from
mgl@1371
  1419
+   being reloaded from the input files, i.e., we need to "pin" the
mgl@1371
  1420
+   modified values in memory.  We also want to continue to observe the
mgl@1371
  1421
+   setting of the "keep-memory" flag.  The following functions wrap the
mgl@1371
  1422
+   standard BFD functions to take care of this for us.  */
mgl@1371
  1423
+
mgl@1371
  1424
+static Elf_Internal_Rela *
mgl@1371
  1425
+retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
mgl@1371
  1426
+{
mgl@1371
  1427
+  /* _bfd_elf_link_read_relocs knows about caching, so no need for us
mgl@1371
  1428
+     to be clever here.  */
mgl@1371
  1429
+  return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
mgl@1371
  1430
+}
mgl@1371
  1431
+
mgl@1371
  1432
+static void
mgl@1371
  1433
+pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
mgl@1371
  1434
+{
mgl@1371
  1435
+  elf_section_data (sec)->relocs = internal_relocs;
mgl@1371
  1436
+}
mgl@1371
  1437
+
mgl@1371
  1438
+static void
mgl@1371
  1439
+release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
mgl@1371
  1440
+{
mgl@1371
  1441
+  if (internal_relocs
mgl@1371
  1442
+      && elf_section_data (sec)->relocs != internal_relocs)
mgl@1371
  1443
+    free (internal_relocs);
mgl@1371
  1444
+}
mgl@1371
  1445
+
mgl@1371
  1446
+static bfd_byte *
mgl@1371
  1447
+retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
mgl@1371
  1448
+{
mgl@1371
  1449
+  bfd_byte *contents;
mgl@1371
  1450
+  bfd_size_type sec_size;
mgl@1371
  1451
+
mgl@1371
  1452
+  sec_size = bfd_get_section_limit (abfd, sec);
mgl@1371
  1453
+  contents = elf_section_data (sec)->this_hdr.contents;
mgl@1371
  1454
+
mgl@1371
  1455
+  if (contents == NULL && sec_size != 0)
mgl@1371
  1456
+    {
mgl@1371
  1457
+      if (!bfd_malloc_and_get_section (abfd, sec, &contents))
mgl@1371
  1458
+	{
mgl@1371
  1459
+	  if (contents)
mgl@1371
  1460
+	    free (contents);
mgl@1371
  1461
+	  return NULL;
mgl@1371
  1462
+	}
mgl@1371
  1463
+      if (keep_memory)
mgl@1371
  1464
+	elf_section_data (sec)->this_hdr.contents = contents;
mgl@1371
  1465
+    }
mgl@1371
  1466
+  return contents;
mgl@1371
  1467
+}
mgl@1371
  1468
+
mgl@1371
  1469
+/*
mgl@1371
  1470
+static void
mgl@1371
  1471
+pin_contents (asection *sec, bfd_byte *contents)
mgl@1371
  1472
+{
mgl@1371
  1473
+  elf_section_data (sec)->this_hdr.contents = contents;
mgl@1371
  1474
+}
mgl@1371
  1475
+*/
mgl@1371
  1476
+static void
mgl@1371
  1477
+release_contents (asection *sec, bfd_byte *contents)
mgl@1371
  1478
+{
mgl@1371
  1479
+  if (contents && elf_section_data (sec)->this_hdr.contents != contents)
mgl@1371
  1480
+    free (contents);
mgl@1371
  1481
+}
mgl@1371
  1482
+
mgl@1371
  1483
+static Elf_Internal_Sym *
mgl@1371
  1484
+retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
mgl@1371
  1485
+{
mgl@1371
  1486
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  1487
+  Elf_Internal_Sym *isymbuf;
mgl@1371
  1488
+  size_t locsymcount;
mgl@1371
  1489
+
mgl@1371
  1490
+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
mgl@1371
  1491
+  locsymcount = symtab_hdr->sh_info;
mgl@1371
  1492
+
mgl@1371
  1493
+  isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
mgl@1371
  1494
+  if (isymbuf == NULL && locsymcount != 0)
mgl@1371
  1495
+    {
mgl@1371
  1496
+      isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
mgl@1371
  1497
+				      NULL, NULL, NULL);
mgl@1371
  1498
+      if (isymbuf && keep_memory)
mgl@1371
  1499
+	symtab_hdr->contents = (unsigned char *) isymbuf;
mgl@1371
  1500
+    }
mgl@1371
  1501
+
mgl@1371
  1502
+  return isymbuf;
mgl@1371
  1503
+}
mgl@1371
  1504
+
mgl@1371
  1505
+/*
mgl@1371
  1506
+static void
mgl@1371
  1507
+pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
mgl@1371
  1508
+{
mgl@1371
  1509
+  elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
mgl@1371
  1510
+}
mgl@1371
  1511
+
mgl@1371
  1512
+*/
mgl@1371
  1513
+static void
mgl@1371
  1514
+release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
mgl@1371
  1515
+{
mgl@1371
  1516
+  if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
mgl@1371
  1517
+		  != (unsigned char *)isymbuf))
mgl@1371
  1518
+    free (isymbuf);
mgl@1371
  1519
+}
mgl@1371
  1520
+
mgl@1371
  1521
+/* Data structures used during relaxation. */
mgl@1371
  1522
+
mgl@1371
  1523
+enum relax_state_id {
mgl@1371
  1524
+  RS_ERROR = -1,
mgl@1371
  1525
+  RS_NONE = 0,
mgl@1371
  1526
+  RS_ALIGN,
mgl@1371
  1527
+  RS_CPENT,
mgl@1371
  1528
+  RS_PIC_CALL,
mgl@1371
  1529
+  RS_PIC_MCALL,
mgl@1371
  1530
+  RS_PIC_RCALL2,
mgl@1371
  1531
+  RS_PIC_RCALL1,
mgl@1371
  1532
+  RS_PIC_LDA,
mgl@1371
  1533
+  RS_PIC_LDW4,
mgl@1371
  1534
+  RS_PIC_LDW3,
mgl@1371
  1535
+  RS_PIC_SUB5,
mgl@1371
  1536
+  RS_NOPIC_MCALL,
mgl@1371
  1537
+  RS_NOPIC_RCALL2,
mgl@1371
  1538
+  RS_NOPIC_RCALL1,
mgl@1371
  1539
+  RS_NOPIC_LDW4,
mgl@1371
  1540
+  RS_NOPIC_LDDPC,
mgl@1371
  1541
+  RS_NOPIC_SUB5,
mgl@1371
  1542
+  RS_NOPIC_MOV2,
mgl@1371
  1543
+  RS_NOPIC_MOV1,
mgl@1371
  1544
+  RS_RCALL2,
mgl@1371
  1545
+  RS_RCALL1,
mgl@1371
  1546
+  RS_BRC2,
mgl@1371
  1547
+  RS_BRC1,
mgl@1371
  1548
+  RS_BRAL,
mgl@1371
  1549
+  RS_RJMP,
mgl@1371
  1550
+  RS_MAX,
mgl@1371
  1551
+};
mgl@1371
  1552
+
mgl@1371
  1553
+enum reference_type {
mgl@1371
  1554
+  REF_ABSOLUTE,
mgl@1371
  1555
+  REF_PCREL,
mgl@1371
  1556
+  REF_CPOOL,
mgl@1371
  1557
+  REF_GOT,
mgl@1371
  1558
+};
mgl@1371
  1559
+
mgl@1371
  1560
+struct relax_state
mgl@1371
  1561
+{
mgl@1371
  1562
+  const char *name;
mgl@1371
  1563
+  enum relax_state_id id;
mgl@1371
  1564
+  enum relax_state_id direct;
mgl@1371
  1565
+  enum relax_state_id next;
mgl@1371
  1566
+  enum relax_state_id prev;
mgl@1371
  1567
+
mgl@1371
  1568
+  enum reference_type reftype;
mgl@1371
  1569
+
mgl@1371
  1570
+  unsigned int r_type;
mgl@1371
  1571
+
mgl@1371
  1572
+  bfd_vma opcode;
mgl@1371
  1573
+  bfd_vma opcode_mask;
mgl@1371
  1574
+
mgl@1371
  1575
+  bfd_signed_vma range_min;
mgl@1371
  1576
+  bfd_signed_vma range_max;
mgl@1371
  1577
+
mgl@1371
  1578
+  bfd_size_type size;
mgl@1371
  1579
+};
mgl@1371
  1580
+
mgl@1371
  1581
+/*
mgl@1371
  1582
+ * This is for relocs that
mgl@1371
  1583
+ *   a) has an addend or is of type R_AVR32_DIFF32, and
mgl@1371
  1584
+ *   b) references a different section than it's in, and
mgl@1371
  1585
+ *   c) references a section that is relaxable
mgl@1371
  1586
+ *
mgl@1371
  1587
+ * as well as relocs that references the constant pool, in which case
mgl@1371
  1588
+ * the add_frag member points to the frag containing the constant pool
mgl@1371
  1589
+ * entry.
mgl@1371
  1590
+ *
mgl@1371
  1591
+ * Such relocs must be fixed up whenever we delete any code. Sections
mgl@1371
  1592
+ * that don't have any relocs with all of the above properties don't
mgl@1371
  1593
+ * have any additional reloc data, but sections that do will have
mgl@1371
  1594
+ * additional data for all its relocs.
mgl@1371
  1595
+ */
mgl@1371
  1596
+struct avr32_reloc_data
mgl@1371
  1597
+{
mgl@1371
  1598
+  struct fragment *add_frag;
mgl@1371
  1599
+  struct fragment *sub_frag;
mgl@1371
  1600
+};
mgl@1371
  1601
+
mgl@1371
  1602
+/*
mgl@1371
  1603
+ * A 'fragment' is a relaxable entity, that is, code may be added or
mgl@1371
  1604
+ * deleted at the end of a fragment. When this happens, all subsequent
mgl@1371
  1605
+ * fragments in the list will have their offsets updated.
mgl@1371
  1606
+ */
mgl@1371
  1607
+struct fragment
mgl@1371
  1608
+{
mgl@1371
  1609
+  enum relax_state_id state;
mgl@1371
  1610
+  enum relax_state_id initial_state;
mgl@1371
  1611
+
mgl@1371
  1612
+  Elf_Internal_Rela *rela;
mgl@1371
  1613
+  bfd_size_type size;
mgl@1371
  1614
+  bfd_vma offset;
mgl@1371
  1615
+  int size_adjust;
mgl@1371
  1616
+  int offset_adjust;
mgl@1371
  1617
+  bfd_boolean has_grown;
mgl@1371
  1618
+
mgl@1371
  1619
+  /* Only used by constant pool entries.  When this drops to zero, the
mgl@1371
  1620
+     frag is discarded (i.e. size_adjust is set to -4.)  */
mgl@1371
  1621
+  int refcount;
mgl@1371
  1622
+};
mgl@1371
  1623
+
mgl@1371
  1624
+struct avr32_relax_data
mgl@1371
  1625
+{
mgl@1371
  1626
+  unsigned int frag_count;
mgl@1371
  1627
+  struct fragment *frag;
mgl@1371
  1628
+  struct avr32_reloc_data *reloc_data;
mgl@1371
  1629
+
mgl@1371
  1630
+  /* TRUE if this section has one or more relaxable relocations */
mgl@1371
  1631
+  bfd_boolean is_relaxable;
mgl@1371
  1632
+  unsigned int iteration;
mgl@1371
  1633
+};
mgl@1371
  1634
+
mgl@1371
  1635
+struct avr32_section_data
mgl@1371
  1636
+{
mgl@1371
  1637
+  struct bfd_elf_section_data elf;
mgl@1371
  1638
+  struct avr32_relax_data relax_data;
mgl@1371
  1639
+};
mgl@1371
  1640
+
mgl@1371
  1641
+/* Relax state definitions */
mgl@1371
  1642
+
mgl@1371
  1643
+#define PIC_MOV2_OPCODE		0xe0600000
mgl@1371
  1644
+#define PIC_MOV2_MASK		0xe1e00000
mgl@1371
  1645
+#define PIC_MOV2_RANGE_MIN	(-1048576 * 4)
mgl@1371
  1646
+#define PIC_MOV2_RANGE_MAX	(1048575 * 4)
mgl@1371
  1647
+#define PIC_MCALL_OPCODE	0xf0160000
mgl@1371
  1648
+#define PIC_MCALL_MASK		0xffff0000
mgl@1371
  1649
+#define PIC_MCALL_RANGE_MIN	(-131072)
mgl@1371
  1650
+#define PIC_MCALL_RANGE_MAX	(131068)
mgl@1371
  1651
+#define RCALL2_OPCODE		0xe0a00000
mgl@1371
  1652
+#define RCALL2_MASK		0xe1ef0000
mgl@1371
  1653
+#define RCALL2_RANGE_MIN	(-2097152)
mgl@1371
  1654
+#define RCALL2_RANGE_MAX	(2097150)
mgl@1371
  1655
+#define RCALL1_OPCODE		0xc00c0000
mgl@1371
  1656
+#define RCALL1_MASK		0xf00c0000
mgl@1371
  1657
+#define RCALL1_RANGE_MIN	(-1024)
mgl@1371
  1658
+#define RCALL1_RANGE_MAX	(1022)
mgl@1371
  1659
+#define PIC_LDW4_OPCODE		0xecf00000
mgl@1371
  1660
+#define PIC_LDW4_MASK		0xfff00000
mgl@1371
  1661
+#define PIC_LDW4_RANGE_MIN	(-32768)
mgl@1371
  1662
+#define PIC_LDW4_RANGE_MAX	(32767)
mgl@1371
  1663
+#define PIC_LDW3_OPCODE		0x6c000000
mgl@1371
  1664
+#define PIC_LDW3_MASK		0xfe000000
mgl@1371
  1665
+#define PIC_LDW3_RANGE_MIN	(0)
mgl@1371
  1666
+#define PIC_LDW3_RANGE_MAX	(124)
mgl@1371
  1667
+#define SUB5_PC_OPCODE		0xfec00000
mgl@1371
  1668
+#define SUB5_PC_MASK		0xfff00000
mgl@1371
  1669
+#define SUB5_PC_RANGE_MIN	(-32768)
mgl@1371
  1670
+#define SUB5_PC_RANGE_MAX	(32767)
mgl@1371
  1671
+#define NOPIC_MCALL_OPCODE	0xf01f0000
mgl@1371
  1672
+#define NOPIC_MCALL_MASK	0xffff0000
mgl@1371
  1673
+#define NOPIC_MCALL_RANGE_MIN	PIC_MCALL_RANGE_MIN
mgl@1371
  1674
+#define NOPIC_MCALL_RANGE_MAX	PIC_MCALL_RANGE_MAX
mgl@1371
  1675
+#define NOPIC_LDW4_OPCODE	0xfef00000
mgl@1371
  1676
+#define NOPIC_LDW4_MASK		0xfff00000
mgl@1371
  1677
+#define NOPIC_LDW4_RANGE_MIN	PIC_LDW4_RANGE_MIN
mgl@1371
  1678
+#define NOPIC_LDW4_RANGE_MAX	PIC_LDW4_RANGE_MAX
mgl@1371
  1679
+#define LDDPC_OPCODE		0x48000000
mgl@1371
  1680
+#define LDDPC_MASK		0xf8000000
mgl@1371
  1681
+#define LDDPC_RANGE_MIN		0
mgl@1371
  1682
+#define LDDPC_RANGE_MAX		508
mgl@1371
  1683
+
mgl@1371
  1684
+#define NOPIC_MOV2_OPCODE  0xe0600000
mgl@1371
  1685
+#define NOPIC_MOV2_MASK        0xe1e00000
mgl@1371
  1686
+#define NOPIC_MOV2_RANGE_MIN   (-1048576)
mgl@1371
  1687
+#define NOPIC_MOV2_RANGE_MAX   (1048575)
mgl@1371
  1688
+#define NOPIC_MOV1_OPCODE  0x30000000
mgl@1371
  1689
+#define NOPIC_MOV1_MASK        0xf0000000
mgl@1371
  1690
+#define NOPIC_MOV1_RANGE_MIN   (-128)
mgl@1371
  1691
+#define NOPIC_MOV1_RANGE_MAX   (127)
mgl@1371
  1692
+
mgl@1371
  1693
+/* Only brc2 variants with cond[3] == 0 is considered, since the
mgl@1371
  1694
+   others are not relaxable.  bral is a special case and is handled
mgl@1371
  1695
+   separately.  */
mgl@1371
  1696
+#define BRC2_OPCODE		0xe0800000
mgl@1371
  1697
+#define BRC2_MASK		0xe1e80000
mgl@1371
  1698
+#define BRC2_RANGE_MIN		(-2097152)
mgl@1371
  1699
+#define BRC2_RANGE_MAX		(2097150)
mgl@1371
  1700
+#define BRC1_OPCODE		0xc0000000
mgl@1371
  1701
+#define BRC1_MASK		0xf0080000
mgl@1371
  1702
+#define BRC1_RANGE_MIN		(-256)
mgl@1371
  1703
+#define BRC1_RANGE_MAX		(254)
mgl@1371
  1704
+#define BRAL_OPCODE		0xe08f0000
mgl@1371
  1705
+#define BRAL_MASK		0xe1ef0000
mgl@1371
  1706
+#define BRAL_RANGE_MIN		BRC2_RANGE_MIN
mgl@1371
  1707
+#define BRAL_RANGE_MAX		BRC2_RANGE_MAX
mgl@1371
  1708
+#define RJMP_OPCODE		0xc0080000
mgl@1371
  1709
+#define RJMP_MASK		0xf00c0000
mgl@1371
  1710
+#define RJMP_RANGE_MIN		(-1024)
mgl@1371
  1711
+#define RJMP_RANGE_MAX		(1022)
mgl@1371
  1712
+
mgl@1371
  1713
+/* Define a relax state using the GOT  */
mgl@1371
  1714
+#define RG(id, dir, next, prev, r_type, opc, size)			\
mgl@1371
  1715
+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT,		\
mgl@1371
  1716
+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
mgl@1371
  1717
+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
mgl@1371
  1718
+/* Define a relax state using the Constant Pool  */
mgl@1371
  1719
+#define RC(id, dir, next, prev, r_type, opc, size)			\
mgl@1371
  1720
+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL,	\
mgl@1371
  1721
+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
mgl@1371
  1722
+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
mgl@1371
  1723
+
mgl@1371
  1724
+/* Define a relax state using pc-relative direct reference  */
mgl@1371
  1725
+#define RP(id, dir, next, prev, r_type, opc, size)			\
mgl@1371
  1726
+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL,	\
mgl@1371
  1727
+      R_AVR32_##r_type,	opc##_OPCODE, opc##_MASK,			\
mgl@1371
  1728
+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
mgl@1371
  1729
+
mgl@1371
  1730
+/* Define a relax state using non-pc-relative direct reference */
mgl@1371
  1731
+#define RD(id, dir, next, prev, r_type, opc, size)         \
mgl@1371
  1732
+  { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE,   \
mgl@1371
  1733
+      R_AVR32_##r_type,    opc##_OPCODE, opc##_MASK,           \
mgl@1371
  1734
+      opc##_RANGE_MIN, opc##_RANGE_MAX, size }
mgl@1371
  1735
+
mgl@1371
  1736
+/* Define a relax state that will be handled specially  */
mgl@1371
  1737
+#define RS(id, r_type, size)						\
mgl@1371
  1738
+  { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE,		\
mgl@1371
  1739
+      R_AVR32_##r_type, 0, 0, 0, 0, size }
mgl@1371
  1740
+
mgl@1371
  1741
+const struct relax_state relax_state[RS_MAX] = {
mgl@1371
  1742
+  RS(NONE, NONE, 0),
mgl@1371
  1743
+  RS(ALIGN, ALIGN, 0),
mgl@1371
  1744
+  RS(CPENT, 32_CPENT, 4),
mgl@1371
  1745
+
mgl@1371
  1746
+  RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
mgl@1371
  1747
+  RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
mgl@1371
  1748
+  RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
mgl@1371
  1749
+  RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
mgl@1371
  1750
+
mgl@1371
  1751
+  RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
mgl@1371
  1752
+  RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
mgl@1371
  1753
+  RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
mgl@1371
  1754
+  RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
mgl@1371
  1755
+
mgl@1371
  1756
+  RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
mgl@1371
  1757
+  RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
mgl@1371
  1758
+  RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
mgl@1371
  1759
+
mgl@1371
  1760
+  RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
mgl@1371
  1761
+  RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
mgl@1371
  1762
+  RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
mgl@1371
  1763
+  RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
mgl@1371
  1764
+  RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
mgl@1371
  1765
+
mgl@1371
  1766
+  RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
mgl@1371
  1767
+  RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
mgl@1371
  1768
+  RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
mgl@1371
  1769
+  RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
mgl@1371
  1770
+  RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
mgl@1371
  1771
+  RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
mgl@1371
  1772
+};
mgl@1371
  1773
+
mgl@1371
  1774
+static bfd_boolean
mgl@1371
  1775
+avr32_elf_new_section_hook(bfd *abfd, asection *sec)
mgl@1371
  1776
+{
mgl@1371
  1777
+  struct avr32_section_data *sdata;
mgl@1371
  1778
+
mgl@1371
  1779
+  sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
mgl@1371
  1780
+  if (!sdata)
mgl@1371
  1781
+    return FALSE;
mgl@1371
  1782
+
mgl@1371
  1783
+  sec->used_by_bfd = sdata;
mgl@1371
  1784
+  return _bfd_elf_new_section_hook(abfd, sec);
mgl@1371
  1785
+}
mgl@1371
  1786
+
mgl@1371
  1787
+static struct avr32_relax_data *
mgl@1371
  1788
+avr32_relax_data(asection *sec)
mgl@1371
  1789
+{
mgl@1371
  1790
+  struct avr32_section_data *sdata;
mgl@1371
  1791
+
mgl@1371
  1792
+  BFD_ASSERT(sec->used_by_bfd);
mgl@1371
  1793
+
mgl@1371
  1794
+  sdata = (struct avr32_section_data *)elf_section_data(sec);
mgl@1371
  1795
+  return &sdata->relax_data;
mgl@1371
  1796
+}
mgl@1371
  1797
+
mgl@1371
  1798
+/* Link-time relaxation */
mgl@1371
  1799
+
mgl@1371
  1800
+static bfd_boolean
mgl@1371
  1801
+avr32_elf_relax_section(bfd *abfd, asection *sec,
mgl@1371
  1802
+			struct bfd_link_info *info, bfd_boolean *again);
mgl@1371
  1803
+
mgl@1371
  1804
+enum relax_pass_id {
mgl@1371
  1805
+  RELAX_PASS_SIZE_FRAGS,
mgl@1371
  1806
+  RELAX_PASS_MOVE_DATA,
mgl@1371
  1807
+};
mgl@1371
  1808
+
mgl@1371
  1809
+/* Stolen from the xtensa port */
mgl@1371
  1810
+static int
mgl@1371
  1811
+internal_reloc_compare (const void *ap, const void *bp)
mgl@1371
  1812
+{
mgl@1371
  1813
+  const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
mgl@1371
  1814
+  const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
mgl@1371
  1815
+
mgl@1371
  1816
+  if (a->r_offset != b->r_offset)
mgl@1371
  1817
+    return (a->r_offset - b->r_offset);
mgl@1371
  1818
+
mgl@1371
  1819
+  /* We don't need to sort on these criteria for correctness,
mgl@1371
  1820
+     but enforcing a more strict ordering prevents unstable qsort
mgl@1371
  1821
+     from behaving differently with different implementations.
mgl@1371
  1822
+     Without the code below we get correct but different results
mgl@1371
  1823
+     on Solaris 2.7 and 2.8.  We would like to always produce the
mgl@1371
  1824
+     same results no matter the host.  */
mgl@1371
  1825
+
mgl@1371
  1826
+  if (a->r_info != b->r_info)
mgl@1371
  1827
+    return (a->r_info - b->r_info);
mgl@1371
  1828
+
mgl@1371
  1829
+  return (a->r_addend - b->r_addend);
mgl@1371
  1830
+}
mgl@1371
  1831
+
mgl@1371
  1832
+static enum relax_state_id
mgl@1371
  1833
+get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
mgl@1371
  1834
+			const Elf_Internal_Rela *rela)
mgl@1371
  1835
+{
mgl@1371
  1836
+  bfd_byte *contents;
mgl@1371
  1837
+  bfd_vma insn;
mgl@1371
  1838
+  enum relax_state_id rs = RS_NONE;
mgl@1371
  1839
+
mgl@1371
  1840
+  contents = retrieve_contents(abfd, sec, info->keep_memory);
mgl@1371
  1841
+  if (!contents)
mgl@1371
  1842
+    return RS_ERROR;
mgl@1371
  1843
+
mgl@1371
  1844
+  insn = bfd_get_32(abfd, contents + rela->r_offset);
mgl@1371
  1845
+  if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
mgl@1371
  1846
+    rs = RS_RCALL2;
mgl@1371
  1847
+  else if ((insn & BRAL_MASK) == BRAL_OPCODE)
mgl@1371
  1848
+    /* Optimizing bral -> rjmp gets us into all kinds of
mgl@1371
  1849
+       trouble with jump tables. Better not do it.  */
mgl@1371
  1850
+    rs = RS_NONE;
mgl@1371
  1851
+  else if ((insn & BRC2_MASK) == BRC2_OPCODE)
mgl@1371
  1852
+    rs = RS_BRC2;
mgl@1371
  1853
+
mgl@1371
  1854
+  release_contents(sec, contents);
mgl@1371
  1855
+
mgl@1371
  1856
+  return rs;
mgl@1371
  1857
+}
mgl@1371
  1858
+
mgl@1371
  1859
+static enum relax_state_id
mgl@1371
  1860
+get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
mgl@1371
  1861
+			const Elf_Internal_Rela *rela)
mgl@1371
  1862
+{
mgl@1371
  1863
+  switch (ELF_R_TYPE(rela->r_info))
mgl@1371
  1864
+    {
mgl@1371
  1865
+    case R_AVR32_GOTCALL:
mgl@1371
  1866
+      return RS_PIC_CALL;
mgl@1371
  1867
+    case R_AVR32_GOT18SW:
mgl@1371
  1868
+      return RS_PIC_MCALL;
mgl@1371
  1869
+    case R_AVR32_LDA_GOT:
mgl@1371
  1870
+      return RS_PIC_LDA;
mgl@1371
  1871
+    case R_AVR32_GOT16S:
mgl@1371
  1872
+      return RS_PIC_LDW4;
mgl@1371
  1873
+    case R_AVR32_CPCALL:
mgl@1371
  1874
+      return RS_NOPIC_MCALL;
mgl@1371
  1875
+    case R_AVR32_16_CP:
mgl@1371
  1876
+      return RS_NOPIC_LDW4;
mgl@1371
  1877
+    case R_AVR32_9W_CP:
mgl@1371
  1878
+      return RS_NOPIC_LDDPC;
mgl@1371
  1879
+    case R_AVR32_ALIGN:
mgl@1371
  1880
+      return RS_ALIGN;
mgl@1371
  1881
+    case R_AVR32_32_CPENT:
mgl@1371
  1882
+      return RS_CPENT;
mgl@1371
  1883
+    case R_AVR32_22H_PCREL:
mgl@1371
  1884
+      return get_pcrel22_relax_state(abfd, sec, info, rela);
mgl@1371
  1885
+    case R_AVR32_9H_PCREL:
mgl@1371
  1886
+      return RS_BRC1;
mgl@1371
  1887
+    default:
mgl@1371
  1888
+      return RS_NONE;
mgl@1371
  1889
+    }
mgl@1371
  1890
+}
mgl@1371
  1891
+
mgl@1371
  1892
+static bfd_boolean
mgl@1371
  1893
+reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
mgl@1371
  1894
+{
mgl@1371
  1895
+  switch (ELF_R_TYPE(rela->r_info))
mgl@1371
  1896
+    {
mgl@1371
  1897
+    case R_AVR32_CPCALL:
mgl@1371
  1898
+    case R_AVR32_16_CP:
mgl@1371
  1899
+    case R_AVR32_9W_CP:
mgl@1371
  1900
+      return TRUE;
mgl@1371
  1901
+    default:
mgl@1371
  1902
+      return FALSE;
mgl@1371
  1903
+    }
mgl@1371
  1904
+}
mgl@1371
  1905
+
mgl@1371
  1906
+static struct fragment *
mgl@1371
  1907
+new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
mgl@1371
  1908
+	 struct avr32_relax_data *rd, enum relax_state_id state,
mgl@1371
  1909
+	 Elf_Internal_Rela *rela)
mgl@1371
  1910
+{
mgl@1371
  1911
+  struct fragment *frag;
mgl@1371
  1912
+  bfd_size_type r_size;
mgl@1371
  1913
+  bfd_vma r_offset;
mgl@1371
  1914
+  unsigned int i = rd->frag_count;
mgl@1371
  1915
+
mgl@1371
  1916
+  BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
mgl@1371
  1917
+
mgl@1371
  1918
+  rd->frag_count++;
mgl@1371
  1919
+  frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
mgl@1371
  1920
+  if (!frag)
mgl@1371
  1921
+    return NULL;
mgl@1371
  1922
+  rd->frag = frag;
mgl@1371
  1923
+
mgl@1371
  1924
+  frag += i;
mgl@1371
  1925
+  memset(frag, 0, sizeof(struct fragment));
mgl@1371
  1926
+
mgl@1371
  1927
+  if (state == RS_ALIGN)
mgl@1371
  1928
+    r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
mgl@1371
  1929
+	       & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
mgl@1371
  1930
+  else
mgl@1371
  1931
+    r_size = relax_state[state].size;
mgl@1371
  1932
+
mgl@1371
  1933
+  if (rela)
mgl@1371
  1934
+    r_offset = rela->r_offset;
mgl@1371
  1935
+  else
mgl@1371
  1936
+    r_offset = sec->size;
mgl@1371
  1937
+
mgl@1371
  1938
+  if (i == 0)
mgl@1371
  1939
+    {
mgl@1371
  1940
+      frag->offset = 0;
mgl@1371
  1941
+      frag->size = r_offset + r_size;
mgl@1371
  1942
+    }
mgl@1371
  1943
+  else
mgl@1371
  1944
+    {
mgl@1371
  1945
+      frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
mgl@1371
  1946
+      frag->size = r_offset + r_size - frag->offset;
mgl@1371
  1947
+    }
mgl@1371
  1948
+
mgl@1371
  1949
+  if (state != RS_CPENT)
mgl@1371
  1950
+    /* Make sure we don't discard this frag */
mgl@1371
  1951
+    frag->refcount = 1;
mgl@1371
  1952
+
mgl@1371
  1953
+  frag->initial_state = frag->state = state;
mgl@1371
  1954
+  frag->rela = rela;
mgl@1371
  1955
+
mgl@1371
  1956
+  return frag;
mgl@1371
  1957
+}
mgl@1371
  1958
+
mgl@1371
  1959
+static struct fragment *
mgl@1371
  1960
+find_frag(asection *sec, bfd_vma offset)
mgl@1371
  1961
+{
mgl@1371
  1962
+  struct fragment *first, *last;
mgl@1371
  1963
+  struct avr32_relax_data *rd = avr32_relax_data(sec);
mgl@1371
  1964
+
mgl@1371
  1965
+  if (rd->frag_count == 0)
mgl@1371
  1966
+    return NULL;
mgl@1371
  1967
+
mgl@1371
  1968
+  first = &rd->frag[0];
mgl@1371
  1969
+  last = &rd->frag[rd->frag_count - 1];
mgl@1371
  1970
+
mgl@1371
  1971
+  /* This may be a reloc referencing the end of a section.  The last
mgl@1371
  1972
+     frag will never have a reloc associated with it, so its size will
mgl@1371
  1973
+     never change, thus the offset adjustment of the last frag will
mgl@1371
  1974
+     always be the same as the offset adjustment of the end of the
mgl@1371
  1975
+     section.  */
mgl@1371
  1976
+  if (offset == sec->size)
mgl@1371
  1977
+    {
mgl@1371
  1978
+      BFD_ASSERT(last->offset + last->size == sec->size);
mgl@1371
  1979
+      BFD_ASSERT(!last->rela);
mgl@1371
  1980
+      return last;
mgl@1371
  1981
+    }
mgl@1371
  1982
+
mgl@1371
  1983
+  while (first <= last)
mgl@1371
  1984
+    {
mgl@1371
  1985
+      struct fragment *mid;
mgl@1371
  1986
+
mgl@1371
  1987
+      mid = (last - first) / 2 + first;
mgl@1371
  1988
+      if ((mid->offset + mid->size) <= offset)
mgl@1371
  1989
+	first = mid + 1;
mgl@1371
  1990
+      else if (mid->offset > offset)
mgl@1371
  1991
+	last = mid - 1;
mgl@1371
  1992
+      else
mgl@1371
  1993
+	return mid;
mgl@1371
  1994
+    }
mgl@1371
  1995
+
mgl@1371
  1996
+  return NULL;
mgl@1371
  1997
+}
mgl@1371
  1998
+
mgl@1371
  1999
+/* Look through all relocs in a section and determine if any relocs
mgl@1371
  2000
+   may be affected by relaxation in other sections.  If so, allocate
mgl@1371
  2001
+   an array of additional relocation data which links the affected
mgl@1371
  2002
+   relocations to the frag(s) where the relaxation may occur.
mgl@1371
  2003
+
mgl@1371
  2004
+   This function also links cpool references to cpool entries and
mgl@1371
  2005
+   increments the refcount of the latter when this happens.  */
mgl@1371
  2006
+
mgl@1371
  2007
+static bfd_boolean
mgl@1371
  2008
+allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
mgl@1371
  2009
+		    struct bfd_link_info *info)
mgl@1371
  2010
+{
mgl@1371
  2011
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  2012
+  Elf_Internal_Sym *isymbuf = NULL;
mgl@1371
  2013
+  struct avr32_relax_data *rd;
mgl@1371
  2014
+  unsigned int i;
mgl@1371
  2015
+  bfd_boolean ret = FALSE;
mgl@1371
  2016
+
mgl@1371
  2017
+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
mgl@1371
  2018
+  rd = avr32_relax_data(sec);
mgl@1371
  2019
+
mgl@1371
  2020
+  RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
mgl@1371
  2021
+
mgl@1371
  2022
+  for (i = 0; i < sec->reloc_count; i++)
mgl@1371
  2023
+    {
mgl@1371
  2024
+      Elf_Internal_Rela *rel = &relocs[i];
mgl@1371
  2025
+      asection *sym_sec;
mgl@1371
  2026
+      unsigned long r_symndx;
mgl@1371
  2027
+      bfd_vma sym_value;
mgl@1371
  2028
+
mgl@1371
  2029
+      if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
mgl@1371
  2030
+	  && !reloc_is_cpool_ref(rel))
mgl@1371
  2031
+	continue;
mgl@1371
  2032
+
mgl@1371
  2033
+      r_symndx = ELF_R_SYM(rel->r_info);
mgl@1371
  2034
+
mgl@1371
  2035
+      if (r_symndx < symtab_hdr->sh_info)
mgl@1371
  2036
+	{
mgl@1371
  2037
+	  Elf_Internal_Sym *isym;
mgl@1371
  2038
+
mgl@1371
  2039
+	  if (!isymbuf)
mgl@1371
  2040
+	    isymbuf = retrieve_local_syms(abfd, info->keep_memory);
mgl@1371
  2041
+	  if (!isymbuf)
mgl@1371
  2042
+	    return FALSE;
mgl@1371
  2043
+
mgl@1371
  2044
+	  isym = &isymbuf[r_symndx];
mgl@1371
  2045
+	  sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
mgl@1371
  2046
+	  sym_value = isym->st_value;
mgl@1371
  2047
+	}
mgl@1371
  2048
+      else
mgl@1371
  2049
+	{
mgl@1371
  2050
+	  struct elf_link_hash_entry *h;
mgl@1371
  2051
+
mgl@1371
  2052
+	  h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
mgl@1371
  2053
+
mgl@1371
  2054
+	  while (h->root.type == bfd_link_hash_indirect
mgl@1371
  2055
+		 || h->root.type == bfd_link_hash_warning)
mgl@1371
  2056
+	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
mgl@1371
  2057
+
mgl@1371
  2058
+	  if (h->root.type != bfd_link_hash_defined
mgl@1371
  2059
+	      && h->root.type != bfd_link_hash_defweak)
mgl@1371
  2060
+	    continue;
mgl@1371
  2061
+
mgl@1371
  2062
+	  sym_sec = h->root.u.def.section;
mgl@1371
  2063
+	  sym_value = h->root.u.def.value;
mgl@1371
  2064
+	}
mgl@1371
  2065
+
mgl@1371
  2066
+      if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
mgl@1371
  2067
+	{
mgl@1371
  2068
+	  bfd_size_type size;
mgl@1371
  2069
+	  struct fragment *frag;
mgl@1371
  2070
+
mgl@1371
  2071
+	  if (!rd->reloc_data)
mgl@1371
  2072
+	    {
mgl@1371
  2073
+	      size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
mgl@1371
  2074
+	      rd->reloc_data = bfd_zalloc(abfd, size);
mgl@1371
  2075
+	      if (!rd->reloc_data)
mgl@1371
  2076
+		goto out;
mgl@1371
  2077
+	    }
mgl@1371
  2078
+
mgl@1371
  2079
+	  RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
mgl@1371
  2080
+	       i, rel->r_offset, sym_value, rel->r_addend);
mgl@1371
  2081
+
mgl@1371
  2082
+	  frag = find_frag(sym_sec, sym_value + rel->r_addend);
mgl@1371
  2083
+	  BFD_ASSERT(frag);
mgl@1371
  2084
+	  rd->reloc_data[i].add_frag = frag;
mgl@1371
  2085
+
mgl@1371
  2086
+	  RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
mgl@1371
  2087
+	       frag->rela ? frag->rela->r_offset : sym_sec->size);
mgl@1371
  2088
+
mgl@1371
  2089
+	  if (reloc_is_cpool_ref(rel))
mgl@1371
  2090
+	    {
mgl@1371
  2091
+	      BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
mgl@1371
  2092
+	      frag->refcount++;
mgl@1371
  2093
+	    }
mgl@1371
  2094
+
mgl@1371
  2095
+	  if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
mgl@1371
  2096
+	    {
mgl@1371
  2097
+	      bfd_byte *contents;
mgl@1371
  2098
+	      bfd_signed_vma diff;
mgl@1371
  2099
+
mgl@1371
  2100
+	      contents = retrieve_contents(abfd, sec, info->keep_memory);
mgl@1371
  2101
+	      if (!contents)
mgl@1371
  2102
+		goto out;
mgl@1371
  2103
+
mgl@1371
  2104
+	      diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
mgl@1371
  2105
+	      frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
mgl@1371
  2106
+	      BFD_ASSERT(frag);
mgl@1371
  2107
+	      rd->reloc_data[i].sub_frag = frag;
mgl@1371
  2108
+
mgl@1371
  2109
+	      release_contents(sec, contents);
mgl@1371
  2110
+	    }
mgl@1371
  2111
+	}
mgl@1371
  2112
+    }
mgl@1371
  2113
+
mgl@1371
  2114
+  ret = TRUE;
mgl@1371
  2115
+
mgl@1371
  2116
+ out:
mgl@1371
  2117
+  release_local_syms(abfd, isymbuf);
mgl@1371
  2118
+  return ret;
mgl@1371
  2119
+}
mgl@1371
  2120
+
mgl@1371
  2121
+static bfd_boolean
mgl@1371
  2122
+global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
mgl@1371
  2123
+		    struct bfd_link_info *info ATTRIBUTE_UNUSED)
mgl@1371
  2124
+{
mgl@1371
  2125
+  struct fragment *frag;
mgl@1371
  2126
+  asection *sec;
mgl@1371
  2127
+
mgl@1371
  2128
+  if (havr->root.root.type != bfd_link_hash_defined
mgl@1371
  2129
+      && havr->root.root.type != bfd_link_hash_defweak)
mgl@1371
  2130
+    return TRUE;
mgl@1371
  2131
+
mgl@1371
  2132
+  sec = havr->root.root.u.def.section;
mgl@1371
  2133
+  if (bfd_is_const_section(sec)
mgl@1371
  2134
+      || !avr32_relax_data(sec)->is_relaxable)
mgl@1371
  2135
+    return TRUE;
mgl@1371
  2136
+
mgl@1371
  2137
+  frag = find_frag(sec, havr->root.root.u.def.value);
mgl@1371
  2138
+  if (!frag)
mgl@1371
  2139
+    {
mgl@1371
  2140
+      unsigned int i;
mgl@1371
  2141
+      struct avr32_relax_data *rd = avr32_relax_data(sec);
mgl@1371
  2142
+
mgl@1371
  2143
+      RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
mgl@1371
  2144
+	   sec->owner->filename, havr->root.root.root.string,
mgl@1371
  2145
+	   sec->name, havr->root.root.u.def.value, sec->size);
mgl@1371
  2146
+      for (i = 0; i < rd->frag_count; i++)
mgl@1371
  2147
+	RDBG("    %8lu - %8lu\n", rd->frag[i].offset,
mgl@1371
  2148
+	     rd->frag[i].offset + rd->frag[i].size);
mgl@1371
  2149
+    }
mgl@1371
  2150
+  BFD_ASSERT(frag);
mgl@1371
  2151
+
mgl@1371
  2152
+  havr->sym_frag = frag;
mgl@1371
  2153
+  return TRUE;
mgl@1371
  2154
+}
mgl@1371
  2155
+
mgl@1371
  2156
+static bfd_boolean
mgl@1371
  2157
+analyze_relocations(struct bfd_link_info *info)
mgl@1371
  2158
+{
mgl@1371
  2159
+  bfd *abfd;
mgl@1371
  2160
+  asection *sec;
mgl@1371
  2161
+
mgl@1371
  2162
+  /* Divide all relaxable sections into fragments */
mgl@1371
  2163
+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
mgl@1371
  2164
+    {
mgl@1371
  2165
+      if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
mgl@1371
  2166
+	{
mgl@1371
  2167
+	  if (!(*info->callbacks->warning)
mgl@1371
  2168
+	      (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
mgl@1371
  2169
+	    return FALSE;
mgl@1371
  2170
+	  continue;
mgl@1371
  2171
+	}
mgl@1371
  2172
+
mgl@1371
  2173
+      for (sec = abfd->sections; sec; sec = sec->next)
mgl@1371
  2174
+	{
mgl@1371
  2175
+	  struct avr32_relax_data *rd;
mgl@1371
  2176
+	  struct fragment *frag;
mgl@1371
  2177
+	  Elf_Internal_Rela *relocs;
mgl@1371
  2178
+	  unsigned int i;
mgl@1371
  2179
+	  bfd_boolean ret = TRUE;
mgl@1371
  2180
+
mgl@1371
  2181
+	  if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
mgl@1371
  2182
+	    continue;
mgl@1371
  2183
+
mgl@1371
  2184
+	  rd = avr32_relax_data(sec);
mgl@1371
  2185
+
mgl@1371
  2186
+	  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
mgl@1371
  2187
+	  if (!relocs)
mgl@1371
  2188
+	    return FALSE;
mgl@1371
  2189
+
mgl@1371
  2190
+	  qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
mgl@1371
  2191
+		internal_reloc_compare);
mgl@1371
  2192
+
mgl@1371
  2193
+	  for (i = 0; i < sec->reloc_count; i++)
mgl@1371
  2194
+	    {
mgl@1371
  2195
+	      enum relax_state_id state;
mgl@1371
  2196
+
mgl@1371
  2197
+	      ret = FALSE;
mgl@1371
  2198
+	      state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
mgl@1371
  2199
+	      if (state == RS_ERROR)
mgl@1371
  2200
+		break;
mgl@1371
  2201
+
mgl@1371
  2202
+	      if (state)
mgl@1371
  2203
+		{
mgl@1371
  2204
+		  frag = new_frag(abfd, sec, rd, state, &relocs[i]);
mgl@1371
  2205
+		  if (!frag)
mgl@1371
  2206
+		    break;
mgl@1371
  2207
+
mgl@1371
  2208
+		  pin_internal_relocs(sec, relocs);
mgl@1371
  2209
+		  rd->is_relaxable = TRUE;
mgl@1371
  2210
+		}
mgl@1371
  2211
+
mgl@1371
  2212
+	      ret = TRUE;
mgl@1371
  2213
+	    }
mgl@1371
  2214
+
mgl@1371
  2215
+	  release_internal_relocs(sec, relocs);
mgl@1371
  2216
+	  if (!ret)
mgl@1371
  2217
+	    return ret;
mgl@1371
  2218
+
mgl@1371
  2219
+	  if (rd->is_relaxable)
mgl@1371
  2220
+	    {
mgl@1371
  2221
+	      frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
mgl@1371
  2222
+	      if (!frag)
mgl@1371
  2223
+		return FALSE;
mgl@1371
  2224
+	    }
mgl@1371
  2225
+	}
mgl@1371
  2226
+    }
mgl@1371
  2227
+
mgl@1371
  2228
+  /* Link each global symbol to the fragment where it's defined.  */
mgl@1371
  2229
+  elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
mgl@1371
  2230
+
mgl@1371
  2231
+  /* Do the same for local symbols. */
mgl@1371
  2232
+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
mgl@1371
  2233
+    {
mgl@1371
  2234
+      Elf_Internal_Sym *isymbuf, *isym;
mgl@1371
  2235
+      struct fragment **local_sym_frag;
mgl@1371
  2236
+      unsigned int i, sym_count;
mgl@1371
  2237
+
mgl@1371
  2238
+      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
mgl@1371
  2239
+      if (sym_count == 0)
mgl@1371
  2240
+	continue;
mgl@1371
  2241
+
mgl@1371
  2242
+      local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
mgl@1371
  2243
+      if (!local_sym_frag)
mgl@1371
  2244
+	return FALSE;
mgl@1371
  2245
+      elf_tdata(abfd)->local_sym_frag = local_sym_frag;
mgl@1371
  2246
+
mgl@1371
  2247
+      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
mgl@1371
  2248
+      if (!isymbuf)
mgl@1371
  2249
+	return FALSE;
mgl@1371
  2250
+
mgl@1371
  2251
+      for (i = 0; i < sym_count; i++)
mgl@1371
  2252
+	{
mgl@1371
  2253
+	  struct avr32_relax_data *rd;
mgl@1371
  2254
+	  struct fragment *frag;
mgl@1371
  2255
+	  asection *sec;
mgl@1371
  2256
+
mgl@1371
  2257
+	  isym = &isymbuf[i];
mgl@1371
  2258
+
mgl@1371
  2259
+	  sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
mgl@1371
  2260
+	  if (!sec)
mgl@1371
  2261
+	    continue;
mgl@1371
  2262
+
mgl@1371
  2263
+	  rd = avr32_relax_data(sec);
mgl@1371
  2264
+	  if (!rd->is_relaxable)
mgl@1371
  2265
+	    continue;
mgl@1371
  2266
+
mgl@1371
  2267
+	  frag = find_frag(sec, isym->st_value);
mgl@1371
  2268
+	  BFD_ASSERT(frag);
mgl@1371
  2269
+
mgl@1371
  2270
+	  local_sym_frag[i] = frag;
mgl@1371
  2271
+	}
mgl@1371
  2272
+
mgl@1371
  2273
+      release_local_syms(abfd, isymbuf);
mgl@1371
  2274
+    }
mgl@1371
  2275
+
mgl@1371
  2276
+  /* And again for relocs with addends and constant pool references */
mgl@1371
  2277
+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
mgl@1371
  2278
+    for (sec = abfd->sections; sec; sec = sec->next)
mgl@1371
  2279
+      {
mgl@1371
  2280
+	Elf_Internal_Rela *relocs;
mgl@1371
  2281
+	bfd_boolean ret;
mgl@1371
  2282
+
mgl@1371
  2283
+	if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
mgl@1371
  2284
+	  continue;
mgl@1371
  2285
+
mgl@1371
  2286
+	relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
mgl@1371
  2287
+	if (!relocs)
mgl@1371
  2288
+	  return FALSE;
mgl@1371
  2289
+
mgl@1371
  2290
+	ret = allocate_reloc_data(abfd, sec, relocs, info);
mgl@1371
  2291
+
mgl@1371
  2292
+	release_internal_relocs(sec, relocs);
mgl@1371
  2293
+	if (ret == FALSE)
mgl@1371
  2294
+	  return ret;
mgl@1371
  2295
+      }
mgl@1371
  2296
+
mgl@1371
  2297
+  return TRUE;
mgl@1371
  2298
+}
mgl@1371
  2299
+
mgl@1371
  2300
+static bfd_boolean
mgl@1371
  2301
+rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
mgl@1371
  2302
+		  bfd_vma symval, bfd_vma addr, struct got_entry *got,
mgl@1371
  2303
+		  struct avr32_reloc_data *ind_data,
mgl@1371
  2304
+		  bfd_signed_vma offset_adjust)
mgl@1371
  2305
+{
mgl@1371
  2306
+  bfd_signed_vma target = 0;
mgl@1371
  2307
+
mgl@1371
  2308
+  switch (rs->reftype)
mgl@1371
  2309
+    {
mgl@1371
  2310
+    case REF_ABSOLUTE:
mgl@1371
  2311
+      target = symval;
mgl@1371
  2312
+      break;
mgl@1371
  2313
+    case REF_PCREL:
mgl@1371
  2314
+      target = symval - addr;
mgl@1371
  2315
+      break;
mgl@1371
  2316
+    case REF_CPOOL:
mgl@1371
  2317
+      /* cpool frags are always in the same section and always after
mgl@1371
  2318
+	 all frags referring to it.  So it's always correct to add in
mgl@1371
  2319
+	 offset_adjust here.  */
mgl@1371
  2320
+      target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
mgl@1371
  2321
+		+ offset_adjust - frag->offset - frag->offset_adjust);
mgl@1371
  2322
+      break;
mgl@1371
  2323
+    case REF_GOT:
mgl@1371
  2324
+      target = got->offset;
mgl@1371
  2325
+      break;
mgl@1371
  2326
+    default:
mgl@1371
  2327
+      abort();
mgl@1371
  2328
+    }
mgl@1371
  2329
+
mgl@1371
  2330
+  if (target >= rs->range_min && target <= rs->range_max)
mgl@1371
  2331
+    return TRUE;
mgl@1371
  2332
+  else
mgl@1371
  2333
+    return FALSE;
mgl@1371
  2334
+}
mgl@1371
  2335
+
mgl@1371
  2336
+static bfd_boolean
mgl@1371
  2337
+avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
mgl@1371
  2338
+{
mgl@1371
  2339
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  2340
+  struct avr32_relax_data *rd;
mgl@1371
  2341
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  2342
+  Elf_Internal_Rela *relocs = NULL;
mgl@1371
  2343
+  Elf_Internal_Sym *isymbuf = NULL;
mgl@1371
  2344
+  struct got_entry **local_got_ents;
mgl@1371
  2345
+  struct fragment **local_sym_frag;
mgl@1371
  2346
+  bfd_boolean ret = FALSE;
mgl@1371
  2347
+  bfd_signed_vma delta = 0;
mgl@1371
  2348
+  unsigned int i;
mgl@1371
  2349
+
mgl@1371
  2350
+  htab = avr32_elf_hash_table(info);
mgl@1371
  2351
+  rd = avr32_relax_data(sec);
mgl@1371
  2352
+
mgl@1371
  2353
+  if (sec == htab->sgot)
mgl@1371
  2354
+    {
mgl@1371
  2355
+      RDBG("Relaxing GOT section (vma: 0x%lx)\n",
mgl@1371
  2356
+	   sec->output_section->vma + sec->output_offset);
mgl@1371
  2357
+      if (assign_got_offsets(htab))
mgl@1371
  2358
+	htab->repeat_pass = TRUE;
mgl@1371
  2359
+      return TRUE;
mgl@1371
  2360
+    }
mgl@1371
  2361
+
mgl@1371
  2362
+  if (!rd->is_relaxable)
mgl@1371
  2363
+    return TRUE;
mgl@1371
  2364
+
mgl@1371
  2365
+  if (!sec->rawsize)
mgl@1371
  2366
+    sec->rawsize = sec->size;
mgl@1371
  2367
+
mgl@1371
  2368
+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
mgl@1371
  2369
+  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
mgl@1371
  2370
+  if (!relocs)
mgl@1371
  2371
+    goto out;
mgl@1371
  2372
+
mgl@1371
  2373
+  isymbuf = retrieve_local_syms(abfd, info->keep_memory);
mgl@1371
  2374
+  if (!isymbuf)
mgl@1371
  2375
+    goto out;
mgl@1371
  2376
+
mgl@1371
  2377
+  local_got_ents = elf_local_got_ents(abfd);
mgl@1371
  2378
+  local_sym_frag = elf_tdata(abfd)->local_sym_frag;
mgl@1371
  2379
+
mgl@1371
  2380
+  RDBG("size_frags: %s<%s>\n  vma: 0x%08lx, size: 0x%08lx\n",
mgl@1371
  2381
+       abfd->filename, sec->name,
mgl@1371
  2382
+       sec->output_section->vma + sec->output_offset, sec->size);
mgl@1371
  2383
+
mgl@1371
  2384
+  for (i = 0; i < rd->frag_count; i++)
mgl@1371
  2385
+    {
mgl@1371
  2386
+      struct fragment *frag = &rd->frag[i];
mgl@1371
  2387
+      struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
mgl@1371
  2388
+      const struct relax_state *state, *next_state;
mgl@1371
  2389
+      struct fragment *target_frag = NULL;
mgl@1371
  2390
+      asection *sym_sec = NULL;
mgl@1371
  2391
+      Elf_Internal_Rela *rela;
mgl@1371
  2392
+      struct got_entry *got;
mgl@1371
  2393
+      bfd_vma symval, r_offset, addend, addr;
mgl@1371
  2394
+      bfd_signed_vma size_adjust = 0, distance;
mgl@1371
  2395
+      unsigned long r_symndx;
mgl@1371
  2396
+      bfd_boolean defined = TRUE, dynamic = FALSE;
mgl@1371
  2397
+      unsigned char sym_type;
mgl@1371
  2398
+
mgl@1371
  2399
+      frag->offset_adjust += delta;
mgl@1371
  2400
+      state = next_state = &relax_state[frag->state];
mgl@1371
  2401
+      rela = frag->rela;
mgl@1371
  2402
+
mgl@1371
  2403
+      BFD_ASSERT(state->id == frag->state);
mgl@1371
  2404
+
mgl@1371
  2405
+      RDBG("  0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
mgl@1371
  2406
+	   (frag->offset_adjust < 0)?'-':'+',
mgl@1371
  2407
+	   abs(frag->offset_adjust), state->name, state->size);
mgl@1371
  2408
+
mgl@1371
  2409
+      if (!rela)
mgl@1371
  2410
+	{
mgl@1371
  2411
+	  RDBG(": no reloc, ignoring\n");
mgl@1371
  2412
+	  continue;
mgl@1371
  2413
+	}
mgl@1371
  2414
+
mgl@1371
  2415
+      BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
mgl@1371
  2416
+      BFD_ASSERT(state != RS_NONE);
mgl@1371
  2417
+
mgl@1371
  2418
+      r_offset = rela->r_offset + frag->offset_adjust;
mgl@1371
  2419
+      addr = sec->output_section->vma + sec->output_offset + r_offset;
mgl@1371
  2420
+
mgl@1371
  2421
+      switch (frag->state)
mgl@1371
  2422
+	{
mgl@1371
  2423
+	case RS_ALIGN:
mgl@1371
  2424
+	  size_adjust = ((addr + (1 << rela->r_addend) - 1)
mgl@1371
  2425
+			 & ~((1 << rela->r_addend) - 1));
mgl@1371
  2426
+	  size_adjust -= (sec->output_section->vma + sec->output_offset
mgl@1371
  2427
+			  + frag->offset + frag->offset_adjust
mgl@1371
  2428
+			  + frag->size + frag->size_adjust);
mgl@1371
  2429
+
mgl@1371
  2430
+	  RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
mgl@1371
  2431
+	       frag->size + frag->size_adjust + size_adjust);
mgl@1371
  2432
+	  break;
mgl@1371
  2433
+
mgl@1371
  2434
+	case RS_CPENT:
mgl@1371
  2435
+	  if (frag->refcount == 0 && frag->size_adjust == 0)
mgl@1371
  2436
+	    {
mgl@1371
  2437
+	      RDBG(": discarding frag\n");
mgl@1371
  2438
+	      size_adjust = -4;
mgl@1371
  2439
+	    }
mgl@1371
  2440
+	  else if (frag->refcount > 0 && frag->size_adjust < 0)
mgl@1371
  2441
+	    {
mgl@1371
  2442
+	      RDBG(": un-discarding frag\n");
mgl@1371
  2443
+	      size_adjust = 4;
mgl@1371
  2444
+	    }
mgl@1371
  2445
+	  break;
mgl@1371
  2446
+
mgl@1371
  2447
+	default:
mgl@1371
  2448
+	  if (rd->reloc_data)
mgl@1371
  2449
+	    r_data = &rd->reloc_data[frag->rela - relocs];
mgl@1371
  2450
+
mgl@1371
  2451
+	  /* If this is a cpool reference, we want the symbol that the
mgl@1371
  2452
+	     cpool entry refers to, not the symbol for the cpool entry
mgl@1371
  2453
+	     itself, as we already know what frag it's in.  */
mgl@1371
  2454
+	  if (relax_state[frag->initial_state].reftype == REF_CPOOL)
mgl@1371
  2455
+	    {
mgl@1371
  2456
+	      Elf_Internal_Rela *irela = r_data->add_frag->rela;
mgl@1371
  2457
+
mgl@1371
  2458
+	      r_symndx = ELF_R_SYM(irela->r_info);
mgl@1371
  2459
+	      addend = irela->r_addend;
mgl@1371
  2460
+
mgl@1371
  2461
+	      /* The constant pool must be in the same section as the
mgl@1371
  2462
+		 reloc referring to it.  */
mgl@1371
  2463
+	      BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
mgl@1371
  2464
+
mgl@1371
  2465
+	      ind_data = r_data;
mgl@1371
  2466
+	      r_data = &rd->reloc_data[irela - relocs];
mgl@1371
  2467
+	    }
mgl@1371
  2468
+	  else
mgl@1371
  2469
+	    {
mgl@1371
  2470
+	      r_symndx = ELF_R_SYM(rela->r_info);
mgl@1371
  2471
+	      addend = rela->r_addend;
mgl@1371
  2472
+	    }
mgl@1371
  2473
+
mgl@1371
  2474
+	  /* Get the value of the symbol referred to by the reloc.  */
mgl@1371
  2475
+	  if (r_symndx < symtab_hdr->sh_info)
mgl@1371
  2476
+	    {
mgl@1371
  2477
+	      Elf_Internal_Sym *isym;
mgl@1371
  2478
+
mgl@1371
  2479
+	      isym = isymbuf + r_symndx;
mgl@1371
  2480
+	      symval = 0;
mgl@1371
  2481
+
mgl@1371
  2482
+	      RDBG(" local sym %lu: ", r_symndx);
mgl@1371
  2483
+
mgl@1371
  2484
+	      if (isym->st_shndx == SHN_UNDEF)
mgl@1371
  2485
+		defined = FALSE;
mgl@1371
  2486
+	      else if (isym->st_shndx == SHN_ABS)
mgl@1371
  2487
+		sym_sec = bfd_abs_section_ptr;
mgl@1371
  2488
+	      else if (isym->st_shndx == SHN_COMMON)
mgl@1371
  2489
+		sym_sec = bfd_com_section_ptr;
mgl@1371
  2490
+	      else
mgl@1371
  2491
+		sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
mgl@1371
  2492
+
mgl@1371
  2493
+	      symval = isym->st_value;
mgl@1371
  2494
+	      sym_type = ELF_ST_TYPE(isym->st_info);
mgl@1371
  2495
+	      target_frag = local_sym_frag[r_symndx];
mgl@1371
  2496
+
mgl@1371
  2497
+	      if (local_got_ents)
mgl@1371
  2498
+		got = local_got_ents[r_symndx];
mgl@1371
  2499
+	      else
mgl@1371
  2500
+		got = NULL;
mgl@1371
  2501
+	    }
mgl@1371
  2502
+	  else
mgl@1371
  2503
+	    {
mgl@1371
  2504
+	      /* Global symbol */
mgl@1371
  2505
+	      unsigned long index;
mgl@1371
  2506
+	      struct elf_link_hash_entry *h;
mgl@1371
  2507
+	      struct elf_avr32_link_hash_entry *havr;
mgl@1371
  2508
+
mgl@1371
  2509
+	      index = r_symndx - symtab_hdr->sh_info;
mgl@1371
  2510
+	      h = elf_sym_hashes(abfd)[index];
mgl@1371
  2511
+	      BFD_ASSERT(h != NULL);
mgl@1371
  2512
+
mgl@1371
  2513
+	      while (h->root.type == bfd_link_hash_indirect
mgl@1371
  2514
+		     || h->root.type == bfd_link_hash_warning)
mgl@1371
  2515
+		h = (struct elf_link_hash_entry *)h->root.u.i.link;
mgl@1371
  2516
+
mgl@1371
  2517
+	      havr = (struct elf_avr32_link_hash_entry *)h;
mgl@1371
  2518
+	      got = h->got.glist;
mgl@1371
  2519
+
mgl@1371
  2520
+	      symval = 0;
mgl@1371
  2521
+
mgl@1371
  2522
+	      RDBG(" %s: ", h->root.root.string);
mgl@1371
  2523
+
mgl@1371
  2524
+	      if (h->root.type != bfd_link_hash_defined
mgl@1371
  2525
+		  && h->root.type != bfd_link_hash_defweak)
mgl@1371
  2526
+		{
mgl@1371
  2527
+		  RDBG("(undef)");
mgl@1371
  2528
+		  defined = FALSE;
mgl@1371
  2529
+		}
mgl@1371
  2530
+	      else if ((info->shared && !info->symbolic && h->dynindx != -1)
mgl@1371
  2531
+		       || (htab->root.dynamic_sections_created
mgl@1371
  2532
+			   && h->def_dynamic && !h->def_regular))
mgl@1371
  2533
+		{
mgl@1371
  2534
+		  RDBG("(dynamic)");
mgl@1371
  2535
+		  dynamic = TRUE;
mgl@1371
  2536
+		  sym_sec = h->root.u.def.section;
mgl@1371
  2537
+		}
mgl@1371
  2538
+	      else
mgl@1371
  2539
+		{
mgl@1371
  2540
+		  sym_sec = h->root.u.def.section;
mgl@1371
  2541
+		  symval = h->root.u.def.value;
mgl@1371
  2542
+		  target_frag = havr->sym_frag;
mgl@1371
  2543
+		}
mgl@1371
  2544
+
mgl@1371
  2545
+	      sym_type = h->type;
mgl@1371
  2546
+	    }
mgl@1371
  2547
+
mgl@1371
  2548
+	  /* Thanks to elf32-ppc for this one.  */
mgl@1371
  2549
+	  if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
mgl@1371
  2550
+	    {
mgl@1371
  2551
+	      /* At this stage in linking, no SEC_MERGE symbol has been
mgl@1371
  2552
+		 adjusted, so all references to such symbols need to be
mgl@1371
  2553
+		 passed through _bfd_merged_section_offset.  (Later, in
mgl@1371
  2554
+		 relocate_section, all SEC_MERGE symbols *except* for
mgl@1371
  2555
+		 section symbols have been adjusted.)
mgl@1371
  2556
+
mgl@1371
  2557
+	         SEC_MERGE sections are not relaxed by us, as they
mgl@1371
  2558
+	         shouldn't contain any code.  */
mgl@1371
  2559
+
mgl@1371
  2560
+	      BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
mgl@1371
  2561
+
mgl@1371
  2562
+	      /* gas may reduce relocations against symbols in SEC_MERGE
mgl@1371
  2563
+		 sections to a relocation against the section symbol when
mgl@1371
  2564
+		 the original addend was zero.  When the reloc is against
mgl@1371
  2565
+		 a section symbol we should include the addend in the
mgl@1371
  2566
+		 offset passed to _bfd_merged_section_offset, since the
mgl@1371
  2567
+		 location of interest is the original symbol.  On the
mgl@1371
  2568
+		 other hand, an access to "sym+addend" where "sym" is not
mgl@1371
  2569
+		 a section symbol should not include the addend;  Such an
mgl@1371
  2570
+		 access is presumed to be an offset from "sym";  The
mgl@1371
  2571
+		 location of interest is just "sym".  */
mgl@1371
  2572
+	      RDBG("\n    MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
mgl@1371
  2573
+		   (sym_type == STT_SECTION)?"section":"not section",
mgl@1371
  2574
+		   sym_sec->output_section->vma + sym_sec->output_offset,
mgl@1371
  2575
+		   symval, addend);
mgl@1371
  2576
+
mgl@1371
  2577
+	      if (sym_type == STT_SECTION)
mgl@1371
  2578
+		symval += addend;
mgl@1371
  2579
+
mgl@1371
  2580
+	      symval = (_bfd_merged_section_offset
mgl@1371
  2581
+			(abfd, &sym_sec,
mgl@1371
  2582
+			 elf_section_data(sym_sec)->sec_info, symval));
mgl@1371
  2583
+
mgl@1371
  2584
+	      if (sym_type != STT_SECTION)
mgl@1371
  2585
+		symval += addend;
mgl@1371
  2586
+	    }
mgl@1371
  2587
+	  else
mgl@1371
  2588
+	    symval += addend;
mgl@1371
  2589
+
mgl@1371
  2590
+	  if (defined && !dynamic)
mgl@1371
  2591
+	    {
mgl@1371
  2592
+	      RDBG("0x%lx+0x%lx",
mgl@1371
  2593
+		   sym_sec->output_section->vma + sym_sec->output_offset,
mgl@1371
  2594
+		   symval);
mgl@1371
  2595
+	      symval += sym_sec->output_section->vma + sym_sec->output_offset;
mgl@1371
  2596
+	    }
mgl@1371
  2597
+
mgl@1371
  2598
+	  if (r_data && r_data->add_frag)
mgl@1371
  2599
+	    /* If the add_frag pointer is set, it means that this reloc
mgl@1371
  2600
+	       has an addend that may be affected by relaxation.  */
mgl@1371
  2601
+	    target_frag = r_data->add_frag;
mgl@1371
  2602
+
mgl@1371
  2603
+	  if (target_frag)
mgl@1371
  2604
+	    {
mgl@1371
  2605
+	      symval += target_frag->offset_adjust;
mgl@1371
  2606
+
mgl@1371
  2607
+	      /* If target_frag comes after this frag in the same
mgl@1371
  2608
+		 section, we should assume that it will be moved by
mgl@1371
  2609
+		 the same amount we are.  */
mgl@1371
  2610
+	      if ((target_frag - rd->frag) < (int)rd->frag_count
mgl@1371
  2611
+		  && target_frag > frag)
mgl@1371
  2612
+		symval += delta;
mgl@1371
  2613
+	    }
mgl@1371
  2614
+
mgl@1371
  2615
+	  distance = symval - addr;
mgl@1371
  2616
+
mgl@1371
  2617
+	  /* First, try to make a direct reference.  If the symbol is
mgl@1371
  2618
+	     dynamic or undefined, we must take care not to change its
mgl@1371
  2619
+	     reference type, that is, we can't make it direct.
mgl@1371
  2620
+
mgl@1371
  2621
+	     Also, it seems like some sections may actually be resized
mgl@1371
  2622
+	     after the relaxation code is done, so we can't really
mgl@1371
  2623
+	     trust that our "distance" is correct.  There's really no
mgl@1371
  2624
+	     easy solution to this problem, so we'll just disallow
mgl@1371
  2625
+	     direct references to SEC_DATA sections.
mgl@1371
  2626
+
mgl@1371
  2627
+	     Oh, and .bss isn't actually SEC_DATA, so we disallow
mgl@1371
  2628
+	     !SEC_HAS_CONTENTS as well. */
mgl@1371
  2629
+	  if (!dynamic && defined
mgl@1371
  2630
+	      && (htab->direct_data_refs
mgl@1371
  2631
+		  || (!(sym_sec->flags & SEC_DATA)
mgl@1371
  2632
+		      && (sym_sec->flags & SEC_HAS_CONTENTS)))
mgl@1371
  2633
+	      && next_state->direct)
mgl@1371
  2634
+	    {
mgl@1371
  2635
+	      next_state = &relax_state[next_state->direct];
mgl@1371
  2636
+	      RDBG(" D-> %s", next_state->name);
mgl@1371
  2637
+	    }
mgl@1371
  2638
+
mgl@1371
  2639
+	  /* Iterate backwards until we find a state that fits.  */
mgl@1371
  2640
+	  while (next_state->prev
mgl@1371
  2641
+		 && !rs_is_good_enough(next_state, frag, symval, addr,
mgl@1371
  2642
+				       got, ind_data, delta))
mgl@1371
  2643
+	    {
mgl@1371
  2644
+	      next_state = &relax_state[next_state->prev];
mgl@1371
  2645
+	      RDBG(" P-> %s", next_state->name);
mgl@1371
  2646
+	    }
mgl@1371
  2647
+
mgl@1371
  2648
+	  /* Then try to find the best possible state.  */
mgl@1371
  2649
+	  while (next_state->next)
mgl@1371
  2650
+	    {
mgl@1371
  2651
+	      const struct relax_state *candidate;
mgl@1371
  2652
+
mgl@1371
  2653
+	      candidate = &relax_state[next_state->next];
mgl@1371
  2654
+	      if (!rs_is_good_enough(candidate, frag, symval, addr, got,
mgl@1371
  2655
+				     ind_data, delta))
mgl@1371
  2656
+		break;
mgl@1371
  2657
+
mgl@1371
  2658
+	      next_state = candidate;
mgl@1371
  2659
+	      RDBG(" N-> %s", next_state->name);
mgl@1371
  2660
+	    }
mgl@1371
  2661
+
mgl@1371
  2662
+	  RDBG(" [size %ld]\n", next_state->size);
mgl@1371
  2663
+
mgl@1371
  2664
+	  BFD_ASSERT(next_state->id);
mgl@1371
  2665
+	  BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
mgl@1371
  2666
+
mgl@1371
  2667
+	  size_adjust = next_state->size - state->size;
mgl@1371
  2668
+
mgl@1371
  2669
+	  /* There's a theoretical possibility that shrinking one frag
mgl@1371
  2670
+	     may cause another to grow, which may cause the first one to
mgl@1371
  2671
+	     grow as well, and we're back where we started.  Avoid this
mgl@1371
  2672
+	     scenario by disallowing a frag that has grown to ever
mgl@1371
  2673
+	     shrink again.  */
mgl@1371
  2674
+	  if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
mgl@1371
  2675
+	    {
mgl@1371
  2676
+	      if (frag->has_grown)
mgl@1371
  2677
+		next_state = state;
mgl@1371
  2678
+	      else
mgl@1371
  2679
+		unref_got_entry(htab, got);
mgl@1371
  2680
+	    }
mgl@1371
  2681
+	  else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
mgl@1371
  2682
+	    {
mgl@1371
  2683
+	      ref_got_entry(htab, got);
mgl@1371
  2684
+	      frag->has_grown = TRUE;
mgl@1371
  2685
+	    }
mgl@1371
  2686
+	  else if (state->reftype == REF_CPOOL
mgl@1371
  2687
+		   && next_state->reftype != REF_CPOOL)
mgl@1371
  2688
+	    {
mgl@1371
  2689
+	      if (frag->has_grown)
mgl@1371
  2690
+		next_state = state;
mgl@1371
  2691
+	      else
mgl@1371
  2692
+		ind_data->add_frag->refcount--;
mgl@1371
  2693
+	    }
mgl@1371
  2694
+	  else if (state->reftype != REF_CPOOL
mgl@1371
  2695
+		   && next_state->reftype == REF_CPOOL)
mgl@1371
  2696
+	    {
mgl@1371
  2697
+	      ind_data->add_frag->refcount++;
mgl@1371
  2698
+	      frag->has_grown = TRUE;
mgl@1371
  2699
+	    }
mgl@1371
  2700
+	  else
mgl@1371
  2701
+	    {
mgl@1371
  2702
+	      if (frag->has_grown && size_adjust < 0)
mgl@1371
  2703
+		next_state = state;
mgl@1371
  2704
+	      else if (size_adjust > 0)
mgl@1371
  2705
+		frag->has_grown = TRUE;
mgl@1371
  2706
+	    }
mgl@1371
  2707
+
mgl@1371
  2708
+	  size_adjust = next_state->size - state->size;
mgl@1371
  2709
+	  frag->state = next_state->id;
mgl@1371
  2710
+
mgl@1371
  2711
+	  break;
mgl@1371
  2712
+	}
mgl@1371
  2713
+
mgl@1371
  2714
+      if (size_adjust)
mgl@1371
  2715
+	htab->repeat_pass = TRUE;
mgl@1371
  2716
+
mgl@1371
  2717
+      frag->size_adjust += size_adjust;
mgl@1371
  2718
+      sec->size += size_adjust;
mgl@1371
  2719
+      delta += size_adjust;
mgl@1371
  2720
+
mgl@1371
  2721
+      BFD_ASSERT((frag->offset + frag->offset_adjust
mgl@1371
  2722
+		  + frag->size + frag->size_adjust)
mgl@1371
  2723
+		 == (frag[1].offset + frag[1].offset_adjust + delta));
mgl@1371
  2724
+    }
mgl@1371
  2725
+
mgl@1371
  2726
+  ret = TRUE;
mgl@1371
  2727
+
mgl@1371
  2728
+ out:
mgl@1371
  2729
+  release_local_syms(abfd, isymbuf);
mgl@1371
  2730
+  release_internal_relocs(sec, relocs);
mgl@1371
  2731
+  return ret;
mgl@1371
  2732
+}
mgl@1371
  2733
+
mgl@1371
  2734
+static bfd_boolean
mgl@1371
  2735
+adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
mgl@1371
  2736
+		     struct bfd_link_info *info ATTRIBUTE_UNUSED)
mgl@1371
  2737
+{
mgl@1371
  2738
+  struct elf_link_hash_entry *h = &havr->root;
mgl@1371
  2739
+
mgl@1371
  2740
+  if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
mgl@1371
  2741
+			 || h->root.type == bfd_link_hash_defweak))
mgl@1371
  2742
+    {
mgl@1371
  2743
+      RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
mgl@1371
  2744
+	   h->root.root.string, h->root.u.def.value,
mgl@1371
  2745
+	   h->root.u.def.value + havr->sym_frag->offset_adjust);
mgl@1371
  2746
+      h->root.u.def.value += havr->sym_frag->offset_adjust;
mgl@1371
  2747
+    }
mgl@1371
  2748
+  return TRUE;
mgl@1371
  2749
+}
mgl@1371
  2750
+
mgl@1371
  2751
+static bfd_boolean
mgl@1371
  2752
+adjust_syms(struct bfd_link_info *info)
mgl@1371
  2753
+{
mgl@1371
  2754
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  2755
+  bfd *abfd;
mgl@1371
  2756
+
mgl@1371
  2757
+  htab = avr32_elf_hash_table(info);
mgl@1371
  2758
+  elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
mgl@1371
  2759
+
mgl@1371
  2760
+  for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
mgl@1371
  2761
+    {
mgl@1371
  2762
+      Elf_Internal_Sym *isymbuf;
mgl@1371
  2763
+      struct fragment **local_sym_frag, *frag;
mgl@1371
  2764
+      unsigned int i, sym_count;
mgl@1371
  2765
+
mgl@1371
  2766
+      sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
mgl@1371
  2767
+      if (sym_count == 0)
mgl@1371
  2768
+	continue;
mgl@1371
  2769
+
mgl@1371
  2770
+      isymbuf = retrieve_local_syms(abfd, info->keep_memory);
mgl@1371
  2771
+      if (!isymbuf)
mgl@1371
  2772
+	return FALSE;
mgl@1371
  2773
+
mgl@1371
  2774
+      local_sym_frag = elf_tdata(abfd)->local_sym_frag;
mgl@1371
  2775
+
mgl@1371
  2776
+      for (i = 0; i < sym_count; i++)
mgl@1371
  2777
+	{
mgl@1371
  2778
+	  frag = local_sym_frag[i];
mgl@1371
  2779
+	  if (frag)
mgl@1371
  2780
+	    {
mgl@1371
  2781
+	      RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
mgl@1371
  2782
+		   abfd->filename, i, isymbuf[i].st_value,
mgl@1371
  2783
+		   isymbuf[i].st_value + frag->offset_adjust);
mgl@1371
  2784
+	      isymbuf[i].st_value += frag->offset_adjust;
mgl@1371
  2785
+	    }
mgl@1371
  2786
+	}
mgl@1371
  2787
+
mgl@1371
  2788
+      release_local_syms(abfd, isymbuf);
mgl@1371
  2789
+    }
mgl@1371
  2790
+
mgl@1371
  2791
+  htab->symbols_adjusted = TRUE;
mgl@1371
  2792
+  return TRUE;
mgl@1371
  2793
+}
mgl@1371
  2794
+
mgl@1371
  2795
+static bfd_boolean
mgl@1371
  2796
+adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
mgl@1371
  2797
+{
mgl@1371
  2798
+  struct avr32_relax_data *rd;
mgl@1371
  2799
+  Elf_Internal_Rela *relocs;
mgl@1371
  2800
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  2801
+  unsigned int i;
mgl@1371
  2802
+  bfd_boolean ret = FALSE;
mgl@1371
  2803
+
mgl@1371
  2804
+  rd = avr32_relax_data(sec);
mgl@1371
  2805
+  if (!rd->reloc_data)
mgl@1371
  2806
+    return TRUE;
mgl@1371
  2807
+
mgl@1371
  2808
+  RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
mgl@1371
  2809
+       sec->reloc_count);
mgl@1371
  2810
+
mgl@1371
  2811
+  relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
mgl@1371
  2812
+  if (!relocs)
mgl@1371
  2813
+    return FALSE;
mgl@1371
  2814
+
mgl@1371
  2815
+  symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
mgl@1371
  2816
+
mgl@1371
  2817
+  for (i = 0; i < sec->reloc_count; i++)
mgl@1371
  2818
+    {
mgl@1371
  2819
+      Elf_Internal_Rela *rela = &relocs[i];
mgl@1371
  2820
+      struct avr32_reloc_data *r_data = &rd->reloc_data[i];
mgl@1371
  2821
+      struct fragment *sym_frag;
mgl@1371
  2822
+      unsigned long r_symndx;
mgl@1371
  2823
+
mgl@1371
  2824
+      if (r_data->add_frag)
mgl@1371
  2825
+	{
mgl@1371
  2826
+	  r_symndx = ELF_R_SYM(rela->r_info);
mgl@1371
  2827
+
mgl@1371
  2828
+	  if (r_symndx < symtab_hdr->sh_info)
mgl@1371
  2829
+	    sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
mgl@1371
  2830
+	  else
mgl@1371
  2831
+	    {
mgl@1371
  2832
+	      struct elf_link_hash_entry *h;
mgl@1371
  2833
+
mgl@1371
  2834
+	      h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
mgl@1371
  2835
+
mgl@1371
  2836
+	      while (h->root.type == bfd_link_hash_indirect
mgl@1371
  2837
+		     || h->root.type == bfd_link_hash_warning)
mgl@1371
  2838
+		h = (struct elf_link_hash_entry *)h->root.u.i.link;
mgl@1371
  2839
+
mgl@1371
  2840
+	      BFD_ASSERT(h->root.type == bfd_link_hash_defined
mgl@1371
  2841
+			 || h->root.type == bfd_link_hash_defweak);
mgl@1371
  2842
+
mgl@1371
  2843
+	      sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
mgl@1371
  2844
+	    }
mgl@1371
  2845
+
mgl@1371
  2846
+	  RDBG("    addend: 0x%08lx -> 0x%08lx\n",
mgl@1371
  2847
+	       rela->r_addend,
mgl@1371
  2848
+	       rela->r_addend + r_data->add_frag->offset_adjust
mgl@1371
  2849
+	       - (sym_frag ? sym_frag->offset_adjust : 0));
mgl@1371
  2850
+
mgl@1371
  2851
+	  /* If this is against a section symbol, we won't find any
mgl@1371
  2852
+	     sym_frag, so we'll just adjust the addend.  */
mgl@1371
  2853
+	  rela->r_addend += r_data->add_frag->offset_adjust;
mgl@1371
  2854
+	  if (sym_frag)
mgl@1371
  2855
+	    rela->r_addend -= sym_frag->offset_adjust;
mgl@1371
  2856
+
mgl@1371
  2857
+	  if (r_data->sub_frag)
mgl@1371
  2858
+	    {
mgl@1371
  2859
+	      bfd_byte *contents;
mgl@1371
  2860
+	      bfd_signed_vma diff;
mgl@1371
  2861
+
mgl@1371
  2862
+	      contents = retrieve_contents(abfd, sec, info->keep_memory);
mgl@1371
  2863
+	      if (!contents)
mgl@1371
  2864
+		goto out;
mgl@1371
  2865
+
mgl@1371
  2866
+	      /* I realize now that sub_frag is misnamed.  It's
mgl@1371
  2867
+		 actually add_frag which is subtracted in this
mgl@1371
  2868
+		 case...  */
mgl@1371
  2869
+	      diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
mgl@1371
  2870
+	      diff += (r_data->sub_frag->offset_adjust
mgl@1371
  2871
+		       - r_data->add_frag->offset_adjust);
mgl@1371
  2872
+	      bfd_put_32(abfd, diff, contents + rela->r_offset);
mgl@1371
  2873
+
mgl@1371
  2874
+	      RDBG("   0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
mgl@1371
  2875
+
mgl@1371
  2876
+	      release_contents(sec, contents);
mgl@1371
  2877
+	    }
mgl@1371
  2878
+	}
mgl@1371
  2879
+      else
mgl@1371
  2880
+	BFD_ASSERT(!r_data->sub_frag);
mgl@1371
  2881
+    }
mgl@1371
  2882
+
mgl@1371
  2883
+  ret = TRUE;
mgl@1371
  2884
+
mgl@1371
  2885
+ out:
mgl@1371
  2886
+  release_internal_relocs(sec, relocs);
mgl@1371
  2887
+  return ret;
mgl@1371
  2888
+}
mgl@1371
  2889
+
mgl@1371
  2890
+static bfd_boolean
mgl@1371
  2891
+avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
mgl@1371
  2892
+{
mgl@1371
  2893
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  2894
+  struct avr32_relax_data *rd;
mgl@1371
  2895
+  struct fragment *frag, *fragend;
mgl@1371
  2896
+  Elf_Internal_Rela *relocs = NULL;
mgl@1371
  2897
+  bfd_byte *contents = NULL;
mgl@1371
  2898
+  unsigned int i;
mgl@1371
  2899
+  bfd_boolean ret = FALSE;
mgl@1371
  2900
+
mgl@1371
  2901
+  htab = avr32_elf_hash_table(info);
mgl@1371
  2902
+  rd = avr32_relax_data(sec);
mgl@1371
  2903
+
mgl@1371
  2904
+  if (!htab->symbols_adjusted)
mgl@1371
  2905
+    if (!adjust_syms(info))
mgl@1371
  2906
+      return FALSE;
mgl@1371
  2907
+
mgl@1371
  2908
+  if (rd->is_relaxable)
mgl@1371
  2909
+    {
mgl@1371
  2910
+      /* Resize the section first, so that we can be sure that enough
mgl@1371
  2911
+	 memory is allocated in case the section has grown.  */
mgl@1371
  2912
+      if (sec->size > sec->rawsize
mgl@1371
  2913
+	  && elf_section_data(sec)->this_hdr.contents)
mgl@1371
  2914
+	{
mgl@1371
  2915
+	  /* We must not use cached data if the section has grown.  */
mgl@1371
  2916
+	  free(elf_section_data(sec)->this_hdr.contents);
mgl@1371
  2917
+	  elf_section_data(sec)->this_hdr.contents = NULL;
mgl@1371
  2918
+	}
mgl@1371
  2919
+
mgl@1371
  2920
+      relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
mgl@1371
  2921
+      if (!relocs)
mgl@1371
  2922
+	goto out;
mgl@1371
  2923
+      contents = retrieve_contents(abfd, sec, info->keep_memory);
mgl@1371
  2924
+      if (!contents)
mgl@1371
  2925
+	goto out;
mgl@1371
  2926
+
mgl@1371
  2927
+      fragend = rd->frag + rd->frag_count;
mgl@1371
  2928
+
mgl@1371
  2929
+      RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
mgl@1371
  2930
+	   abfd->filename, sec->name, relocs, contents);
mgl@1371
  2931
+
mgl@1371
  2932
+      /* First, move the data into place. We must take care to move
mgl@1371
  2933
+	 frags in the right order so that we don't accidentally
mgl@1371
  2934
+	 overwrite parts of the next frag.  */
mgl@1371
  2935
+      for (frag = rd->frag; frag < fragend; frag++)
mgl@1371
  2936
+	{
mgl@1371
  2937
+	  RDBG("    0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
mgl@1371
  2938
+	       frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
mgl@1371
  2939
+	       abs(frag->offset_adjust),
mgl@1371
  2940
+	       frag->size, frag->size_adjust >= 0 ? '+' : '-',
mgl@1371
  2941
+	       abs(frag->size_adjust));
mgl@1371
  2942
+	  if (frag->offset_adjust > 0)
mgl@1371
  2943
+	    {
mgl@1371
  2944
+	      struct fragment *prev = frag - 1;
mgl@1371
  2945
+	      struct fragment *last;
mgl@1371
  2946
+
mgl@1371
  2947
+	      for (last = frag; last < fragend && last->offset_adjust > 0;
mgl@1371
  2948
+		   last++) ;
mgl@1371
  2949
+
mgl@1371
  2950
+	      if (last == fragend)
mgl@1371
  2951
+		last--;
mgl@1371
  2952
+
mgl@1371
  2953
+	      for (frag = last; frag != prev; frag--)
mgl@1371
  2954
+		{
mgl@1371
  2955
+		  if (frag->offset_adjust
mgl@1371
  2956
+		      && frag->size + frag->size_adjust > 0)
mgl@1371
  2957
+		    {
mgl@1371
  2958
+		      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
mgl@1371
  2959
+			   frag->offset, frag->offset + frag->offset_adjust,
mgl@1371
  2960
+			   frag->size + frag->size_adjust);
mgl@1371
  2961
+		      memmove(contents + frag->offset + frag->offset_adjust,
mgl@1371
  2962
+			      contents + frag->offset,
mgl@1371
  2963
+			      frag->size + frag->size_adjust);
mgl@1371
  2964
+		    }
mgl@1371
  2965
+		}
mgl@1371
  2966
+	      frag = last;
mgl@1371
  2967
+	    }
mgl@1371
  2968
+	  else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
mgl@1371
  2969
+	    {
mgl@1371
  2970
+	      RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
mgl@1371
  2971
+		   frag->offset, frag->offset + frag->offset_adjust,
mgl@1371
  2972
+		   frag->size + frag->size_adjust);
mgl@1371
  2973
+	      memmove(contents + frag->offset + frag->offset_adjust,
mgl@1371
  2974
+		      contents + frag->offset,
mgl@1371
  2975
+		      frag->size + frag->size_adjust);
mgl@1371
  2976
+	    }
mgl@1371
  2977
+	}
mgl@1371
  2978
+
mgl@1371
  2979
+      i = 0;
mgl@1371
  2980
+
mgl@1371
  2981
+      for (frag = rd->frag; frag < fragend; frag++)
mgl@1371
  2982
+	{
mgl@1371
  2983
+	  const struct relax_state *state, *istate;
mgl@1371
  2984
+	  struct avr32_reloc_data *r_data = NULL;
mgl@1371
  2985
+
mgl@1371
  2986
+	  istate = &relax_state[frag->initial_state];
mgl@1371
  2987
+	  state = &relax_state[frag->state];
mgl@1371
  2988
+
mgl@1371
  2989
+	  if (rd->reloc_data)
mgl@1371
  2990
+	    r_data = &rd->reloc_data[frag->rela - relocs];
mgl@1371
  2991
+
mgl@1371
  2992
+	  BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
mgl@1371
  2993
+	  BFD_ASSERT(state->reftype != REF_CPOOL
mgl@1371
  2994
+		     || r_data->add_frag->refcount > 0);
mgl@1371
  2995
+
mgl@1371
  2996
+	  if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
mgl@1371
  2997
+	    {
mgl@1371
  2998
+	      struct fragment *ifrag;
mgl@1371
  2999
+
mgl@1371
  3000
+	      /* An indirect reference through the cpool has been
mgl@1371
  3001
+		 converted to a direct reference.  We must update the
mgl@1371
  3002
+		 reloc to point to the symbol itself instead of the
mgl@1371
  3003
+		 constant pool entry.  The reloc type will be updated
mgl@1371
  3004
+		 later.  */
mgl@1371
  3005
+	      ifrag = r_data->add_frag;
mgl@1371
  3006
+	      frag->rela->r_info = ifrag->rela->r_info;
mgl@1371
  3007
+	      frag->rela->r_addend = ifrag->rela->r_addend;
mgl@1371
  3008
+
mgl@1371
  3009
+	      /* Copy the reloc data so the addend will be adjusted
mgl@1371
  3010
+		 correctly later.  */
mgl@1371
  3011
+	      *r_data = rd->reloc_data[ifrag->rela - relocs];
mgl@1371
  3012
+	    }
mgl@1371
  3013
+
mgl@1371
  3014
+	  /* Move all relocs covered by this frag.  */
mgl@1371
  3015
+	  if (frag->rela)
mgl@1371
  3016
+	    BFD_ASSERT(&relocs[i] <= frag->rela);
mgl@1371
  3017
+	  else
mgl@1371
  3018
+	    BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
mgl@1371
  3019
+
mgl@1371
  3020
+	  if (frag == rd->frag)
mgl@1371
  3021
+	    BFD_ASSERT(i == 0);
mgl@1371
  3022
+	  else
mgl@1371
  3023
+	    BFD_ASSERT(&relocs[i] > frag[-1].rela);
mgl@1371
  3024
+
mgl@1371
  3025
+	  /* If non-null, frag->rela is the last relocation in the
mgl@1371
  3026
+	     fragment.  frag->rela can only be null in the last
mgl@1371
  3027
+	     fragment, so in that case, we'll just do the rest.  */
mgl@1371
  3028
+	  for (; (i < sec->reloc_count
mgl@1371
  3029
+		  && (!frag->rela || &relocs[i] <= frag->rela)); i++)
mgl@1371
  3030
+	    {
mgl@1371
  3031
+	      RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
mgl@1371
  3032
+		   relocs[i].r_offset + frag->offset_adjust);
mgl@1371
  3033
+	      relocs[i].r_offset += frag->offset_adjust;
mgl@1371
  3034
+	    }
mgl@1371
  3035
+
mgl@1371
  3036
+	  if (frag->refcount == 0)
mgl@1371
  3037
+	    {
mgl@1371
  3038
+	      /* If this frag is to be discarded, make sure we won't
mgl@1371
  3039
+		 relocate it later on.  */
mgl@1371
  3040
+	      BFD_ASSERT(frag->state == RS_CPENT);
mgl@1371
  3041
+	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
mgl@1371
  3042
+					    R_AVR32_NONE);
mgl@1371
  3043
+	    }
mgl@1371
  3044
+	  else if (frag->state == RS_ALIGN)
mgl@1371
  3045
+	    {
mgl@1371
  3046
+	      bfd_vma addr, addr_end;
mgl@1371
  3047
+
mgl@1371
  3048
+	      addr = frag->rela->r_offset;
mgl@1371
  3049
+	      addr_end = (frag->offset + frag->offset_adjust
mgl@1371
  3050
+			  + frag->size + frag->size_adjust);
mgl@1371
  3051
+
mgl@1371
  3052
+	      /* If the section is executable, insert NOPs.
mgl@1371
  3053
+		 Otherwise, insert zeroes.  */
mgl@1371
  3054
+	      if (sec->flags & SEC_CODE)
mgl@1371
  3055
+		{
mgl@1371
  3056
+		  if (addr & 1)
mgl@1371
  3057
+		    {
mgl@1371
  3058
+		      bfd_put_8(abfd, 0, contents + addr);
mgl@1371
  3059
+		      addr++;
mgl@1371
  3060
+		    }
mgl@1371
  3061
+
mgl@1371
  3062
+		  BFD_ASSERT(!((addr_end - addr) & 1));
mgl@1371
  3063
+
mgl@1371
  3064
+		  while (addr < addr_end)
mgl@1371
  3065
+		    {
mgl@1371
  3066
+		      bfd_put_16(abfd, NOP_OPCODE, contents + addr);
mgl@1371
  3067
+		      addr += 2;
mgl@1371
  3068
+		    }
mgl@1371
  3069
+		}
mgl@1371
  3070
+	      else
mgl@1371
  3071
+		memset(contents + addr, 0, addr_end - addr);
mgl@1371
  3072
+	    }
mgl@1371
  3073
+	  else if (state->opcode_mask)
mgl@1371
  3074
+	    {
mgl@1371
  3075
+	      bfd_vma insn;
mgl@1371
  3076
+
mgl@1371
  3077
+	      /* Update the opcode and the relocation type unless it's a
mgl@1371
  3078
+		 "special" relax state (i.e. RS_NONE, RS_ALIGN or
mgl@1371
  3079
+		 RS_CPENT.), in which case the opcode mask is zero.  */
mgl@1371
  3080
+	      insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
mgl@1371
  3081
+	      insn &= ~state->opcode_mask;
mgl@1371
  3082
+	      insn |= state->opcode;
mgl@1371
  3083
+	      RDBG("    0x%lx: inserting insn %08lx\n",
mgl@1371
  3084
+		   frag->rela->r_offset, insn);
mgl@1371
  3085
+	      bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
mgl@1371
  3086
+
mgl@1371
  3087
+	      frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
mgl@1371
  3088
+					      state->r_type);
mgl@1371
  3089
+	    }
mgl@1371
  3090
+
mgl@1371
  3091
+	  if ((frag + 1) == fragend)
mgl@1371
  3092
+	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
mgl@1371
  3093
+			+ frag->size_adjust) == sec->size);
mgl@1371
  3094
+	  else
mgl@1371
  3095
+	    BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
mgl@1371
  3096
+			+ frag->size_adjust)
mgl@1371
  3097
+		       == (frag[1].offset + frag[1].offset_adjust));
mgl@1371
  3098
+	}
mgl@1371
  3099
+    }
mgl@1371
  3100
+
mgl@1371
  3101
+  /* Adjust reloc addends and DIFF32 differences */
mgl@1371
  3102
+  if (!adjust_relocs(abfd, sec, info))
mgl@1371
  3103
+    return FALSE;
mgl@1371
  3104
+
mgl@1371
  3105
+  ret = TRUE;
mgl@1371
  3106
+
mgl@1371
  3107
+ out:
mgl@1371
  3108
+  release_contents(sec, contents);
mgl@1371
  3109
+  release_internal_relocs(sec, relocs);
mgl@1371
  3110
+  return ret;
mgl@1371
  3111
+}
mgl@1371
  3112
+
mgl@1371
  3113
+static bfd_boolean
mgl@1371
  3114
+avr32_elf_relax_section(bfd *abfd, asection *sec,
mgl@1371
  3115
+			struct bfd_link_info *info, bfd_boolean *again)
mgl@1371
  3116
+{
mgl@1371
  3117
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  3118
+  struct avr32_relax_data *rd;
mgl@1371
  3119
+
mgl@1371
  3120
+  *again = FALSE;
mgl@1371
  3121
+  if (info->relocatable)
mgl@1371
  3122
+    return TRUE;
mgl@1371
  3123
+
mgl@1371
  3124
+  htab = avr32_elf_hash_table(info);
mgl@1371
  3125
+  if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
mgl@1371
  3126
+      && sec != htab->sgot)
mgl@1371
  3127
+    return TRUE;
mgl@1371
  3128
+
mgl@1371
  3129
+  if (!htab->relocations_analyzed)
mgl@1371
  3130
+    {
mgl@1371
  3131
+      if (!analyze_relocations(info))
mgl@1371
  3132
+	return FALSE;
mgl@1371
  3133
+      htab->relocations_analyzed = TRUE;
mgl@1371
  3134
+    }
mgl@1371
  3135
+
mgl@1371
  3136
+  rd = avr32_relax_data(sec);
mgl@1371
  3137
+
mgl@1371
  3138
+  if (rd->iteration != htab->relax_iteration)
mgl@1371
  3139
+    {
mgl@1371
  3140
+      if (!htab->repeat_pass)
mgl@1371
  3141
+	htab->relax_pass++;
mgl@1371
  3142
+      htab->relax_iteration++;
mgl@1371
  3143
+      htab->repeat_pass = FALSE;
mgl@1371
  3144
+    }
mgl@1371
  3145
+
mgl@1371
  3146
+  rd->iteration++;
mgl@1371
  3147
+
mgl@1371
  3148
+  switch (htab->relax_pass)
mgl@1371
  3149
+    {
mgl@1371
  3150
+    case RELAX_PASS_SIZE_FRAGS:
mgl@1371
  3151
+      if (!avr32_size_frags(abfd, sec, info))
mgl@1371
  3152
+	return FALSE;
mgl@1371
  3153
+      *again = TRUE;
mgl@1371
  3154
+      break;
mgl@1371
  3155
+    case RELAX_PASS_MOVE_DATA:
mgl@1371
  3156
+      if (!avr32_move_data(abfd, sec, info))
mgl@1371
  3157
+	return FALSE;
mgl@1371
  3158
+      break;
mgl@1371
  3159
+  }
mgl@1371
  3160
+
mgl@1371
  3161
+  return TRUE;
mgl@1371
  3162
+}
mgl@1371
  3163
+
mgl@1371
  3164
+
mgl@1371
  3165
+/* Relocation */
mgl@1371
  3166
+
mgl@1371
  3167
+static bfd_reloc_status_type
mgl@1371
  3168
+avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
mgl@1371
  3169
+			bfd_signed_vma relocation, reloc_howto_type *howto);
mgl@1371
  3170
+static bfd_reloc_status_type
mgl@1371
  3171
+avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
mgl@1371
  3172
+			  asection *input_section, bfd_byte *contents,
mgl@1371
  3173
+			  Elf_Internal_Rela *rel, bfd_vma value);
mgl@1371
  3174
+static bfd_boolean
mgl@1371
  3175
+avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
mgl@1371
  3176
+			   bfd *input_bfd, asection *input_section,
mgl@1371
  3177
+			   bfd_byte *contents, Elf_Internal_Rela *relocs,
mgl@1371
  3178
+			   Elf_Internal_Sym *local_syms,
mgl@1371
  3179
+			   asection **local_sections);
mgl@1371
  3180
+
mgl@1371
  3181
+
mgl@1371
  3182
+#define symbol_address(symbol) \
mgl@1371
  3183
+  symbol->value + symbol->section->output_section->vma \
mgl@1371
  3184
+  + symbol->section->output_offset
mgl@1371
  3185
+
mgl@1371
  3186
+#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data)	\
mgl@1371
  3187
+  do									\
mgl@1371
  3188
+    {									\
mgl@1371
  3189
+      unsigned long x;							\
mgl@1371
  3190
+      x = bfd_get_##size (abfd, data + reloc_entry->address);		\
mgl@1371
  3191
+      x &= ~reloc_entry->howto->dst_mask;				\
mgl@1371
  3192
+      x |= field & reloc_entry->howto->dst_mask;			\
mgl@1371
  3193
+      bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address);	\
mgl@1371
  3194
+    }									\
mgl@1371
  3195
+  while(0)
mgl@1371
  3196
+
mgl@1371
  3197
+static bfd_reloc_status_type
mgl@1371
  3198
+avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
mgl@1371
  3199
+			Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
mgl@1371
  3200
+			bfd_signed_vma relocation,
mgl@1371
  3201
+			reloc_howto_type *howto)
mgl@1371
  3202
+{
mgl@1371
  3203
+  bfd_vma reloc_u;
mgl@1371
  3204
+
mgl@1371
  3205
+  /* We take "complain_overflow_dont" to mean "don't complain on
mgl@1371
  3206
+     alignment either". This way, we don't have to special-case
mgl@1371
  3207
+     R_AVR32_HI16 */
mgl@1371
  3208
+  if (howto->complain_on_overflow == complain_overflow_dont)
mgl@1371
  3209
+    return bfd_reloc_ok;
mgl@1371
  3210
+
mgl@1371
  3211
+  /* Check if the value is correctly aligned */
mgl@1371
  3212
+  if (relocation & ((1 << howto->rightshift) - 1))
mgl@1371
  3213
+    {
mgl@1371
  3214
+      RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
mgl@1371
  3215
+	   sec->owner->filename, sec->name, rela->r_offset,
mgl@1371
  3216
+	   howto->name, relocation, howto->rightshift);
mgl@1371
  3217
+      return bfd_reloc_overflow;
mgl@1371
  3218
+    }
mgl@1371
  3219
+
mgl@1371
  3220
+  /* Now, get rid of the unnecessary bits */
mgl@1371
  3221
+  relocation >>= howto->rightshift;
mgl@1371
  3222
+  reloc_u = (bfd_vma)relocation;
mgl@1371
  3223
+
mgl@1371
  3224
+  switch (howto->complain_on_overflow)
mgl@1371
  3225
+    {
mgl@1371
  3226
+    case complain_overflow_unsigned:
mgl@1371
  3227
+    case complain_overflow_bitfield:
mgl@1371
  3228
+      if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
mgl@1371
  3229
+	{
mgl@1371
  3230
+	  RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
mgl@1371
  3231
+	       sec->owner->filename, sec->name, rela->r_offset,
mgl@1371
  3232
+	       howto->name, reloc_u, howto->bitsize);
mgl@1371
  3233
+	  RDBG("reloc vma: 0x%lx\n",
mgl@1371
  3234
+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
mgl@1371
  3235
+
mgl@1371
  3236
+	  return bfd_reloc_overflow;
mgl@1371
  3237
+	}
mgl@1371
  3238
+      break;
mgl@1371
  3239
+    case complain_overflow_signed:
mgl@1371
  3240
+      if (relocation > (1 << (howto->bitsize - 1)) - 1)
mgl@1371
  3241
+	{
mgl@1371
  3242
+	  RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
mgl@1371
  3243
+	       sec->owner->filename, sec->name, rela->r_offset,
mgl@1371
  3244
+	       howto->name, reloc_u, howto->bitsize);
mgl@1371
  3245
+	  RDBG("reloc vma: 0x%lx\n",
mgl@1371
  3246
+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
mgl@1371
  3247
+
mgl@1371
  3248
+	  return bfd_reloc_overflow;
mgl@1371
  3249
+	}
mgl@1371
  3250
+      if (relocation < -(1 << (howto->bitsize - 1)))
mgl@1371
  3251
+	{
mgl@1371
  3252
+	  RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
mgl@1371
  3253
+	       sec->owner->filename, sec->name, rela->r_offset,
mgl@1371
  3254
+	       howto->name, -relocation, howto->bitsize);
mgl@1371
  3255
+	  RDBG("reloc vma: 0x%lx\n",
mgl@1371
  3256
+	       sec->output_section->vma + sec->output_offset + rela->r_offset);
mgl@1371
  3257
+
mgl@1371
  3258
+	  return bfd_reloc_overflow;
mgl@1371
  3259
+	}
mgl@1371
  3260
+      break;
mgl@1371
  3261
+    default:
mgl@1371
  3262
+      abort();
mgl@1371
  3263
+    }
mgl@1371
  3264
+
mgl@1371
  3265
+  return bfd_reloc_ok;
mgl@1371
  3266
+}
mgl@1371
  3267
+
mgl@1371
  3268
+
mgl@1371
  3269
+static bfd_reloc_status_type
mgl@1371
  3270
+avr32_final_link_relocate(reloc_howto_type *howto,
mgl@1371
  3271
+			  bfd *input_bfd,
mgl@1371
  3272
+			  asection *input_section,
mgl@1371
  3273
+			  bfd_byte *contents,
mgl@1371
  3274
+			  Elf_Internal_Rela *rel,
mgl@1371
  3275
+			  bfd_vma value)
mgl@1371
  3276
+{
mgl@1371
  3277
+  bfd_vma field;
mgl@1371
  3278
+  bfd_vma relocation;
mgl@1371
  3279
+  bfd_reloc_status_type status;
mgl@1371
  3280
+  bfd_byte *p = contents + rel->r_offset;
mgl@1371
  3281
+  unsigned long x;
mgl@1371
  3282
+
mgl@1371
  3283
+  pr_debug("  (6b) final link relocate\n");
mgl@1371
  3284
+
mgl@1371
  3285
+  /* Sanity check the address */
mgl@1371
  3286
+  if (rel->r_offset > input_section->size)
mgl@1371
  3287
+    {
mgl@1371
  3288
+      (*_bfd_error_handler)
mgl@1371
  3289
+	("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
mgl@1371
  3290
+	 input_bfd, input_section, rel->r_offset, input_section->size);
mgl@1371
  3291
+      return bfd_reloc_outofrange;
mgl@1371
  3292
+    }
mgl@1371
  3293
+
mgl@1371
  3294
+  relocation = value + rel->r_addend;
mgl@1371
  3295
+
mgl@1371
  3296
+  if (howto->pc_relative)
mgl@1371
  3297
+    {
mgl@1371
  3298
+      bfd_vma addr;
mgl@1371
  3299
+
mgl@1371
  3300
+      addr = input_section->output_section->vma
mgl@1371
  3301
+	+ input_section->output_offset + rel->r_offset;
mgl@1371
  3302
+      addr &= ~0UL << howto->rightshift;
mgl@1371
  3303
+      relocation -= addr;
mgl@1371
  3304
+    }
mgl@1371
  3305
+
mgl@1371
  3306
+  switch (ELF32_R_TYPE(rel->r_info))
mgl@1371
  3307
+    {
mgl@1371
  3308
+    case R_AVR32_16N_PCREL:
mgl@1371
  3309
+      /* sub reg, pc, . - (sym + addend) */
mgl@1371
  3310
+      relocation = -relocation;
mgl@1371
  3311
+      break;
mgl@1371
  3312
+    }
mgl@1371
  3313
+
mgl@1371
  3314
+  status = avr32_check_reloc_value(input_section, rel, relocation, howto);
mgl@1371
  3315
+
mgl@1371
  3316
+  relocation >>= howto->rightshift;
mgl@1371
  3317
+  if (howto->bitsize == 21)
mgl@1371
  3318
+    field = (relocation & 0xffff)
mgl@1371
  3319
+      | ((relocation & 0x10000) << 4)
mgl@1371
  3320
+      | ((relocation & 0x1e0000) << 8);
mgl@1371
  3321
+  else if (howto->bitsize == 12)
mgl@1371
  3322
+    field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
mgl@1371
  3323
+  else if (howto->bitsize == 10)
mgl@1371
  3324
+    field = ((relocation & 0xff) << 4)
mgl@1371
  3325
+      | ((relocation & 0x300) >> 8);
mgl@1371
  3326
+  else
mgl@1371
  3327
+    field = relocation << howto->bitpos;
mgl@1371
  3328
+
mgl@1371
  3329
+  switch (howto->size)
mgl@1371
  3330
+    {
mgl@1371
  3331
+    case 0:
mgl@1371
  3332
+      x = bfd_get_8 (input_bfd, p);
mgl@1371
  3333
+      x &= ~howto->dst_mask;
mgl@1371
  3334
+      x |= field & howto->dst_mask;
mgl@1371
  3335
+      bfd_put_8 (input_bfd, (bfd_vma) x, p);
mgl@1371
  3336
+      break;
mgl@1371
  3337
+    case 1:
mgl@1371
  3338
+      x = bfd_get_16 (input_bfd, p);
mgl@1371
  3339
+      x &= ~howto->dst_mask;
mgl@1371
  3340
+      x |= field & howto->dst_mask;
mgl@1371
  3341
+      bfd_put_16 (input_bfd, (bfd_vma) x, p);
mgl@1371
  3342
+      break;
mgl@1371
  3343
+    case 2:
mgl@1371
  3344
+      x = bfd_get_32 (input_bfd, p);
mgl@1371
  3345
+      x &= ~howto->dst_mask;
mgl@1371
  3346
+      x |= field & howto->dst_mask;
mgl@1371
  3347
+      bfd_put_32 (input_bfd, (bfd_vma) x, p);
mgl@1371
  3348
+      break;
mgl@1371
  3349
+    default:
mgl@1371
  3350
+      abort();
mgl@1371
  3351
+    }
mgl@1371
  3352
+
mgl@1371
  3353
+  return status;
mgl@1371
  3354
+}
mgl@1371
  3355
+
mgl@1371
  3356
+/* (6) Apply relocations to the normal (non-dynamic) sections */
mgl@1371
  3357
+
mgl@1371
  3358
+static bfd_boolean
mgl@1371
  3359
+avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
mgl@1371
  3360
+			   bfd *input_bfd, asection *input_section,
mgl@1371
  3361
+			   bfd_byte *contents, Elf_Internal_Rela *relocs,
mgl@1371
  3362
+			   Elf_Internal_Sym *local_syms,
mgl@1371
  3363
+			   asection **local_sections)
mgl@1371
  3364
+{
mgl@1371
  3365
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  3366
+  Elf_Internal_Shdr *symtab_hdr;
mgl@1371
  3367
+  Elf_Internal_Rela *rel, *relend;
mgl@1371
  3368
+  struct elf_link_hash_entry **sym_hashes;
mgl@1371
  3369
+  struct got_entry **local_got_ents;
mgl@1371
  3370
+  asection *sgot;
mgl@1371
  3371
+  asection *srelgot;
mgl@1371
  3372
+
mgl@1371
  3373
+  pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
mgl@1371
  3374
+	   input_bfd->filename, input_section->name, input_section->size);
mgl@1371
  3375
+
mgl@1371
  3376
+  /* If we're doing a partial link, we don't have to do anything since
mgl@1371
  3377
+     we're using RELA relocations */
mgl@1371
  3378
+  if (info->relocatable)
mgl@1371
  3379
+    return TRUE;
mgl@1371
  3380
+
mgl@1371
  3381
+  htab = avr32_elf_hash_table(info);
mgl@1371
  3382
+  symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
mgl@1371
  3383
+  sym_hashes = elf_sym_hashes(input_bfd);
mgl@1371
  3384
+  local_got_ents = elf_local_got_ents(input_bfd);
mgl@1371
  3385
+  sgot = htab->sgot;
mgl@1371
  3386
+  srelgot = htab->srelgot;
mgl@1371
  3387
+
mgl@1371
  3388
+  relend = relocs + input_section->reloc_count;
mgl@1371
  3389
+  for (rel = relocs; rel < relend; rel++)
mgl@1371
  3390
+    {
mgl@1371
  3391
+      unsigned long r_type, r_symndx;
mgl@1371
  3392
+      reloc_howto_type *howto;
mgl@1371
  3393
+      Elf_Internal_Sym *sym = NULL;
mgl@1371
  3394
+      struct elf_link_hash_entry *h = NULL;
mgl@1371
  3395
+      asection *sec = NULL;
mgl@1371
  3396
+      bfd_vma value;
mgl@1371
  3397
+      bfd_vma offset;
mgl@1371
  3398
+      bfd_reloc_status_type status;
mgl@1371
  3399
+
mgl@1371
  3400
+      r_type = ELF32_R_TYPE(rel->r_info);
mgl@1371
  3401
+      r_symndx = ELF32_R_SYM(rel->r_info);
mgl@1371
  3402
+
mgl@1371
  3403
+      if (r_type == R_AVR32_NONE
mgl@1371
  3404
+	  || r_type == R_AVR32_ALIGN
mgl@1371
  3405
+	  || r_type == R_AVR32_DIFF32
mgl@1371
  3406
+	  || r_type == R_AVR32_DIFF16
mgl@1371
  3407
+	  || r_type == R_AVR32_DIFF8)
mgl@1371
  3408
+	continue;
mgl@1371
  3409
+
mgl@1371
  3410
+      /* Sanity check */
mgl@1371
  3411
+      if (r_type > R_AVR32_max)
mgl@1371
  3412
+	{
mgl@1371
  3413
+	  bfd_set_error(bfd_error_bad_value);
mgl@1371
  3414
+	  return FALSE;
mgl@1371
  3415
+	}
mgl@1371
  3416
+
mgl@1371
  3417
+      howto = &elf_avr32_howto_table[r_type];
mgl@1371
  3418
+
mgl@1371
  3419
+      if (r_symndx < symtab_hdr->sh_info)
mgl@1371
  3420
+	{
mgl@1371
  3421
+	  sym = local_syms + r_symndx;
mgl@1371
  3422
+	  sec = local_sections[r_symndx];
mgl@1371
  3423
+
mgl@1371
  3424
+	  pr_debug("  (6a) processing %s against local symbol %lu\n",
mgl@1371
  3425
+		   howto->name, r_symndx);
mgl@1371
  3426
+
mgl@1371
  3427
+	  /* The following function changes rel->r_addend behind our back. */
mgl@1371
  3428
+	  value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
mgl@1371
  3429
+	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
mgl@1371
  3430
+	}
mgl@1371
  3431
+      else
mgl@1371
  3432
+	{
mgl@1371
  3433
+	  if (sym_hashes == NULL)
mgl@1371
  3434
+	    return FALSE;
mgl@1371
  3435
+
mgl@1371
  3436
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
mgl@1371
  3437
+	  while (h->root.type == bfd_link_hash_indirect
mgl@1371
  3438
+		 || h->root.type == bfd_link_hash_warning)
mgl@1371
  3439
+	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
mgl@1371
  3440
+
mgl@1371
  3441
+	  pr_debug("  (6a) processing %s against symbol %s\n",
mgl@1371
  3442
+		   howto->name, h->root.root.string);
mgl@1371
  3443
+
mgl@1371
  3444
+	  if (h->root.type == bfd_link_hash_defined
mgl@1371
  3445
+	      || h->root.type == bfd_link_hash_defweak)
mgl@1371
  3446
+	    {
mgl@1371
  3447
+	      bfd_boolean dyn;
mgl@1371
  3448
+
mgl@1371
  3449
+	      dyn = htab->root.dynamic_sections_created;
mgl@1371
  3450
+	      sec = h->root.u.def.section;
mgl@1371
  3451
+
mgl@1371
  3452
+	      if (sec->output_section)
mgl@1371
  3453
+		value = (h->root.u.def.value
mgl@1371
  3454
+			 + sec->output_section->vma
mgl@1371
  3455
+			 + sec->output_offset);
mgl@1371
  3456
+	      else
mgl@1371
  3457
+		value = h->root.u.def.value;
mgl@1371
  3458
+	    }
mgl@1371
  3459
+	  else if (h->root.type == bfd_link_hash_undefweak)
mgl@1371
  3460
+	    value = 0;
mgl@1371
  3461
+	  else if (info->unresolved_syms_in_objects == RM_IGNORE
mgl@1371
  3462
+		   && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
mgl@1371
  3463
+	    value = 0;
mgl@1371
  3464
+	  else
mgl@1371
  3465
+	    {
mgl@1371
  3466
+	      bfd_boolean err;
mgl@1371
  3467
+	      err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
mgl@1371
  3468
+		     || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
mgl@1371
  3469
+	      if (!info->callbacks->undefined_symbol
mgl@1371
  3470
+		  (info, h->root.root.string, input_bfd,
mgl@1371
  3471
+		   input_section, rel->r_offset, err))
mgl@1371
  3472
+		return FALSE;
mgl@1371
  3473
+	      value = 0;
mgl@1371
  3474
+	    }
mgl@1371
  3475
+
mgl@1371
  3476
+	  pr_debug("    => value: %lx, addend: %lx\n", value, rel->r_addend);
mgl@1371
  3477
+	}
mgl@1371
  3478
+
mgl@1371
  3479
+      switch (r_type)
mgl@1371
  3480
+	{
mgl@1371
  3481
+	case R_AVR32_GOT32:
mgl@1371
  3482
+	case R_AVR32_GOT16:
mgl@1371
  3483
+	case R_AVR32_GOT8:
mgl@1371
  3484
+	case R_AVR32_GOT21S:
mgl@1371
  3485
+	case R_AVR32_GOT18SW:
mgl@1371
  3486
+	case R_AVR32_GOT16S:
mgl@1371
  3487
+	case R_AVR32_GOT7UW:
mgl@1371
  3488
+	case R_AVR32_LDA_GOT:
mgl@1371
  3489
+	case R_AVR32_GOTCALL:
mgl@1371
  3490
+	  BFD_ASSERT(sgot != NULL);
mgl@1371
  3491
+
mgl@1371
  3492
+	  if (h != NULL)
mgl@1371
  3493
+	    {
mgl@1371
  3494
+	      BFD_ASSERT(h->got.glist->refcount > 0);
mgl@1371
  3495
+	      offset = h->got.glist->offset;
mgl@1371
  3496
+
mgl@1371
  3497
+	      BFD_ASSERT(offset < sgot->size);
mgl@1371
  3498
+	      if (!elf_hash_table(info)->dynamic_sections_created
mgl@1371
  3499
+		  || (h->def_regular
mgl@1371
  3500
+		      && (!info->shared
mgl@1371
  3501
+			  || info->symbolic
mgl@1371
  3502
+			  || h->dynindx == -1)))
mgl@1371
  3503
+		{
mgl@1371
  3504
+		  /* This is actually a static link, or it is a
mgl@1371
  3505
+		     -Bsymbolic link and the symbol is defined
mgl@1371
  3506
+		     locally, or the symbol was forced to be local.  */
mgl@1371
  3507
+		  bfd_put_32(output_bfd, value, sgot->contents + offset);
mgl@1371
  3508
+		}
mgl@1371
  3509
+	    }
mgl@1371
  3510
+	  else
mgl@1371
  3511
+	    {
mgl@1371
  3512
+	      BFD_ASSERT(local_got_ents &&
mgl@1371
  3513
+			 local_got_ents[r_symndx]->refcount > 0);
mgl@1371
  3514
+	      offset = local_got_ents[r_symndx]->offset;
mgl@1371
  3515
+
mgl@1371
  3516
+	      /* Local GOT entries don't have relocs.  If this is a
mgl@1371
  3517
+		 shared library, the dynamic linker will add the load
mgl@1371
  3518
+		 address to the initial value at startup.  */
mgl@1371
  3519
+	      BFD_ASSERT(offset < sgot->size);
mgl@1371
  3520
+	      pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
mgl@1371
  3521
+		       offset, value);
mgl@1371
  3522
+	      bfd_put_32 (output_bfd, value, sgot->contents + offset);
mgl@1371
  3523
+	    }
mgl@1371
  3524
+
mgl@1371
  3525
+	  value = sgot->output_offset + offset;
mgl@1371
  3526
+	  pr_debug("GOT reference: New value %lx\n", value);
mgl@1371
  3527
+	  break;
mgl@1371
  3528
+
mgl@1371
  3529
+	case R_AVR32_GOTPC:
mgl@1371
  3530
+	  /* This relocation type is for constant pool entries used in
mgl@1371
  3531
+	     the calculation "Rd = PC - (PC - GOT)", where the
mgl@1371
  3532
+	     constant pool supplies the constant (PC - GOT)
mgl@1371
  3533
+	     offset. The symbol value + addend indicates where the
mgl@1371
  3534
+	     value of PC is taken. */
mgl@1371
  3535
+	  value -= sgot->output_section->vma;
mgl@1371
  3536
+	  break;
mgl@1371
  3537
+
mgl@1371
  3538
+	case R_AVR32_32_PCREL:
mgl@1371
  3539
+	  /* We must adjust r_offset to account for discarded data in
mgl@1371
  3540
+	     the .eh_frame section.  This is probably not the right
mgl@1371
  3541
+	     way to do this, since AFAICS all other architectures do
mgl@1371
  3542
+	     it some other way.  I just can't figure out how...  */
mgl@1371
  3543
+	  {
mgl@1371
  3544
+	    bfd_vma r_offset;
mgl@1371
  3545
+
mgl@1371
  3546
+	    r_offset = _bfd_elf_section_offset(output_bfd, info,
mgl@1371
  3547
+					       input_section,
mgl@1371
  3548
+					       rel->r_offset);
mgl@1371
  3549
+	    if (r_offset == (bfd_vma)-1
mgl@1371
  3550
+		|| r_offset == (bfd_vma)-2)
mgl@1371
  3551
+	      continue;
mgl@1371
  3552
+	    rel->r_offset = r_offset;
mgl@1371
  3553
+	  }
mgl@1371
  3554
+	  break;
mgl@1371
  3555
+
mgl@1371
  3556
+	case R_AVR32_32:
mgl@1371
  3557
+	  /* We need to emit a run-time relocation in the following cases:
mgl@1371
  3558
+	       - we're creating a shared library
mgl@1371
  3559
+	       - the symbol is not defined in any regular objects
mgl@1371
  3560
+
mgl@1371
  3561
+	     Of course, sections that aren't going to be part of the
mgl@1371
  3562
+	     run-time image will not get any relocs, and undefined
mgl@1371
  3563
+	     symbols won't have any either (only weak undefined
mgl@1371
  3564
+	     symbols should get this far).  */
mgl@1371
  3565
+	  if ((info->shared
mgl@1371
  3566
+	       || (elf_hash_table(info)->dynamic_sections_created
mgl@1371
  3567
+		   && h != NULL
mgl@1371
  3568
+		   && h->def_dynamic
mgl@1371
  3569
+		   && !h->def_regular))
mgl@1371
  3570
+	      && r_symndx != 0
mgl@1371
  3571
+	      && (input_section->flags & SEC_ALLOC))
mgl@1371
  3572
+	    {
mgl@1371
  3573
+	      Elf_Internal_Rela outrel;
mgl@1371
  3574
+	      bfd_byte *loc;
mgl@1371
  3575
+	      bfd_boolean skip, relocate;
mgl@1371
  3576
+	      struct elf_avr32_link_hash_entry *avrh;
mgl@1371
  3577
+
mgl@1371
  3578
+	      pr_debug("Going to generate dynamic reloc...\n");
mgl@1371
  3579
+
mgl@1371
  3580
+	      skip = FALSE;
mgl@1371
  3581
+	      relocate = FALSE;
mgl@1371
  3582
+
mgl@1371
  3583
+	      outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
mgl@1371
  3584
+							input_section,
mgl@1371
  3585
+							rel->r_offset);
mgl@1371
  3586
+	      if (outrel.r_offset == (bfd_vma)-1)
mgl@1371
  3587
+		skip = TRUE;
mgl@1371
  3588
+	      else if (outrel.r_offset == (bfd_vma)-2)
mgl@1371
  3589
+		skip = TRUE, relocate = TRUE;
mgl@1371
  3590
+
mgl@1371
  3591
+	      outrel.r_offset += (input_section->output_section->vma
mgl@1371
  3592
+				  + input_section->output_offset);
mgl@1371
  3593
+
mgl@1371
  3594
+	      pr_debug("    ... offset %lx, dynindx %ld\n",
mgl@1371
  3595
+		       outrel.r_offset, h ? h->dynindx : -1);
mgl@1371
  3596
+
mgl@1371
  3597
+	      if (skip)
mgl@1371
  3598
+		memset(&outrel, 0, sizeof(outrel));
mgl@1371
  3599
+	      else
mgl@1371
  3600
+		{
mgl@1371
  3601
+		  avrh = (struct elf_avr32_link_hash_entry *)h;
mgl@1371
  3602
+		  /* h->dynindx may be -1 if this symbol was marked to
mgl@1371
  3603
+		     become local.  */
mgl@1371
  3604
+		  if (h == NULL
mgl@1371
  3605
+		      || ((info->symbolic || h->dynindx == -1)
mgl@1371
  3606
+			  && h->def_regular))
mgl@1371
  3607
+		    {
mgl@1371
  3608
+		      relocate = TRUE;
mgl@1371
  3609
+		      outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
mgl@1371
  3610
+		      outrel.r_addend = value + rel->r_addend;
mgl@1371
  3611
+		      pr_debug("    ... R_AVR32_RELATIVE\n");
mgl@1371
  3612
+		    }
mgl@1371
  3613
+		  else
mgl@1371
  3614
+		    {
mgl@1371
  3615
+		      BFD_ASSERT(h->dynindx != -1);
mgl@1371
  3616
+		      relocate = TRUE;
mgl@1371
  3617
+		      outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
mgl@1371
  3618
+		      outrel.r_addend = rel->r_addend;
mgl@1371
  3619
+		      pr_debug("    ... R_AVR32_GLOB_DAT\n");
mgl@1371
  3620
+		    }
mgl@1371
  3621
+		}
mgl@1371
  3622
+
mgl@1371
  3623
+	      pr_debug("srelgot reloc_count: %d, size %lu\n",
mgl@1371
  3624
+		       srelgot->reloc_count, srelgot->size);
mgl@1371
  3625
+
mgl@1371
  3626
+	      loc = srelgot->contents;
mgl@1371
  3627
+	      loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
mgl@1371
  3628
+	      bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
mgl@1371
  3629
+
mgl@1371
  3630
+	      BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
mgl@1371
  3631
+			 <= srelgot->size);
mgl@1371
  3632
+
mgl@1371
  3633
+	      if (!relocate)
mgl@1371
  3634
+		continue;
mgl@1371
  3635
+	    }
mgl@1371
  3636
+	  break;
mgl@1371
  3637
+	}
mgl@1371
  3638
+
mgl@1371
  3639
+      status = avr32_final_link_relocate(howto, input_bfd, input_section,
mgl@1371
  3640
+					 contents, rel, value);
mgl@1371
  3641
+
mgl@1371
  3642
+      switch (status)
mgl@1371
  3643
+	{
mgl@1371
  3644
+	case bfd_reloc_ok:
mgl@1371
  3645
+	  break;
mgl@1371
  3646
+
mgl@1371
  3647
+	case bfd_reloc_overflow:
mgl@1371
  3648
+	  {
mgl@1371
  3649
+	    const char *name;
mgl@1371
  3650
+
mgl@1371
  3651
+	    if (h != NULL)
mgl@1371
  3652
+	      name = h->root.root.string;
mgl@1371
  3653
+	    else
mgl@1371
  3654
+	      {
mgl@1371
  3655
+		name = bfd_elf_string_from_elf_section(input_bfd,
mgl@1371
  3656
+						       symtab_hdr->sh_link,
mgl@1371
  3657
+						       sym->st_name);
mgl@1371
  3658
+		if (name == NULL)
mgl@1371
  3659
+		  return FALSE;
mgl@1371
  3660
+		if (*name == '\0')
mgl@1371
  3661
+		  name = bfd_section_name(input_bfd, sec);
mgl@1371
  3662
+	      }
mgl@1371
  3663
+	    if (!((*info->callbacks->reloc_overflow)
mgl@1371
  3664
+		  (info, (h ? &h->root : NULL), name, howto->name,
mgl@1371
  3665
+		   rel->r_addend, input_bfd, input_section, rel->r_offset)))
mgl@1371
  3666
+	      return FALSE;
mgl@1371
  3667
+	  }
mgl@1371
  3668
+	  break;
mgl@1371
  3669
+
mgl@1371
  3670
+	case bfd_reloc_outofrange:
mgl@1371
  3671
+	default:
mgl@1371
  3672
+	  abort();
mgl@1371
  3673
+	}
mgl@1371
  3674
+    }
mgl@1371
  3675
+
mgl@1371
  3676
+  return TRUE;
mgl@1371
  3677
+}
mgl@1371
  3678
+
mgl@1371
  3679
+
mgl@1371
  3680
+/* Additional processing of dynamic sections after relocation */
mgl@1371
  3681
+
mgl@1371
  3682
+static bfd_boolean
mgl@1371
  3683
+avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
mgl@1371
  3684
+				struct elf_link_hash_entry *h,
mgl@1371
  3685
+				Elf_Internal_Sym *sym);
mgl@1371
  3686
+static bfd_boolean
mgl@1371
  3687
+avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
mgl@1371
  3688
+
mgl@1371
  3689
+
mgl@1371
  3690
+/* (7) Initialize the contents of a dynamic symbol and/or emit
mgl@1371
  3691
+   relocations for it */
mgl@1371
  3692
+
mgl@1371
  3693
+static bfd_boolean
mgl@1371
  3694
+avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
mgl@1371
  3695
+				struct elf_link_hash_entry *h,
mgl@1371
  3696
+				Elf_Internal_Sym *sym)
mgl@1371
  3697
+{
mgl@1371
  3698
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  3699
+  struct got_entry *got;
mgl@1371
  3700
+
mgl@1371
  3701
+  pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
mgl@1371
  3702
+
mgl@1371
  3703
+  htab = avr32_elf_hash_table(info);
mgl@1371
  3704
+  got = h->got.glist;
mgl@1371
  3705
+
mgl@1371
  3706
+  if (got && got->refcount > 0)
mgl@1371
  3707
+    {
mgl@1371
  3708
+      asection *sgot;
mgl@1371
  3709
+      asection *srelgot;
mgl@1371
  3710
+      Elf_Internal_Rela rel;
mgl@1371
  3711
+      bfd_byte *loc;
mgl@1371
  3712
+
mgl@1371
  3713
+      /* This symbol has an entry in the GOT. Set it up. */
mgl@1371
  3714
+      sgot = htab->sgot;
mgl@1371
  3715
+      srelgot = htab->srelgot;
mgl@1371
  3716
+      BFD_ASSERT(sgot && srelgot);
mgl@1371
  3717
+
mgl@1371
  3718
+      rel.r_offset = (sgot->output_section->vma
mgl@1371
  3719
+		      + sgot->output_offset
mgl@1371
  3720
+		      + got->offset);
mgl@1371
  3721
+
mgl@1371
  3722
+      /* If this is a static link, or it is a -Bsymbolic link and the
mgl@1371
  3723
+	 symbol is defined locally or was forced to be local because
mgl@1371
  3724
+	 of a version file, we just want to emit a RELATIVE reloc. The
mgl@1371
  3725
+	 entry in the global offset table will already have been
mgl@1371
  3726
+	 initialized in the relocate_section function. */
mgl@1371
  3727
+      if ((info->shared
mgl@1371
  3728
+	   && !info->symbolic
mgl@1371
  3729
+	   && h->dynindx != -1)
mgl@1371
  3730
+	  || (htab->root.dynamic_sections_created
mgl@1371
  3731
+	      && h->def_dynamic
mgl@1371
  3732
+	      && !h->def_regular))
mgl@1371
  3733
+	{
mgl@1371
  3734
+	  bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
mgl@1371
  3735
+	  rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
mgl@1371
  3736
+	  rel.r_addend = 0;
mgl@1371
  3737
+
mgl@1371
  3738
+	  pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
mgl@1371
  3739
+	  pr_debug("    srelgot reloc_count: %d, size: %lu\n",
mgl@1371
  3740
+		   srelgot->reloc_count, srelgot->size);
mgl@1371
  3741
+
mgl@1371
  3742
+	  loc = (srelgot->contents
mgl@1371
  3743
+		 + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
mgl@1371
  3744
+	  bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
mgl@1371
  3745
+
mgl@1371
  3746
+	  BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
mgl@1371
  3747
+		     <= srelgot->size);
mgl@1371
  3748
+	}
mgl@1371
  3749
+    }
mgl@1371
  3750
+
mgl@1371
  3751
+  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
mgl@1371
  3752
+  if (strcmp(h->root.root.string, "_DYNAMIC") == 0
mgl@1371
  3753
+      || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
mgl@1371
  3754
+    sym->st_shndx = SHN_ABS;
mgl@1371
  3755
+
mgl@1371
  3756
+  return TRUE;
mgl@1371
  3757
+}
mgl@1371
  3758
+
mgl@1371
  3759
+/* (8) Do any remaining initialization of the dynamic sections */
mgl@1371
  3760
+
mgl@1371
  3761
+static bfd_boolean
mgl@1371
  3762
+avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
mgl@1371
  3763
+{
mgl@1371
  3764
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  3765
+  asection *sgot, *sdyn;
mgl@1371
  3766
+
mgl@1371
  3767
+  pr_debug("(8) finish dynamic sections\n");
mgl@1371
  3768
+
mgl@1371
  3769
+  htab = avr32_elf_hash_table(info);
mgl@1371
  3770
+  sgot = htab->sgot;
mgl@1371
  3771
+  sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
mgl@1371
  3772
+
mgl@1371
  3773
+  if (htab->root.dynamic_sections_created)
mgl@1371
  3774
+    {
mgl@1371
  3775
+      Elf32_External_Dyn *dyncon, *dynconend;
mgl@1371
  3776
+
mgl@1371
  3777
+      BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
mgl@1371
  3778
+
mgl@1371
  3779
+      dyncon = (Elf32_External_Dyn *)sdyn->contents;
mgl@1371
  3780
+      dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
mgl@1371
  3781
+      for (; dyncon < dynconend; dyncon++)
mgl@1371
  3782
+	{
mgl@1371
  3783
+	  Elf_Internal_Dyn dyn;
mgl@1371
  3784
+	  asection *s;
mgl@1371
  3785
+
mgl@1371
  3786
+	  bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
mgl@1371
  3787
+
mgl@1371
  3788
+	  switch (dyn.d_tag)
mgl@1371
  3789
+	    {
mgl@1371
  3790
+	    default:
mgl@1371
  3791
+	      break;
mgl@1371
  3792
+
mgl@1371
  3793
+	    case DT_PLTGOT:
mgl@1371
  3794
+	      s = sgot->output_section;
mgl@1371
  3795
+	      BFD_ASSERT(s != NULL);
mgl@1371
  3796
+	      dyn.d_un.d_ptr = s->vma;
mgl@1371
  3797
+	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
mgl@1371
  3798
+	      break;
mgl@1371
  3799
+
mgl@1371
  3800
+	    case DT_AVR32_GOTSZ:
mgl@1371
  3801
+	      s = sgot->output_section;
mgl@1371
  3802
+	      BFD_ASSERT(s != NULL);
mgl@1371
  3803
+	      dyn.d_un.d_val = s->size;
mgl@1371
  3804
+	      bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
mgl@1371
  3805
+	      break;
mgl@1371
  3806
+	    }
mgl@1371
  3807
+	}
mgl@1371
  3808
+
mgl@1371
  3809
+      /* Fill in the first two entries in the global offset table */
mgl@1371
  3810
+      bfd_put_32(output_bfd,
mgl@1371
  3811
+		 sdyn->output_section->vma + sdyn->output_offset,
mgl@1371
  3812
+		 sgot->contents);
mgl@1371
  3813
+
mgl@1371
  3814
+      /* The runtime linker will fill this one in with the address of
mgl@1371
  3815
+	 the run-time link map */
mgl@1371
  3816
+      bfd_put_32(output_bfd, 0, sgot->contents + 4);
mgl@1371
  3817
+    }
mgl@1371
  3818
+
mgl@1371
  3819
+  if (sgot)
mgl@1371
  3820
+    elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
mgl@1371
  3821
+
mgl@1371
  3822
+  return TRUE;
mgl@1371
  3823
+}
mgl@1371
  3824
+
mgl@1371
  3825
+
mgl@1371
  3826
+/* AVR32-specific private ELF data */
mgl@1371
  3827
+
mgl@1371
  3828
+static bfd_boolean
mgl@1371
  3829
+avr32_elf_set_private_flags(bfd *abfd, flagword flags);
mgl@1371
  3830
+static bfd_boolean
mgl@1371
  3831
+avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
mgl@1371
  3832
+static bfd_boolean
mgl@1371
  3833
+avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
mgl@1371
  3834
+static bfd_boolean
mgl@1371
  3835
+avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
mgl@1371
  3836
+
mgl@1371
  3837
+static bfd_boolean
mgl@1371
  3838
+avr32_elf_set_private_flags(bfd *abfd, flagword flags)
mgl@1371
  3839
+{
mgl@1371
  3840
+  elf_elfheader(abfd)->e_flags = flags;
mgl@1371
  3841
+  elf_flags_init(abfd) = TRUE;
mgl@1371
  3842
+
mgl@1371
  3843
+  return TRUE;
mgl@1371
  3844
+}
mgl@1371
  3845
+
mgl@1371
  3846
+/* Copy backend specific data from one object module to another.  */
mgl@1371
  3847
+
mgl@1371
  3848
+static bfd_boolean
mgl@1371
  3849
+avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
mgl@1371
  3850
+{
mgl@1371
  3851
+  elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
mgl@1371
  3852
+  return TRUE;
mgl@1371
  3853
+}
mgl@1371
  3854
+
mgl@1371
  3855
+/* Merge backend specific data from an object file to the output
mgl@1371
  3856
+   object file when linking.  */
mgl@1371
  3857
+
mgl@1371
  3858
+static bfd_boolean
mgl@1371
  3859
+avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
mgl@1371
  3860
+{
mgl@1371
  3861
+  flagword out_flags, in_flags;
mgl@1371
  3862
+
mgl@1371
  3863
+  pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
mgl@1371
  3864
+	   ibfd->filename, obfd->filename);
mgl@1371
  3865
+
mgl@1371
  3866
+  in_flags = elf_elfheader(ibfd)->e_flags;
mgl@1371
  3867
+  out_flags = elf_elfheader(obfd)->e_flags;
mgl@1371
  3868
+
mgl@1371
  3869
+  if (elf_flags_init(obfd))
mgl@1371
  3870
+    {
mgl@1371
  3871
+      /* If one of the inputs are non-PIC, the output must be
mgl@1371
  3872
+	 considered non-PIC.  The same applies to linkrelax.  */
mgl@1371
  3873
+      if (!(in_flags & EF_AVR32_PIC))
mgl@1371
  3874
+	out_flags &= ~EF_AVR32_PIC;
mgl@1371
  3875
+      if (!(in_flags & EF_AVR32_LINKRELAX))
mgl@1371
  3876
+	out_flags &= ~EF_AVR32_LINKRELAX;
mgl@1371
  3877
+    }
mgl@1371
  3878
+  else
mgl@1371
  3879
+    {
mgl@1371
  3880
+      elf_flags_init(obfd) = TRUE;
mgl@1371
  3881
+      out_flags = in_flags;
mgl@1371
  3882
+    }
mgl@1371
  3883
+
mgl@1371
  3884
+  elf_elfheader(obfd)->e_flags = out_flags;
mgl@1371
  3885
+
mgl@1371
  3886
+  return TRUE;
mgl@1371
  3887
+}
mgl@1371
  3888
+
mgl@1371
  3889
+static bfd_boolean
mgl@1371
  3890
+avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
mgl@1371
  3891
+{
mgl@1371
  3892
+  FILE *file = (FILE *)ptr;
mgl@1371
  3893
+  unsigned long flags;
mgl@1371
  3894
+
mgl@1371
  3895
+  BFD_ASSERT(abfd != NULL && ptr != NULL);
mgl@1371
  3896
+
mgl@1371
  3897
+  _bfd_elf_print_private_bfd_data(abfd, ptr);
mgl@1371
  3898
+
mgl@1371
  3899
+  flags = elf_elfheader(abfd)->e_flags;
mgl@1371
  3900
+
mgl@1371
  3901
+  fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
mgl@1371
  3902
+
mgl@1371
  3903
+  if (flags & EF_AVR32_PIC)
mgl@1371
  3904
+    fprintf(file, " [PIC]");
mgl@1371
  3905
+  if (flags & EF_AVR32_LINKRELAX)
mgl@1371
  3906
+    fprintf(file, " [linker relaxable]");
mgl@1371
  3907
+
mgl@1371
  3908
+  flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
mgl@1371
  3909
+
mgl@1371
  3910
+  if (flags)
mgl@1371
  3911
+    fprintf(file, _("<Unrecognized flag bits set>"));
mgl@1371
  3912
+
mgl@1371
  3913
+  fputc('\n', file);
mgl@1371
  3914
+
mgl@1371
  3915
+  return TRUE;
mgl@1371
  3916
+}
mgl@1371
  3917
+
mgl@1371
  3918
+/* Set avr32-specific linker options.  */
mgl@1371
  3919
+void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
mgl@1371
  3920
+				 int direct_data_refs)
mgl@1371
  3921
+{
mgl@1371
  3922
+  struct elf_avr32_link_hash_table *htab;
mgl@1371
  3923
+
mgl@1371
  3924
+  htab = avr32_elf_hash_table (info);
mgl@1371
  3925
+  htab->direct_data_refs = !!direct_data_refs;
mgl@1371
  3926
+}
mgl@1371
  3927
+
mgl@1371
  3928
+
mgl@1371
  3929
+
mgl@1371
  3930
+/* Understanding core dumps */
mgl@1371
  3931
+
mgl@1371
  3932
+static bfd_boolean
mgl@1371
  3933
+avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
mgl@1371
  3934
+static bfd_boolean
mgl@1371
  3935
+avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
mgl@1371
  3936
+
mgl@1371
  3937
+static bfd_boolean
mgl@1371
  3938
+avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
mgl@1371
  3939
+{
mgl@1371
  3940
+  /* Linux/AVR32B elf_prstatus */
mgl@1371
  3941
+  if (note->descsz != 148)
mgl@1371
  3942
+    return FALSE;
mgl@1371
  3943
+
mgl@1371
  3944
+  /* pr_cursig */
mgl@1371
  3945
+  elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
mgl@1371
  3946
+
mgl@1371
  3947
+  /* pr_pid */
mgl@1371
  3948
+  elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
mgl@1371
  3949
+
mgl@1371
  3950
+  /* Make a ".reg/999" section for pr_reg. The size is for 16
mgl@1371
  3951
+     general-purpose registers, SR and r12_orig (18 * 4 = 72).  */
mgl@1371
  3952
+  return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
mgl@1371
  3953
+					 note->descpos + 72);
mgl@1371
  3954
+}
mgl@1371
  3955
+
mgl@1371
  3956
+static bfd_boolean
mgl@1371
  3957
+avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
mgl@1371
  3958
+{
mgl@1371
  3959
+  /* Linux/AVR32B elf_prpsinfo */
mgl@1371
  3960
+  if (note->descsz != 128)
mgl@1371
  3961
+    return FALSE;
mgl@1371
  3962
+
mgl@1371
  3963
+  elf_tdata(abfd)->core_program
mgl@1371
  3964
+    = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
mgl@1371
  3965
+  elf_tdata(abfd)->core_command
mgl@1371
  3966
+    = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
mgl@1371
  3967
+
mgl@1371
  3968
+  /* Note that for some reason, a spurious space is tacked
mgl@1371
  3969
+     onto the end of the args in some (at least one anyway)
mgl@1371
  3970
+     implementations, so strip it off if it exists.  */
mgl@1371
  3971
+
mgl@1371
  3972
+  {
mgl@1371
  3973
+    char *command = elf_tdata (abfd)->core_command;
mgl@1371
  3974
+    int n = strlen (command);
mgl@1371
  3975
+
mgl@1371
  3976
+    if (0 < n && command[n - 1] == ' ')
mgl@1371
  3977
+      command[n - 1] = '\0';
mgl@1371
  3978
+  }
mgl@1371
  3979
+
mgl@1371
  3980
+  return TRUE;
mgl@1371
  3981
+}
mgl@1371
  3982
+
mgl@1371
  3983
+
mgl@1371
  3984
+#define ELF_ARCH			bfd_arch_avr32
mgl@1371
  3985
+#define ELF_MACHINE_CODE		EM_AVR32
mgl@1371
  3986
+#define ELF_MAXPAGESIZE			0x1000
mgl@1371
  3987
+
mgl@1371
  3988
+#define TARGET_BIG_SYM			bfd_elf32_avr32_vec
mgl@1371
  3989
+#define TARGET_BIG_NAME			"elf32-avr32"
mgl@1371
  3990
+
mgl@1371
  3991
+#define elf_backend_grok_prstatus	avr32_elf_grok_prstatus
mgl@1371
  3992
+#define elf_backend_grok_psinfo		avr32_elf_grok_psinfo
mgl@1371
  3993
+
mgl@1371
  3994
+/* Only RELA relocations are used */
mgl@1371
  3995
+#define elf_backend_may_use_rel_p	0
mgl@1371
  3996
+#define elf_backend_may_use_rela_p	1
mgl@1371
  3997
+#define elf_backend_default_use_rela_p	1
mgl@1371
  3998
+#define elf_backend_rela_normal		1
mgl@1371
  3999
+#define elf_info_to_howto_rel		NULL
mgl@1371
  4000
+#define elf_info_to_howto		avr32_info_to_howto
mgl@1371
  4001
+
mgl@1371
  4002
+#define bfd_elf32_bfd_copy_private_bfd_data	avr32_elf_copy_private_bfd_data
mgl@1371
  4003
+#define bfd_elf32_bfd_merge_private_bfd_data	avr32_elf_merge_private_bfd_data
mgl@1371
  4004
+#define bfd_elf32_bfd_set_private_flags		avr32_elf_set_private_flags
mgl@1371
  4005
+#define bfd_elf32_bfd_print_private_bfd_data	avr32_elf_print_private_bfd_data
mgl@1371
  4006
+#define bfd_elf32_new_section_hook		avr32_elf_new_section_hook
mgl@1371
  4007
+
mgl@1371
  4008
+#define elf_backend_gc_mark_hook		avr32_elf_gc_mark_hook
mgl@1371
  4009
+#define elf_backend_gc_sweep_hook		avr32_elf_gc_sweep_hook
mgl@1371
  4010
+#define elf_backend_relocate_section	avr32_elf_relocate_section
mgl@1371
  4011
+#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
mgl@1371
  4012
+#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
mgl@1371
  4013
+#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
mgl@1371
  4014
+#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
mgl@1371
  4015
+#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
mgl@1371
  4016
+#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
mgl@1371
  4017
+#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
mgl@1371
  4018
+
mgl@1371
  4019
+#define bfd_elf32_bfd_relax_section	avr32_elf_relax_section
mgl@1371
  4020
+
mgl@1371
  4021
+/* Find out which symbols need an entry in .got. */
mgl@1371
  4022
+#define elf_backend_check_relocs	avr32_check_relocs
mgl@1371
  4023
+#define elf_backend_can_refcount	1
mgl@1371
  4024
+#define elf_backend_can_gc_sections	1
mgl@1371
  4025
+#define elf_backend_plt_readonly	1
mgl@1371
  4026
+#define elf_backend_plt_not_loaded	1
mgl@1371
  4027
+#define elf_backend_want_plt_sym	0
mgl@1371
  4028
+#define elf_backend_plt_alignment	2
mgl@1371
  4029
+#define elf_backend_want_dynbss		0
mgl@1371
  4030
+#define elf_backend_want_got_plt	0
mgl@1371
  4031
+#define elf_backend_want_got_sym	1
mgl@1371
  4032
+#define elf_backend_got_header_size	AVR32_GOT_HEADER_SIZE
mgl@1371
  4033
+
mgl@1371
  4034
+#include "elf32-target.h"
mgl@1371
  4035
--- /dev/null
mgl@1371
  4036
+++ b/bfd/elf32-avr32.h
mgl@1371
  4037
@@ -0,0 +1,23 @@
mgl@1371
  4038
+/* AVR32-specific support for 32-bit ELF.
mgl@1371
  4039
+   Copyright 2007 Atmel Corporation.
mgl@1371
  4040
+
mgl@1371
  4041
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
  4042
+
mgl@1371
  4043
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
  4044
+
mgl@1371
  4045
+   This program is free software; you can redistribute it and/or modify
mgl@1371
  4046
+   it under the terms of the GNU General Public License as published by
mgl@1371
  4047
+   the Free Software Foundation; either version 2 of the License, or
mgl@1371
  4048
+   (at your option) any later version.
mgl@1371
  4049
+
mgl@1371
  4050
+   This program is distributed in the hope that it will be useful,
mgl@1371
  4051
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
  4052
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
  4053
+   GNU General Public License for more details.
mgl@1371
  4054
+
mgl@1371
  4055
+   You should have received a copy of the GNU General Public License
mgl@1371
  4056
+   along with this program; if not, write to the Free Software
mgl@1371
  4057
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
mgl@1371
  4058
+
mgl@1371
  4059
+void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
mgl@1371
  4060
+				 int direct_data_refs);
mgl@1371
  4061
--- a/bfd/elf-bfd.h
mgl@1371
  4062
+++ b/bfd/elf-bfd.h
mgl@1371
  4063
@@ -1400,6 +1400,10 @@ struct elf_obj_tdata
mgl@1371
  4064
      find_nearest_line.  */
mgl@1371
  4065
   struct mips_elf_find_line *find_line_info;
mgl@1371
  4066
 
mgl@1371
  4067
+  /* Used by AVR32 ELF relaxation code.  Contains an array of pointers
mgl@1371
  4068
+     for each local symbol to the fragment where it is defined.  */
mgl@1371
  4069
+  struct fragment **local_sym_frag;
mgl@1371
  4070
+
mgl@1371
  4071
   /* A place to stash dwarf1 info for this bfd.  */
mgl@1371
  4072
   struct dwarf1_debug *dwarf1_find_line_info;
mgl@1371
  4073
 
mgl@1371
  4074
--- a/bfd/Makefile.am
mgl@1371
  4075
+++ b/bfd/Makefile.am
mgl@1371
  4076
@@ -63,6 +63,7 @@ ALL_MACHINES = \
mgl@1371
  4077
 	cpu-arc.lo \
mgl@1371
  4078
 	cpu-arm.lo \
mgl@1371
  4079
 	cpu-avr.lo \
mgl@1371
  4080
+	cpu-avr32.lo \
mgl@1371
  4081
 	cpu-bfin.lo \
mgl@1371
  4082
 	cpu-cr16.lo \
mgl@1371
  4083
 	cpu-cr16c.lo \
mgl@1371
  4084
@@ -243,6 +244,7 @@ BFD32_BACKENDS = \
mgl@1371
  4085
 	elf32-arc.lo \
mgl@1371
  4086
 	elf32-arm.lo \
mgl@1371
  4087
 	elf32-avr.lo \
mgl@1371
  4088
+	elf32-avr32.lo \
mgl@1371
  4089
 	elf32-bfin.lo \
mgl@1371
  4090
 	elf32-cr16.lo \
mgl@1371
  4091
 	elf32-cr16c.lo \
mgl@1371
  4092
@@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
mgl@1371
  4093
   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
mgl@1371
  4094
   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
  4095
   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
mgl@1371
  4096
+elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
mgl@1371
  4097
+  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
  4098
+  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
mgl@1371
  4099
+  elf32-target.h
mgl@1371
  4100
 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
mgl@1371
  4101
   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
mgl@1371
  4102
   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
mgl@1371
  4103
--- a/bfd/reloc.c
mgl@1371
  4104
+++ b/bfd/reloc.c
mgl@1371
  4105
@@ -3948,6 +3948,131 @@ ENUMDOC
mgl@1371
  4106
   instructions
mgl@1371
  4107
 
mgl@1371
  4108
 ENUM
mgl@1371
  4109
+  BFD_RELOC_AVR32_DIFF32
mgl@1371
  4110
+ENUMX
mgl@1371
  4111
+  BFD_RELOC_AVR32_DIFF16
mgl@1371
  4112
+ENUMX
mgl@1371
  4113
+  BFD_RELOC_AVR32_DIFF8
mgl@1371
  4114
+ENUMDOC
mgl@1371
  4115
+  Difference between two labels: L2 - L1. The value of L1 is encoded
mgl@1371
  4116
+  as sym + addend, while the initial difference after assembly is
mgl@1371
  4117
+  inserted into the object file by the assembler.
mgl@1371
  4118
+ENUM
mgl@1371
  4119
+  BFD_RELOC_AVR32_GOT32
mgl@1371
  4120
+ENUMX
mgl@1371
  4121
+  BFD_RELOC_AVR32_GOT16
mgl@1371
  4122
+ENUMX
mgl@1371
  4123
+  BFD_RELOC_AVR32_GOT8
mgl@1371
  4124
+ENUMDOC
mgl@1371
  4125
+  Reference to a symbol through the Global Offset Table. The linker
mgl@1371
  4126
+  will allocate an entry for symbol in the GOT and insert the offset
mgl@1371
  4127
+  of this entry as the relocation value.
mgl@1371
  4128
+ENUM
mgl@1371
  4129
+  BFD_RELOC_AVR32_21S
mgl@1371
  4130
+ENUMX
mgl@1371
  4131
+  BFD_RELOC_AVR32_16U
mgl@1371
  4132
+ENUMX
mgl@1371
  4133
+  BFD_RELOC_AVR32_16S
mgl@1371
  4134
+ENUMX
mgl@1371
  4135
+  BFD_RELOC_AVR32_SUB5
mgl@1371
  4136
+ENUMX
mgl@1371
  4137
+  BFD_RELOC_AVR32_8S_EXT
mgl@1371
  4138
+ENUMX
mgl@1371
  4139
+  BFD_RELOC_AVR32_8S
mgl@1371
  4140
+ENUMX
mgl@1371
  4141
+  BFD_RELOC_AVR32_15S
mgl@1371
  4142
+ENUMDOC
mgl@1371
  4143
+  Normal (non-pc-relative) code relocations. Alignment and signedness
mgl@1371
  4144
+  is indicated by the suffixes. S means signed, U means unsigned. W
mgl@1371
  4145
+  means word-aligned, H means halfword-aligned, neither means
mgl@1371
  4146
+  byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
mgl@1371
  4147
+ENUM
mgl@1371
  4148
+  BFD_RELOC_AVR32_22H_PCREL
mgl@1371
  4149
+ENUMX
mgl@1371
  4150
+  BFD_RELOC_AVR32_18W_PCREL
mgl@1371
  4151
+ENUMX
mgl@1371
  4152
+  BFD_RELOC_AVR32_16B_PCREL
mgl@1371
  4153
+ENUMX
mgl@1371
  4154
+  BFD_RELOC_AVR32_16N_PCREL
mgl@1371
  4155
+ENUMX
mgl@1371
  4156
+  BFD_RELOC_AVR32_14UW_PCREL
mgl@1371
  4157
+ENUMX
mgl@1371
  4158
+  BFD_RELOC_AVR32_11H_PCREL
mgl@1371
  4159
+ENUMX
mgl@1371
  4160
+  BFD_RELOC_AVR32_10UW_PCREL
mgl@1371
  4161
+ENUMX
mgl@1371
  4162
+  BFD_RELOC_AVR32_9H_PCREL
mgl@1371
  4163
+ENUMX
mgl@1371
  4164
+  BFD_RELOC_AVR32_9UW_PCREL
mgl@1371
  4165
+ENUMDOC
mgl@1371
  4166
+  PC-relative relocations are signed if neither 'U' nor 'S' is
mgl@1371
  4167
+  specified. However, we explicitly tack on a 'B' to indicate no
mgl@1371
  4168
+  alignment, to avoid confusion with data relocs. All of these resolve
mgl@1371
  4169
+  to sym + addend - offset, except the one with 'N' (negated) suffix.
mgl@1371
  4170
+  This particular one resolves to offset - sym - addend.
mgl@1371
  4171
+ENUM
mgl@1371
  4172
+  BFD_RELOC_AVR32_GOTPC
mgl@1371
  4173
+ENUMDOC
mgl@1371
  4174
+  Subtract the link-time address of the GOT from (symbol + addend)
mgl@1371
  4175
+  and insert the result.
mgl@1371
  4176
+ENUM
mgl@1371
  4177
+  BFD_RELOC_AVR32_GOTCALL
mgl@1371
  4178
+ENUMX
mgl@1371
  4179
+  BFD_RELOC_AVR32_LDA_GOT
mgl@1371
  4180
+ENUMX
mgl@1371
  4181
+  BFD_RELOC_AVR32_GOT21S
mgl@1371
  4182
+ENUMX
mgl@1371
  4183
+  BFD_RELOC_AVR32_GOT18SW
mgl@1371
  4184
+ENUMX
mgl@1371
  4185
+  BFD_RELOC_AVR32_GOT16S
mgl@1371
  4186
+ENUMDOC
mgl@1371
  4187
+  Reference to a symbol through the GOT. The linker will allocate an
mgl@1371
  4188
+  entry for symbol in the GOT and insert the offset of this entry as
mgl@1371
  4189
+  the relocation value. addend must be zero. As usual, 'S' means
mgl@1371
  4190
+  signed, 'W' means word-aligned, etc.
mgl@1371
  4191
+ENUM
mgl@1371
  4192
+  BFD_RELOC_AVR32_32_CPENT
mgl@1371
  4193
+ENUMDOC
mgl@1371
  4194
+  32-bit constant pool entry. I don't think 8- and 16-bit entries make
mgl@1371
  4195
+  a whole lot of sense.
mgl@1371
  4196
+ENUM
mgl@1371
  4197
+  BFD_RELOC_AVR32_CPCALL
mgl@1371
  4198
+ENUMX
mgl@1371
  4199
+  BFD_RELOC_AVR32_16_CP
mgl@1371
  4200
+ENUMX
mgl@1371
  4201
+  BFD_RELOC_AVR32_9W_CP
mgl@1371
  4202
+ENUMDOC
mgl@1371
  4203
+  Constant pool references. Some of these relocations are signed,
mgl@1371
  4204
+  others are unsigned. It doesn't really matter, since the constant
mgl@1371
  4205
+  pool always comes after the code that references it.
mgl@1371
  4206
+ENUM
mgl@1371
  4207
+  BFD_RELOC_AVR32_ALIGN
mgl@1371
  4208
+ENUMDOC
mgl@1371
  4209
+  sym must be the absolute symbol. The addend specifies the alignment
mgl@1371
  4210
+  order, e.g. if addend is 2, the linker must add padding so that the
mgl@1371
  4211
+  next address is aligned to a 4-byte boundary.
mgl@1371
  4212
+ENUM
mgl@1371
  4213
+  BFD_RELOC_AVR32_14UW
mgl@1371
  4214
+ENUMX
mgl@1371
  4215
+  BFD_RELOC_AVR32_10UW
mgl@1371
  4216
+ENUMX
mgl@1371
  4217
+  BFD_RELOC_AVR32_10SW
mgl@1371
  4218
+ENUMX
mgl@1371
  4219
+  BFD_RELOC_AVR32_STHH_W
mgl@1371
  4220
+ENUMX
mgl@1371
  4221
+  BFD_RELOC_AVR32_7UW
mgl@1371
  4222
+ENUMX
mgl@1371
  4223
+  BFD_RELOC_AVR32_6S
mgl@1371
  4224
+ENUMX
mgl@1371
  4225
+  BFD_RELOC_AVR32_6UW
mgl@1371
  4226
+ENUMX
mgl@1371
  4227
+  BFD_RELOC_AVR32_4UH
mgl@1371
  4228
+ENUMX
mgl@1371
  4229
+  BFD_RELOC_AVR32_3U
mgl@1371
  4230
+ENUMDOC
mgl@1371
  4231
+  Code relocations that will never make it to the output file.
mgl@1371
  4232
+
mgl@1371
  4233
+ENUM
mgl@1371
  4234
   BFD_RELOC_390_12
mgl@1371
  4235
 ENUMDOC
mgl@1371
  4236
    Direct 12 bit.
mgl@1371
  4237
--- a/bfd/targets.c
mgl@1371
  4238
+++ b/bfd/targets.c
mgl@1371
  4239
@@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
mgl@1371
  4240
 extern const bfd_target bfd_efi_app_x86_64_vec;
mgl@1371
  4241
 extern const bfd_target bfd_efi_app_ia64_vec;
mgl@1371
  4242
 extern const bfd_target bfd_elf32_avr_vec;
mgl@1371
  4243
+extern const bfd_target bfd_elf32_avr32_vec;
mgl@1371
  4244
 extern const bfd_target bfd_elf32_bfin_vec;
mgl@1371
  4245
 extern const bfd_target bfd_elf32_bfinfdpic_vec;
mgl@1371
  4246
 extern const bfd_target bfd_elf32_big_generic_vec;
mgl@1371
  4247
@@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
mgl@1371
  4248
 	&bfd_efi_app_ia64_vec,
mgl@1371
  4249
 #endif
mgl@1371
  4250
 	&bfd_elf32_avr_vec,
mgl@1371
  4251
+	&bfd_elf32_avr32_vec,
mgl@1371
  4252
 	&bfd_elf32_bfin_vec,
mgl@1371
  4253
 	&bfd_elf32_bfinfdpic_vec,
mgl@1371
  4254
 
mgl@1371
  4255
--- a/binutils/Makefile.am
mgl@1371
  4256
+++ b/binutils/Makefile.am
mgl@1371
  4257
@@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
mgl@1371
  4258
   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
mgl@1371
  4259
   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
mgl@1371
  4260
   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
mgl@1371
  4261
-  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
mgl@1371
  4262
+  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
mgl@1371
  4263
   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
mgl@1371
  4264
   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
mgl@1371
  4265
   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
mgl@1371
  4266
--- a/binutils/readelf.c
mgl@1371
  4267
+++ b/binutils/readelf.c
mgl@1371
  4268
@@ -21,7 +21,7 @@
mgl@1371
  4269
    along with this program; if not, write to the Free Software
mgl@1371
  4270
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
mgl@1371
  4271
    02110-1301, USA.  */
mgl@1371
  4272
-
mgl@1371
  4273
+
mgl@1371
  4274
 /* The difference between readelf and objdump:
mgl@1371
  4275
 
mgl@1371
  4276
   Both programs are capable of displaying the contents of ELF format files,
mgl@1371
  4277
@@ -40,7 +40,7 @@
mgl@1371
  4278
   There is also the case that readelf can provide more information about an
mgl@1371
  4279
   ELF file than is provided by objdump.  In particular it can display DWARF
mgl@1371
  4280
   debugging information which (at the moment) objdump cannot.  */
mgl@1371
  4281
-
mgl@1371
  4282
+
mgl@1371
  4283
 #include "sysdep.h"
mgl@1371
  4284
 #include <assert.h>
mgl@1371
  4285
 #include <sys/stat.h>
mgl@1371
  4286
@@ -109,6 +109,7 @@
mgl@1371
  4287
 #include "elf/arc.h"
mgl@1371
  4288
 #include "elf/arm.h"
mgl@1371
  4289
 #include "elf/avr.h"
mgl@1371
  4290
+#include "elf/avr32.h"
mgl@1371
  4291
 #include "elf/bfin.h"
mgl@1371
  4292
 #include "elf/cr16.h"
mgl@1371
  4293
 #include "elf/cris.h"
mgl@1371
  4294
@@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
mgl@1371
  4295
 #define streq(a,b)	  (strcmp ((a), (b)) == 0)
mgl@1371
  4296
 #define strneq(a,b,n)	  (strncmp ((a), (b), (n)) == 0)
mgl@1371
  4297
 #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
mgl@1371
  4298
-
mgl@1371
  4299
+
mgl@1371
  4300
 static void *
mgl@1371
  4301
 get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
mgl@1371
  4302
 	  const char *reason)
mgl@1371
  4303
@@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
mgl@1371
  4304
     case EM_ALPHA:
mgl@1371
  4305
     case EM_ALTERA_NIOS2:
mgl@1371
  4306
     case EM_AVR:
mgl@1371
  4307
+    case EM_AVR32:
mgl@1371
  4308
     case EM_AVR_OLD:
mgl@1371
  4309
     case EM_BLACKFIN:
mgl@1371
  4310
     case EM_CR16:
mgl@1371
  4311
@@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
mgl@1371
  4312
 	  rtype = elf_avr_reloc_type (type);
mgl@1371
  4313
 	  break;
mgl@1371
  4314
 
mgl@1371
  4315
+	case EM_AVR32:
mgl@1371
  4316
+	  rtype = elf_avr32_reloc_type (type);
mgl@1371
  4317
+	  break;
mgl@1371
  4318
+
mgl@1371
  4319
 	case EM_OLD_SPARCV9:
mgl@1371
  4320
 	case EM_SPARC32PLUS:
mgl@1371
  4321
 	case EM_SPARCV9:
mgl@1371
  4322
@@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
mgl@1371
  4323
     case EM_VAX:		return "Digital VAX";
mgl@1371
  4324
     case EM_AVR_OLD:
mgl@1371
  4325
     case EM_AVR:		return "Atmel AVR 8-bit microcontroller";
mgl@1371
  4326
+    case EM_AVR32:		return "Atmel AVR32";
mgl@1371
  4327
     case EM_CRIS:		return "Axis Communications 32-bit embedded processor";
mgl@1371
  4328
     case EM_JAVELIN:		return "Infineon Technologies 32-bit embedded cpu";
mgl@1371
  4329
     case EM_FIREPATH:		return "Element 14 64-bit DSP processor";
mgl@1371
  4330
--- a/gas/as.c
mgl@1371
  4331
+++ b/gas/as.c
mgl@1371
  4332
@@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
mgl@1371
  4333
        the end of the preceeding line so that it is simpler to
mgl@1371
  4334
        selectively add and remove lines from this list.  */
mgl@1371
  4335
     {"alternate", no_argument, NULL, OPTION_ALTERNATE}
mgl@1371
  4336
-    /* The entry for "a" is here to prevent getopt_long_only() from
mgl@1371
  4337
-       considering that -a is an abbreviation for --alternate.  This is
mgl@1371
  4338
-       necessary because -a=<FILE> is a valid switch but getopt would
mgl@1371
  4339
-       normally reject it since --alternate does not take an argument.  */
mgl@1371
  4340
+    /* The next two entries are here to prevent getopt_long_only() from
mgl@1371
  4341
+       considering that -a or -al is an abbreviation for --alternate.
mgl@1371
  4342
+       This is necessary because -a=<FILE> is a valid switch but getopt
mgl@1371
  4343
+       would normally reject it since --alternate does not take an argument.  */
mgl@1371
  4344
     ,{"a", optional_argument, NULL, 'a'}
mgl@1371
  4345
     /* Handle -al=<FILE>.  */
mgl@1371
  4346
     ,{"al", optional_argument, NULL, OPTION_AL}
mgl@1371
  4347
@@ -803,8 +803,15 @@ This program has absolutely no warranty.
mgl@1371
  4348
 	case 'a':
mgl@1371
  4349
 	  if (optarg)
mgl@1371
  4350
 	    {
mgl@1371
  4351
-	      if (optarg != old_argv[optind] && optarg[-1] == '=')
mgl@1371
  4352
-		--optarg;
mgl@1371
  4353
+	      /* If optarg is part of the -a switch and not a separate argument
mgl@1371
  4354
+		 in its own right, then scan backwards to the just after the -a.
mgl@1371
  4355
+		 This means skipping over both '=' and 'l' which might have been
mgl@1371
  4356
+		 taken to be part of the -a switch itself.  */
mgl@1371
  4357
+	      if (optarg != old_argv[optind])
mgl@1371
  4358
+		{
mgl@1371
  4359
+		  while (optarg[-1] == '=' || optarg[-1] == 'l')
mgl@1371
  4360
+		    --optarg;
mgl@1371
  4361
+		}
mgl@1371
  4362
 
mgl@1371
  4363
 	      if (md_parse_option (optc, optarg) != 0)
mgl@1371
  4364
 		break;
mgl@1371
  4365
@@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
mgl@1371
  4366
     keep_it = 0;
mgl@1371
  4367
 
mgl@1371
  4368
   if (!keep_it)
mgl@1371
  4369
-    unlink_if_ordinary (out_file_name);
mgl@1371
  4370
+    unlink (out_file_name);
mgl@1371
  4371
 
mgl@1371
  4372
   input_scrub_end ();
mgl@1371
  4373
 
mgl@1371
  4374
--- /dev/null
mgl@1371
  4375
+++ b/gas/config/tc-avr32.c
mgl@1371
  4376
@@ -0,0 +1,4806 @@
mgl@1371
  4377
+/* Assembler implementation for AVR32.
mgl@1371
  4378
+   Copyright 2003-2006 Atmel Corporation.
mgl@1371
  4379
+
mgl@1371
  4380
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
  4381
+
mgl@1371
  4382
+   This file is part of GAS, the GNU Assembler.
mgl@1371
  4383
+
mgl@1371
  4384
+   GAS is free software; you can redistribute it and/or modify it
mgl@1371
  4385
+   under the terms of the GNU General Public License as published by
mgl@1371
  4386
+   the Free Software Foundation; either version 2, or (at your option)
mgl@1371
  4387
+   any later version.
mgl@1371
  4388
+
mgl@1371
  4389
+   GAS is distributed in the hope that it will be useful, but WITHOUT
mgl@1371
  4390
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
mgl@1371
  4391
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
mgl@1371
  4392
+   License for more details.
mgl@1371
  4393
+
mgl@1371
  4394
+   You should have received a copy of the GNU General Public License
mgl@1371
  4395
+   along with GAS; see the file COPYING.  If not, write to the Free
mgl@1371
  4396
+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
mgl@1371
  4397
+   02111-1307, USA.  */
mgl@1371
  4398
+
mgl@1371
  4399
+#include <stdio.h>
mgl@1371
  4400
+#include "as.h"
mgl@1371
  4401
+#include "safe-ctype.h"
mgl@1371
  4402
+#include "subsegs.h"
mgl@1371
  4403
+#include "symcat.h"
mgl@1371
  4404
+#include "opcodes/avr32-opc.h"
mgl@1371
  4405
+#include "opcodes/avr32-asm.h"
mgl@1371
  4406
+#include "elf/avr32.h"
mgl@1371
  4407
+#include "dwarf2dbg.h"
mgl@1371
  4408
+
mgl@1371
  4409
+#define xDEBUG
mgl@1371
  4410
+#define xOPC_CONSISTENCY_CHECK
mgl@1371
  4411
+
mgl@1371
  4412
+#ifdef DEBUG
mgl@1371
  4413
+# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
mgl@1371
  4414
+#else
mgl@1371
  4415
+# define pr_debug(fmt, args...)
mgl@1371
  4416
+#endif
mgl@1371
  4417
+
mgl@1371
  4418
+/* 3 MSB of instruction word indicate group. Group 7 -> extended */
mgl@1371
  4419
+#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
mgl@1371
  4420
+
mgl@1371
  4421
+#define streq(a, b)		(strcmp(a, b) == 0)
mgl@1371
  4422
+#define skip_whitespace(str)	do { while(*(str) == ' ') ++(str); } while(0)
mgl@1371
  4423
+
mgl@1371
  4424
+/* Flags given on the command line */
mgl@1371
  4425
+static int avr32_pic	= FALSE;
mgl@1371
  4426
+int linkrelax	= FALSE;
mgl@1371
  4427
+int avr32_iarcompat	= FALSE;
mgl@1371
  4428
+
mgl@1371
  4429
+/* This array holds the chars that always start a comment. */
mgl@1371
  4430
+const char comment_chars[]		= "#";
mgl@1371
  4431
+
mgl@1371
  4432
+/* This array holds the chars that only start a comment at the
mgl@1371
  4433
+   beginning of a line.  We must include '#' here because the compiler
mgl@1371
  4434
+   may produce #APP and #NO_APP in its output.  */
mgl@1371
  4435
+const char line_comment_chars[]		= "#";
mgl@1371
  4436
+
mgl@1371
  4437
+/* These may be used instead of newline (same as ';' in C).  */
mgl@1371
  4438
+const char line_separator_chars[]	= ";";
mgl@1371
  4439
+
mgl@1371
  4440
+/* Chars that can be used to separate mantissa from exponent in
mgl@1371
  4441
+   floating point numbers.  */
mgl@1371
  4442
+const char EXP_CHARS[]			= "eE";
mgl@1371
  4443
+
mgl@1371
  4444
+/* Chars that mean this number is a floating point constant.  */
mgl@1371
  4445
+const char FLT_CHARS[]			= "dD";
mgl@1371
  4446
+
mgl@1371
  4447
+/* Pre-defined "_GLOBAL_OFFSET_TABLE_"  */
mgl@1371
  4448
+symbolS *GOT_symbol;
mgl@1371
  4449
+
mgl@1371
  4450
+static struct hash_control *avr32_mnemonic_htab;
mgl@1371
  4451
+
mgl@1371
  4452
+struct avr32_ifield_data
mgl@1371
  4453
+{
mgl@1371
  4454
+  bfd_vma value;
mgl@1371
  4455
+  /* FIXME: Get rid of align_order and complain. complain is never
mgl@1371
  4456
+     used, align_order is used in one place.  Try to use the relax
mgl@1371
  4457
+     table instead.  */
mgl@1371
  4458
+  unsigned int align_order;
mgl@1371
  4459
+};
mgl@1371
  4460
+
mgl@1371
  4461
+struct avr32_insn
mgl@1371
  4462
+{
mgl@1371
  4463
+  const struct avr32_syntax *syntax;
mgl@1371
  4464
+  expressionS immediate;
mgl@1371
  4465
+  int pcrel;
mgl@1371
  4466
+  int force_extended;
mgl@1371
  4467
+  unsigned int next_slot;
mgl@1371
  4468
+  bfd_reloc_code_real_type r_type;
mgl@1371
  4469
+  struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
mgl@1371
  4470
+};
mgl@1371
  4471
+
mgl@1371
  4472
+static struct avr32_insn current_insn;
mgl@1371
  4473
+
mgl@1371
  4474
+/* The target specific pseudo-ops we support. */
mgl@1371
  4475
+static void s_rseg (int);
mgl@1371
  4476
+static void s_cpool(int);
mgl@1371
  4477
+
mgl@1371
  4478
+const pseudo_typeS md_pseudo_table[] =
mgl@1371
  4479
+{
mgl@1371
  4480
+  /* Make sure that .word is 32 bits */
mgl@1371
  4481
+  { "word", cons, 4 },
mgl@1371
  4482
+  { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
mgl@1371
  4483
+  { "loc", dwarf2_directive_loc, 0 },
mgl@1371
  4484
+
mgl@1371
  4485
+  /* .lcomm requires an explicit alignment parameter */
mgl@1371
  4486
+  { "lcomm", s_lcomm, 1 },
mgl@1371
  4487
+
mgl@1371
  4488
+  /* AVR32-specific pseudo-ops */
mgl@1371
  4489
+  { "cpool", s_cpool, 0},
mgl@1371
  4490
+
mgl@1371
  4491
+  /* IAR compatible pseudo-ops */
mgl@1371
  4492
+  { "program", s_ignore, 0 },
mgl@1371
  4493
+  { "public", s_globl, 0 },
mgl@1371
  4494
+  { "extern", s_ignore, 0 },
mgl@1371
  4495
+  { "module", s_ignore, 0 },
mgl@1371
  4496
+  { "rseg", s_rseg, 0 },
mgl@1371
  4497
+  { "dc8", cons, 1 },
mgl@1371
  4498
+  { "dc16", cons, 2 },
mgl@1371
  4499
+  { "dc32", cons, 4 },
mgl@1371
  4500
+
mgl@1371
  4501
+  { NULL, NULL, 0 }
mgl@1371
  4502
+};
mgl@1371
  4503
+
mgl@1371
  4504
+/* Questionable stuff starts here */
mgl@1371
  4505
+
mgl@1371
  4506
+enum avr32_opinfo {
mgl@1371
  4507
+  AVR32_OPINFO_NONE = BFD_RELOC_NONE,
mgl@1371
  4508
+  AVR32_OPINFO_GOT,
mgl@1371
  4509
+  AVR32_OPINFO_TLSGD,
mgl@1371
  4510
+  AVR32_OPINFO_HI,
mgl@1371
  4511
+  AVR32_OPINFO_LO,
mgl@1371
  4512
+};
mgl@1371
  4513
+
mgl@1371
  4514
+enum avr32_arch {
mgl@1371
  4515
+  ARCH_TYPE_AP,
mgl@1371
  4516
+  ARCH_TYPE_UCR1,
mgl@1371
  4517
+  ARCH_TYPE_UCR2,
mgl@1371
  4518
+};
mgl@1371
  4519
+
mgl@1371
  4520
+struct arch_type_s
mgl@1371
  4521
+{
mgl@1371
  4522
+  /* Architecture name */
mgl@1371
  4523
+  char *name;
mgl@1371
  4524
+  /* Instruction Set Architecture Flags */
mgl@1371
  4525
+  unsigned long isa_flags;
mgl@1371
  4526
+};
mgl@1371
  4527
+
mgl@1371
  4528
+struct part_type_s
mgl@1371
  4529
+{
mgl@1371
  4530
+  /* Part name */
mgl@1371
  4531
+  char *name;
mgl@1371
  4532
+  /* Architecture type */
mgl@1371
  4533
+  unsigned int arch;
mgl@1371
  4534
+};
mgl@1371
  4535
+
mgl@1371
  4536
+static struct arch_type_s arch_types[] =
mgl@1371
  4537
+{
mgl@1371
  4538
+  {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
mgl@1371
  4539
+  {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
mgl@1371
  4540
+  {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
mgl@1371
  4541
+  {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
mgl@1371
  4542
+  {NULL, 0}
mgl@1371
  4543
+};
mgl@1371
  4544
+
mgl@1371
  4545
+static struct part_type_s part_types[] = {
mgl@1371
  4546
+  {"ap7000", ARCH_TYPE_AP},
mgl@1371
  4547
+  {"ap7001", ARCH_TYPE_AP},
mgl@1371
  4548
+  {"ap7002", ARCH_TYPE_AP},
mgl@1371
  4549
+  {"ap7200", ARCH_TYPE_AP},
mgl@1371
  4550
+  {"uc3a0128", ARCH_TYPE_UCR2},
mgl@1371
  4551
+  {"uc3a0256", ARCH_TYPE_UCR2},
mgl@1371
  4552
+  {"uc3a0512es", ARCH_TYPE_UCR1},
mgl@1371
  4553
+  {"uc3a0512", ARCH_TYPE_UCR2},
mgl@1371
  4554
+  {"uc3a1128", ARCH_TYPE_UCR2},
mgl@1371
  4555
+  {"uc3a1256es", ARCH_TYPE_UCR1},
mgl@1371
  4556
+  {"uc3a1256", ARCH_TYPE_UCR2},
mgl@1371
  4557
+  {"uc3a1512es", ARCH_TYPE_UCR1},
mgl@1371
  4558
+  {"uc3a1512", ARCH_TYPE_UCR2},
mgl@1371
  4559
+  {"uc3a364", ARCH_TYPE_UCR2},
mgl@1371
  4560
+  {"uc3a364s", ARCH_TYPE_UCR2},
mgl@1371
  4561
+  {"uc3a3128", ARCH_TYPE_UCR2},
mgl@1371
  4562
+  {"uc3a3128s", ARCH_TYPE_UCR2},
mgl@1371
  4563
+  {"uc3a3256", ARCH_TYPE_UCR2},
mgl@1371
  4564
+  {"uc3a3256s", ARCH_TYPE_UCR2},
mgl@1371
  4565
+  {"uc3b064", ARCH_TYPE_UCR1},
mgl@1371
  4566
+  {"uc3b0128", ARCH_TYPE_UCR1},
mgl@1371
  4567
+  {"uc3b0256es", ARCH_TYPE_UCR1},
mgl@1371
  4568
+  {"uc3b0256", ARCH_TYPE_UCR1},
mgl@1371
  4569
+  {"uc3b164", ARCH_TYPE_UCR1},
mgl@1371
  4570
+  {"uc3b1128", ARCH_TYPE_UCR1},
mgl@1371
  4571
+  {"uc3b1256es", ARCH_TYPE_UCR1},
mgl@1371
  4572
+  {"uc3b1256", ARCH_TYPE_UCR1},
mgl@1371
  4573
+  {NULL, 0}
mgl@1371
  4574
+};
mgl@1371
  4575
+
mgl@1371
  4576
+/* Current architecture type.  */
mgl@1371
  4577
+static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
mgl@1371
  4578
+static struct arch_type_s *avr32_arch = &default_arch;
mgl@1371
  4579
+
mgl@1371
  4580
+/* Display nicely formatted list of known part- and architecture names.  */
mgl@1371
  4581
+
mgl@1371
  4582
+static void
mgl@1371
  4583
+show_arch_list (FILE *stream)
mgl@1371
  4584
+{
mgl@1371
  4585
+  int i, x;
mgl@1371
  4586
+
mgl@1371
  4587
+  fprintf (stream, _("Known architecture names:"));
mgl@1371
  4588
+  x = 1000;
mgl@1371
  4589
+
mgl@1371
  4590
+  for (i = 0; arch_types[i].name; i++)
mgl@1371
  4591
+    {
mgl@1371
  4592
+      int len = strlen (arch_types[i].name);
mgl@1371
  4593
+
mgl@1371
  4594
+      x += len + 1;
mgl@1371
  4595
+
mgl@1371
  4596
+      if (x < 75)
mgl@1371
  4597
+	fprintf (stream, " %s", arch_types[i].name);
mgl@1371
  4598
+      else
mgl@1371
  4599
+	{
mgl@1371
  4600
+	  fprintf (stream, "\n  %s", arch_types[i].name);
mgl@1371
  4601
+	  x = len + 2;
mgl@1371
  4602
+	}
mgl@1371
  4603
+    }
mgl@1371
  4604
+
mgl@1371
  4605
+  fprintf (stream, "\n");
mgl@1371
  4606
+}
mgl@1371
  4607
+
mgl@1371
  4608
+static void
mgl@1371
  4609
+show_part_list (FILE *stream)
mgl@1371
  4610
+{
mgl@1371
  4611
+  int i, x;
mgl@1371
  4612
+
mgl@1371
  4613
+  fprintf (stream, _("Known part names:"));
mgl@1371
  4614
+  x = 1000;
mgl@1371
  4615
+
mgl@1371
  4616
+  for (i = 0; part_types[i].name; i++)
mgl@1371
  4617
+    {
mgl@1371
  4618
+      int len = strlen(part_types[i].name);
mgl@1371
  4619
+
mgl@1371
  4620
+      x += len + 1;
mgl@1371
  4621
+
mgl@1371
  4622
+      if (x < 75)
mgl@1371
  4623
+	fprintf (stream, " %s", part_types[i].name);
mgl@1371
  4624
+      else
mgl@1371
  4625
+	{
mgl@1371
  4626
+	  fprintf(stream, "\n  %s", part_types[i].name);
mgl@1371
  4627
+	  x = len + 2;
mgl@1371
  4628
+	}
mgl@1371
  4629
+    }
mgl@1371
  4630
+
mgl@1371
  4631
+  fprintf (stream, "\n");
mgl@1371
  4632
+}
mgl@1371
  4633
+
mgl@1371
  4634
+const char *md_shortopts = "";
mgl@1371
  4635
+struct option md_longopts[] =
mgl@1371
  4636
+{
mgl@1371
  4637
+#define OPTION_ARCH		(OPTION_MD_BASE)
mgl@1371
  4638
+#define OPTION_PART		(OPTION_ARCH + 1)
mgl@1371
  4639
+#define OPTION_IAR		(OPTION_PART + 1)
mgl@1371
  4640
+#define OPTION_PIC		(OPTION_IAR + 1)
mgl@1371
  4641
+#define OPTION_NOPIC		(OPTION_PIC + 1)
mgl@1371
  4642
+#define OPTION_LINKRELAX	(OPTION_NOPIC + 1)
mgl@1371
  4643
+#define OPTION_NOLINKRELAX	(OPTION_LINKRELAX + 1)
mgl@1371
  4644
+#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
mgl@1371
  4645
+  {"march",		required_argument, NULL, OPTION_ARCH},
mgl@1371
  4646
+  {"mpart",		required_argument, NULL, OPTION_PART},
mgl@1371
  4647
+  {"iar",		no_argument, NULL, OPTION_IAR},
mgl@1371
  4648
+  {"pic",		no_argument, NULL, OPTION_PIC},
mgl@1371
  4649
+  {"no-pic",		no_argument, NULL, OPTION_NOPIC},
mgl@1371
  4650
+  {"linkrelax",		no_argument, NULL, OPTION_LINKRELAX},
mgl@1371
  4651
+  {"no-linkrelax",	no_argument, NULL, OPTION_NOLINKRELAX},
mgl@1371
  4652
+  /* deprecated alias for -mpart=xxx */
mgl@1371
  4653
+  {"mcpu",		required_argument, NULL, OPTION_PART},
mgl@1371
  4654
+  {NULL,		no_argument, NULL, 0}
mgl@1371
  4655
+};
mgl@1371
  4656
+
mgl@1371
  4657
+size_t md_longopts_size = sizeof (md_longopts);
mgl@1371
  4658
+
mgl@1371
  4659
+void
mgl@1371
  4660
+md_show_usage (FILE *stream)
mgl@1371
  4661
+{
mgl@1371
  4662
+  fprintf (stream, _("\
mgl@1371
  4663
+AVR32 options:\n\
mgl@1371
  4664
+  -march=[arch-name]      Select cpu architecture. [Default `all-insn']\n\
mgl@1371
  4665
+  -mpart=[part-name]      Select specific part. [Default `none']\n\
mgl@1371
  4666
+  --pic                   Produce Position-Independent Code\n\
mgl@1371
  4667
+  --no-pic                Don't produce Position-Independent Code\n\
mgl@1371
  4668
+  --linkrelax             Produce output suitable for linker relaxing\n\
mgl@1371
  4669
+  --no-linkrelax          Don't produce output suitable for linker relaxing\n"));
mgl@1371
  4670
+  show_arch_list(stream);
mgl@1371
  4671
+}
mgl@1371
  4672
+
mgl@1371
  4673
+int
mgl@1371
  4674
+md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
mgl@1371
  4675
+{
mgl@1371
  4676
+  switch (c)
mgl@1371
  4677
+    {
mgl@1371
  4678
+    case OPTION_ARCH:
mgl@1371
  4679
+      {
mgl@1371
  4680
+	int i;
mgl@1371
  4681
+	char *s = alloca (strlen (arg) + 1);
mgl@1371
  4682
+
mgl@1371
  4683
+	{
mgl@1371
  4684
+	  char *t = s;
mgl@1371
  4685
+	  char *arg1 = arg;
mgl@1371
  4686
+
mgl@1371
  4687
+	  do
mgl@1371
  4688
+	    *t = TOLOWER (*arg1++);
mgl@1371
  4689
+	  while (*t++);
mgl@1371
  4690
+	}
mgl@1371
  4691
+
mgl@1371
  4692
+        /* Add backward compability */
mgl@1371
  4693
+        if (strcmp ("uc", s)== 0)
mgl@1371
  4694
+          {
mgl@1371
  4695
+            as_warn("Deprecated arch `%s' specified. "
mgl@1371
  4696
+                    "Please use '-march=ucr1' instead. "
mgl@1371
  4697
+                    "Converting to arch 'ucr1'\n",
mgl@1371
  4698
+                     s);
mgl@1371
  4699
+            s="ucr1";
mgl@1371
  4700
+          }
mgl@1371
  4701
+
mgl@1371
  4702
+	for (i = 0; arch_types[i].name; ++i)
mgl@1371
  4703
+	  if (strcmp (arch_types[i].name, s) == 0)
mgl@1371
  4704
+	    break;
mgl@1371
  4705
+
mgl@1371
  4706
+	if (!arch_types[i].name)
mgl@1371
  4707
+	  {
mgl@1371
  4708
+	    show_arch_list (stderr);
mgl@1371
  4709
+	    as_fatal (_("unknown architecture: %s\n"), arg);
mgl@1371
  4710
+	  }
mgl@1371
  4711
+
mgl@1371
  4712
+        avr32_arch = &arch_types[i];
mgl@1371
  4713
+	break;
mgl@1371
  4714
+      }
mgl@1371
  4715
+    case OPTION_PART:
mgl@1371
  4716
+      {
mgl@1371
  4717
+	int i;
mgl@1371
  4718
+	char *s = alloca (strlen (arg) + 1);
mgl@1371
  4719
+	char *t = s;
mgl@1371
  4720
+	char *p = arg;
mgl@1371
  4721
+
mgl@1371
  4722
+	/* If arch type has already been set, don't bother.
mgl@1371
  4723
+	   -march= always overrides -mpart=  */
mgl@1371
  4724
+	if (avr32_arch != &default_arch)
mgl@1371
  4725
+	  break;
mgl@1371
  4726
+
mgl@1371
  4727
+	do
mgl@1371
  4728
+	  *t = TOLOWER (*p++);
mgl@1371
  4729
+	while (*t++);
mgl@1371
  4730
+
mgl@1371
  4731
+	for (i = 0; part_types[i].name; ++i)
mgl@1371
  4732
+	  if (strcmp (part_types[i].name, s) == 0)
mgl@1371
  4733
+	    break;
mgl@1371
  4734
+
mgl@1371
  4735
+	if (!part_types[i].name)
mgl@1371
  4736
+	  {
mgl@1371
  4737
+	    show_part_list (stderr);
mgl@1371
  4738
+	    as_fatal (_("unknown part: %s\n"), arg);
mgl@1371
  4739
+	  }
mgl@1371
  4740
+
mgl@1371
  4741
+	avr32_arch = &arch_types[part_types[i].arch];
mgl@1371
  4742
+	break;
mgl@1371
  4743
+      }
mgl@1371
  4744
+    case OPTION_IAR:
mgl@1371
  4745
+      avr32_iarcompat = 1;
mgl@1371
  4746
+      break;
mgl@1371
  4747
+    case OPTION_PIC:
mgl@1371
  4748
+      avr32_pic = 1;
mgl@1371
  4749
+      break;
mgl@1371
  4750
+    case OPTION_NOPIC:
mgl@1371
  4751
+      avr32_pic = 0;
mgl@1371
  4752
+      break;
mgl@1371
  4753
+    case OPTION_LINKRELAX:
mgl@1371
  4754
+      linkrelax = 1;
mgl@1371
  4755
+      break;
mgl@1371
  4756
+    case OPTION_NOLINKRELAX:
mgl@1371
  4757
+      linkrelax = 0;
mgl@1371
  4758
+      break;
mgl@1371
  4759
+    default:
mgl@1371
  4760
+      return 0;
mgl@1371
  4761
+    }
mgl@1371
  4762
+  return 1;
mgl@1371
  4763
+}
mgl@1371
  4764
+
mgl@1371
  4765
+/* Can't use symbol_new here, so have to create a symbol and then at
mgl@1371
  4766
+   a later date assign it a value. Thats what these functions do.
mgl@1371
  4767
+
mgl@1371
  4768
+   Shamelessly stolen from ARM.  */
mgl@1371
  4769
+
mgl@1371
  4770
+static void
mgl@1371
  4771
+symbol_locate (symbolS *    symbolP,
mgl@1371
  4772
+	       const char * name,	/* It is copied, the caller can modify.  */
mgl@1371
  4773
+	       segT         segment,	/* Segment identifier (SEG_<something>).  */
mgl@1371
  4774
+	       valueT       valu,	/* Symbol value.  */
mgl@1371
  4775
+	       fragS *      frag)	/* Associated fragment.  */
mgl@1371
  4776
+{
mgl@1371
  4777
+  unsigned int name_length;
mgl@1371
  4778
+  char * preserved_copy_of_name;
mgl@1371
  4779
+
mgl@1371
  4780
+  name_length = strlen (name) + 1;   /* +1 for \0.  */
mgl@1371
  4781
+  obstack_grow (&notes, name, name_length);
mgl@1371
  4782
+  preserved_copy_of_name = obstack_finish (&notes);
mgl@1371
  4783
+#ifdef STRIP_UNDERSCORE
mgl@1371
  4784
+  if (preserved_copy_of_name[0] == '_')
mgl@1371
  4785
+    preserved_copy_of_name++;
mgl@1371
  4786
+#endif
mgl@1371
  4787
+
mgl@1371
  4788
+#ifdef tc_canonicalize_symbol_name
mgl@1371
  4789
+  preserved_copy_of_name =
mgl@1371
  4790
+    tc_canonicalize_symbol_name (preserved_copy_of_name);
mgl@1371
  4791
+#endif
mgl@1371
  4792
+
mgl@1371
  4793
+  S_SET_NAME (symbolP, preserved_copy_of_name);
mgl@1371
  4794
+
mgl@1371
  4795
+  S_SET_SEGMENT (symbolP, segment);
mgl@1371
  4796
+  S_SET_VALUE (symbolP, valu);
mgl@1371
  4797
+  symbol_clear_list_pointers (symbolP);
mgl@1371
  4798
+
mgl@1371
  4799
+  symbol_set_frag (symbolP, frag);
mgl@1371
  4800
+
mgl@1371
  4801
+  /* Link to end of symbol chain.  */
mgl@1371
  4802
+  {
mgl@1371
  4803
+    extern int symbol_table_frozen;
mgl@1371
  4804
+
mgl@1371
  4805
+    if (symbol_table_frozen)
mgl@1371
  4806
+      abort ();
mgl@1371
  4807
+  }
mgl@1371
  4808
+
mgl@1371
  4809
+  symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
mgl@1371
  4810
+
mgl@1371
  4811
+  obj_symbol_new_hook (symbolP);
mgl@1371
  4812
+
mgl@1371
  4813
+#ifdef tc_symbol_new_hook
mgl@1371
  4814
+  tc_symbol_new_hook (symbolP);
mgl@1371
  4815
+#endif
mgl@1371
  4816
+
mgl@1371
  4817
+#ifdef DEBUG_SYMS
mgl@1371
  4818
+  verify_symbol_chain (symbol_rootP, symbol_lastP);
mgl@1371
  4819
+#endif /* DEBUG_SYMS  */
mgl@1371
  4820
+}
mgl@1371
  4821
+
mgl@1371
  4822
+struct cpool_entry
mgl@1371
  4823
+{
mgl@1371
  4824
+  int			refcount;
mgl@1371
  4825
+  offsetT		offset;
mgl@1371
  4826
+  expressionS		exp;
mgl@1371
  4827
+};
mgl@1371
  4828
+
mgl@1371
  4829
+struct cpool
mgl@1371
  4830
+{
mgl@1371
  4831
+  struct cpool		*next;
mgl@1371
  4832
+  int			used;
mgl@1371
  4833
+  struct cpool_entry	*literals;
mgl@1371
  4834
+  unsigned int		padding;
mgl@1371
  4835
+  unsigned int		next_free_entry;
mgl@1371
  4836
+  unsigned int		id;
mgl@1371
  4837
+  symbolS		*symbol;
mgl@1371
  4838
+  segT			section;
mgl@1371
  4839
+  subsegT		sub_section;
mgl@1371
  4840
+};
mgl@1371
  4841
+
mgl@1371
  4842
+struct cpool *cpool_list = NULL;
mgl@1371
  4843
+
mgl@1371
  4844
+static struct cpool *
mgl@1371
  4845
+find_cpool(segT section, subsegT sub_section)
mgl@1371
  4846
+{
mgl@1371
  4847
+  struct cpool *pool;
mgl@1371
  4848
+
mgl@1371
  4849
+  for (pool = cpool_list; pool != NULL; pool = pool->next)
mgl@1371
  4850
+    {
mgl@1371
  4851
+      if (!pool->used
mgl@1371
  4852
+	  && pool->section == section
mgl@1371
  4853
+	  && pool->sub_section == sub_section)
mgl@1371
  4854
+	break;
mgl@1371
  4855
+    }
mgl@1371
  4856
+
mgl@1371
  4857
+  return pool;
mgl@1371
  4858
+}
mgl@1371
  4859
+
mgl@1371
  4860
+static struct cpool *
mgl@1371
  4861
+find_or_make_cpool(segT section, subsegT sub_section)
mgl@1371
  4862
+{
mgl@1371
  4863
+  static unsigned int next_cpool_id = 0;
mgl@1371
  4864
+  struct cpool *pool;
mgl@1371
  4865
+
mgl@1371
  4866
+  pool = find_cpool(section, sub_section);
mgl@1371
  4867
+
mgl@1371
  4868
+  if (!pool)
mgl@1371
  4869
+    {
mgl@1371
  4870
+      pool = xmalloc(sizeof(*pool));
mgl@1371
  4871
+      if (!pool)
mgl@1371
  4872
+	return NULL;
mgl@1371
  4873
+
mgl@1371
  4874
+      pool->used = 0;
mgl@1371
  4875
+      pool->literals = NULL;
mgl@1371
  4876
+      pool->padding = 0;
mgl@1371
  4877
+      pool->next_free_entry = 0;
mgl@1371
  4878
+      pool->section = section;
mgl@1371
  4879
+      pool->sub_section = sub_section;
mgl@1371
  4880
+      pool->next = cpool_list;
mgl@1371
  4881
+      pool->symbol = NULL;
mgl@1371
  4882
+
mgl@1371
  4883
+      cpool_list = pool;
mgl@1371
  4884
+    }
mgl@1371
  4885
+
mgl@1371
  4886
+  /* NULL symbol means that the pool is new or has just been emptied.  */
mgl@1371
  4887
+  if (!pool->symbol)
mgl@1371
  4888
+    {
mgl@1371
  4889
+      pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
mgl@1371
  4890
+				   0, &zero_address_frag);
mgl@1371
  4891
+      pool->id = next_cpool_id++;
mgl@1371
  4892
+    }
mgl@1371
  4893
+
mgl@1371
  4894
+  return pool;
mgl@1371
  4895
+}
mgl@1371
  4896
+
mgl@1371
  4897
+static struct cpool *
mgl@1371
  4898
+add_to_cpool(expressionS *exp, unsigned int *index, int ref)
mgl@1371
  4899
+{
mgl@1371
  4900
+  struct cpool *pool;
mgl@1371
  4901
+  unsigned int entry;
mgl@1371
  4902
+
mgl@1371
  4903
+  pool = find_or_make_cpool(now_seg, now_subseg);
mgl@1371
  4904
+
mgl@1371
  4905
+  /* Check if this constant is already in the pool.  */
mgl@1371
  4906
+  for (entry = 0; entry < pool->next_free_entry; entry++)
mgl@1371
  4907
+    {
mgl@1371
  4908
+      if ((pool->literals[entry].exp.X_op == exp->X_op)
mgl@1371
  4909
+	  && (exp->X_op == O_constant)
mgl@1371
  4910
+	  && (pool->literals[entry].exp.X_add_number
mgl@1371
  4911
+	      == exp->X_add_number)
mgl@1371
  4912
+	  && (pool->literals[entry].exp.X_unsigned
mgl@1371
  4913
+	      == exp->X_unsigned))
mgl@1371
  4914
+	break;
mgl@1371
  4915
+
mgl@1371
  4916
+      if ((pool->literals[entry].exp.X_op == exp->X_op)
mgl@1371
  4917
+	  && (exp->X_op == O_symbol)
mgl@1371
  4918
+	  && (pool->literals[entry].exp.X_add_number
mgl@1371
  4919
+	      == exp->X_add_number)
mgl@1371
  4920
+	  && (pool->literals[entry].exp.X_add_symbol
mgl@1371
  4921
+	      == exp->X_add_symbol)
mgl@1371
  4922
+	  && (pool->literals[entry].exp.X_op_symbol
mgl@1371
  4923
+	      == exp->X_op_symbol))
mgl@1371
  4924
+	break;
mgl@1371
  4925
+    }
mgl@1371
  4926
+
mgl@1371
  4927
+  /* Create an entry if we didn't find a match */
mgl@1371
  4928
+  if (entry == pool->next_free_entry)
mgl@1371
  4929
+    {
mgl@1371
  4930
+      pool->literals = xrealloc(pool->literals,
mgl@1371
  4931
+				sizeof(struct cpool_entry) * (entry + 1));
mgl@1371
  4932
+      pool->literals[entry].exp = *exp;
mgl@1371
  4933
+      pool->literals[entry].refcount = 0;
mgl@1371
  4934
+      pool->next_free_entry++;
mgl@1371
  4935
+    }
mgl@1371
  4936
+
mgl@1371
  4937
+  if (index)
mgl@1371
  4938
+    *index = entry;
mgl@1371
  4939
+  if (ref)
mgl@1371
  4940
+    pool->literals[entry].refcount++;
mgl@1371
  4941
+
mgl@1371
  4942
+  return pool;
mgl@1371
  4943
+}
mgl@1371
  4944
+
mgl@1371
  4945
+struct avr32_operand
mgl@1371
  4946
+{
mgl@1371
  4947
+  int id;
mgl@1371
  4948
+  int is_signed;
mgl@1371
  4949
+  int is_pcrel;
mgl@1371
  4950
+  int align_order;
mgl@1371
  4951
+  int (*match)(char *str);
mgl@1371
  4952
+  void (*parse)(const struct avr32_operand *op, char *str, int opindex);
mgl@1371
  4953
+};
mgl@1371
  4954
+
mgl@1371
  4955
+static int
mgl@1371
  4956
+match_anything(char *str ATTRIBUTE_UNUSED)
mgl@1371
  4957
+{
mgl@1371
  4958
+  return 1;
mgl@1371
  4959
+}
mgl@1371
  4960
+
mgl@1371
  4961
+static int
mgl@1371
  4962
+match_intreg(char *str)
mgl@1371
  4963
+{
mgl@1371
  4964
+  int regid, ret = 1;
mgl@1371
  4965
+
mgl@1371
  4966
+  regid = avr32_parse_intreg(str);
mgl@1371
  4967
+  if (regid < 0)
mgl@1371
  4968
+    ret = 0;
mgl@1371
  4969
+
mgl@1371
  4970
+  pr_debug("match_intreg: `%s': %d\n", str, ret);
mgl@1371
  4971
+
mgl@1371
  4972
+  return ret;
mgl@1371
  4973
+}
mgl@1371
  4974
+
mgl@1371
  4975
+static int
mgl@1371
  4976
+match_intreg_predec(char *str)
mgl@1371
  4977
+{
mgl@1371
  4978
+  int regid;
mgl@1371
  4979
+
mgl@1371
  4980
+  if (str[0] != '-' || str[1] != '-')
mgl@1371
  4981
+    return 0;
mgl@1371
  4982
+
mgl@1371
  4983
+  regid = avr32_parse_intreg(str + 2);
mgl@1371
  4984
+  if (regid < 0)
mgl@1371
  4985
+    return 0;
mgl@1371
  4986
+
mgl@1371
  4987
+  return 1;
mgl@1371
  4988
+}
mgl@1371
  4989
+
mgl@1371
  4990
+static int
mgl@1371
  4991
+match_intreg_postinc(char *str)
mgl@1371
  4992
+{
mgl@1371
  4993
+  int regid, ret = 1;
mgl@1371
  4994
+  char *p, c;
mgl@1371
  4995
+
mgl@1371
  4996
+  for (p = str; *p; p++)
mgl@1371
  4997
+    if (*p == '+')
mgl@1371
  4998
+      break;
mgl@1371
  4999
+
mgl@1371
  5000
+  if (p[0] != '+' || p[1] != '+')
mgl@1371
  5001
+    return 0;
mgl@1371
  5002
+
mgl@1371
  5003
+  c = *p, *p = 0;
mgl@1371
  5004
+  regid = avr32_parse_intreg(str);
mgl@1371
  5005
+  if (regid < 0)
mgl@1371
  5006
+    ret = 0;
mgl@1371
  5007
+
mgl@1371
  5008
+  *p = c;
mgl@1371
  5009
+  return ret;
mgl@1371
  5010
+}
mgl@1371
  5011
+
mgl@1371
  5012
+static int
mgl@1371
  5013
+match_intreg_lsl(char *str)
mgl@1371
  5014
+{
mgl@1371
  5015
+  int regid, ret = 1;
mgl@1371
  5016
+  char *p, c;
mgl@1371
  5017
+
mgl@1371
  5018
+  for (p = str; *p; p++)
mgl@1371
  5019
+    if (*p == '<')
mgl@1371
  5020
+      break;
mgl@1371
  5021
+
mgl@1371
  5022
+  if (p[0] && p[1] != '<')
mgl@1371
  5023
+    return 0;
mgl@1371
  5024
+
mgl@1371
  5025
+  c = *p, *p = 0;
mgl@1371
  5026
+  regid = avr32_parse_intreg(str);
mgl@1371
  5027
+  if (regid < 0)
mgl@1371
  5028
+    ret = 0;
mgl@1371
  5029
+
mgl@1371
  5030
+  *p = c;
mgl@1371
  5031
+  return ret;
mgl@1371
  5032
+}
mgl@1371
  5033
+
mgl@1371
  5034
+static int
mgl@1371
  5035
+match_intreg_lsr(char *str)
mgl@1371
  5036
+{
mgl@1371
  5037
+  int regid, ret = 1;
mgl@1371
  5038
+  char *p, c;
mgl@1371
  5039
+
mgl@1371
  5040
+  for (p = str; *p; p++)
mgl@1371
  5041
+    if (*p == '>')
mgl@1371
  5042
+      break;
mgl@1371
  5043
+
mgl@1371
  5044
+  if (p[0] && p[1] != '>')
mgl@1371
  5045
+    return 0;
mgl@1371
  5046
+
mgl@1371
  5047
+  c = *p, *p = 0;
mgl@1371
  5048
+
mgl@1371
  5049
+  regid = avr32_parse_intreg(str);
mgl@1371
  5050
+  if (regid < 0)
mgl@1371
  5051
+    ret = 0;
mgl@1371
  5052
+
mgl@1371
  5053
+  *p = c;
mgl@1371
  5054
+  return ret;
mgl@1371
  5055
+}
mgl@1371
  5056
+
mgl@1371
  5057
+static int
mgl@1371
  5058
+match_intreg_part(char *str)
mgl@1371
  5059
+{
mgl@1371
  5060
+  int regid, ret = 1;
mgl@1371
  5061
+  char *p, c;
mgl@1371
  5062
+
mgl@1371
  5063
+  for (p = str; *p; p++)
mgl@1371
  5064
+    if (*p == ':')
mgl@1371
  5065
+      break;
mgl@1371
  5066
+
mgl@1371
  5067
+  if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
mgl@1371
  5068
+    return 0;
mgl@1371
  5069
+
mgl@1371
  5070
+  c = *p, *p = 0;
mgl@1371
  5071
+  regid = avr32_parse_intreg(str);
mgl@1371
  5072
+  if (regid < 0)
mgl@1371
  5073
+    ret = 0;
mgl@1371
  5074
+
mgl@1371
  5075
+  *p = c;
mgl@1371
  5076
+
mgl@1371
  5077
+  return ret;
mgl@1371
  5078
+}
mgl@1371
  5079
+
mgl@1371
  5080
+#define match_intreg_disp match_anything
mgl@1371
  5081
+
mgl@1371
  5082
+static int
mgl@1371
  5083
+match_intreg_index(char *str)
mgl@1371
  5084
+{
mgl@1371
  5085
+  int regid, ret = 1;
mgl@1371
  5086
+  char *p, *end, c;
mgl@1371
  5087
+
mgl@1371
  5088
+  for (p = str; *p; p++)
mgl@1371
  5089
+    if (*p == '[')
mgl@1371
  5090
+      break;
mgl@1371
  5091
+
mgl@1371
  5092
+  /* don't allow empty displacement here (it makes no sense) */
mgl@1371
  5093
+  if (p[0] != '[')
mgl@1371
  5094
+    return 0;
mgl@1371
  5095
+
mgl@1371
  5096
+  for (end = p + 1; *end; end++) ;
mgl@1371
  5097
+  if (*(--end) != ']')
mgl@1371
  5098
+    return 0;
mgl@1371
  5099
+
mgl@1371
  5100
+  c = *end, *end = 0;
mgl@1371
  5101
+  if (!match_intreg_lsl(p + 1))
mgl@1371
  5102
+    ret = 0;
mgl@1371
  5103
+  *end = c;
mgl@1371
  5104
+
mgl@1371
  5105
+  if (ret)
mgl@1371
  5106
+    {
mgl@1371
  5107
+      c = *p, *p = 0;
mgl@1371
  5108
+      regid = avr32_parse_intreg(str);
mgl@1371
  5109
+      if (regid < 0)
mgl@1371
  5110
+	ret = 0;
mgl@1371
  5111
+      *p = c;
mgl@1371
  5112
+    }
mgl@1371
  5113
+
mgl@1371
  5114
+  return ret;
mgl@1371
  5115
+}
mgl@1371
  5116
+
mgl@1371
  5117
+static int
mgl@1371
  5118
+match_intreg_xindex(char *str)
mgl@1371
  5119
+{
mgl@1371
  5120
+  int regid, ret = 1;
mgl@1371
  5121
+  char *p, *end, c;
mgl@1371
  5122
+
mgl@1371
  5123
+  for (p = str; *p; p++)
mgl@1371
  5124
+    if (*p == '[')
mgl@1371
  5125
+      break;
mgl@1371
  5126
+
mgl@1371
  5127
+  /* empty displacement makes no sense here either */
mgl@1371
  5128
+  if (p[0] != '[')
mgl@1371
  5129
+    return 0;
mgl@1371
  5130
+
mgl@1371
  5131
+  for (end = p + 1; *end; end++)
mgl@1371
  5132
+    if (*end == '<')
mgl@1371
  5133
+      break;
mgl@1371
  5134
+
mgl@1371
  5135
+  if (!streq(end, "<<2]"))
mgl@1371
  5136
+    return 0;
mgl@1371
  5137
+
mgl@1371
  5138
+  c = *end, *end = 0;
mgl@1371
  5139
+  if (!match_intreg_part(p + 1))
mgl@1371
  5140
+    ret = 0;
mgl@1371
  5141
+  *end = c;
mgl@1371
  5142
+
mgl@1371
  5143
+  if (ret)
mgl@1371
  5144
+    {
mgl@1371
  5145
+      c = *p, *p = 0;
mgl@1371
  5146
+      regid = avr32_parse_intreg(str);
mgl@1371
  5147
+      if (regid < 0)
mgl@1371
  5148
+	ret = 0;
mgl@1371
  5149
+      *p = c;
mgl@1371
  5150
+    }
mgl@1371
  5151
+
mgl@1371
  5152
+  return ret;
mgl@1371
  5153
+}
mgl@1371
  5154
+
mgl@1371
  5155
+/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
mgl@1371
  5156
+   expression.  So there's no point in attempting to match this...  */
mgl@1371
  5157
+#define match_pc_disp	match_anything
mgl@1371
  5158
+
mgl@1371
  5159
+static int
mgl@1371
  5160
+match_sp(char *str)
mgl@1371
  5161
+{
mgl@1371
  5162
+  /* SP in any form will do */
mgl@1371
  5163
+  return avr32_parse_intreg(str) == AVR32_REG_SP;
mgl@1371
  5164
+}
mgl@1371
  5165
+
mgl@1371
  5166
+static int
mgl@1371
  5167
+match_sp_disp(char *str)
mgl@1371
  5168
+{
mgl@1371
  5169
+  int regid, ret = 1;
mgl@1371
  5170
+  char *p, c;
mgl@1371
  5171
+
mgl@1371
  5172
+  for (p = str; *p; p++)
mgl@1371
  5173
+    if (*p == '[')
mgl@1371
  5174
+      break;
mgl@1371
  5175
+
mgl@1371
  5176
+  /* allow empty displacement, meaning zero */
mgl@1371
  5177
+  if (p[0] == '[')
mgl@1371
  5178
+    {
mgl@1371
  5179
+      char *end;
mgl@1371
  5180
+      for (end = p + 1; *end; end++) ;
mgl@1371
  5181
+      if (end[-1] != ']')
mgl@1371
  5182
+	return 0;
mgl@1371
  5183
+    }
mgl@1371
  5184
+
mgl@1371
  5185
+  c = *p, *p = 0;
mgl@1371
  5186
+  regid = avr32_parse_intreg(str);
mgl@1371
  5187
+  if (regid != AVR32_REG_SP)
mgl@1371
  5188
+    ret = 0;
mgl@1371
  5189
+
mgl@1371
  5190
+  *p = c;
mgl@1371
  5191
+  return ret;
mgl@1371
  5192
+}
mgl@1371
  5193
+
mgl@1371
  5194
+static int
mgl@1371
  5195
+match_cpno(char *str)
mgl@1371
  5196
+{
mgl@1371
  5197
+  if (strncasecmp(str, "cp", 2) != 0)
mgl@1371
  5198
+    return 0;
mgl@1371
  5199
+  return 1;
mgl@1371
  5200
+}
mgl@1371
  5201
+
mgl@1371
  5202
+static int
mgl@1371
  5203
+match_cpreg(char *str)
mgl@1371
  5204
+{
mgl@1371
  5205
+  if (strncasecmp(str, "cr", 2) != 0)
mgl@1371
  5206
+    return 0;
mgl@1371
  5207
+  return 1;
mgl@1371
  5208
+}
mgl@1371
  5209
+
mgl@1371
  5210
+/* We allow complex expressions, and register names may show up as
mgl@1371
  5211
+   symbols.  Just make sure immediate expressions are always matched
mgl@1371
  5212
+   last.  */
mgl@1371
  5213
+#define match_const		match_anything
mgl@1371
  5214
+#define match_jmplabel		match_anything
mgl@1371
  5215
+#define match_number		match_anything
mgl@1371
  5216
+
mgl@1371
  5217
+/* Mnemonics that take reglists never accept anything else */
mgl@1371
  5218
+#define match_reglist8		match_anything
mgl@1371
  5219
+#define match_reglist9		match_anything
mgl@1371
  5220
+#define match_reglist16		match_anything
mgl@1371
  5221
+#define match_reglist_ldm	match_anything
mgl@1371
  5222
+#define match_reglist_cp8	match_anything
mgl@1371
  5223
+#define match_reglist_cpd8	match_anything
mgl@1371
  5224
+
mgl@1371
  5225
+/* Ditto for retval, jospinc and mcall */
mgl@1371
  5226
+#define match_retval		match_anything
mgl@1371
  5227
+#define match_jospinc		match_anything
mgl@1371
  5228
+#define match_mcall		match_anything
mgl@1371
  5229
+
mgl@1371
  5230
+/* COH is used to select between two different syntaxes */
mgl@1371
  5231
+static int
mgl@1371
  5232
+match_coh(char *str)
mgl@1371
  5233
+{
mgl@1371
  5234
+  return strcasecmp(str, "coh") == 0;
mgl@1371
  5235
+}
mgl@1371
  5236
+
mgl@1371
  5237
+static int
mgl@1371
  5238
+match_fpreg(char *str)
mgl@1371
  5239
+{
mgl@1371
  5240
+  unsigned long regid;
mgl@1371
  5241
+  char *endptr;
mgl@1371
  5242
+
mgl@1371
  5243
+  if ((str[0] != 'f' && str[0] != 'F')
mgl@1371
  5244
+      || (str[1] != 'r' && str[1] != 'R'))
mgl@1371
  5245
+    return 0;
mgl@1371
  5246
+
mgl@1371
  5247
+  str += 2;
mgl@1371
  5248
+  regid = strtoul(str, &endptr, 10);
mgl@1371
  5249
+  if (!*str || *endptr)
mgl@1371
  5250
+    return 0;
mgl@1371
  5251
+
mgl@1371
  5252
+  return 1;
mgl@1371
  5253
+}
mgl@1371
  5254
+
mgl@1371
  5255
+static int
mgl@1371
  5256
+match_picoreg(char *str)
mgl@1371
  5257
+{
mgl@1371
  5258
+  int regid;
mgl@1371
  5259
+
mgl@1371
  5260
+  regid = avr32_parse_picoreg(str);
mgl@1371
  5261
+  if (regid < 0)
mgl@1371
  5262
+    return 0;
mgl@1371
  5263
+  return 1;
mgl@1371
  5264
+}
mgl@1371
  5265
+
mgl@1371
  5266
+#define match_pico_reglist_w	match_anything
mgl@1371
  5267
+#define match_pico_reglist_d	match_anything
mgl@1371
  5268
+
mgl@1371
  5269
+static int
mgl@1371
  5270
+match_pico_in(char *str)
mgl@1371
  5271
+{
mgl@1371
  5272
+  unsigned long regid;
mgl@1371
  5273
+  char *end;
mgl@1371
  5274
+
mgl@1371
  5275
+  if (strncasecmp(str, "in", 2) != 0)
mgl@1371
  5276
+    return 0;
mgl@1371
  5277
+
mgl@1371
  5278
+  str += 2;
mgl@1371
  5279
+  regid = strtoul(str, &end, 10);
mgl@1371
  5280
+  if (!*str || *end)
mgl@1371
  5281
+    return 0;
mgl@1371
  5282
+
mgl@1371
  5283
+  return 1;
mgl@1371
  5284
+}
mgl@1371
  5285
+
mgl@1371
  5286
+static int
mgl@1371
  5287
+match_pico_out0(char *str)
mgl@1371
  5288
+{
mgl@1371
  5289
+  if (strcasecmp(str, "out0") != 0)
mgl@1371
  5290
+    return 0;
mgl@1371
  5291
+  return 1;
mgl@1371
  5292
+}
mgl@1371
  5293
+
mgl@1371
  5294
+static int
mgl@1371
  5295
+match_pico_out1(char *str)
mgl@1371
  5296
+{
mgl@1371
  5297
+  if (strcasecmp(str, "out1") != 0)
mgl@1371
  5298
+    return 0;
mgl@1371
  5299
+  return 1;
mgl@1371
  5300
+}
mgl@1371
  5301
+
mgl@1371
  5302
+static int
mgl@1371
  5303
+match_pico_out2(char *str)
mgl@1371
  5304
+{
mgl@1371
  5305
+  if (strcasecmp(str, "out2") != 0)
mgl@1371
  5306
+    return 0;
mgl@1371
  5307
+  return 1;
mgl@1371
  5308
+}
mgl@1371
  5309
+
mgl@1371
  5310
+static int
mgl@1371
  5311
+match_pico_out3(char *str)
mgl@1371
  5312
+{
mgl@1371
  5313
+  if (strcasecmp(str, "out3") != 0)
mgl@1371
  5314
+    return 0;
mgl@1371
  5315
+  return 1;
mgl@1371
  5316
+}
mgl@1371
  5317
+
mgl@1371
  5318
+static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5319
+			  char *str ATTRIBUTE_UNUSED,
mgl@1371
  5320
+			  int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5321
+{
mgl@1371
  5322
+  /* Do nothing (this is used for "match-only" operands like COH) */
mgl@1371
  5323
+}
mgl@1371
  5324
+
mgl@1371
  5325
+static void
mgl@1371
  5326
+parse_const(const struct avr32_operand *op, char *str,
mgl@1371
  5327
+	    int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5328
+{
mgl@1371
  5329
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  5330
+  expressionS *sym_exp;
mgl@1371
  5331
+  int slot;
mgl@1371
  5332
+  char *save;
mgl@1371
  5333
+
mgl@1371
  5334
+  pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
mgl@1371
  5335
+	   str, op->is_signed, op->is_pcrel, op->align_order);
mgl@1371
  5336
+
mgl@1371
  5337
+  save = input_line_pointer;
mgl@1371
  5338
+  input_line_pointer = str;
mgl@1371
  5339
+
mgl@1371
  5340
+  expression(exp);
mgl@1371
  5341
+
mgl@1371
  5342
+  slot = current_insn.next_slot++;
mgl@1371
  5343
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  5344
+  current_insn.pcrel = op->is_pcrel;
mgl@1371
  5345
+
mgl@1371
  5346
+  switch (exp->X_op)
mgl@1371
  5347
+    {
mgl@1371
  5348
+    case O_illegal:
mgl@1371
  5349
+      as_bad(_("illegal operand"));
mgl@1371
  5350
+      break;
mgl@1371
  5351
+    case O_absent:
mgl@1371
  5352
+      as_bad(_("missing operand"));
mgl@1371
  5353
+      break;
mgl@1371
  5354
+    case O_constant:
mgl@1371
  5355
+      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
mgl@1371
  5356
+      current_insn.field_value[slot].value = exp->X_add_number;
mgl@1371
  5357
+      break;
mgl@1371
  5358
+    case O_uminus:
mgl@1371
  5359
+      pr_debug("  -> uminus\n");
mgl@1371
  5360
+      sym_exp = symbol_get_value_expression(exp->X_add_symbol);
mgl@1371
  5361
+      switch (sym_exp->X_op) {
mgl@1371
  5362
+      case O_subtract:
mgl@1371
  5363
+	pr_debug("     -> subtract: switching operands\n");
mgl@1371
  5364
+	exp->X_op_symbol = sym_exp->X_add_symbol;
mgl@1371
  5365
+	exp->X_add_symbol = sym_exp->X_op_symbol;
mgl@1371
  5366
+	exp->X_op = O_subtract;
mgl@1371
  5367
+	/* TODO: Remove the old X_add_symbol */
mgl@1371
  5368
+	break;
mgl@1371
  5369
+      default:
mgl@1371
  5370
+	as_bad(_("Expression too complex\n"));
mgl@1371
  5371
+	break;
mgl@1371
  5372
+      }
mgl@1371
  5373
+      break;
mgl@1371
  5374
+#if 0
mgl@1371
  5375
+    case O_subtract:
mgl@1371
  5376
+      /* Any expression subtracting a symbol from the current section
mgl@1371
  5377
+	 can be made PC-relative by adding the right offset.  */
mgl@1371
  5378
+      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
mgl@1371
  5379
+	current_insn.pcrel = TRUE;
mgl@1371
  5380
+      pr_debug("  -> subtract: pcrel? %s\n",
mgl@1371
  5381
+	       current_insn.pcrel ? "yes" : "no");
mgl@1371
  5382
+      /* fall through */
mgl@1371
  5383
+#endif
mgl@1371
  5384
+    default:
mgl@1371
  5385
+      pr_debug("  -> (%p <%d> %p + %d)\n",
mgl@1371
  5386
+	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
mgl@1371
  5387
+	       exp->X_add_number);
mgl@1371
  5388
+      current_insn.field_value[slot].value = 0;
mgl@1371
  5389
+      break;
mgl@1371
  5390
+    }
mgl@1371
  5391
+
mgl@1371
  5392
+  input_line_pointer = save;
mgl@1371
  5393
+}
mgl@1371
  5394
+
mgl@1371
  5395
+static void
mgl@1371
  5396
+parse_jmplabel(const struct avr32_operand *op, char *str,
mgl@1371
  5397
+	       int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5398
+{
mgl@1371
  5399
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  5400
+  int slot;
mgl@1371
  5401
+  char *save;
mgl@1371
  5402
+
mgl@1371
  5403
+  pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
mgl@1371
  5404
+	   str, op->is_signed, op->is_pcrel, op->align_order);
mgl@1371
  5405
+
mgl@1371
  5406
+  save = input_line_pointer;
mgl@1371
  5407
+  input_line_pointer = str;
mgl@1371
  5408
+
mgl@1371
  5409
+  expression(exp);
mgl@1371
  5410
+
mgl@1371
  5411
+  slot = current_insn.next_slot++;
mgl@1371
  5412
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  5413
+  current_insn.pcrel = TRUE;
mgl@1371
  5414
+
mgl@1371
  5415
+  switch (exp->X_op)
mgl@1371
  5416
+    {
mgl@1371
  5417
+    case O_illegal:
mgl@1371
  5418
+      as_bad(_("illegal operand"));
mgl@1371
  5419
+      break;
mgl@1371
  5420
+    case O_absent:
mgl@1371
  5421
+      as_bad(_("missing operand"));
mgl@1371
  5422
+      break;
mgl@1371
  5423
+    case O_constant:
mgl@1371
  5424
+      pr_debug("  -> constant: %ld\n", (long)exp->X_add_number);
mgl@1371
  5425
+      current_insn.field_value[slot].value = exp->X_add_number;
mgl@1371
  5426
+      current_insn.pcrel = 0;
mgl@1371
  5427
+      break;
mgl@1371
  5428
+    default:
mgl@1371
  5429
+      pr_debug("  -> (%p <%d> %p + %d)\n",
mgl@1371
  5430
+	       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
mgl@1371
  5431
+	       exp->X_add_number);
mgl@1371
  5432
+      current_insn.field_value[slot].value = 0;
mgl@1371
  5433
+      break;
mgl@1371
  5434
+    }
mgl@1371
  5435
+
mgl@1371
  5436
+  input_line_pointer = save;
mgl@1371
  5437
+}
mgl@1371
  5438
+
mgl@1371
  5439
+static void
mgl@1371
  5440
+parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5441
+	     char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5442
+{
mgl@1371
  5443
+  int regid, slot;
mgl@1371
  5444
+
mgl@1371
  5445
+  pr_debug("parse_intreg: `%s'\n", str);
mgl@1371
  5446
+
mgl@1371
  5447
+  regid = avr32_parse_intreg(str);
mgl@1371
  5448
+  assert(regid >= 0);
mgl@1371
  5449
+
mgl@1371
  5450
+  slot = current_insn.next_slot++;
mgl@1371
  5451
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5452
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  5453
+}
mgl@1371
  5454
+
mgl@1371
  5455
+static void
mgl@1371
  5456
+parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5457
+{
mgl@1371
  5458
+  parse_intreg(op, str + 2, opindex);
mgl@1371
  5459
+}
mgl@1371
  5460
+
mgl@1371
  5461
+static void
mgl@1371
  5462
+parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5463
+{
mgl@1371
  5464
+  char *p, c;
mgl@1371
  5465
+
mgl@1371
  5466
+  pr_debug("parse_intreg_postinc: `%s'\n", str);
mgl@1371
  5467
+
mgl@1371
  5468
+  for (p = str; *p != '+'; p++) ;
mgl@1371
  5469
+
mgl@1371
  5470
+  c = *p, *p = 0;
mgl@1371
  5471
+  parse_intreg(op, str, opindex);
mgl@1371
  5472
+  *p = c;
mgl@1371
  5473
+}
mgl@1371
  5474
+
mgl@1371
  5475
+static void
mgl@1371
  5476
+parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5477
+		   char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5478
+{
mgl@1371
  5479
+  int regid, slot, shift = 0;
mgl@1371
  5480
+  char *p, c;
mgl@1371
  5481
+  char shiftop;
mgl@1371
  5482
+
mgl@1371
  5483
+  pr_debug("parse Ry<<sa: `%s'\n", str);
mgl@1371
  5484
+
mgl@1371
  5485
+  for (p = str; *p; p++)
mgl@1371
  5486
+    if (*p == '<' || *p == '>')
mgl@1371
  5487
+      break;
mgl@1371
  5488
+
mgl@1371
  5489
+  shiftop = *p;
mgl@1371
  5490
+
mgl@1371
  5491
+  c = *p, *p = 0;
mgl@1371
  5492
+  regid = avr32_parse_intreg(str);
mgl@1371
  5493
+  assert(regid >= 0);
mgl@1371
  5494
+  *p = c;
mgl@1371
  5495
+
mgl@1371
  5496
+  if (c)
mgl@1371
  5497
+    {
mgl@1371
  5498
+      if (p[0] != shiftop || p[1] != shiftop)
mgl@1371
  5499
+	as_bad(_("expected shift operator in `%s'"), p);
mgl@1371
  5500
+      else
mgl@1371
  5501
+	{
mgl@1371
  5502
+	  expressionS exp;
mgl@1371
  5503
+	  char *saved;
mgl@1371
  5504
+
mgl@1371
  5505
+	  saved = input_line_pointer;
mgl@1371
  5506
+	  input_line_pointer = p + 2;
mgl@1371
  5507
+	  expression(&exp);
mgl@1371
  5508
+	  input_line_pointer = saved;
mgl@1371
  5509
+
mgl@1371
  5510
+	  if (exp.X_op != O_constant)
mgl@1371
  5511
+	    as_bad(_("shift amount must be a numeric constant"));
mgl@1371
  5512
+	  else
mgl@1371
  5513
+	    shift = exp.X_add_number;
mgl@1371
  5514
+	}
mgl@1371
  5515
+    }
mgl@1371
  5516
+
mgl@1371
  5517
+  slot = current_insn.next_slot++;
mgl@1371
  5518
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5519
+  slot = current_insn.next_slot++;
mgl@1371
  5520
+  current_insn.field_value[slot].value = shift;
mgl@1371
  5521
+}
mgl@1371
  5522
+
mgl@1371
  5523
+/* The match() function selected the right opcode, so it doesn't
mgl@1371
  5524
+   matter which way we shift any more.  */
mgl@1371
  5525
+#define parse_intreg_lsl	parse_intreg_shift
mgl@1371
  5526
+#define parse_intreg_lsr	parse_intreg_shift
mgl@1371
  5527
+
mgl@1371
  5528
+static void
mgl@1371
  5529
+parse_intreg_part(const struct avr32_operand *op, char *str,
mgl@1371
  5530
+		  int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5531
+{
mgl@1371
  5532
+  static const char bparts[] = { 'b', 'l', 'u', 't' };
mgl@1371
  5533
+  static const char hparts[] = { 'b', 't' };
mgl@1371
  5534
+  unsigned int slot, sel;
mgl@1371
  5535
+  int regid;
mgl@1371
  5536
+  char *p, c;
mgl@1371
  5537
+
mgl@1371
  5538
+  pr_debug("parse reg:part `%s'\n", str);
mgl@1371
  5539
+
mgl@1371
  5540
+  for (p = str; *p; p++)
mgl@1371
  5541
+    if (*p == ':')
mgl@1371
  5542
+      break;
mgl@1371
  5543
+
mgl@1371
  5544
+  c = *p, *p = 0;
mgl@1371
  5545
+  regid = avr32_parse_intreg(str);
mgl@1371
  5546
+  assert(regid >= 0);
mgl@1371
  5547
+  *p = c;
mgl@1371
  5548
+
mgl@1371
  5549
+  assert(c == ':');
mgl@1371
  5550
+
mgl@1371
  5551
+  if (op->align_order)
mgl@1371
  5552
+    {
mgl@1371
  5553
+      for (sel = 0; sel < sizeof(hparts); sel++)
mgl@1371
  5554
+	if (TOLOWER(p[1]) == hparts[sel])
mgl@1371
  5555
+	  break;
mgl@1371
  5556
+
mgl@1371
  5557
+      if (sel >= sizeof(hparts))
mgl@1371
  5558
+	{
mgl@1371
  5559
+	  as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
mgl@1371
  5560
+		 p[1]);
mgl@1371
  5561
+	  sel = 0;
mgl@1371
  5562
+	}
mgl@1371
  5563
+    }
mgl@1371
  5564
+  else
mgl@1371
  5565
+    {
mgl@1371
  5566
+      for (sel = 0; sel < sizeof(bparts); sel++)
mgl@1371
  5567
+	if (TOLOWER(p[1]) == bparts[sel])
mgl@1371
  5568
+	  break;
mgl@1371
  5569
+
mgl@1371
  5570
+      if (sel >= sizeof(bparts))
mgl@1371
  5571
+	{
mgl@1371
  5572
+	  as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
mgl@1371
  5573
+		 p[1]);
mgl@1371
  5574
+	  sel = 0;
mgl@1371
  5575
+	}
mgl@1371
  5576
+    }
mgl@1371
  5577
+
mgl@1371
  5578
+  slot = current_insn.next_slot++;
mgl@1371
  5579
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5580
+  slot = current_insn.next_slot++;
mgl@1371
  5581
+  current_insn.field_value[slot].value = sel;
mgl@1371
  5582
+}
mgl@1371
  5583
+
mgl@1371
  5584
+/* This is the parser for "Rp[displacement]" expressions.  In addition
mgl@1371
  5585
+   to the "official" syntax, we accept a label as a replacement for
mgl@1371
  5586
+   the register expression.  This syntax implies Rp=PC and the
mgl@1371
  5587
+   displacement is the pc-relative distance to the label.  */
mgl@1371
  5588
+static void
mgl@1371
  5589
+parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5590
+{
mgl@1371
  5591
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  5592
+  int slot, regid;
mgl@1371
  5593
+  char *save, *p, c;
mgl@1371
  5594
+
mgl@1371
  5595
+  pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
mgl@1371
  5596
+	   str, op->is_signed, op->is_pcrel, op->align_order);
mgl@1371
  5597
+
mgl@1371
  5598
+  for (p = str; *p; p++)
mgl@1371
  5599
+    if (*p == '[')
mgl@1371
  5600
+      break;
mgl@1371
  5601
+
mgl@1371
  5602
+  slot = current_insn.next_slot++;
mgl@1371
  5603
+
mgl@1371
  5604
+  /* First, check if we have a valid register either before '[' or as
mgl@1371
  5605
+     the sole expression.  If so, we use the Rp[disp] syntax.  */
mgl@1371
  5606
+  c = *p, *p = 0;
mgl@1371
  5607
+  regid = avr32_parse_intreg(str);
mgl@1371
  5608
+  *p = c;
mgl@1371
  5609
+
mgl@1371
  5610
+  if (regid >= 0)
mgl@1371
  5611
+    {
mgl@1371
  5612
+      current_insn.field_value[slot].value = regid;
mgl@1371
  5613
+
mgl@1371
  5614
+      slot = current_insn.next_slot++;
mgl@1371
  5615
+      current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  5616
+
mgl@1371
  5617
+      if (c == '[')
mgl@1371
  5618
+	{
mgl@1371
  5619
+	  save = input_line_pointer;
mgl@1371
  5620
+	  input_line_pointer = p + 1;
mgl@1371
  5621
+
mgl@1371
  5622
+	  expression(exp);
mgl@1371
  5623
+
mgl@1371
  5624
+	  if (*input_line_pointer != ']')
mgl@1371
  5625
+	    as_bad(_("junk after displacement expression"));
mgl@1371
  5626
+
mgl@1371
  5627
+	  input_line_pointer = save;
mgl@1371
  5628
+
mgl@1371
  5629
+	  switch (exp->X_op)
mgl@1371
  5630
+	    {
mgl@1371
  5631
+	    case O_illegal:
mgl@1371
  5632
+	      as_bad(_("illegal displacement expression"));
mgl@1371
  5633
+	      break;
mgl@1371
  5634
+	    case O_absent:
mgl@1371
  5635
+	      as_bad(_("missing displacement expression"));
mgl@1371
  5636
+	      break;
mgl@1371
  5637
+	    case O_constant:
mgl@1371
  5638
+	      pr_debug("  -> constant: %ld\n", exp->X_add_number);
mgl@1371
  5639
+	      current_insn.field_value[slot].value = exp->X_add_number;
mgl@1371
  5640
+	      break;
mgl@1371
  5641
+#if 0
mgl@1371
  5642
+	    case O_subtract:
mgl@1371
  5643
+	      if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
mgl@1371
  5644
+		current_insn.pcrel = TRUE;
mgl@1371
  5645
+	      pr_debug("  -> subtract: pcrel? %s\n",
mgl@1371
  5646
+		       current_insn.pcrel ? "yes" : "no");
mgl@1371
  5647
+	      /* fall through */
mgl@1371
  5648
+#endif
mgl@1371
  5649
+	    default:
mgl@1371
  5650
+	      pr_debug("  -> (%p <%d> %p + %d)\n",
mgl@1371
  5651
+		       exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
mgl@1371
  5652
+		       exp->X_add_number);
mgl@1371
  5653
+	      current_insn.field_value[slot].value = 0;
mgl@1371
  5654
+	    }
mgl@1371
  5655
+	}
mgl@1371
  5656
+      else
mgl@1371
  5657
+	{
mgl@1371
  5658
+	  exp->X_op = O_constant;
mgl@1371
  5659
+	  exp->X_add_number = 0;
mgl@1371
  5660
+	  current_insn.field_value[slot].value = 0;
mgl@1371
  5661
+	}
mgl@1371
  5662
+    }
mgl@1371
  5663
+  else
mgl@1371
  5664
+    {
mgl@1371
  5665
+      /* Didn't find a valid register.  Try parsing it as a label.  */
mgl@1371
  5666
+      current_insn.field_value[slot].value = AVR32_REG_PC;
mgl@1371
  5667
+      parse_jmplabel(op, str, opindex);
mgl@1371
  5668
+    }
mgl@1371
  5669
+}
mgl@1371
  5670
+
mgl@1371
  5671
+static void
mgl@1371
  5672
+parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5673
+		   char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5674
+{
mgl@1371
  5675
+  int slot, regid;
mgl@1371
  5676
+  char *p, *end, c;
mgl@1371
  5677
+
mgl@1371
  5678
+  for (p = str; *p; p++)
mgl@1371
  5679
+    if (*p == '[')
mgl@1371
  5680
+      break;
mgl@1371
  5681
+
mgl@1371
  5682
+  assert(*p);
mgl@1371
  5683
+
mgl@1371
  5684
+  c = *p, *p = 0;
mgl@1371
  5685
+  regid = avr32_parse_intreg(str);
mgl@1371
  5686
+  assert(regid >= 0);
mgl@1371
  5687
+  *p = c;
mgl@1371
  5688
+
mgl@1371
  5689
+  slot = current_insn.next_slot++;
mgl@1371
  5690
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5691
+
mgl@1371
  5692
+  p++;
mgl@1371
  5693
+  for (end = p; *end; end++)
mgl@1371
  5694
+    if (*end == ']' || *end == '<')
mgl@1371
  5695
+      break;
mgl@1371
  5696
+
mgl@1371
  5697
+  assert(*end);
mgl@1371
  5698
+
mgl@1371
  5699
+  c = *end, *end = 0;
mgl@1371
  5700
+  regid = avr32_parse_intreg(p);
mgl@1371
  5701
+  assert(regid >= 0);
mgl@1371
  5702
+  *end = c;
mgl@1371
  5703
+
mgl@1371
  5704
+  slot = current_insn.next_slot++;
mgl@1371
  5705
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5706
+
mgl@1371
  5707
+  slot = current_insn.next_slot++;
mgl@1371
  5708
+  current_insn.field_value[slot].value = 0;
mgl@1371
  5709
+
mgl@1371
  5710
+  if (*end == '<')
mgl@1371
  5711
+    {
mgl@1371
  5712
+      expressionS exp;
mgl@1371
  5713
+      char *save;
mgl@1371
  5714
+
mgl@1371
  5715
+      p = end + 2;
mgl@1371
  5716
+      for (end = p; *end; end++)
mgl@1371
  5717
+	if (*end == ']')
mgl@1371
  5718
+	  break;
mgl@1371
  5719
+
mgl@1371
  5720
+      assert(*end == ']');
mgl@1371
  5721
+
mgl@1371
  5722
+      c = *end, *end = 0;
mgl@1371
  5723
+      save = input_line_pointer;
mgl@1371
  5724
+      input_line_pointer = p;
mgl@1371
  5725
+      expression(&exp);
mgl@1371
  5726
+
mgl@1371
  5727
+      if (*input_line_pointer)
mgl@1371
  5728
+	as_bad(_("junk after shift expression"));
mgl@1371
  5729
+
mgl@1371
  5730
+      *end = c;
mgl@1371
  5731
+      input_line_pointer = save;
mgl@1371
  5732
+
mgl@1371
  5733
+      if (exp.X_op == O_constant)
mgl@1371
  5734
+	current_insn.field_value[slot].value = exp.X_add_number;
mgl@1371
  5735
+      else
mgl@1371
  5736
+	as_bad(_("shift expression too complex"));
mgl@1371
  5737
+    }
mgl@1371
  5738
+}
mgl@1371
  5739
+
mgl@1371
  5740
+static void
mgl@1371
  5741
+parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5742
+{
mgl@1371
  5743
+  int slot, regid;
mgl@1371
  5744
+  char *p, *end, c;
mgl@1371
  5745
+
mgl@1371
  5746
+  for (p = str; *p; p++)
mgl@1371
  5747
+    if (*p == '[')
mgl@1371
  5748
+      break;
mgl@1371
  5749
+
mgl@1371
  5750
+  assert(*p);
mgl@1371
  5751
+
mgl@1371
  5752
+  c = *p, *p = 0;
mgl@1371
  5753
+  regid = avr32_parse_intreg(str);
mgl@1371
  5754
+  assert(regid >= 0);
mgl@1371
  5755
+  *p = c;
mgl@1371
  5756
+
mgl@1371
  5757
+  slot = current_insn.next_slot++;
mgl@1371
  5758
+  current_insn.field_value[slot].value = regid;
mgl@1371
  5759
+
mgl@1371
  5760
+  p++;
mgl@1371
  5761
+  for (end = p; *end; end++)
mgl@1371
  5762
+    if (*end == '<')
mgl@1371
  5763
+      break;
mgl@1371
  5764
+
mgl@1371
  5765
+  assert(*end);
mgl@1371
  5766
+
mgl@1371
  5767
+  c = *end, *end = 0;
mgl@1371
  5768
+  parse_intreg_part(op, p, opindex);
mgl@1371
  5769
+  *end = c;
mgl@1371
  5770
+}
mgl@1371
  5771
+
mgl@1371
  5772
+static void
mgl@1371
  5773
+parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5774
+{
mgl@1371
  5775
+  char *p, c;
mgl@1371
  5776
+
mgl@1371
  5777
+  for (p = str; *p; p++)
mgl@1371
  5778
+    if (*p == '[')
mgl@1371
  5779
+      break;
mgl@1371
  5780
+
mgl@1371
  5781
+  /* The lddpc instruction comes in two different syntax variants:
mgl@1371
  5782
+       lddpc reg, expression
mgl@1371
  5783
+       lddpc reg, pc[disp]
mgl@1371
  5784
+     If the operand contains a '[', we use the second form.  */
mgl@1371
  5785
+  if (*p)
mgl@1371
  5786
+    {
mgl@1371
  5787
+      int regid;
mgl@1371
  5788
+
mgl@1371
  5789
+      c = *p, *p = 0;
mgl@1371
  5790
+      regid = avr32_parse_intreg(str);
mgl@1371
  5791
+      *p = c;
mgl@1371
  5792
+      if (regid == AVR32_REG_PC)
mgl@1371
  5793
+	{
mgl@1371
  5794
+	  char *end;
mgl@1371
  5795
+
mgl@1371
  5796
+	  for (end = ++p; *end; end++) ;
mgl@1371
  5797
+	  if (*(--end) != ']')
mgl@1371
  5798
+	    as_bad(_("unrecognized form of instruction: `%s'"), str);
mgl@1371
  5799
+	  else
mgl@1371
  5800
+	    {
mgl@1371
  5801
+	      c = *end, *end = 0;
mgl@1371
  5802
+	      parse_const(op, p, opindex);
mgl@1371
  5803
+	      *end = c;
mgl@1371
  5804
+	      current_insn.pcrel = 0;
mgl@1371
  5805
+	    }
mgl@1371
  5806
+	}
mgl@1371
  5807
+      else
mgl@1371
  5808
+	as_bad(_("unrecognized form of instruction: `%s'"), str);
mgl@1371
  5809
+    }
mgl@1371
  5810
+  else
mgl@1371
  5811
+    {
mgl@1371
  5812
+      parse_jmplabel(op, str, opindex);
mgl@1371
  5813
+    }
mgl@1371
  5814
+}
mgl@1371
  5815
+
mgl@1371
  5816
+static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5817
+		     char *str ATTRIBUTE_UNUSED,
mgl@1371
  5818
+		     int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5819
+{
mgl@1371
  5820
+  int slot;
mgl@1371
  5821
+
mgl@1371
  5822
+  slot = current_insn.next_slot++;
mgl@1371
  5823
+  current_insn.field_value[slot].value = AVR32_REG_SP;
mgl@1371
  5824
+}
mgl@1371
  5825
+
mgl@1371
  5826
+static void
mgl@1371
  5827
+parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
mgl@1371
  5828
+{
mgl@1371
  5829
+  char *p, c;
mgl@1371
  5830
+
mgl@1371
  5831
+  for (; *str; str++)
mgl@1371
  5832
+    if (*str == '[')
mgl@1371
  5833
+      break;
mgl@1371
  5834
+
mgl@1371
  5835
+  assert(*str);
mgl@1371
  5836
+
mgl@1371
  5837
+  for (p = ++str; *p; p++)
mgl@1371
  5838
+    if (*p == ']')
mgl@1371
  5839
+      break;
mgl@1371
  5840
+
mgl@1371
  5841
+  c = *p, *p = 0;
mgl@1371
  5842
+  parse_const(op, str, opindex);
mgl@1371
  5843
+  *p = c;
mgl@1371
  5844
+}
mgl@1371
  5845
+
mgl@1371
  5846
+static void
mgl@1371
  5847
+parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
mgl@1371
  5848
+	   int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5849
+{
mgl@1371
  5850
+  int slot;
mgl@1371
  5851
+
mgl@1371
  5852
+  str += 2;
mgl@1371
  5853
+  if (*str == '#')
mgl@1371
  5854
+    str++;
mgl@1371
  5855
+  if (*str < '0' || *str > '7' || str[1])
mgl@1371
  5856
+    as_bad(_("invalid coprocessor `%s'"), str);
mgl@1371
  5857
+
mgl@1371
  5858
+  slot = current_insn.next_slot++;
mgl@1371
  5859
+  current_insn.field_value[slot].value = *str - '0';
mgl@1371
  5860
+}
mgl@1371
  5861
+
mgl@1371
  5862
+static void
mgl@1371
  5863
+parse_cpreg(const struct avr32_operand *op, char *str,
mgl@1371
  5864
+	    int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5865
+{
mgl@1371
  5866
+  unsigned int crid;
mgl@1371
  5867
+  int slot;
mgl@1371
  5868
+  char *endptr;
mgl@1371
  5869
+
mgl@1371
  5870
+  str += 2;
mgl@1371
  5871
+  crid = strtoul(str, &endptr, 10);
mgl@1371
  5872
+  if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
mgl@1371
  5873
+    as_bad(_("invalid coprocessor register `%s'"), str);
mgl@1371
  5874
+
mgl@1371
  5875
+  crid >>= op->align_order;
mgl@1371
  5876
+
mgl@1371
  5877
+  slot = current_insn.next_slot++;
mgl@1371
  5878
+  current_insn.field_value[slot].value = crid;
mgl@1371
  5879
+}
mgl@1371
  5880
+
mgl@1371
  5881
+static void
mgl@1371
  5882
+parse_number(const struct avr32_operand *op, char *str,
mgl@1371
  5883
+	     int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5884
+{
mgl@1371
  5885
+  expressionS exp;
mgl@1371
  5886
+  int slot;
mgl@1371
  5887
+  char *save;
mgl@1371
  5888
+
mgl@1371
  5889
+  save = input_line_pointer;
mgl@1371
  5890
+  input_line_pointer = str;
mgl@1371
  5891
+  expression(&exp);
mgl@1371
  5892
+  input_line_pointer = save;
mgl@1371
  5893
+
mgl@1371
  5894
+  slot = current_insn.next_slot++;
mgl@1371
  5895
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  5896
+
mgl@1371
  5897
+  if (exp.X_op == O_constant)
mgl@1371
  5898
+      current_insn.field_value[slot].value = exp.X_add_number;
mgl@1371
  5899
+  else
mgl@1371
  5900
+      as_bad(_("invalid numeric expression `%s'"), str);
mgl@1371
  5901
+}
mgl@1371
  5902
+
mgl@1371
  5903
+static void
mgl@1371
  5904
+parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5905
+	       char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5906
+{
mgl@1371
  5907
+  unsigned long regmask;
mgl@1371
  5908
+  unsigned long value = 0;
mgl@1371
  5909
+  int slot;
mgl@1371
  5910
+  char *tail;
mgl@1371
  5911
+
mgl@1371
  5912
+  regmask = avr32_parse_reglist(str, &tail);
mgl@1371
  5913
+  if (*tail)
mgl@1371
  5914
+    as_bad(_("invalid register list `%s'"), str);
mgl@1371
  5915
+  else
mgl@1371
  5916
+    {
mgl@1371
  5917
+      if (avr32_make_regmask8(regmask, &value))
mgl@1371
  5918
+	as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  5919
+    }
mgl@1371
  5920
+
mgl@1371
  5921
+  slot = current_insn.next_slot++;
mgl@1371
  5922
+  current_insn.field_value[slot].value = value;
mgl@1371
  5923
+}
mgl@1371
  5924
+
mgl@1371
  5925
+static int
mgl@1371
  5926
+parse_reglist_tail(char *str, unsigned long regmask)
mgl@1371
  5927
+{
mgl@1371
  5928
+  expressionS exp;
mgl@1371
  5929
+  char *save, *p, c;
mgl@1371
  5930
+  int regid;
mgl@1371
  5931
+
mgl@1371
  5932
+  for (p = str + 1; *p; p++)
mgl@1371
  5933
+    if (*p == '=')
mgl@1371
  5934
+      break;
mgl@1371
  5935
+
mgl@1371
  5936
+  if (!*p)
mgl@1371
  5937
+    {
mgl@1371
  5938
+      as_bad(_("invalid register list `%s'"), str);
mgl@1371
  5939
+      return -2;
mgl@1371
  5940
+    }
mgl@1371
  5941
+
mgl@1371
  5942
+  c = *p, *p = 0;
mgl@1371
  5943
+  regid = avr32_parse_intreg(str);
mgl@1371
  5944
+  *p = c;
mgl@1371
  5945
+
mgl@1371
  5946
+  if (regid != 12)
mgl@1371
  5947
+    {
mgl@1371
  5948
+      as_bad(_("invalid register list `%s'"), str);
mgl@1371
  5949
+      return -2;
mgl@1371
  5950
+    }
mgl@1371
  5951
+
mgl@1371
  5952
+  /* If we have an assignment, we must pop PC and we must _not_
mgl@1371
  5953
+     pop LR or R12 */
mgl@1371
  5954
+  if (!(regmask & (1 << AVR32_REG_PC)))
mgl@1371
  5955
+    {
mgl@1371
  5956
+      as_bad(_("return value specified for non-return instruction"));
mgl@1371
  5957
+      return -2;
mgl@1371
  5958
+    }
mgl@1371
  5959
+  else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
mgl@1371
  5960
+    {
mgl@1371
  5961
+      as_bad(_("can't pop LR or R12 when specifying return value"));
mgl@1371
  5962
+      return -2;
mgl@1371
  5963
+    }
mgl@1371
  5964
+
mgl@1371
  5965
+  save = input_line_pointer;
mgl@1371
  5966
+  input_line_pointer = p + 1;
mgl@1371
  5967
+  expression(&exp);
mgl@1371
  5968
+  input_line_pointer = save;
mgl@1371
  5969
+
mgl@1371
  5970
+  if (exp.X_op != O_constant
mgl@1371
  5971
+      || exp.X_add_number < -1
mgl@1371
  5972
+      || exp.X_add_number > 1)
mgl@1371
  5973
+    {
mgl@1371
  5974
+      as_bad(_("invalid return value `%s'"), str);
mgl@1371
  5975
+      return -2;
mgl@1371
  5976
+    }
mgl@1371
  5977
+
mgl@1371
  5978
+  return exp.X_add_number;
mgl@1371
  5979
+}
mgl@1371
  5980
+
mgl@1371
  5981
+static void
mgl@1371
  5982
+parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  5983
+	       char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  5984
+{
mgl@1371
  5985
+  unsigned long regmask;
mgl@1371
  5986
+  unsigned long value = 0, kbit = 0;
mgl@1371
  5987
+  int slot;
mgl@1371
  5988
+  char *tail;
mgl@1371
  5989
+
mgl@1371
  5990
+  regmask = avr32_parse_reglist(str, &tail);
mgl@1371
  5991
+  /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
mgl@1371
  5992
+  if (*tail)
mgl@1371
  5993
+    {
mgl@1371
  5994
+      int retval;
mgl@1371
  5995
+
mgl@1371
  5996
+      retval = parse_reglist_tail(tail, regmask);
mgl@1371
  5997
+
mgl@1371
  5998
+      switch (retval)
mgl@1371
  5999
+	{
mgl@1371
  6000
+	case -1:
mgl@1371
  6001
+	  regmask |= 1 << AVR32_REG_LR;
mgl@1371
  6002
+	  break;
mgl@1371
  6003
+	case 0:
mgl@1371
  6004
+	  break;
mgl@1371
  6005
+	case 1:
mgl@1371
  6006
+	  regmask |= 1 << AVR32_REG_R12;
mgl@1371
  6007
+	  break;
mgl@1371
  6008
+	default:
mgl@1371
  6009
+	  break;
mgl@1371
  6010
+	}
mgl@1371
  6011
+
mgl@1371
  6012
+      kbit = 1;
mgl@1371
  6013
+    }
mgl@1371
  6014
+
mgl@1371
  6015
+  if (avr32_make_regmask8(regmask, &value))
mgl@1371
  6016
+    as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6017
+
mgl@1371
  6018
+
mgl@1371
  6019
+  slot = current_insn.next_slot++;
mgl@1371
  6020
+  current_insn.field_value[slot].value = (value << 1) | kbit;
mgl@1371
  6021
+}
mgl@1371
  6022
+
mgl@1371
  6023
+static void
mgl@1371
  6024
+parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6025
+		char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6026
+{
mgl@1371
  6027
+  unsigned long regmask;
mgl@1371
  6028
+  int slot;
mgl@1371
  6029
+  char *tail;
mgl@1371
  6030
+
mgl@1371
  6031
+  regmask = avr32_parse_reglist(str, &tail);
mgl@1371
  6032
+  if (*tail)
mgl@1371
  6033
+    as_bad(_("invalid register list `%s'"), str);
mgl@1371
  6034
+
mgl@1371
  6035
+  slot = current_insn.next_slot++;
mgl@1371
  6036
+  current_insn.field_value[slot].value = regmask;
mgl@1371
  6037
+}
mgl@1371
  6038
+
mgl@1371
  6039
+static void
mgl@1371
  6040
+parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6041
+		  char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6042
+{
mgl@1371
  6043
+  unsigned long regmask;
mgl@1371
  6044
+  int slot, rp, w_bit = 0;
mgl@1371
  6045
+  char *tail, *p, c;
mgl@1371
  6046
+
mgl@1371
  6047
+  for (p = str; *p && *p != ','; p++)
mgl@1371
  6048
+    if (*p == '+')
mgl@1371
  6049
+      break;
mgl@1371
  6050
+
mgl@1371
  6051
+  c = *p, *p = 0;
mgl@1371
  6052
+  rp = avr32_parse_intreg(str);
mgl@1371
  6053
+  *p = c;
mgl@1371
  6054
+  if (rp < 0)
mgl@1371
  6055
+    {
mgl@1371
  6056
+      as_bad(_("invalid destination register in `%s'"), str);
mgl@1371
  6057
+      return;
mgl@1371
  6058
+    }
mgl@1371
  6059
+
mgl@1371
  6060
+  if (p[0] == '+' && p[1] == '+')
mgl@1371
  6061
+    {
mgl@1371
  6062
+      w_bit = 1;
mgl@1371
  6063
+      p += 2;
mgl@1371
  6064
+    }
mgl@1371
  6065
+
mgl@1371
  6066
+  if (*p != ',')
mgl@1371
  6067
+    {
mgl@1371
  6068
+      as_bad(_("expected `,' after destination register in `%s'"), str);
mgl@1371
  6069
+      return;
mgl@1371
  6070
+    }
mgl@1371
  6071
+
mgl@1371
  6072
+  str = p + 1;
mgl@1371
  6073
+  regmask = avr32_parse_reglist(str, &tail);
mgl@1371
  6074
+  if (*tail)
mgl@1371
  6075
+    {
mgl@1371
  6076
+      int retval;
mgl@1371
  6077
+
mgl@1371
  6078
+      if (rp != AVR32_REG_SP)
mgl@1371
  6079
+	{
mgl@1371
  6080
+	  as_bad(_("junk at end of line: `%s'"), tail);
mgl@1371
  6081
+	  return;
mgl@1371
  6082
+	}
mgl@1371
  6083
+
mgl@1371
  6084
+      rp = AVR32_REG_PC;
mgl@1371
  6085
+
mgl@1371
  6086
+      retval = parse_reglist_tail(tail, regmask);
mgl@1371
  6087
+
mgl@1371
  6088
+      switch (retval)
mgl@1371
  6089
+	{
mgl@1371
  6090
+	case -1:
mgl@1371
  6091
+	  regmask |= 1 << AVR32_REG_LR;
mgl@1371
  6092
+	  break;
mgl@1371
  6093
+	case 0:
mgl@1371
  6094
+	  break;
mgl@1371
  6095
+	case 1:
mgl@1371
  6096
+	  regmask |= 1 << AVR32_REG_R12;
mgl@1371
  6097
+	  break;
mgl@1371
  6098
+	default:
mgl@1371
  6099
+	  return;
mgl@1371
  6100
+	}
mgl@1371
  6101
+    }
mgl@1371
  6102
+
mgl@1371
  6103
+  slot = current_insn.next_slot++;
mgl@1371
  6104
+  current_insn.field_value[slot].value = rp;
mgl@1371
  6105
+  slot = current_insn.next_slot++;
mgl@1371
  6106
+  current_insn.field_value[slot].value = w_bit;
mgl@1371
  6107
+  slot = current_insn.next_slot++;
mgl@1371
  6108
+  current_insn.field_value[slot].value = regmask;
mgl@1371
  6109
+}
mgl@1371
  6110
+
mgl@1371
  6111
+static void
mgl@1371
  6112
+parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6113
+		  char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6114
+{
mgl@1371
  6115
+  unsigned long regmask;
mgl@1371
  6116
+  int slot, h_bit = 0;
mgl@1371
  6117
+  char *tail;
mgl@1371
  6118
+
mgl@1371
  6119
+  regmask = avr32_parse_cpreglist(str, &tail);
mgl@1371
  6120
+  if (*tail)
mgl@1371
  6121
+    as_bad(_("junk at end of line: `%s'"), tail);
mgl@1371
  6122
+  else if (regmask & 0xffUL)
mgl@1371
  6123
+    {
mgl@1371
  6124
+      if (regmask & 0xff00UL)
mgl@1371
  6125
+	as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6126
+      regmask &= 0xff;
mgl@1371
  6127
+    }
mgl@1371
  6128
+  else if (regmask & 0xff00UL)
mgl@1371
  6129
+    {
mgl@1371
  6130
+      regmask >>= 8;
mgl@1371
  6131
+      h_bit = 1;
mgl@1371
  6132
+    }
mgl@1371
  6133
+  else
mgl@1371
  6134
+    as_warn(_("register list is empty"));
mgl@1371
  6135
+
mgl@1371
  6136
+  slot = current_insn.next_slot++;
mgl@1371
  6137
+  current_insn.field_value[slot].value = regmask;
mgl@1371
  6138
+  slot = current_insn.next_slot++;
mgl@1371
  6139
+  current_insn.field_value[slot].value = h_bit;
mgl@1371
  6140
+}
mgl@1371
  6141
+
mgl@1371
  6142
+static void
mgl@1371
  6143
+parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6144
+		   char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6145
+{
mgl@1371
  6146
+  unsigned long regmask, regmask_d = 0;
mgl@1371
  6147
+  int slot, i;
mgl@1371
  6148
+  char *tail;
mgl@1371
  6149
+
mgl@1371
  6150
+  regmask = avr32_parse_cpreglist(str, &tail);
mgl@1371
  6151
+  if (*tail)
mgl@1371
  6152
+    as_bad(_("junk at end of line: `%s'"), tail);
mgl@1371
  6153
+
mgl@1371
  6154
+  for (i = 0; i < 8; i++)
mgl@1371
  6155
+    {
mgl@1371
  6156
+      if (regmask & 1)
mgl@1371
  6157
+	{
mgl@1371
  6158
+	  if (!(regmask & 2))
mgl@1371
  6159
+	    {
mgl@1371
  6160
+	      as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6161
+	      break;
mgl@1371
  6162
+	    }
mgl@1371
  6163
+	  regmask_d |= 1 << i;
mgl@1371
  6164
+	}
mgl@1371
  6165
+      else if (regmask & 2)
mgl@1371
  6166
+	{
mgl@1371
  6167
+	  as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6168
+	  break;
mgl@1371
  6169
+	}
mgl@1371
  6170
+
mgl@1371
  6171
+      regmask >>= 2;
mgl@1371
  6172
+    }
mgl@1371
  6173
+
mgl@1371
  6174
+  slot = current_insn.next_slot++;
mgl@1371
  6175
+  current_insn.field_value[slot].value = regmask_d;
mgl@1371
  6176
+}
mgl@1371
  6177
+
mgl@1371
  6178
+static void
mgl@1371
  6179
+parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6180
+	     char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6181
+{
mgl@1371
  6182
+  int regid, slot;
mgl@1371
  6183
+
mgl@1371
  6184
+  regid = avr32_parse_intreg(str);
mgl@1371
  6185
+  if (regid < 0)
mgl@1371
  6186
+    {
mgl@1371
  6187
+      expressionS exp;
mgl@1371
  6188
+      char *save;
mgl@1371
  6189
+
mgl@1371
  6190
+      regid = 0;
mgl@1371
  6191
+
mgl@1371
  6192
+      save = input_line_pointer;
mgl@1371
  6193
+      input_line_pointer = str;
mgl@1371
  6194
+      expression(&exp);
mgl@1371
  6195
+      input_line_pointer = save;
mgl@1371
  6196
+
mgl@1371
  6197
+      if (exp.X_op != O_constant)
mgl@1371
  6198
+	as_bad(_("invalid return value `%s'"), str);
mgl@1371
  6199
+      else
mgl@1371
  6200
+	switch (exp.X_add_number)
mgl@1371
  6201
+	  {
mgl@1371
  6202
+	  case -1:
mgl@1371
  6203
+	    regid = AVR32_REG_LR;
mgl@1371
  6204
+	    break;
mgl@1371
  6205
+	  case 0:
mgl@1371
  6206
+	    regid = AVR32_REG_SP;
mgl@1371
  6207
+	    break;
mgl@1371
  6208
+	  case 1:
mgl@1371
  6209
+	    regid = AVR32_REG_PC;
mgl@1371
  6210
+	    break;
mgl@1371
  6211
+	  default:
mgl@1371
  6212
+	    as_bad(_("invalid return value `%s'"), str);
mgl@1371
  6213
+	    break;
mgl@1371
  6214
+	  }
mgl@1371
  6215
+    }
mgl@1371
  6216
+
mgl@1371
  6217
+  slot = current_insn.next_slot++;
mgl@1371
  6218
+  current_insn.field_value[slot].value = regid;
mgl@1371
  6219
+}
mgl@1371
  6220
+
mgl@1371
  6221
+#define parse_mcall parse_intreg_disp
mgl@1371
  6222
+
mgl@1371
  6223
+static void
mgl@1371
  6224
+parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6225
+	      char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6226
+{
mgl@1371
  6227
+  expressionS exp;
mgl@1371
  6228
+  int slot;
mgl@1371
  6229
+  char *save;
mgl@1371
  6230
+
mgl@1371
  6231
+  save = input_line_pointer;
mgl@1371
  6232
+  input_line_pointer = str;
mgl@1371
  6233
+  expression(&exp);
mgl@1371
  6234
+  input_line_pointer = save;
mgl@1371
  6235
+
mgl@1371
  6236
+  slot = current_insn.next_slot++;
mgl@1371
  6237
+
mgl@1371
  6238
+  if (exp.X_op == O_constant)
mgl@1371
  6239
+    {
mgl@1371
  6240
+      if (exp.X_add_number > 0)
mgl@1371
  6241
+	exp.X_add_number--;
mgl@1371
  6242
+      current_insn.field_value[slot].value = exp.X_add_number;
mgl@1371
  6243
+    }
mgl@1371
  6244
+  else
mgl@1371
  6245
+    as_bad(_("invalid numeric expression `%s'"), str);
mgl@1371
  6246
+}
mgl@1371
  6247
+
mgl@1371
  6248
+#define parse_coh		parse_nothing
mgl@1371
  6249
+
mgl@1371
  6250
+static void
mgl@1371
  6251
+parse_fpreg(const struct avr32_operand *op,
mgl@1371
  6252
+	    char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6253
+{
mgl@1371
  6254
+  unsigned long regid;
mgl@1371
  6255
+  int slot;
mgl@1371
  6256
+
mgl@1371
  6257
+  regid = strtoul(str + 2, NULL, 10);
mgl@1371
  6258
+
mgl@1371
  6259
+  if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
mgl@1371
  6260
+    as_bad(_("invalid floating-point register `%s'"), str);
mgl@1371
  6261
+
mgl@1371
  6262
+  slot = current_insn.next_slot++;
mgl@1371
  6263
+  current_insn.field_value[slot].value = regid;
mgl@1371
  6264
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  6265
+}
mgl@1371
  6266
+
mgl@1371
  6267
+static void
mgl@1371
  6268
+parse_picoreg(const struct avr32_operand *op,
mgl@1371
  6269
+	      char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6270
+{
mgl@1371
  6271
+  unsigned long regid;
mgl@1371
  6272
+  int slot;
mgl@1371
  6273
+
mgl@1371
  6274
+  regid = avr32_parse_picoreg(str);
mgl@1371
  6275
+  if (regid & ((1 << op->align_order) - 1))
mgl@1371
  6276
+    as_bad(_("invalid double-word PiCo register `%s'"), str);
mgl@1371
  6277
+
mgl@1371
  6278
+  slot = current_insn.next_slot++;
mgl@1371
  6279
+  current_insn.field_value[slot].value = regid;
mgl@1371
  6280
+  current_insn.field_value[slot].align_order = op->align_order;
mgl@1371
  6281
+}
mgl@1371
  6282
+
mgl@1371
  6283
+static void
mgl@1371
  6284
+parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6285
+		     char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6286
+{
mgl@1371
  6287
+  unsigned long regmask;
mgl@1371
  6288
+  int slot, h_bit = 0;
mgl@1371
  6289
+  char *tail;
mgl@1371
  6290
+
mgl@1371
  6291
+  regmask = avr32_parse_pico_reglist(str, &tail);
mgl@1371
  6292
+  if (*tail)
mgl@1371
  6293
+    as_bad(_("junk at end of line: `%s'"), tail);
mgl@1371
  6294
+
mgl@1371
  6295
+  if (regmask & 0x00ffUL)
mgl@1371
  6296
+    {
mgl@1371
  6297
+      if (regmask & 0xff00UL)
mgl@1371
  6298
+	as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6299
+      regmask &= 0x00ffUL;
mgl@1371
  6300
+    }
mgl@1371
  6301
+  else if (regmask & 0xff00UL)
mgl@1371
  6302
+    {
mgl@1371
  6303
+      regmask >>= 8;
mgl@1371
  6304
+      h_bit = 1;
mgl@1371
  6305
+    }
mgl@1371
  6306
+  else
mgl@1371
  6307
+    as_warn(_("register list is empty"));
mgl@1371
  6308
+
mgl@1371
  6309
+  slot = current_insn.next_slot++;
mgl@1371
  6310
+  current_insn.field_value[slot].value = regmask;
mgl@1371
  6311
+  slot = current_insn.next_slot++;
mgl@1371
  6312
+  current_insn.field_value[slot].value = h_bit;
mgl@1371
  6313
+}
mgl@1371
  6314
+
mgl@1371
  6315
+static void
mgl@1371
  6316
+parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6317
+		     char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6318
+{
mgl@1371
  6319
+  unsigned long regmask, regmask_d = 0;
mgl@1371
  6320
+  int slot, i;
mgl@1371
  6321
+  char *tail;
mgl@1371
  6322
+
mgl@1371
  6323
+  regmask = avr32_parse_pico_reglist(str, &tail);
mgl@1371
  6324
+  if (*tail)
mgl@1371
  6325
+    as_bad(_("junk at end of line: `%s'"), tail);
mgl@1371
  6326
+
mgl@1371
  6327
+  for (i = 0; i < 8; i++)
mgl@1371
  6328
+    {
mgl@1371
  6329
+      if (regmask & 1)
mgl@1371
  6330
+	{
mgl@1371
  6331
+	  if (!(regmask & 2))
mgl@1371
  6332
+	    {
mgl@1371
  6333
+	      as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6334
+	      break;
mgl@1371
  6335
+	    }
mgl@1371
  6336
+	  regmask_d |= 1 << i;
mgl@1371
  6337
+	}
mgl@1371
  6338
+      else if (regmask & 2)
mgl@1371
  6339
+	{
mgl@1371
  6340
+	  as_bad(_("register list `%s' doesn't fit"), str);
mgl@1371
  6341
+	  break;
mgl@1371
  6342
+	}
mgl@1371
  6343
+
mgl@1371
  6344
+      regmask >>= 2;
mgl@1371
  6345
+    }
mgl@1371
  6346
+
mgl@1371
  6347
+  slot = current_insn.next_slot++;
mgl@1371
  6348
+  current_insn.field_value[slot].value = regmask_d;
mgl@1371
  6349
+}
mgl@1371
  6350
+
mgl@1371
  6351
+static void
mgl@1371
  6352
+parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
  6353
+	      char *str, int opindex ATTRIBUTE_UNUSED)
mgl@1371
  6354
+{
mgl@1371
  6355
+  unsigned long regid;
mgl@1371
  6356
+  int slot;
mgl@1371
  6357
+
mgl@1371
  6358
+  regid = strtoul(str + 2, NULL, 10);
mgl@1371
  6359
+
mgl@1371
  6360
+  if (regid >= 12)
mgl@1371
  6361
+    as_bad(_("invalid PiCo IN register `%s'"), str);
mgl@1371
  6362
+
mgl@1371
  6363
+  slot = current_insn.next_slot++;
mgl@1371
  6364
+  current_insn.field_value[slot].value = regid;
mgl@1371
  6365
+  current_insn.field_value[slot].align_order = 0;
mgl@1371
  6366
+}
mgl@1371
  6367
+
mgl@1371
  6368
+#define parse_pico_out0		parse_nothing
mgl@1371
  6369
+#define parse_pico_out1		parse_nothing
mgl@1371
  6370
+#define parse_pico_out2		parse_nothing
mgl@1371
  6371
+#define parse_pico_out3		parse_nothing
mgl@1371
  6372
+
mgl@1371
  6373
+#define OP(name, sgn, pcrel, align, func) \
mgl@1371
  6374
+  { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
mgl@1371
  6375
+
mgl@1371
  6376
+struct avr32_operand avr32_operand_table[] = {
mgl@1371
  6377
+  OP(INTREG, 0, 0, 0, intreg),
mgl@1371
  6378
+  OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
mgl@1371
  6379
+  OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
mgl@1371
  6380
+  OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
mgl@1371
  6381
+  OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
mgl@1371
  6382
+  OP(INTREG_BSEL, 0, 0, 0, intreg_part),
mgl@1371
  6383
+  OP(INTREG_HSEL, 0, 0, 1, intreg_part),
mgl@1371
  6384
+  OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
mgl@1371
  6385
+  OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
mgl@1371
  6386
+  OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
mgl@1371
  6387
+  OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
mgl@1371
  6388
+  OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
mgl@1371
  6389
+  OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
mgl@1371
  6390
+  OP(INTREG_INDEX, 0, 0, 0, intreg_index),
mgl@1371
  6391
+  OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
mgl@1371
  6392
+  OP(DWREG, 0, 0, 1, intreg),
mgl@1371
  6393
+  OP(PC_UDISP_W, 0, 1, 2, pc_disp),
mgl@1371
  6394
+  OP(SP, 0, 0, 0, sp),
mgl@1371
  6395
+  OP(SP_UDISP_W, 0, 0, 2, sp_disp),
mgl@1371
  6396
+  OP(CPNO, 0, 0, 0, cpno),
mgl@1371
  6397
+  OP(CPREG, 0, 0, 0, cpreg),
mgl@1371
  6398
+  OP(CPREG_D, 0, 0, 1, cpreg),
mgl@1371
  6399
+  OP(UNSIGNED_CONST, 0, 0, 0, const),
mgl@1371
  6400
+  OP(UNSIGNED_CONST_W, 0, 0, 2, const),
mgl@1371
  6401
+  OP(SIGNED_CONST, 1, 0, 0, const),
mgl@1371
  6402
+  OP(SIGNED_CONST_W, 1, 0, 2, const),
mgl@1371
  6403
+  OP(JMPLABEL, 1, 1, 1, jmplabel),
mgl@1371
  6404
+  OP(UNSIGNED_NUMBER, 0, 0, 0, number),
mgl@1371
  6405
+  OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
mgl@1371
  6406
+  OP(REGLIST8, 0, 0, 0, reglist8),
mgl@1371
  6407
+  OP(REGLIST9, 0, 0, 0, reglist9),
mgl@1371
  6408
+  OP(REGLIST16, 0, 0, 0, reglist16),
mgl@1371
  6409
+  OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
mgl@1371
  6410
+  OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
mgl@1371
  6411
+  OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
mgl@1371
  6412
+  OP(RETVAL, 0, 0, 0, retval),
mgl@1371
  6413
+  OP(MCALL, 1, 0, 2, mcall),
mgl@1371
  6414
+  OP(JOSPINC, 0, 0, 0, jospinc),
mgl@1371
  6415
+  OP(COH, 0, 0, 0, coh),
mgl@1371
  6416
+  OP(FPREG_S, 0, 0, 0, fpreg),
mgl@1371
  6417
+  OP(FPREG_D, 0, 0, 1, fpreg),
mgl@1371
  6418
+  OP(PICO_REG_W, 0, 0, 0, picoreg),
mgl@1371
  6419
+  OP(PICO_REG_D, 0, 0, 1, picoreg),
mgl@1371
  6420
+  OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
mgl@1371
  6421
+  OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
mgl@1371
  6422
+  OP(PICO_IN, 0, 0, 0, pico_in),
mgl@1371
  6423
+  OP(PICO_OUT0, 0, 0, 0, pico_out0),
mgl@1371
  6424
+  OP(PICO_OUT1, 0, 0, 0, pico_out1),
mgl@1371
  6425
+  OP(PICO_OUT2, 0, 0, 0, pico_out2),
mgl@1371
  6426
+  OP(PICO_OUT3, 0, 0, 0, pico_out3),
mgl@1371
  6427
+};
mgl@1371
  6428
+
mgl@1371
  6429
+symbolS *
mgl@1371
  6430
+md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
mgl@1371
  6431
+{
mgl@1371
  6432
+  pr_debug("md_undefined_symbol: %s\n", name);
mgl@1371
  6433
+  return 0;
mgl@1371
  6434
+}
mgl@1371
  6435
+
mgl@1371
  6436
+struct avr32_relax_type
mgl@1371
  6437
+{
mgl@1371
  6438
+  long lower_bound;
mgl@1371
  6439
+  long upper_bound;
mgl@1371
  6440
+  unsigned char align;
mgl@1371
  6441
+  unsigned char length;
mgl@1371
  6442
+  signed short next;
mgl@1371
  6443
+};
mgl@1371
  6444
+
mgl@1371
  6445
+#define EMPTY { 0, 0, 0, 0, -1 }
mgl@1371
  6446
+#define C(lower, upper, align, next)			\
mgl@1371
  6447
+  { (lower), (upper), (align), 2, AVR32_OPC_##next }
mgl@1371
  6448
+#define E(lower, upper, align)				\
mgl@1371
  6449
+  { (lower), (upper), (align), 4, -1 }
mgl@1371
  6450
+
mgl@1371
  6451
+static const struct avr32_relax_type avr32_relax_table[] =
mgl@1371
  6452
+  {
mgl@1371
  6453
+    /* 0 */
mgl@1371
  6454
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6455
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6456
+    E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
mgl@1371
  6457
+    EMPTY,
mgl@1371
  6458
+    /* 16 */
mgl@1371
  6459
+    EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6460
+
mgl@1371
  6461
+    C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
mgl@1371
  6462
+    C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
mgl@1371
  6463
+    C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
mgl@1371
  6464
+    C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
mgl@1371
  6465
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6466
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6467
+    /* 32 */
mgl@1371
  6468
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6469
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6470
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6471
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6472
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6473
+    E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
mgl@1371
  6474
+
mgl@1371
  6475
+    EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6476
+    /* 48 */
mgl@1371
  6477
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6478
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6479
+
mgl@1371
  6480
+    C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
mgl@1371
  6481
+
mgl@1371
  6482
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6483
+    /* 64: csrfcz */
mgl@1371
  6484
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6485
+    E(0, 65535, 0), E(0, 65535, 0),
mgl@1371
  6486
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6487
+    E(-32768, 32767, 0),
mgl@1371
  6488
+    /* 80: LD_SB2 */
mgl@1371
  6489
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6490
+
mgl@1371
  6491
+    C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
mgl@1371
  6492
+
mgl@1371
  6493
+    EMPTY,
mgl@1371
  6494
+    EMPTY, EMPTY,
mgl@1371
  6495
+
mgl@1371
  6496
+    C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
mgl@1371
  6497
+
mgl@1371
  6498
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6499
+
mgl@1371
  6500
+    C(0, 14, 1, LD_UH4),
mgl@1371
  6501
+
mgl@1371
  6502
+    /* 96: LD_UH4 */
mgl@1371
  6503
+    E(-32768, 32767, 0),
mgl@1371
  6504
+
mgl@1371
  6505
+    EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6506
+
mgl@1371
  6507
+    C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
mgl@1371
  6508
+
mgl@1371
  6509
+    E(0, 1020, 2),	/* LDC_D1 */
mgl@1371
  6510
+    EMPTY, EMPTY,
mgl@1371
  6511
+    E(0, 1020, 2),	/* LDC_W1 */
mgl@1371
  6512
+    EMPTY, EMPTY,
mgl@1371
  6513
+    E(0, 16380, 2),	/* LDC0_D */
mgl@1371
  6514
+    E(0, 16380, 2),	/* LDC0_W */
mgl@1371
  6515
+    EMPTY,
mgl@1371
  6516
+
mgl@1371
  6517
+    /* 112: LDCM_D_PU */
mgl@1371
  6518
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6519
+
mgl@1371
  6520
+    C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
mgl@1371
  6521
+
mgl@1371
  6522
+    EMPTY,EMPTY, EMPTY,
mgl@1371
  6523
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6524
+
mgl@1371
  6525
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6526
+    /* 134: MACHH_W */
mgl@1371
  6527
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6528
+    E(-131072, 131068, 2),	/* MCALL */
mgl@1371
  6529
+    E(0, 1020, 2),		/* MFDR */
mgl@1371
  6530
+    E(0, 1020, 2),		/* MFSR */
mgl@1371
  6531
+    EMPTY, EMPTY,
mgl@1371
  6532
+
mgl@1371
  6533
+    C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
mgl@1371
  6534
+
mgl@1371
  6535
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6536
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6537
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6538
+
mgl@1371
  6539
+    E(-128, 127, 0),		/* MOVEQ2 */
mgl@1371
  6540
+    E(-128, 127, 0),		/* MOVNE2 */
mgl@1371
  6541
+    E(-128, 127, 0),		/* MOVCC2 */
mgl@1371
  6542
+    E(-128, 127, 0),		/* 166: MOVCS2 */
mgl@1371
  6543
+    E(-128, 127, 0),		/* MOVGE2 */
mgl@1371
  6544
+    E(-128, 127, 0),		/* MOVLT2 */
mgl@1371
  6545
+    E(-128, 127, 0),		/* MOVMI2 */
mgl@1371
  6546
+    E(-128, 127, 0),		/* MOVPL2 */
mgl@1371
  6547
+    E(-128, 127, 0),		/* MOVLS2 */
mgl@1371
  6548
+    E(-128, 127, 0),		/* MOVGT2 */
mgl@1371
  6549
+    E(-128, 127, 0),		/* MOVLE2 */
mgl@1371
  6550
+    E(-128, 127, 0),		/* MOVHI2 */
mgl@1371
  6551
+    E(-128, 127, 0),		/* MOVVS2 */
mgl@1371
  6552
+    E(-128, 127, 0),		/* MOVVC2 */
mgl@1371
  6553
+    E(-128, 127, 0),		/* MOVQS2 */
mgl@1371
  6554
+    E(-128, 127, 0),		/* MOVAL2 */
mgl@1371
  6555
+
mgl@1371
  6556
+    E(0, 1020, 2),		/* MTDR */
mgl@1371
  6557
+    E(0, 1020, 2),		/* MTSR */
mgl@1371
  6558
+    EMPTY,
mgl@1371
  6559
+    EMPTY,
mgl@1371
  6560
+    E(-128, 127, 0),		/* MUL3 */
mgl@1371
  6561
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6562
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6563
+    /* 198: MVCR_W */
mgl@1371
  6564
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6565
+    E(0, 65535, 0), E(0, 65535, 0),
mgl@1371
  6566
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6567
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6568
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6569
+    /* 230: PASR_H */
mgl@1371
  6570
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6571
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6572
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6573
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6574
+    /* 262: PUNPCKSB_H */
mgl@1371
  6575
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6576
+
mgl@1371
  6577
+    C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
mgl@1371
  6578
+
mgl@1371
  6579
+    EMPTY,
mgl@1371
  6580
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6581
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6582
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6583
+
mgl@1371
  6584
+    C(-1024, 1022, 1, BRAL),
mgl@1371
  6585
+
mgl@1371
  6586
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6587
+    E(-128, 127, 0),		/* RSUB2 */
mgl@1371
  6588
+    /* 294: SATADD_H */
mgl@1371
  6589
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6590
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6591
+    E(0, 255, 0),		/* SLEEP */
mgl@1371
  6592
+    EMPTY, EMPTY,
mgl@1371
  6593
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6594
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6595
+    /* 326: ST_B2 */
mgl@1371
  6596
+    EMPTY, EMPTY,
mgl@1371
  6597
+    C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
mgl@1371
  6598
+    EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6599
+    E(-32768, 32767, 0),
mgl@1371
  6600
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6601
+    C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
mgl@1371
  6602
+    EMPTY, EMPTY,
mgl@1371
  6603
+    EMPTY,
mgl@1371
  6604
+    C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
mgl@1371
  6605
+    E(0, 1020, 2),	/* STC_D1 */
mgl@1371
  6606
+    EMPTY, EMPTY,
mgl@1371
  6607
+    E(0, 1020, 2),	/* STC_W1 */
mgl@1371
  6608
+    EMPTY, EMPTY,
mgl@1371
  6609
+    E(0, 16380, 2),	/* STC0_D */
mgl@1371
  6610
+    E(0, 16380, 2),	/* STC0_W */
mgl@1371
  6611
+
mgl@1371
  6612
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6613
+    /* 358: STDSP */
mgl@1371
  6614
+    EMPTY, EMPTY,
mgl@1371
  6615
+    E(0, 1020, 2),	/* STHH_W1 */
mgl@1371
  6616
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6617
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6618
+    E(-32768, 32767, 0),
mgl@1371
  6619
+    C(-512, 508, 2, SUB4),
mgl@1371
  6620
+    C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
mgl@1371
  6621
+    /* SUB{cond} */
mgl@1371
  6622
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6623
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6624
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6625
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6626
+    /* SUBF{cond} */
mgl@1371
  6627
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6628
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6629
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6630
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6631
+    EMPTY,
mgl@1371
  6632
+
mgl@1371
  6633
+    /* 406: SWAP_B */
mgl@1371
  6634
+    EMPTY, EMPTY, EMPTY,
mgl@1371
  6635
+    E(0, 255, 0),	/* SYNC */
mgl@1371
  6636
+    EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6637
+    /* 414: TST */
mgl@1371
  6638
+    EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
mgl@1371
  6639
+    /* 422: RSUB{cond} */
mgl@1371
  6640
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6641
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6642
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6643
+    E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
mgl@1371
  6644
+    /* 436: ADD{cond} */
mgl@1371
  6645
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6646
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6647
+    /* 454: SUB{cond} */
mgl@1371
  6648
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6649
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6650
+    /* 472: AND{cond} */
mgl@1371
  6651
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6652
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6653
+    /* 486: OR{cond} */
mgl@1371
  6654
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6655
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6656
+    /* 502: EOR{cond} */
mgl@1371
  6657
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6658
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6659
+    /* 518: LD.w{cond} */
mgl@1371
  6660
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6661
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6662
+    /* 534: LD.sh{cond} */
mgl@1371
  6663
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6664
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6665
+    /* 550: LD.uh{cond} */
mgl@1371
  6666
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6667
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6668
+    /* 566: LD.sb{cond} */
mgl@1371
  6669
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6670
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6671
+    /* 582: LD.ub{cond} */
mgl@1371
  6672
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6673
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6674
+    /* 596: ST.w{cond} */
mgl@1371
  6675
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6676
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6677
+    /* 614: ST.h{cond} */
mgl@1371
  6678
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6679
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6680
+    /* 630: ST.b{cond} */
mgl@1371
  6681
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6682
+    EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
mgl@1371
  6683
+    /* 646: movh */
mgl@1371
  6684
+    E(0, 65535, 0)
mgl@1371
  6685
+  };
mgl@1371
  6686
+
mgl@1371
  6687
+#undef E
mgl@1371
  6688
+#undef C
mgl@1371
  6689
+#undef EMPTY
mgl@1371
  6690
+
mgl@1371
  6691
+#define AVR32_RS_NONE (-1)
mgl@1371
  6692
+
mgl@1371
  6693
+#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
mgl@1371
  6694
+#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
mgl@1371
  6695
+#define relax_more(state) (avr32_relax_table[(state)].next)
mgl@1371
  6696
+
mgl@1371
  6697
+#define opc_initial_substate(opc) ((opc)->id)
mgl@1371
  6698
+
mgl@1371
  6699
+static int need_relax(int subtype, offsetT distance)
mgl@1371
  6700
+{
mgl@1371
  6701
+  offsetT upper_bound, lower_bound;
mgl@1371
  6702
+
mgl@1371
  6703
+  upper_bound = avr32_relax_table[subtype].upper_bound;
mgl@1371
  6704
+  lower_bound = avr32_relax_table[subtype].lower_bound;
mgl@1371
  6705
+
mgl@1371
  6706
+  if (distance & ((1 << avr32_rs_align(subtype)) - 1))
mgl@1371
  6707
+    return 1;
mgl@1371
  6708
+  if ((distance > upper_bound) || (distance < lower_bound))
mgl@1371
  6709
+    return 1;
mgl@1371
  6710
+
mgl@1371
  6711
+  return 0;
mgl@1371
  6712
+}
mgl@1371
  6713
+
mgl@1371
  6714
+enum {
mgl@1371
  6715
+  LDA_SUBTYPE_MOV1,
mgl@1371
  6716
+  LDA_SUBTYPE_MOV2,
mgl@1371
  6717
+  LDA_SUBTYPE_SUB,
mgl@1371
  6718
+  LDA_SUBTYPE_LDDPC,
mgl@1371
  6719
+  LDA_SUBTYPE_LDW,
mgl@1371
  6720
+  LDA_SUBTYPE_GOTLOAD,
mgl@1371
  6721
+  LDA_SUBTYPE_GOTLOAD_LARGE,
mgl@1371
  6722
+};
mgl@1371
  6723
+
mgl@1371
  6724
+enum {
mgl@1371
  6725
+  CALL_SUBTYPE_RCALL1,
mgl@1371
  6726
+  CALL_SUBTYPE_RCALL2,
mgl@1371
  6727
+  CALL_SUBTYPE_MCALL_CP,
mgl@1371
  6728
+  CALL_SUBTYPE_MCALL_GOT,
mgl@1371
  6729
+  CALL_SUBTYPE_MCALL_LARGE,
mgl@1371
  6730
+};
mgl@1371
  6731
+
mgl@1371
  6732
+#define LDA_INITIAL_SIZE	(avr32_pic ? 4 : 2)
mgl@1371
  6733
+#define CALL_INITIAL_SIZE	2
mgl@1371
  6734
+
mgl@1371
  6735
+#define need_reloc(sym, seg, pcrel)					\
mgl@1371
  6736
+  (!(S_IS_DEFINED(sym)							\
mgl@1371
  6737
+     && ((pcrel && S_GET_SEGMENT(sym) == seg)				\
mgl@1371
  6738
+	 || (!pcrel && S_GET_SEGMENT(sym) == absolute_section)))	\
mgl@1371
  6739
+   || S_FORCE_RELOC(sym, 1))
mgl@1371
  6740
+
mgl@1371
  6741
+/* Return an initial guess of the length by which a fragment must grow to
mgl@1371
  6742
+   hold a branch to reach its destination.
mgl@1371
  6743
+   Also updates fr_type/fr_subtype as necessary.
mgl@1371
  6744
+
mgl@1371
  6745
+   Called just before doing relaxation.
mgl@1371
  6746
+   Any symbol that is now undefined will not become defined.
mgl@1371
  6747
+   The guess for fr_var is ACTUALLY the growth beyond fr_fix.
mgl@1371
  6748
+   Whatever we do to grow fr_fix or fr_var contributes to our returned value.
mgl@1371
  6749
+   Although it may not be explicit in the frag, pretend fr_var starts with a
mgl@1371
  6750
+   0 value.  */
mgl@1371
  6751
+
mgl@1371
  6752
+static int
mgl@1371
  6753
+avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
mgl@1371
  6754
+{
mgl@1371
  6755
+  int growth = 0;
mgl@1371
  6756
+
mgl@1371
  6757
+  assert(fragP);
mgl@1371
  6758
+  assert(fragP->fr_symbol);
mgl@1371
  6759
+
mgl@1371
  6760
+  if (fragP->tc_frag_data.force_extended
mgl@1371
  6761
+      || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
mgl@1371
  6762
+    {
mgl@1371
  6763
+      int largest_state = fragP->fr_subtype;
mgl@1371
  6764
+      while (relax_more(largest_state) != AVR32_RS_NONE)
mgl@1371
  6765
+	largest_state = relax_more(largest_state);
mgl@1371
  6766
+      growth = avr32_rs_size(largest_state) - fragP->fr_var;
mgl@1371
  6767
+    }
mgl@1371
  6768
+  else
mgl@1371
  6769
+    {
mgl@1371
  6770
+      growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
mgl@1371
  6771
+    }
mgl@1371
  6772
+
mgl@1371
  6773
+  pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
mgl@1371
  6774
+	   fragP->fr_file, fragP->fr_line, growth);
mgl@1371
  6775
+
mgl@1371
  6776
+  return growth;
mgl@1371
  6777
+}
mgl@1371
  6778
+
mgl@1371
  6779
+static int
mgl@1371
  6780
+avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
mgl@1371
  6781
+{
mgl@1371
  6782
+  return fragP->fr_var - LDA_INITIAL_SIZE;
mgl@1371
  6783
+}
mgl@1371
  6784
+
mgl@1371
  6785
+static int
mgl@1371
  6786
+avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
mgl@1371
  6787
+{
mgl@1371
  6788
+  return fragP->fr_var - CALL_INITIAL_SIZE;
mgl@1371
  6789
+}
mgl@1371
  6790
+
mgl@1371
  6791
+static int
mgl@1371
  6792
+avr32_cpool_estimate_size_before_relax(fragS *fragP,
mgl@1371
  6793
+				       segT segment ATTRIBUTE_UNUSED)
mgl@1371
  6794
+{
mgl@1371
  6795
+  return fragP->fr_var;
mgl@1371
  6796
+}
mgl@1371
  6797
+
mgl@1371
  6798
+/* This macro may be defined to relax a frag. GAS will call this with the
mgl@1371
  6799
+ * segment, the frag, and the change in size of all previous frags;
mgl@1371
  6800
+ * md_relax_frag should return the change in size of the frag. */
mgl@1371
  6801
+static long
mgl@1371
  6802
+avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
mgl@1371
  6803
+{
mgl@1371
  6804
+  int state, next_state;
mgl@1371
  6805
+  symbolS *symbolP;	/* The target symbol */
mgl@1371
  6806
+  long growth = 0;
mgl@1371
  6807
+
mgl@1371
  6808
+  state = next_state = fragP->fr_subtype;
mgl@1371
  6809
+
mgl@1371
  6810
+  symbolP = fragP->fr_symbol;
mgl@1371
  6811
+
mgl@1371
  6812
+  if (fragP->tc_frag_data.force_extended
mgl@1371
  6813
+      || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
mgl@1371
  6814
+    {
mgl@1371
  6815
+      /* Symbol must be resolved by the linker. Emit the largest
mgl@1371
  6816
+	 possible opcode. */
mgl@1371
  6817
+      while (relax_more(next_state) != AVR32_RS_NONE)
mgl@1371
  6818
+	next_state = relax_more(next_state);
mgl@1371
  6819
+    }
mgl@1371
  6820
+  else
mgl@1371
  6821
+    {
mgl@1371
  6822
+      addressT address;	/* The address of fragP */
mgl@1371
  6823
+      addressT target;	/* The address of the target symbol */
mgl@1371
  6824
+      offsetT distance;	/* The distance between the insn and the symbol */
mgl@1371
  6825
+      fragS *sym_frag;
mgl@1371
  6826
+
mgl@1371
  6827
+      address = fragP->fr_address;
mgl@1371
  6828
+      target = fragP->fr_offset;
mgl@1371
  6829
+      symbolP = fragP->fr_symbol;
mgl@1371
  6830
+      sym_frag = symbol_get_frag(symbolP);
mgl@1371
  6831
+
mgl@1371
  6832
+      address += fragP->fr_fix - fragP->fr_var;
mgl@1371
  6833
+      target += S_GET_VALUE(symbolP);
mgl@1371
  6834
+
mgl@1371
  6835
+      if (stretch != 0
mgl@1371
  6836
+	  && sym_frag->relax_marker != fragP->relax_marker
mgl@1371
  6837
+	  && S_GET_SEGMENT(symbolP) == segment)
mgl@1371
  6838
+	/* if it was correctly aligned before, make sure it stays aligned */
mgl@1371
  6839
+	target += stretch & (~0UL << avr32_rs_align(state));
mgl@1371
  6840
+
mgl@1371
  6841
+      if (fragP->tc_frag_data.pcrel)
mgl@1371
  6842
+	distance = target - (address & (~0UL << avr32_rs_align(state)));
mgl@1371
  6843
+      else
mgl@1371
  6844
+	distance = target;
mgl@1371
  6845
+
mgl@1371
  6846
+      pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
mgl@1371
  6847
+	       fragP->fr_file, fragP->fr_line, target, address,
mgl@1371
  6848
+	       distance, distance, avr32_rs_align(state));
mgl@1371
  6849
+
mgl@1371
  6850
+      if (need_relax(state, distance))
mgl@1371
  6851
+	{
mgl@1371
  6852
+	  if (relax_more(state) != AVR32_RS_NONE)
mgl@1371
  6853
+	    next_state = relax_more(state);
mgl@1371
  6854
+	  pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
mgl@1371
  6855
+		   fragP->fr_file, fragP->fr_line, state, next_state,
mgl@1371
  6856
+		   target, address, avr32_rs_align(state));
mgl@1371
  6857
+	}
mgl@1371
  6858
+    }
mgl@1371
  6859
+
mgl@1371
  6860
+  growth = avr32_rs_size(next_state) - avr32_rs_size(state);
mgl@1371
  6861
+  fragP->fr_subtype = next_state;
mgl@1371
  6862
+
mgl@1371
  6863
+  pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
mgl@1371
  6864
+	   fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
mgl@1371
  6865
+	   avr32_opc_table[next_state].value);
mgl@1371
  6866
+
mgl@1371
  6867
+  return growth;
mgl@1371
  6868
+}
mgl@1371
  6869
+
mgl@1371
  6870
+static long
mgl@1371
  6871
+avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
mgl@1371
  6872
+{
mgl@1371
  6873
+  struct cpool *pool= NULL;
mgl@1371
  6874
+  unsigned int entry = 0;
mgl@1371
  6875
+  addressT address, target;
mgl@1371
  6876
+  offsetT distance;
mgl@1371
  6877
+  symbolS *symbolP;
mgl@1371
  6878
+  fragS *sym_frag;
mgl@1371
  6879
+  long old_size, new_size;
mgl@1371
  6880
+
mgl@1371
  6881
+  symbolP = fragP->fr_symbol;
mgl@1371
  6882
+  old_size = fragP->fr_var;
mgl@1371
  6883
+  if (!avr32_pic)
mgl@1371
  6884
+    {
mgl@1371
  6885
+      pool = fragP->tc_frag_data.pool;
mgl@1371
  6886
+      entry = fragP->tc_frag_data.pool_entry;
mgl@1371
  6887
+    }
mgl@1371
  6888
+
mgl@1371
  6889
+  address = fragP->fr_address;
mgl@1371
  6890
+  address += fragP->fr_fix - LDA_INITIAL_SIZE;
mgl@1371
  6891
+
mgl@1371
  6892
+  if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
mgl@1371
  6893
+    goto relax_max;
mgl@1371
  6894
+
mgl@1371
  6895
+  target = fragP->fr_offset;
mgl@1371
  6896
+  sym_frag = symbol_get_frag(symbolP);
mgl@1371
  6897
+  target += S_GET_VALUE(symbolP);
mgl@1371
  6898
+
mgl@1371
  6899
+  if (sym_frag->relax_marker != fragP->relax_marker
mgl@1371
  6900
+      && S_GET_SEGMENT(symbolP) == segment)
mgl@1371
  6901
+    target += stretch;
mgl@1371
  6902
+
mgl@1371
  6903
+  distance = target - address;
mgl@1371
  6904
+
mgl@1371
  6905
+  pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
mgl@1371
  6906
+	   target, address, fragP->fr_var);
mgl@1371
  6907
+
mgl@1371
  6908
+  if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
mgl@1371
  6909
+      && target <= 127 && (offsetT)target >= -128)
mgl@1371
  6910
+    {
mgl@1371
  6911
+      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
mgl@1371
  6912
+	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
mgl@1371
  6913
+	pool->literals[entry].refcount--;
mgl@1371
  6914
+      new_size = 2;
mgl@1371
  6915
+      fragP->fr_subtype = LDA_SUBTYPE_MOV1;
mgl@1371
  6916
+    }
mgl@1371
  6917
+  else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
mgl@1371
  6918
+	   && target <= 1048575 && (offsetT)target >= -1048576)
mgl@1371
  6919
+    {
mgl@1371
  6920
+      if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
mgl@1371
  6921
+	  || fragP->fr_subtype == LDA_SUBTYPE_LDW)
mgl@1371
  6922
+	pool->literals[entry].refcount--;
mgl@1371
  6923
+      new_size = 4;
mgl@1371
  6924
+      fragP->fr_subtype = LDA_SUBTYPE_MOV2;
mgl@1371
  6925
+    }
mgl@1371
  6926
+  else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
mgl@1371
  6927
+	   /* the field will be negated, so this is really -(-32768)
mgl@1371
  6928
+	      and -(32767) */
mgl@1371
  6929
+	   && distance <= 32768 && distance >= -32767)
mgl@1371
  6930
+    {
mgl@1371
  6931
+      if (!avr32_pic
mgl@1371
  6932
+	  && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
mgl@1371
  6933
+	      || fragP->fr_subtype == LDA_SUBTYPE_LDW))
mgl@1371
  6934
+	pool->literals[entry].refcount--;
mgl@1371
  6935
+      new_size = 4;
mgl@1371
  6936
+      fragP->fr_subtype = LDA_SUBTYPE_SUB;
mgl@1371
  6937
+    }
mgl@1371
  6938
+  else
mgl@1371
  6939
+    {
mgl@1371
  6940
+    relax_max:
mgl@1371
  6941
+      if (avr32_pic)
mgl@1371
  6942
+	{
mgl@1371
  6943
+	  if (linkrelax)
mgl@1371
  6944
+	    {
mgl@1371
  6945
+	      new_size = 8;
mgl@1371
  6946
+	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
mgl@1371
  6947
+	    }
mgl@1371
  6948
+	  else
mgl@1371
  6949
+	    {
mgl@1371
  6950
+	      new_size = 4;
mgl@1371
  6951
+	      fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
mgl@1371
  6952
+	    }
mgl@1371
  6953
+	}
mgl@1371
  6954
+      else
mgl@1371
  6955
+	{
mgl@1371
  6956
+	  if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
mgl@1371
  6957
+	      && fragP->fr_subtype != LDA_SUBTYPE_LDW)
mgl@1371
  6958
+	    pool->literals[entry].refcount++;
mgl@1371
  6959
+
mgl@1371
  6960
+	  sym_frag = symbol_get_frag(pool->symbol);
mgl@1371
  6961
+	  target = (sym_frag->fr_address + sym_frag->fr_fix
mgl@1371
  6962
+		    + pool->padding + pool->literals[entry].offset);
mgl@1371
  6963
+
mgl@1371
  6964
+	  pr_debug("cpool sym address: 0x%lx\n",
mgl@1371
  6965
+		   sym_frag->fr_address + sym_frag->fr_fix);
mgl@1371
  6966
+
mgl@1371
  6967
+	  know(pool->section == segment);
mgl@1371
  6968
+
mgl@1371
  6969
+	  if (sym_frag->relax_marker != fragP->relax_marker)
mgl@1371
  6970
+	    target += stretch;
mgl@1371
  6971
+
mgl@1371
  6972
+	  distance = target - address;
mgl@1371
  6973
+	  if (distance <= 508 && distance >= 0)
mgl@1371
  6974
+	    {
mgl@1371
  6975
+	      new_size = 2;
mgl@1371
  6976
+	      fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
mgl@1371
  6977
+	    }
mgl@1371
  6978
+	  else
mgl@1371
  6979
+	    {
mgl@1371
  6980
+	      new_size = 4;
mgl@1371
  6981
+	      fragP->fr_subtype = LDA_SUBTYPE_LDW;
mgl@1371
  6982
+	    }
mgl@1371
  6983
+
mgl@1371
  6984
+	  pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
mgl@1371
  6985
+		   target, address, pool->literals[entry].refcount);
mgl@1371
  6986
+	}
mgl@1371
  6987
+    }
mgl@1371
  6988
+
mgl@1371
  6989
+  fragP->fr_var = new_size;
mgl@1371
  6990
+
mgl@1371
  6991
+  pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
mgl@1371
  6992
+	   fragP->fr_file, fragP->fr_line,
mgl@1371
  6993
+	   fragP->fr_subtype, new_size - old_size);
mgl@1371
  6994
+
mgl@1371
  6995
+  return new_size - old_size;
mgl@1371
  6996
+}
mgl@1371
  6997
+
mgl@1371
  6998
+static long
mgl@1371
  6999
+avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
mgl@1371
  7000
+{
mgl@1371
  7001
+  struct cpool *pool = NULL;
mgl@1371
  7002
+  unsigned int entry = 0;
mgl@1371
  7003
+  addressT address, target;
mgl@1371
  7004
+  offsetT distance;
mgl@1371
  7005
+  symbolS *symbolP;
mgl@1371
  7006
+  fragS *sym_frag;
mgl@1371
  7007
+  long old_size, new_size;
mgl@1371
  7008
+
mgl@1371
  7009
+  symbolP = fragP->fr_symbol;
mgl@1371
  7010
+  old_size = fragP->fr_var;
mgl@1371
  7011
+  if (!avr32_pic)
mgl@1371
  7012
+    {
mgl@1371
  7013
+      pool = fragP->tc_frag_data.pool;
mgl@1371
  7014
+      entry = fragP->tc_frag_data.pool_entry;
mgl@1371
  7015
+    }
mgl@1371
  7016
+
mgl@1371
  7017
+  address = fragP->fr_address;
mgl@1371
  7018
+  address += fragP->fr_fix - CALL_INITIAL_SIZE;
mgl@1371
  7019
+
mgl@1371
  7020
+  if (need_reloc(symbolP, segment, 1))
mgl@1371
  7021
+    {
mgl@1371
  7022
+      pr_debug("call: must emit reloc\n");
mgl@1371
  7023
+      goto relax_max;
mgl@1371
  7024
+    }
mgl@1371
  7025
+
mgl@1371
  7026
+  target = fragP->fr_offset;
mgl@1371
  7027
+  sym_frag = symbol_get_frag(symbolP);
mgl@1371
  7028
+  target += S_GET_VALUE(symbolP);
mgl@1371
  7029
+
mgl@1371
  7030
+  if (sym_frag->relax_marker != fragP->relax_marker
mgl@1371
  7031
+      && S_GET_SEGMENT(symbolP) == segment)
mgl@1371
  7032
+    target += stretch;
mgl@1371
  7033
+
mgl@1371
  7034
+  distance = target - address;
mgl@1371
  7035
+
mgl@1371
  7036
+  if (distance <= 1022 && distance >= -1024)
mgl@1371
  7037
+    {
mgl@1371
  7038
+      pr_debug("call: distance is %d, emitting short rcall\n", distance);
mgl@1371
  7039
+      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
mgl@1371
  7040
+	pool->literals[entry].refcount--;
mgl@1371
  7041
+      new_size = 2;
mgl@1371
  7042
+      fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
mgl@1371
  7043
+    }
mgl@1371
  7044
+  else if (distance <= 2097150 && distance >= -2097152)
mgl@1371
  7045
+    {
mgl@1371
  7046
+      pr_debug("call: distance is %d, emitting long rcall\n", distance);
mgl@1371
  7047
+      if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
mgl@1371
  7048
+	pool->literals[entry].refcount--;
mgl@1371
  7049
+      new_size = 4;
mgl@1371
  7050
+      fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
mgl@1371
  7051
+    }
mgl@1371
  7052
+  else
mgl@1371
  7053
+    {
mgl@1371
  7054
+      pr_debug("call: distance %d too far, emitting something big\n", distance);
mgl@1371
  7055
+
mgl@1371
  7056
+    relax_max:
mgl@1371
  7057
+      if (avr32_pic)
mgl@1371
  7058
+	{
mgl@1371
  7059
+	  if (linkrelax)
mgl@1371
  7060
+	    {
mgl@1371
  7061
+	      new_size = 10;
mgl@1371
  7062
+	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
mgl@1371
  7063
+	    }
mgl@1371
  7064
+	  else
mgl@1371
  7065
+	    {
mgl@1371
  7066
+	      new_size = 4;
mgl@1371
  7067
+	      fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
mgl@1371
  7068
+	    }
mgl@1371
  7069
+	}
mgl@1371
  7070
+      else
mgl@1371
  7071
+	{
mgl@1371
  7072
+	  if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
mgl@1371
  7073
+	    pool->literals[entry].refcount++;
mgl@1371
  7074
+
mgl@1371
  7075
+	  new_size = 4;
mgl@1371
  7076
+	  fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
mgl@1371
  7077
+	}
mgl@1371
  7078
+    }
mgl@1371
  7079
+
mgl@1371
  7080
+  fragP->fr_var = new_size;
mgl@1371
  7081
+
mgl@1371
  7082
+  pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
mgl@1371
  7083
+	   fragP->fr_file, fragP->fr_line,
mgl@1371
  7084
+	   new_size - old_size, fragP->fr_var);
mgl@1371
  7085
+
mgl@1371
  7086
+  return new_size - old_size;
mgl@1371
  7087
+}
mgl@1371
  7088
+
mgl@1371
  7089
+static long
mgl@1371
  7090
+avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
mgl@1371
  7091
+		       fragS *fragP,
mgl@1371
  7092
+		       long stretch ATTRIBUTE_UNUSED)
mgl@1371
  7093
+{
mgl@1371
  7094
+  struct cpool *pool;
mgl@1371
  7095
+  addressT address;
mgl@1371
  7096
+  long old_size, new_size;
mgl@1371
  7097
+  unsigned int entry;
mgl@1371
  7098
+
mgl@1371
  7099
+  pool = fragP->tc_frag_data.pool;
mgl@1371
  7100
+  address = fragP->fr_address + fragP->fr_fix;
mgl@1371
  7101
+  old_size = fragP->fr_var;
mgl@1371
  7102
+  new_size = 0;
mgl@1371
  7103
+
mgl@1371
  7104
+  for (entry = 0; entry < pool->next_free_entry; entry++)
mgl@1371
  7105
+    {
mgl@1371
  7106
+      if (pool->literals[entry].refcount > 0)
mgl@1371
  7107
+	{
mgl@1371
  7108
+	  pool->literals[entry].offset = new_size;
mgl@1371
  7109
+	  new_size += 4;
mgl@1371
  7110
+	}
mgl@1371
  7111
+    }
mgl@1371
  7112
+
mgl@1371
  7113
+  fragP->fr_var = new_size;
mgl@1371
  7114
+
mgl@1371
  7115
+  return new_size - old_size;
mgl@1371
  7116
+}
mgl@1371
  7117
+
mgl@1371
  7118
+/* *fragP has been relaxed to its final size, and now needs to have
mgl@1371
  7119
+   the bytes inside it modified to conform to the new size.
mgl@1371
  7120
+
mgl@1371
  7121
+   Called after relaxation is finished.
mgl@1371
  7122
+   fragP->fr_type == rs_machine_dependent.
mgl@1371
  7123
+   fragP->fr_subtype is the subtype of what the address relaxed to.  */
mgl@1371
  7124
+
mgl@1371
  7125
+static void
mgl@1371
  7126
+avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
  7127
+			    segT segment ATTRIBUTE_UNUSED,
mgl@1371
  7128
+			    fragS *fragP)
mgl@1371
  7129
+{
mgl@1371
  7130
+  const struct avr32_opcode *opc;
mgl@1371
  7131
+  const struct avr32_ifield *ifield;
mgl@1371
  7132
+  bfd_reloc_code_real_type r_type;
mgl@1371
  7133
+  symbolS *symbolP;
mgl@1371
  7134
+  fixS *fixP;
mgl@1371
  7135
+  bfd_vma value;
mgl@1371
  7136
+  int subtype;
mgl@1371
  7137
+
mgl@1371
  7138
+  opc = &avr32_opc_table[fragP->fr_subtype];
mgl@1371
  7139
+  ifield = opc->fields[opc->var_field];
mgl@1371
  7140
+  symbolP = fragP->fr_symbol;
mgl@1371
  7141
+  subtype = fragP->fr_subtype;
mgl@1371
  7142
+  r_type = opc->reloc_type;
mgl@1371
  7143
+
mgl@1371
  7144
+  /* Clear the opcode bits and the bits belonging to the relaxed
mgl@1371
  7145
+     field.  We assume all other fields stay the same.  */
mgl@1371
  7146
+  value = bfd_getb32(fragP->fr_opcode);
mgl@1371
  7147
+  value &= ~(opc->mask | ifield->mask);
mgl@1371
  7148
+
mgl@1371
  7149
+  /* Insert the new opcode */
mgl@1371
  7150
+  value |= opc->value;
mgl@1371
  7151
+  bfd_putb32(value, fragP->fr_opcode);
mgl@1371
  7152
+
mgl@1371
  7153
+  fragP->fr_fix += opc->size - fragP->fr_var;
mgl@1371
  7154
+
mgl@1371
  7155
+  if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
mgl@1371
  7156
+    {
mgl@1371
  7157
+      switch (fragP->tc_frag_data.reloc_info)
mgl@1371
  7158
+	{
mgl@1371
  7159
+	case AVR32_OPINFO_HI:
mgl@1371
  7160
+	  r_type = BFD_RELOC_HI16;
mgl@1371
  7161
+	  break;
mgl@1371
  7162
+	case AVR32_OPINFO_LO:
mgl@1371
  7163
+	  r_type = BFD_RELOC_LO16;
mgl@1371
  7164
+	  break;
mgl@1371
  7165
+	case AVR32_OPINFO_GOT:
mgl@1371
  7166
+	  switch (r_type)
mgl@1371
  7167
+	    {
mgl@1371
  7168
+	    case BFD_RELOC_AVR32_18W_PCREL:
mgl@1371
  7169
+	      r_type = BFD_RELOC_AVR32_GOT18SW;
mgl@1371
  7170
+	      break;
mgl@1371
  7171
+	    case BFD_RELOC_AVR32_16S:
mgl@1371
  7172
+	      r_type = BFD_RELOC_AVR32_GOT16S;
mgl@1371
  7173
+	      break;
mgl@1371
  7174
+	    default:
mgl@1371
  7175
+	      BAD_CASE(r_type);
mgl@1371
  7176
+	      break;
mgl@1371
  7177
+	    }
mgl@1371
  7178
+	  break;
mgl@1371
  7179
+	default:
mgl@1371
  7180
+	  BAD_CASE(fragP->tc_frag_data.reloc_info);
mgl@1371
  7181
+	  break;
mgl@1371
  7182
+	}
mgl@1371
  7183
+    }
mgl@1371
  7184
+
mgl@1371
  7185
+  pr_debug("%s:%d: convert_frag: new %s fixup\n",
mgl@1371
  7186
+	   fragP->fr_file, fragP->fr_line,
mgl@1371
  7187
+	   bfd_get_reloc_code_name(r_type));
mgl@1371
  7188
+
mgl@1371
  7189
+#if 1
mgl@1371
  7190
+  fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
mgl@1371
  7191
+		     &fragP->tc_frag_data.exp,
mgl@1371
  7192
+		     fragP->tc_frag_data.pcrel, r_type);
mgl@1371
  7193
+#else
mgl@1371
  7194
+  fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
mgl@1371
  7195
+		 fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
mgl@1371
  7196
+#endif
mgl@1371
  7197
+
mgl@1371
  7198
+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
mgl@1371
  7199
+     the point of the fixup, relative to the frag address.  fix_new()
mgl@1371
  7200
+     and friends think they are only being called during the assembly
mgl@1371
  7201
+     pass, not during relaxation or similar, so fx_dot_value, fx_file
mgl@1371
  7202
+     and fx_line are all initialized to the wrong value.  But we don't
mgl@1371
  7203
+     know the size of the fixup until now, so we really can't live up
mgl@1371
  7204
+     to the assumptions these functions make about the target.  What
mgl@1371
  7205
+     do these functions think the "where" and "frag" argument mean
mgl@1371
  7206
+     anyway?  */
mgl@1371
  7207
+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
mgl@1371
  7208
+  fixP->fx_file = fragP->fr_file;
mgl@1371
  7209
+  fixP->fx_line = fragP->fr_line;
mgl@1371
  7210
+
mgl@1371
  7211
+  fixP->tc_fix_data.ifield = ifield;
mgl@1371
  7212
+  fixP->tc_fix_data.align = avr32_rs_align(subtype);
mgl@1371
  7213
+  fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
mgl@1371
  7214
+  fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
mgl@1371
  7215
+}
mgl@1371
  7216
+
mgl@1371
  7217
+static void
mgl@1371
  7218
+avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
  7219
+		       segT segment ATTRIBUTE_UNUSED,
mgl@1371
  7220
+		       fragS *fragP)
mgl@1371
  7221
+{
mgl@1371
  7222
+  const struct avr32_opcode *opc;
mgl@1371
  7223
+  const struct avr32_ifield *ifield;
mgl@1371
  7224
+  bfd_reloc_code_real_type r_type;
mgl@1371
  7225
+  expressionS exp;
mgl@1371
  7226
+  struct cpool *pool;
mgl@1371
  7227
+  fixS *fixP;
mgl@1371
  7228
+  bfd_vma value;
mgl@1371
  7229
+  int regid, pcrel = 0, align = 0;
mgl@1371
  7230
+  char *p;
mgl@1371
  7231
+
mgl@1371
  7232
+  r_type = BFD_RELOC_NONE;
mgl@1371
  7233
+  regid = fragP->tc_frag_data.reloc_info;
mgl@1371
  7234
+  p = fragP->fr_opcode;
mgl@1371
  7235
+  exp.X_add_symbol = fragP->fr_symbol;
mgl@1371
  7236
+  exp.X_add_number = fragP->fr_offset;
mgl@1371
  7237
+  exp.X_op = O_symbol;
mgl@1371
  7238
+
mgl@1371
  7239
+  pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
mgl@1371
  7240
+	   fragP->fr_file, fragP->fr_line,
mgl@1371
  7241
+	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
mgl@1371
  7242
+
mgl@1371
  7243
+  switch (fragP->fr_subtype)
mgl@1371
  7244
+    {
mgl@1371
  7245
+    case LDA_SUBTYPE_MOV1:
mgl@1371
  7246
+      opc = &avr32_opc_table[AVR32_OPC_MOV1];
mgl@1371
  7247
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7248
+      ifield = opc->fields[1];
mgl@1371
  7249
+      r_type = opc->reloc_type;
mgl@1371
  7250
+      break;
mgl@1371
  7251
+    case LDA_SUBTYPE_MOV2:
mgl@1371
  7252
+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
mgl@1371
  7253
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7254
+      ifield = opc->fields[1];
mgl@1371
  7255
+      r_type = opc->reloc_type;
mgl@1371
  7256
+      break;
mgl@1371
  7257
+    case LDA_SUBTYPE_SUB:
mgl@1371
  7258
+      opc = &avr32_opc_table[AVR32_OPC_SUB5];
mgl@1371
  7259
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7260
+      opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
mgl@1371
  7261
+      ifield = opc->fields[2];
mgl@1371
  7262
+      r_type = BFD_RELOC_AVR32_16N_PCREL;
mgl@1371
  7263
+
mgl@1371
  7264
+      /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
mgl@1371
  7265
+	 We'll have to fix it up later when we know whether to
mgl@1371
  7266
+	 generate a reloc for it (in which case the linker will negate
mgl@1371
  7267
+	 it, so we shouldn't). */
mgl@1371
  7268
+      pcrel = 1;
mgl@1371
  7269
+      break;
mgl@1371
  7270
+    case LDA_SUBTYPE_LDDPC:
mgl@1371
  7271
+      opc = &avr32_opc_table[AVR32_OPC_LDDPC];
mgl@1371
  7272
+      align = 2;
mgl@1371
  7273
+      r_type = BFD_RELOC_AVR32_9W_CP;
mgl@1371
  7274
+      goto cpool_common;
mgl@1371
  7275
+    case LDA_SUBTYPE_LDW:
mgl@1371
  7276
+      opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
mgl@1371
  7277
+      r_type = BFD_RELOC_AVR32_16_CP;
mgl@1371
  7278
+    cpool_common:
mgl@1371
  7279
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7280
+      ifield = opc->fields[1];
mgl@1371
  7281
+      pool = fragP->tc_frag_data.pool;
mgl@1371
  7282
+      exp.X_add_symbol = pool->symbol;
mgl@1371
  7283
+      exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
mgl@1371
  7284
+      pcrel = 1;
mgl@1371
  7285
+      break;
mgl@1371
  7286
+    case LDA_SUBTYPE_GOTLOAD_LARGE:
mgl@1371
  7287
+      /* ld.w Rd, r6[Rd << 2] (last) */
mgl@1371
  7288
+      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
mgl@1371
  7289
+      bfd_putb32(opc->value, p + 4);
mgl@1371
  7290
+      opc->fields[0]->insert(opc->fields[0], p + 4, regid);
mgl@1371
  7291
+      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
mgl@1371
  7292
+      opc->fields[2]->insert(opc->fields[2], p + 4, regid);
mgl@1371
  7293
+      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
mgl@1371
  7294
+
mgl@1371
  7295
+      /* mov Rd, (got_offset / 4) */
mgl@1371
  7296
+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
mgl@1371
  7297
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7298
+      ifield = opc->fields[1];
mgl@1371
  7299
+      r_type = BFD_RELOC_AVR32_LDA_GOT;
mgl@1371
  7300
+      break;
mgl@1371
  7301
+    case LDA_SUBTYPE_GOTLOAD:
mgl@1371
  7302
+      opc = &avr32_opc_table[AVR32_OPC_LD_W4];
mgl@1371
  7303
+      opc->fields[0]->insert(opc->fields[0], p, regid);
mgl@1371
  7304
+      opc->fields[1]->insert(opc->fields[1], p, 6);
mgl@1371
  7305
+      ifield = opc->fields[2];
mgl@1371
  7306
+      if (r_type == BFD_RELOC_NONE)
mgl@1371
  7307
+	r_type = BFD_RELOC_AVR32_GOT16S;
mgl@1371
  7308
+      break;
mgl@1371
  7309
+    default:
mgl@1371
  7310
+      BAD_CASE(fragP->fr_subtype);
mgl@1371
  7311
+    }
mgl@1371
  7312
+
mgl@1371
  7313
+  value = bfd_getb32(p);
mgl@1371
  7314
+  value &= ~(opc->mask | ifield->mask);
mgl@1371
  7315
+  value |= opc->value;
mgl@1371
  7316
+  bfd_putb32(value, p);
mgl@1371
  7317
+
mgl@1371
  7318
+  fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
mgl@1371
  7319
+
mgl@1371
  7320
+  if (fragP->fr_next
mgl@1371
  7321
+      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
mgl@1371
  7322
+	  != fragP->fr_fix))
mgl@1371
  7323
+    {
mgl@1371
  7324
+      fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
mgl@1371
  7325
+	      fragP->fr_var, bfd_get_reloc_code_name(r_type));
mgl@1371
  7326
+      abort();
mgl@1371
  7327
+    }
mgl@1371
  7328
+
mgl@1371
  7329
+  fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
mgl@1371
  7330
+		     &exp, pcrel, r_type);
mgl@1371
  7331
+
mgl@1371
  7332
+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
mgl@1371
  7333
+     the point of the fixup, relative to the frag address.  fix_new()
mgl@1371
  7334
+     and friends think they are only being called during the assembly
mgl@1371
  7335
+     pass, not during relaxation or similar, so fx_dot_value, fx_file
mgl@1371
  7336
+     and fx_line are all initialized to the wrong value.  But we don't
mgl@1371
  7337
+     know the size of the fixup until now, so we really can't live up
mgl@1371
  7338
+     to the assumptions these functions make about the target.  What
mgl@1371
  7339
+     do these functions think the "where" and "frag" argument mean
mgl@1371
  7340
+     anyway?  */
mgl@1371
  7341
+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
mgl@1371
  7342
+  fixP->fx_file = fragP->fr_file;
mgl@1371
  7343
+  fixP->fx_line = fragP->fr_line;
mgl@1371
  7344
+
mgl@1371
  7345
+  fixP->tc_fix_data.ifield = ifield;
mgl@1371
  7346
+  fixP->tc_fix_data.align = align;
mgl@1371
  7347
+  /* these are only used if the fixup can actually be resolved */
mgl@1371
  7348
+  fixP->tc_fix_data.min = -32768;
mgl@1371
  7349
+  fixP->tc_fix_data.max = 32767;
mgl@1371
  7350
+}
mgl@1371
  7351
+
mgl@1371
  7352
+static void
mgl@1371
  7353
+avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
  7354
+		       segT segment ATTRIBUTE_UNUSED,
mgl@1371
  7355
+		       fragS *fragP)
mgl@1371
  7356
+{
mgl@1371
  7357
+  const struct avr32_opcode *opc = NULL;
mgl@1371
  7358
+  const struct avr32_ifield *ifield;
mgl@1371
  7359
+  bfd_reloc_code_real_type r_type;
mgl@1371
  7360
+  symbolS *symbol;
mgl@1371
  7361
+  offsetT offset;
mgl@1371
  7362
+  fixS *fixP;
mgl@1371
  7363
+  bfd_vma value;
mgl@1371
  7364
+  int pcrel = 0, align = 0;
mgl@1371
  7365
+  char *p;
mgl@1371
  7366
+
mgl@1371
  7367
+  symbol = fragP->fr_symbol;
mgl@1371
  7368
+  offset = fragP->fr_offset;
mgl@1371
  7369
+  r_type = BFD_RELOC_NONE;
mgl@1371
  7370
+  p = fragP->fr_opcode;
mgl@1371
  7371
+
mgl@1371
  7372
+  pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
mgl@1371
  7373
+	   fragP->fr_file, fragP->fr_line,
mgl@1371
  7374
+	   fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
mgl@1371
  7375
+
mgl@1371
  7376
+  switch (fragP->fr_subtype)
mgl@1371
  7377
+    {
mgl@1371
  7378
+    case CALL_SUBTYPE_RCALL1:
mgl@1371
  7379
+      opc = &avr32_opc_table[AVR32_OPC_RCALL1];
mgl@1371
  7380
+      /* fall through */
mgl@1371
  7381
+    case CALL_SUBTYPE_RCALL2:
mgl@1371
  7382
+      if (!opc)
mgl@1371
  7383
+	opc = &avr32_opc_table[AVR32_OPC_RCALL2];
mgl@1371
  7384
+      ifield = opc->fields[0];
mgl@1371
  7385
+      r_type = opc->reloc_type;
mgl@1371
  7386
+      pcrel = 1;
mgl@1371
  7387
+      align = 1;
mgl@1371
  7388
+      break;
mgl@1371
  7389
+    case CALL_SUBTYPE_MCALL_CP:
mgl@1371
  7390
+      opc = &avr32_opc_table[AVR32_OPC_MCALL];
mgl@1371
  7391
+      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
mgl@1371
  7392
+      ifield = opc->fields[1];
mgl@1371
  7393
+      r_type = BFD_RELOC_AVR32_CPCALL;
mgl@1371
  7394
+      symbol = fragP->tc_frag_data.pool->symbol;
mgl@1371
  7395
+      offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
mgl@1371
  7396
+      assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
mgl@1371
  7397
+      pcrel = 1;
mgl@1371
  7398
+      align = 2;
mgl@1371
  7399
+      break;
mgl@1371
  7400
+    case CALL_SUBTYPE_MCALL_GOT:
mgl@1371
  7401
+      opc = &avr32_opc_table[AVR32_OPC_MCALL];
mgl@1371
  7402
+      opc->fields[0]->insert(opc->fields[0], p, 6);
mgl@1371
  7403
+      ifield = opc->fields[1];
mgl@1371
  7404
+      r_type = BFD_RELOC_AVR32_GOT18SW;
mgl@1371
  7405
+      break;
mgl@1371
  7406
+    case CALL_SUBTYPE_MCALL_LARGE:
mgl@1371
  7407
+      assert(fragP->fr_var == 10);
mgl@1371
  7408
+      /* ld.w lr, r6[lr << 2] */
mgl@1371
  7409
+      opc = &avr32_opc_table[AVR32_OPC_LD_W5];
mgl@1371
  7410
+      bfd_putb32(opc->value, p + 4);
mgl@1371
  7411
+      opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
mgl@1371
  7412
+      opc->fields[1]->insert(opc->fields[1], p + 4, 6);
mgl@1371
  7413
+      opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
mgl@1371
  7414
+      opc->fields[3]->insert(opc->fields[3], p + 4, 2);
mgl@1371
  7415
+
mgl@1371
  7416
+      /* icall lr */
mgl@1371
  7417
+      opc = &avr32_opc_table[AVR32_OPC_ICALL];
mgl@1371
  7418
+      bfd_putb16(opc->value >> 16, p + 8);
mgl@1371
  7419
+      opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
mgl@1371
  7420
+
mgl@1371
  7421
+      /* mov lr, (got_offset / 4) */
mgl@1371
  7422
+      opc = &avr32_opc_table[AVR32_OPC_MOV2];
mgl@1371
  7423
+      opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
mgl@1371
  7424
+      ifield = opc->fields[1];
mgl@1371
  7425
+      r_type = BFD_RELOC_AVR32_GOTCALL;
mgl@1371
  7426
+      break;
mgl@1371
  7427
+    default:
mgl@1371
  7428
+      BAD_CASE(fragP->fr_subtype);
mgl@1371
  7429
+    }
mgl@1371
  7430
+
mgl@1371
  7431
+  /* Insert the opcode and clear the variable ifield */
mgl@1371
  7432
+  value = bfd_getb32(p);
mgl@1371
  7433
+  value &= ~(opc->mask | ifield->mask);
mgl@1371
  7434
+  value |= opc->value;
mgl@1371
  7435
+  bfd_putb32(value, p);
mgl@1371
  7436
+
mgl@1371
  7437
+  fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
mgl@1371
  7438
+
mgl@1371
  7439
+  if (fragP->fr_next
mgl@1371
  7440
+      && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
mgl@1371
  7441
+	  != fragP->fr_fix))
mgl@1371
  7442
+    {
mgl@1371
  7443
+      fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
mgl@1371
  7444
+	      fragP->fr_file, fragP->fr_line,
mgl@1371
  7445
+	      fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
mgl@1371
  7446
+      fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
mgl@1371
  7447
+	      (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
mgl@1371
  7448
+	      fragP->fr_next->fr_file, fragP->fr_next->fr_line);
mgl@1371
  7449
+    }
mgl@1371
  7450
+
mgl@1371
  7451
+  fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
mgl@1371
  7452
+		 symbol, offset, pcrel, r_type);
mgl@1371
  7453
+
mgl@1371
  7454
+  /* Revert fix_new brain damage. "dot_value" is the value of PC at
mgl@1371
  7455
+     the point of the fixup, relative to the frag address.  fix_new()
mgl@1371
  7456
+     and friends think they are only being called during the assembly
mgl@1371
  7457
+     pass, not during relaxation or similar, so fx_dot_value, fx_file
mgl@1371
  7458
+     and fx_line are all initialized to the wrong value.  But we don't
mgl@1371
  7459
+     know the size of the fixup until now, so we really can't live up
mgl@1371
  7460
+     to the assumptions these functions make about the target.  What
mgl@1371
  7461
+     do these functions think the "where" and "frag" argument mean
mgl@1371
  7462
+     anyway?  */
mgl@1371
  7463
+  fixP->fx_dot_value = fragP->fr_fix - opc->size;
mgl@1371
  7464
+  fixP->fx_file = fragP->fr_file;
mgl@1371
  7465
+  fixP->fx_line = fragP->fr_line;
mgl@1371
  7466
+
mgl@1371
  7467
+  fixP->tc_fix_data.ifield = ifield;
mgl@1371
  7468
+  fixP->tc_fix_data.align = align;
mgl@1371
  7469
+  /* these are only used if the fixup can actually be resolved */
mgl@1371
  7470
+  fixP->tc_fix_data.min = -2097152;
mgl@1371
  7471
+  fixP->tc_fix_data.max = 2097150;
mgl@1371
  7472
+}
mgl@1371
  7473
+
mgl@1371
  7474
+static void
mgl@1371
  7475
+avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
mgl@1371
  7476
+			 segT segment ATTRIBUTE_UNUSED,
mgl@1371
  7477
+			 fragS *fragP)
mgl@1371
  7478
+{
mgl@1371
  7479
+  struct cpool *pool;
mgl@1371
  7480
+  addressT address;
mgl@1371
  7481
+  unsigned int entry;
mgl@1371
  7482
+  char *p;
mgl@1371
  7483
+  char sym_name[20];
mgl@1371
  7484
+
mgl@1371
  7485
+  /* Did we get rid of the frag altogether? */
mgl@1371
  7486
+  if (!fragP->fr_var)
mgl@1371
  7487
+    return;
mgl@1371
  7488
+
mgl@1371
  7489
+  pool = fragP->tc_frag_data.pool;
mgl@1371
  7490
+  address = fragP->fr_address + fragP->fr_fix;
mgl@1371
  7491
+  p = fragP->fr_literal + fragP->fr_fix;
mgl@1371
  7492
+
mgl@1371
  7493
+  sprintf(sym_name, "$$cp_\002%x", pool->id);
mgl@1371
  7494
+  symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
mgl@1371
  7495
+  symbol_table_insert(pool->symbol);
mgl@1371
  7496
+
mgl@1371
  7497
+  for (entry = 0; entry < pool->next_free_entry; entry++)
mgl@1371
  7498
+    {
mgl@1371
  7499
+      if (pool->literals[entry].refcount > 0)
mgl@1371
  7500
+	{
mgl@1371
  7501
+	  fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
mgl@1371
  7502
+		      FALSE, BFD_RELOC_AVR32_32_CPENT);
mgl@1371
  7503
+	  fragP->fr_fix += 4;
mgl@1371
  7504
+	}
mgl@1371
  7505
+    }
mgl@1371
  7506
+}
mgl@1371
  7507
+
mgl@1371
  7508
+static struct avr32_relaxer avr32_default_relaxer = {
mgl@1371
  7509
+  .estimate_size	= avr32_default_estimate_size_before_relax,
mgl@1371
  7510
+  .relax_frag		= avr32_default_relax_frag,
mgl@1371
  7511
+  .convert_frag		= avr32_default_convert_frag,
mgl@1371
  7512
+};
mgl@1371
  7513
+static struct avr32_relaxer avr32_lda_relaxer = {
mgl@1371
  7514
+  .estimate_size	= avr32_lda_estimate_size_before_relax,
mgl@1371
  7515
+  .relax_frag		= avr32_lda_relax_frag,
mgl@1371
  7516
+  .convert_frag		= avr32_lda_convert_frag,
mgl@1371
  7517
+};
mgl@1371
  7518
+static struct avr32_relaxer avr32_call_relaxer = {
mgl@1371
  7519
+  .estimate_size	= avr32_call_estimate_size_before_relax,
mgl@1371
  7520
+  .relax_frag		= avr32_call_relax_frag,
mgl@1371
  7521
+  .convert_frag		= avr32_call_convert_frag,
mgl@1371
  7522
+};
mgl@1371
  7523
+static struct avr32_relaxer avr32_cpool_relaxer = {
mgl@1371
  7524
+  .estimate_size	= avr32_cpool_estimate_size_before_relax,
mgl@1371
  7525
+  .relax_frag		= avr32_cpool_relax_frag,
mgl@1371
  7526
+  .convert_frag		= avr32_cpool_convert_frag,
mgl@1371
  7527
+};
mgl@1371
  7528
+
mgl@1371
  7529
+static void s_cpool(int arg ATTRIBUTE_UNUSED)
mgl@1371
  7530
+{
mgl@1371
  7531
+  struct cpool *pool;
mgl@1371
  7532
+  unsigned int max_size;
mgl@1371
  7533
+  char *buf;
mgl@1371
  7534
+
mgl@1371
  7535
+  pool = find_cpool(now_seg, now_subseg);
mgl@1371
  7536
+  if (!pool || !pool->symbol || pool->next_free_entry == 0)
mgl@1371
  7537
+    return;
mgl@1371
  7538
+
mgl@1371
  7539
+  /* Make sure the constant pool is properly aligned */
mgl@1371
  7540
+  frag_align_code(2, 0);
mgl@1371
  7541
+  if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
mgl@1371
  7542
+    bfd_set_section_alignment(stdoutput, pool->section, 2);
mgl@1371
  7543
+
mgl@1371
  7544
+  /* Assume none of the entries are discarded, and that we need the
mgl@1371
  7545
+     maximum amount of alignment.  But we're not going to allocate
mgl@1371
  7546
+     anything up front. */
mgl@1371
  7547
+  max_size = pool->next_free_entry * 4 + 2;
mgl@1371
  7548
+  frag_grow(max_size);
mgl@1371
  7549
+  buf = frag_more(0);
mgl@1371
  7550
+
mgl@1371
  7551
+  frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
mgl@1371
  7552
+  frag_now->tc_frag_data.pool = pool;
mgl@1371
  7553
+
mgl@1371
  7554
+  symbol_set_frag(pool->symbol, frag_now);
mgl@1371
  7555
+
mgl@1371
  7556
+  /* Assume zero initial size, allowing other relaxers to be
mgl@1371
  7557
+     optimistic about things.  */
mgl@1371
  7558
+  frag_var(rs_machine_dependent, max_size, 0,
mgl@1371
  7559
+	   0, pool->symbol, 0, NULL);
mgl@1371
  7560
+
mgl@1371
  7561
+  /* Mark the pool as empty.  */
mgl@1371
  7562
+  pool->used = 1;
mgl@1371
  7563
+}
mgl@1371
  7564
+
mgl@1371
  7565
+/* The location from which a PC relative jump should be calculated,
mgl@1371
  7566
+   given a PC relative reloc.  */
mgl@1371
  7567
+
mgl@1371
  7568
+long
mgl@1371
  7569
+md_pcrel_from_section (fixS *fixP, segT sec)
mgl@1371
  7570
+{
mgl@1371
  7571
+  pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
mgl@1371
  7572
+
mgl@1371
  7573
+  if (fixP->fx_addsy != NULL
mgl@1371
  7574
+      && (! S_IS_DEFINED (fixP->fx_addsy)
mgl@1371
  7575
+          || S_GET_SEGMENT (fixP->fx_addsy) != sec
mgl@1371
  7576
+	  || S_FORCE_RELOC(fixP->fx_addsy, 1)))
mgl@1371
  7577
+    {
mgl@1371
  7578
+      pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
mgl@1371
  7579
+
mgl@1371
  7580
+      /* The symbol is undefined (or is defined but not in this section).
mgl@1371
  7581
+	 Let the linker figure it out.  */
mgl@1371
  7582
+      return 0;
mgl@1371
  7583
+    }
mgl@1371
  7584
+
mgl@1371
  7585
+  pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
mgl@1371
  7586
+	   fixP->fx_frag->fr_address, fixP->fx_where,
mgl@1371
  7587
+	   fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
mgl@1371
  7588
+	   fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
mgl@1371
  7589
+
mgl@1371
  7590
+  return ((fixP->fx_frag->fr_address + fixP->fx_where)
mgl@1371
  7591
+	  & (~0UL << fixP->tc_fix_data.align));
mgl@1371
  7592
+}
mgl@1371
  7593
+
mgl@1371
  7594
+valueT
mgl@1371
  7595
+md_section_align (segT segment, valueT size)
mgl@1371
  7596
+{
mgl@1371
  7597
+  int align = bfd_get_section_alignment (stdoutput, segment);
mgl@1371
  7598
+  return ((size + (1 << align) - 1) & (-1 << align));
mgl@1371
  7599
+}
mgl@1371
  7600
+
mgl@1371
  7601
+static int syntax_matches(const struct avr32_syntax *syntax,
mgl@1371
  7602
+			  char *str)
mgl@1371
  7603
+{
mgl@1371
  7604
+  int i;
mgl@1371
  7605
+
mgl@1371
  7606
+  pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
mgl@1371
  7607
+
mgl@1371
  7608
+  if (syntax->nr_operands < 0)
mgl@1371
  7609
+    {
mgl@1371
  7610
+      struct avr32_operand *op;
mgl@1371
  7611
+      int optype;
mgl@1371
  7612
+
mgl@1371
  7613
+      for (i = 0; i < (-syntax->nr_operands - 1); i++)
mgl@1371
  7614
+	{
mgl@1371
  7615
+	  char *p;
mgl@1371
  7616
+	  char c;
mgl@1371
  7617
+
mgl@1371
  7618
+	  optype = syntax->operand[i];
mgl@1371
  7619
+	  assert(optype < AVR32_NR_OPERANDS);
mgl@1371
  7620
+	  op = &avr32_operand_table[optype];
mgl@1371
  7621
+
mgl@1371
  7622
+	  for (p = str; *p; p++)
mgl@1371
  7623
+	    if (*p == ',')
mgl@1371
  7624
+	      break;
mgl@1371
  7625
+
mgl@1371
  7626
+	  if (p == str)
mgl@1371
  7627
+	    return 0;
mgl@1371
  7628
+
mgl@1371
  7629
+	  c = *p;
mgl@1371
  7630
+	  *p = 0;
mgl@1371
  7631
+
mgl@1371
  7632
+	  if (!op->match(str))
mgl@1371
  7633
+	    {
mgl@1371
  7634
+	      *p = c;
mgl@1371
  7635
+	      return 0;
mgl@1371
  7636
+	    }
mgl@1371
  7637
+
mgl@1371
  7638
+	  str = p;
mgl@1371
  7639
+	  *p = c;
mgl@1371
  7640
+	  if (c)
mgl@1371
  7641
+	    str++;
mgl@1371
  7642
+	}
mgl@1371
  7643
+
mgl@1371
  7644
+      optype = syntax->operand[i];
mgl@1371
  7645
+      assert(optype < AVR32_NR_OPERANDS);
mgl@1371
  7646
+      op = &avr32_operand_table[optype];
mgl@1371
  7647
+
mgl@1371
  7648
+      if (!op->match(str))
mgl@1371
  7649
+	return 0;
mgl@1371
  7650
+      return 1;
mgl@1371
  7651
+    }
mgl@1371
  7652
+
mgl@1371
  7653
+  for (i = 0; i < syntax->nr_operands; i++)
mgl@1371
  7654
+    {
mgl@1371
  7655
+      struct avr32_operand *op;
mgl@1371
  7656
+      int optype = syntax->operand[i];
mgl@1371
  7657
+      char *p;
mgl@1371
  7658
+      char c;
mgl@1371
  7659
+
mgl@1371
  7660
+      assert(optype < AVR32_NR_OPERANDS);
mgl@1371
  7661
+      op = &avr32_operand_table[optype];
mgl@1371
  7662
+
mgl@1371
  7663
+      for (p = str; *p; p++)
mgl@1371
  7664
+	if (*p == ',')
mgl@1371
  7665
+	  break;
mgl@1371
  7666
+
mgl@1371
  7667
+      if (p == str)
mgl@1371
  7668
+	return 0;
mgl@1371
  7669
+
mgl@1371
  7670
+      c = *p;
mgl@1371
  7671
+      *p = 0;
mgl@1371
  7672
+
mgl@1371
  7673
+      if (!op->match(str))
mgl@1371
  7674
+	{
mgl@1371
  7675
+	  *p = c;
mgl@1371
  7676
+	  return 0;
mgl@1371
  7677
+	}
mgl@1371
  7678
+
mgl@1371
  7679
+      str = p;
mgl@1371
  7680
+      *p = c;
mgl@1371
  7681
+      if (c)
mgl@1371
  7682
+	str++;
mgl@1371
  7683
+    }
mgl@1371
  7684
+
mgl@1371
  7685
+  if (*str == '\0')
mgl@1371
  7686
+    return 1;
mgl@1371
  7687
+
mgl@1371
  7688
+  if ((*str == 'e' || *str == 'E') && !str[1])
mgl@1371
  7689
+    return 1;
mgl@1371
  7690
+
mgl@1371
  7691
+  return 0;
mgl@1371
  7692
+}
mgl@1371
  7693
+
mgl@1371
  7694
+static int parse_operands(char *str)
mgl@1371
  7695
+{
mgl@1371
  7696
+  int i;
mgl@1371
  7697
+
mgl@1371
  7698
+  if (current_insn.syntax->nr_operands < 0)
mgl@1371
  7699
+    {
mgl@1371
  7700
+      int optype;
mgl@1371
  7701
+      struct avr32_operand *op;
mgl@1371
  7702
+
mgl@1371
  7703
+      for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
mgl@1371
  7704
+	{
mgl@1371
  7705
+	  char *p;
mgl@1371
  7706
+	  char c;
mgl@1371
  7707
+
mgl@1371
  7708
+	  optype = current_insn.syntax->operand[i];
mgl@1371
  7709
+	  op = &avr32_operand_table[optype];
mgl@1371
  7710
+
mgl@1371
  7711
+	  for (p = str; *p; p++)
mgl@1371
  7712
+	    if (*p == ',')
mgl@1371
  7713
+	      break;
mgl@1371
  7714
+
mgl@1371
  7715
+	  assert(p != str);
mgl@1371
  7716
+
mgl@1371
  7717
+	  c = *p, *p = 0;
mgl@1371
  7718
+	  op->parse(op, str, i);
mgl@1371
  7719
+	  *p = c;
mgl@1371
  7720
+
mgl@1371
  7721
+	  str = p;
mgl@1371
  7722
+	  if (c) str++;
mgl@1371
  7723
+	}
mgl@1371
  7724
+
mgl@1371
  7725
+      /* give the rest of the line to the last operand */
mgl@1371
  7726
+      optype = current_insn.syntax->operand[i];
mgl@1371
  7727
+      op = &avr32_operand_table[optype];
mgl@1371
  7728
+      op->parse(op, str, i);
mgl@1371
  7729
+    }
mgl@1371
  7730
+  else
mgl@1371
  7731
+    {
mgl@1371
  7732
+      for (i = 0; i < current_insn.syntax->nr_operands; i++)
mgl@1371
  7733
+	{
mgl@1371
  7734
+	  int optype = current_insn.syntax->operand[i];
mgl@1371
  7735
+	  struct avr32_operand *op = &avr32_operand_table[optype];
mgl@1371
  7736
+	  char *p;
mgl@1371
  7737
+	  char c;
mgl@1371
  7738
+
mgl@1371
  7739
+	  skip_whitespace(str);
mgl@1371
  7740
+
mgl@1371
  7741
+	  for (p = str; *p; p++)
mgl@1371
  7742
+	    if (*p == ',')
mgl@1371
  7743
+	      break;
mgl@1371
  7744
+
mgl@1371
  7745
+	  assert(p != str);
mgl@1371
  7746
+
mgl@1371
  7747
+	  c = *p, *p = 0;
mgl@1371
  7748
+	  op->parse(op, str, i);
mgl@1371
  7749
+	  *p = c;
mgl@1371
  7750
+
mgl@1371
  7751
+	  str = p;
mgl@1371
  7752
+	  if (c) str++;
mgl@1371
  7753
+	}
mgl@1371
  7754
+
mgl@1371
  7755
+      if (*str == 'E' || *str == 'e')
mgl@1371
  7756
+	current_insn.force_extended = 1;
mgl@1371
  7757
+    }
mgl@1371
  7758
+
mgl@1371
  7759
+  return 0;
mgl@1371
  7760
+}
mgl@1371
  7761
+
mgl@1371
  7762
+static const char *
mgl@1371
  7763
+finish_insn(const struct avr32_opcode *opc)
mgl@1371
  7764
+{
mgl@1371
  7765
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  7766
+  unsigned int i;
mgl@1371
  7767
+  int will_relax = 0;
mgl@1371
  7768
+  char *buf;
mgl@1371
  7769
+
mgl@1371
  7770
+  assert(current_insn.next_slot == opc->nr_fields);
mgl@1371
  7771
+
mgl@1371
  7772
+  pr_debug("%s:%d: finish_insn: trying opcode %d\n",
mgl@1371
  7773
+	   frag_now->fr_file, frag_now->fr_line, opc->id);
mgl@1371
  7774
+
mgl@1371
  7775
+  /* Go through the relaxation stage for all instructions that can
mgl@1371
  7776
+     possibly take a symbolic immediate.  The relax code will take
mgl@1371
  7777
+     care of range checking and alignment.  */
mgl@1371
  7778
+  if (opc->var_field != -1)
mgl@1371
  7779
+    {
mgl@1371
  7780
+      int substate, largest_substate;
mgl@1371
  7781
+      symbolS *sym;
mgl@1371
  7782
+      offsetT off;
mgl@1371
  7783
+
mgl@1371
  7784
+      will_relax = 1;
mgl@1371
  7785
+      substate = largest_substate = opc_initial_substate(opc);
mgl@1371
  7786
+
mgl@1371
  7787
+      while (relax_more(largest_substate) != AVR32_RS_NONE)
mgl@1371
  7788
+	largest_substate = relax_more(largest_substate);
mgl@1371
  7789
+
mgl@1371
  7790
+      pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
mgl@1371
  7791
+	       substate, avr32_rs_size(substate),
mgl@1371
  7792
+	       largest_substate, avr32_rs_size(largest_substate));
mgl@1371
  7793
+
mgl@1371
  7794
+      /* make sure we have enough room for the largest possible opcode */
mgl@1371
  7795
+      frag_grow(avr32_rs_size(largest_substate));
mgl@1371
  7796
+      buf = frag_more(opc->size);
mgl@1371
  7797
+
mgl@1371
  7798
+      dwarf2_emit_insn(opc->size);
mgl@1371
  7799
+
mgl@1371
  7800
+      frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
mgl@1371
  7801
+      frag_now->tc_frag_data.pcrel = current_insn.pcrel;
mgl@1371
  7802
+      frag_now->tc_frag_data.force_extended = current_insn.force_extended;
mgl@1371
  7803
+      frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
mgl@1371
  7804
+
mgl@1371
  7805
+      if (exp->X_op == O_hi)
mgl@1371
  7806
+	{
mgl@1371
  7807
+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
mgl@1371
  7808
+	  exp->X_op = exp->X_md;
mgl@1371
  7809
+	}
mgl@1371
  7810
+      else if (exp->X_op == O_lo)
mgl@1371
  7811
+	{
mgl@1371
  7812
+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
mgl@1371
  7813
+	  exp->X_op = exp->X_md;
mgl@1371
  7814
+	}
mgl@1371
  7815
+      else if (exp->X_op == O_got)
mgl@1371
  7816
+	{
mgl@1371
  7817
+	  frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
mgl@1371
  7818
+	  exp->X_op = O_symbol;
mgl@1371
  7819
+	}
mgl@1371
  7820
+
mgl@1371
  7821
+#if 0
mgl@1371
  7822
+      if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
mgl@1371
  7823
+	  && exp->X_op == O_subtract)
mgl@1371
  7824
+	{
mgl@1371
  7825
+	  symbolS *tmp;
mgl@1371
  7826
+	  tmp = exp->X_add_symbol;
mgl@1371
  7827
+	  exp->X_add_symbol = exp->X_op_symbol;
mgl@1371
  7828
+	  exp->X_op_symbol = tmp;
mgl@1371
  7829
+	}
mgl@1371
  7830
+#endif
mgl@1371
  7831
+
mgl@1371
  7832
+      frag_now->tc_frag_data.exp = current_insn.immediate;
mgl@1371
  7833
+
mgl@1371
  7834
+      sym = exp->X_add_symbol;
mgl@1371
  7835
+      off = exp->X_add_number;
mgl@1371
  7836
+      if (exp->X_op != O_symbol)
mgl@1371
  7837
+	{
mgl@1371
  7838
+	  sym = make_expr_symbol(exp);
mgl@1371
  7839
+	  off = 0;
mgl@1371
  7840
+	}
mgl@1371
  7841
+
mgl@1371
  7842
+      frag_var(rs_machine_dependent,
mgl@1371
  7843
+	       avr32_rs_size(largest_substate) - opc->size,
mgl@1371
  7844
+	       opc->size,
mgl@1371
  7845
+	       substate, sym, off, buf);
mgl@1371
  7846
+    }
mgl@1371
  7847
+  else
mgl@1371
  7848
+    {
mgl@1371
  7849
+      assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
mgl@1371
  7850
+
mgl@1371
  7851
+      /* Make sure we always have room for another whole word, as the ifield
mgl@1371
  7852
+	 inserters can only write words. */
mgl@1371
  7853
+      frag_grow(4);
mgl@1371
  7854
+      buf = frag_more(opc->size);
mgl@1371
  7855
+      dwarf2_emit_insn(opc->size);
mgl@1371
  7856
+    }
mgl@1371
  7857
+
mgl@1371
  7858
+  assert(!(opc->value & ~opc->mask));
mgl@1371
  7859
+
mgl@1371
  7860
+  pr_debug("inserting opcode: 0x%lx\n", opc->value);
mgl@1371
  7861
+  bfd_putb32(opc->value, buf);
mgl@1371
  7862
+
mgl@1371
  7863
+  for (i = 0; i < opc->nr_fields; i++)
mgl@1371
  7864
+    {
mgl@1371
  7865
+      const struct avr32_ifield *f = opc->fields[i];
mgl@1371
  7866
+      const struct avr32_ifield_data *fd = &current_insn.field_value[i];
mgl@1371
  7867
+
mgl@1371
  7868
+      pr_debug("inserting field: 0x%lx & 0x%lx\n",
mgl@1371
  7869
+	       fd->value >> fd->align_order, f->mask);
mgl@1371
  7870
+
mgl@1371
  7871
+      f->insert(f, buf, fd->value >> fd->align_order);
mgl@1371
  7872
+    }
mgl@1371
  7873
+
mgl@1371
  7874
+  assert(will_relax || !current_insn.immediate.X_add_symbol);
mgl@1371
  7875
+  return NULL;
mgl@1371
  7876
+}
mgl@1371
  7877
+
mgl@1371
  7878
+static const char *
mgl@1371
  7879
+finish_alias(const struct avr32_alias *alias)
mgl@1371
  7880
+{
mgl@1371
  7881
+  const struct avr32_opcode *opc;
mgl@1371
  7882
+  struct {
mgl@1371
  7883
+    unsigned long value;
mgl@1371
  7884
+    unsigned long align;
mgl@1371
  7885
+  } mapped_operand[AVR32_MAX_OPERANDS];
mgl@1371
  7886
+  unsigned int i;
mgl@1371
  7887
+
mgl@1371
  7888
+  opc = alias->opc;
mgl@1371
  7889
+
mgl@1371
  7890
+  /* Remap the operands from the alias to the real opcode */
mgl@1371
  7891
+  for (i = 0; i < opc->nr_fields; i++)
mgl@1371
  7892
+    {
mgl@1371
  7893
+      if (alias->operand_map[i].is_opindex)
mgl@1371
  7894
+	{
mgl@1371
  7895
+	  struct avr32_ifield_data *fd;
mgl@1371
  7896
+	  fd = &current_insn.field_value[alias->operand_map[i].value];
mgl@1371
  7897
+	  mapped_operand[i].value = fd->value;
mgl@1371
  7898
+	  mapped_operand[i].align = fd->align_order;
mgl@1371
  7899
+	}
mgl@1371
  7900
+      else
mgl@1371
  7901
+	{
mgl@1371
  7902
+	  mapped_operand[i].value = alias->operand_map[i].value;
mgl@1371
  7903
+	  mapped_operand[i].align = 0;
mgl@1371
  7904
+	}
mgl@1371
  7905
+    }
mgl@1371
  7906
+
mgl@1371
  7907
+  for (i = 0; i < opc->nr_fields; i++)
mgl@1371
  7908
+    {
mgl@1371
  7909
+      current_insn.field_value[i].value = mapped_operand[i].value;
mgl@1371
  7910
+      if (opc->id == AVR32_OPC_COP)
mgl@1371
  7911
+	current_insn.field_value[i].align_order = 0;
mgl@1371
  7912
+      else
mgl@1371
  7913
+	current_insn.field_value[i].align_order
mgl@1371
  7914
+	  = mapped_operand[i].align;
mgl@1371
  7915
+    }
mgl@1371
  7916
+
mgl@1371
  7917
+  current_insn.next_slot = opc->nr_fields;
mgl@1371
  7918
+
mgl@1371
  7919
+  return finish_insn(opc);
mgl@1371
  7920
+}
mgl@1371
  7921
+
mgl@1371
  7922
+static const char *
mgl@1371
  7923
+finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
mgl@1371
  7924
+{
mgl@1371
  7925
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  7926
+  relax_substateT initial_subtype;
mgl@1371
  7927
+  symbolS *sym;
mgl@1371
  7928
+  offsetT off;
mgl@1371
  7929
+  int initial_size, max_size;
mgl@1371
  7930
+  char *buf;
mgl@1371
  7931
+
mgl@1371
  7932
+  initial_size = LDA_INITIAL_SIZE;
mgl@1371
  7933
+
mgl@1371
  7934
+  if (avr32_pic)
mgl@1371
  7935
+    {
mgl@1371
  7936
+      initial_subtype = LDA_SUBTYPE_SUB;
mgl@1371
  7937
+      if (linkrelax)
mgl@1371
  7938
+	max_size = 8;
mgl@1371
  7939
+      else
mgl@1371
  7940
+	max_size = 4;
mgl@1371
  7941
+    }
mgl@1371
  7942
+  else
mgl@1371
  7943
+    {
mgl@1371
  7944
+      initial_subtype = LDA_SUBTYPE_MOV1;
mgl@1371
  7945
+      max_size = 4;
mgl@1371
  7946
+    }
mgl@1371
  7947
+
mgl@1371
  7948
+  frag_grow(max_size);
mgl@1371
  7949
+  buf = frag_more(initial_size);
mgl@1371
  7950
+  dwarf2_emit_insn(initial_size);
mgl@1371
  7951
+
mgl@1371
  7952
+  if (exp->X_op == O_symbol)
mgl@1371
  7953
+    {
mgl@1371
  7954
+      sym = exp->X_add_symbol;
mgl@1371
  7955
+      off = exp->X_add_number;
mgl@1371
  7956
+    }
mgl@1371
  7957
+  else
mgl@1371
  7958
+    {
mgl@1371
  7959
+      sym = make_expr_symbol(exp);
mgl@1371
  7960
+      off = 0;
mgl@1371
  7961
+    }
mgl@1371
  7962
+
mgl@1371
  7963
+  frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
mgl@1371
  7964
+  frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
mgl@1371
  7965
+
mgl@1371
  7966
+  if (!avr32_pic)
mgl@1371
  7967
+    {
mgl@1371
  7968
+      /* The relaxer will bump the refcount if necessary */
mgl@1371
  7969
+      frag_now->tc_frag_data.pool
mgl@1371
  7970
+	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
mgl@1371
  7971
+    }
mgl@1371
  7972
+
mgl@1371
  7973
+  frag_var(rs_machine_dependent, max_size - initial_size,
mgl@1371
  7974
+	   initial_size, initial_subtype, sym, off, buf);
mgl@1371
  7975
+
mgl@1371
  7976
+  return NULL;
mgl@1371
  7977
+}
mgl@1371
  7978
+
mgl@1371
  7979
+static const char *
mgl@1371
  7980
+finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
mgl@1371
  7981
+{
mgl@1371
  7982
+  expressionS *exp = &current_insn.immediate;
mgl@1371
  7983
+  symbolS *sym;
mgl@1371
  7984
+  offsetT off;
mgl@1371
  7985
+  int initial_size, max_size;
mgl@1371
  7986
+  char *buf;
mgl@1371
  7987
+
mgl@1371
  7988
+  initial_size = CALL_INITIAL_SIZE;
mgl@1371
  7989
+
mgl@1371
  7990
+  if (avr32_pic)
mgl@1371
  7991
+    {
mgl@1371
  7992
+      if (linkrelax)
mgl@1371
  7993
+	max_size = 10;
mgl@1371
  7994
+      else
mgl@1371
  7995
+	max_size = 4;
mgl@1371
  7996
+    }
mgl@1371
  7997
+  else
mgl@1371
  7998
+    max_size = 4;
mgl@1371
  7999
+
mgl@1371
  8000
+  frag_grow(max_size);
mgl@1371
  8001
+  buf = frag_more(initial_size);
mgl@1371
  8002
+  dwarf2_emit_insn(initial_size);
mgl@1371
  8003
+
mgl@1371
  8004
+  frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
mgl@1371
  8005
+
mgl@1371
  8006
+  if (exp->X_op == O_symbol)
mgl@1371
  8007
+    {
mgl@1371
  8008
+      sym = exp->X_add_symbol;
mgl@1371
  8009
+      off = exp->X_add_number;
mgl@1371
  8010
+    }
mgl@1371
  8011
+  else
mgl@1371
  8012
+    {
mgl@1371
  8013
+      sym = make_expr_symbol(exp);
mgl@1371
  8014
+      off = 0;
mgl@1371
  8015
+    }
mgl@1371
  8016
+
mgl@1371
  8017
+  if (!avr32_pic)
mgl@1371
  8018
+    {
mgl@1371
  8019
+      /* The relaxer will bump the refcount if necessary */
mgl@1371
  8020
+      frag_now->tc_frag_data.pool
mgl@1371
  8021
+	= add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
mgl@1371
  8022
+    }
mgl@1371
  8023
+
mgl@1371
  8024
+  frag_var(rs_machine_dependent, max_size - initial_size,
mgl@1371
  8025
+	   initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
mgl@1371
  8026
+
mgl@1371
  8027
+  return NULL;
mgl@1371
  8028
+}
mgl@1371
  8029
+
mgl@1371
  8030
+void
mgl@1371
  8031
+md_begin (void)
mgl@1371
  8032
+{
mgl@1371
  8033
+  unsigned long flags = 0;
mgl@1371
  8034
+  int i;
mgl@1371
  8035
+
mgl@1371
  8036
+  avr32_mnemonic_htab = hash_new();
mgl@1371
  8037
+
mgl@1371
  8038
+  if (!avr32_mnemonic_htab)
mgl@1371
  8039
+    as_fatal(_("virtual memory exhausted"));
mgl@1371
  8040
+
mgl@1371
  8041
+  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
mgl@1371
  8042
+    {
mgl@1371
  8043
+      hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
mgl@1371
  8044
+		  (void *)&avr32_mnemonic_table[i]);
mgl@1371
  8045
+    }
mgl@1371
  8046
+
mgl@1371
  8047
+  if (linkrelax)
mgl@1371
  8048
+    flags |= EF_AVR32_LINKRELAX;
mgl@1371
  8049
+  if (avr32_pic)
mgl@1371
  8050
+    flags |= EF_AVR32_PIC;
mgl@1371
  8051
+
mgl@1371
  8052
+  bfd_set_private_flags(stdoutput, flags);
mgl@1371
  8053
+
mgl@1371
  8054
+#ifdef OPC_CONSISTENCY_CHECK
mgl@1371
  8055
+  if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
mgl@1371
  8056
+      < AVR32_NR_OPERANDS)
mgl@1371
  8057
+    as_fatal(_("operand table is incomplete"));
mgl@1371
  8058
+
mgl@1371
  8059
+  for (i = 0; i < AVR32_NR_OPERANDS; i++)
mgl@1371
  8060
+    if (avr32_operand_table[i].id != i)
mgl@1371
  8061
+      as_fatal(_("operand table inconsistency found at index %d\n"), i);
mgl@1371
  8062
+  pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
mgl@1371
  8063
+
mgl@1371
  8064
+  for (i = 0; i < AVR32_NR_IFIELDS; i++)
mgl@1371
  8065
+    if (avr32_ifield_table[i].id != i)
mgl@1371
  8066
+      as_fatal(_("ifield table inconsistency found at index %d\n"), i);
mgl@1371
  8067
+  pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
mgl@1371
  8068
+
mgl@1371
  8069
+  for (i = 0; i < AVR32_NR_OPCODES; i++)
mgl@1371
  8070
+    {
mgl@1371
  8071
+      if (avr32_opc_table[i].id != i)
mgl@1371
  8072
+	as_fatal(_("opcode table inconsistency found at index %d\n"), i);
mgl@1371
  8073
+      if ((avr32_opc_table[i].var_field == -1
mgl@1371
  8074
+	   && avr32_relax_table[i].length != 0)
mgl@1371
  8075
+	  || (avr32_opc_table[i].var_field != -1
mgl@1371
  8076
+	      && avr32_relax_table[i].length == 0))
mgl@1371
  8077
+	as_fatal(_("relax table inconsistency found at index %d\n"), i);
mgl@1371
  8078
+    }
mgl@1371
  8079
+  pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
mgl@1371
  8080
+
mgl@1371
  8081
+  for (i = 0; i < AVR32_NR_SYNTAX; i++)
mgl@1371
  8082
+    if (avr32_syntax_table[i].id != i)
mgl@1371
  8083
+      as_fatal(_("syntax table inconsistency found at index %d\n"), i);
mgl@1371
  8084
+  pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
mgl@1371
  8085
+
mgl@1371
  8086
+  for (i = 0; i < AVR32_NR_ALIAS; i++)
mgl@1371
  8087
+    if (avr32_alias_table[i].id != i)
mgl@1371
  8088
+      as_fatal(_("alias table inconsistency found at index %d\n"), i);
mgl@1371
  8089
+  pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
mgl@1371
  8090
+
mgl@1371
  8091
+  for (i = 0; i < AVR32_NR_MNEMONICS; i++)
mgl@1371
  8092
+    if (avr32_mnemonic_table[i].id != i)
mgl@1371
  8093
+      as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
mgl@1371
  8094
+  pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
mgl@1371
  8095
+#endif
mgl@1371
  8096
+}
mgl@1371
  8097
+
mgl@1371
  8098
+void
mgl@1371
  8099
+md_assemble (char *str)
mgl@1371
  8100
+{
mgl@1371
  8101
+  struct avr32_mnemonic *mnemonic;
mgl@1371
  8102
+  char *p, c;
mgl@1371
  8103
+
mgl@1371
  8104
+  memset(&current_insn, 0, sizeof(current_insn));
mgl@1371
  8105
+  current_insn.immediate.X_op = O_constant;
mgl@1371
  8106
+
mgl@1371
  8107
+  skip_whitespace(str);
mgl@1371
  8108
+  for (p = str; *p; p++)
mgl@1371
  8109
+    if (*p == ' ')
mgl@1371
  8110
+      break;
mgl@1371
  8111
+  c = *p;
mgl@1371
  8112
+  *p = 0;
mgl@1371
  8113
+
mgl@1371
  8114
+  mnemonic = hash_find(avr32_mnemonic_htab, str);
mgl@1371
  8115
+  *p = c;
mgl@1371
  8116
+  if (c) p++;
mgl@1371
  8117
+
mgl@1371
  8118
+  if (mnemonic)
mgl@1371
  8119
+    {
mgl@1371
  8120
+      const struct avr32_syntax *syntax;
mgl@1371
  8121
+
mgl@1371
  8122
+      for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
mgl@1371
  8123
+	{
mgl@1371
  8124
+	  const char *errmsg = NULL;
mgl@1371
  8125
+
mgl@1371
  8126
+	  if (syntax_matches(syntax, p))
mgl@1371
  8127
+	    {
mgl@1371
  8128
+	      if (!(syntax->isa_flags & avr32_arch->isa_flags))
mgl@1371
  8129
+		{
mgl@1371
  8130
+		  as_bad(_("Selected architecture `%s'  does not support `%s'"),
mgl@1371
  8131
+			 avr32_arch->name, str);
mgl@1371
  8132
+		  return;
mgl@1371
  8133
+		}
mgl@1371
  8134
+
mgl@1371
  8135
+	      current_insn.syntax = syntax;
mgl@1371
  8136
+	      parse_operands(p);
mgl@1371
  8137
+
mgl@1371
  8138
+	      switch (syntax->type)
mgl@1371
  8139
+		{
mgl@1371
  8140
+		case AVR32_PARSER_NORMAL:
mgl@1371
  8141
+		  errmsg = finish_insn(syntax->u.opc);
mgl@1371
  8142
+		  break;
mgl@1371
  8143
+		case AVR32_PARSER_ALIAS:
mgl@1371
  8144
+		  errmsg = finish_alias(syntax->u.alias);
mgl@1371
  8145
+		  break;
mgl@1371
  8146
+		case AVR32_PARSER_LDA:
mgl@1371
  8147
+		  errmsg = finish_lda(syntax);
mgl@1371
  8148
+		  break;
mgl@1371
  8149
+		case AVR32_PARSER_CALL:
mgl@1371
  8150
+		  errmsg = finish_call(syntax);
mgl@1371
  8151
+		  break;
mgl@1371
  8152
+		default:
mgl@1371
  8153
+		  BAD_CASE(syntax->type);
mgl@1371
  8154
+		  break;
mgl@1371
  8155
+		}
mgl@1371
  8156
+
mgl@1371
  8157
+	      if (errmsg)
mgl@1371
  8158
+		as_bad("%s in `%s'", errmsg, str);
mgl@1371
  8159
+
mgl@1371
  8160
+	      return;
mgl@1371
  8161
+	    }
mgl@1371
  8162
+	}
mgl@1371
  8163
+
mgl@1371
  8164
+      as_bad(_("unrecognized form of instruction: `%s'"), str);
mgl@1371
  8165
+    }
mgl@1371
  8166
+  else
mgl@1371
  8167
+    as_bad(_("unrecognized instruction `%s'"), str);
mgl@1371
  8168
+}
mgl@1371
  8169
+
mgl@1371
  8170
+void avr32_cleanup(void)
mgl@1371
  8171
+{
mgl@1371
  8172
+  struct cpool *pool;
mgl@1371
  8173
+
mgl@1371
  8174
+  /* Emit any constant pools that haven't been explicitly flushed with
mgl@1371
  8175
+     a .cpool directive. */
mgl@1371
  8176
+  for (pool = cpool_list; pool; pool = pool->next)
mgl@1371
  8177
+    {
mgl@1371
  8178
+      subseg_set(pool->section, pool->sub_section);
mgl@1371
  8179
+      s_cpool(0);
mgl@1371
  8180
+    }
mgl@1371
  8181
+}
mgl@1371
  8182
+
mgl@1371
  8183
+/* Handle any PIC-related operands in data allocation pseudo-ops */
mgl@1371
  8184
+void
mgl@1371
  8185
+avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
mgl@1371
  8186
+{
mgl@1371
  8187
+  bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
mgl@1371
  8188
+  int pcrel = 0;
mgl@1371
  8189
+
mgl@1371
  8190
+  pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
mgl@1371
  8191
+	   frag->fr_file, frag->fr_line,
mgl@1371
  8192
+	   exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
mgl@1371
  8193
+	   exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
mgl@1371
  8194
+	   exp->X_op, exp->X_add_number);
mgl@1371
  8195
+
mgl@1371
  8196
+  if (exp->X_op == O_subtract && exp->X_op_symbol)
mgl@1371
  8197
+    {
mgl@1371
  8198
+      if (exp->X_op_symbol == GOT_symbol)
mgl@1371
  8199
+	{
mgl@1371
  8200
+	  if (size != 4)
mgl@1371
  8201
+	    goto bad_size;
mgl@1371
  8202
+	  r_type = BFD_RELOC_AVR32_GOTPC;
mgl@1371
  8203
+	  exp->X_op = O_symbol;
mgl@1371
  8204
+	  exp->X_op_symbol = NULL;
mgl@1371
  8205
+	}
mgl@1371
  8206
+    }
mgl@1371
  8207
+  else if (exp->X_op == O_got)
mgl@1371
  8208
+    {
mgl@1371
  8209
+      switch (size)
mgl@1371
  8210
+	{
mgl@1371
  8211
+	case 1:
mgl@1371
  8212
+	  r_type = BFD_RELOC_AVR32_GOT8;
mgl@1371
  8213
+	  break;
mgl@1371
  8214
+	case 2:
mgl@1371
  8215
+	  r_type = BFD_RELOC_AVR32_GOT16;
mgl@1371
  8216
+	  break;
mgl@1371
  8217
+	case 4:
mgl@1371
  8218
+	  r_type = BFD_RELOC_AVR32_GOT32;
mgl@1371
  8219
+	  break;
mgl@1371
  8220
+	default:
mgl@1371
  8221
+	  goto bad_size;
mgl@1371
  8222
+	}
mgl@1371
  8223
+
mgl@1371
  8224
+      exp->X_op = O_symbol;
mgl@1371
  8225
+    }
mgl@1371
  8226
+
mgl@1371
  8227
+  if (r_type == BFD_RELOC_UNUSED)
mgl@1371
  8228
+    switch (size)
mgl@1371
  8229
+      {
mgl@1371
  8230
+      case 1:
mgl@1371
  8231
+	r_type = BFD_RELOC_8;
mgl@1371
  8232
+	break;
mgl@1371
  8233
+      case 2:
mgl@1371
  8234
+	r_type = BFD_RELOC_16;
mgl@1371
  8235
+	break;
mgl@1371
  8236
+      case 4:
mgl@1371
  8237
+	r_type = BFD_RELOC_32;
mgl@1371
  8238
+	break;
mgl@1371
  8239
+      default:
mgl@1371
  8240
+	goto bad_size;
mgl@1371
  8241
+      }
mgl@1371
  8242
+  else if (size != 4)
mgl@1371
  8243
+    {
mgl@1371
  8244
+    bad_size:
mgl@1371
  8245
+      as_bad(_("unsupported BFD relocation size %u"), size);
mgl@1371
  8246
+      r_type = BFD_RELOC_UNUSED;
mgl@1371
  8247
+    }
mgl@1371
  8248
+
mgl@1371
  8249
+  fix_new_exp (frag, off, size, exp, pcrel, r_type);
mgl@1371
  8250
+}
mgl@1371
  8251
+
mgl@1371
  8252
+static void
mgl@1371
  8253
+avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
mgl@1371
  8254
+		   void *ignore ATTRIBUTE_UNUSED)
mgl@1371
  8255
+{
mgl@1371
  8256
+  segment_info_type *seginfo;
mgl@1371
  8257
+  fixS *fix;
mgl@1371
  8258
+
mgl@1371
  8259
+  seginfo = seg_info(sec);
mgl@1371
  8260
+  if (!seginfo)
mgl@1371
  8261
+    return;
mgl@1371
  8262
+
mgl@1371
  8263
+  for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
mgl@1371
  8264
+    {
mgl@1371
  8265
+      if (fix->fx_done)
mgl@1371
  8266
+	continue;
mgl@1371
  8267
+
mgl@1371
  8268
+      if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
mgl@1371
  8269
+	  && fix->fx_addsy && fix->fx_subsy)
mgl@1371
  8270
+	{
mgl@1371
  8271
+	  if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
mgl@1371
  8272
+	      || linkrelax)
mgl@1371
  8273
+	    {
mgl@1371
  8274
+	      symbolS *tmp;
mgl@1371
  8275
+#ifdef DEBUG
mgl@1371
  8276
+	      fprintf(stderr, "Swapping symbols in fixup:\n");
mgl@1371
  8277
+	      print_fixup(fix);
mgl@1371
  8278
+#endif
mgl@1371
  8279
+	      tmp = fix->fx_addsy;
mgl@1371
  8280
+	      fix->fx_addsy = fix->fx_subsy;
mgl@1371
  8281
+	      fix->fx_subsy = tmp;
mgl@1371
  8282
+	      fix->fx_offset = -fix->fx_offset;
mgl@1371
  8283
+	    }
mgl@1371
  8284
+	}
mgl@1371
  8285
+    }
mgl@1371
  8286
+}
mgl@1371
  8287
+
mgl@1371
  8288
+/* We need to look for SUB5 instructions with expressions that will be
mgl@1371
  8289
+   made PC-relative and switch fx_addsy with fx_subsy.  This has to be
mgl@1371
  8290
+   done before adjustment or the wrong symbol might be adjusted.
mgl@1371
  8291
+
mgl@1371
  8292
+   This applies to fixups that are a result of expressions like -(sym
mgl@1371
  8293
+   - .) and that will make it all the way to md_apply_fix3().  LDA
mgl@1371
  8294
+   does the right thing in convert_frag, so we must not convert
mgl@1371
  8295
+   those. */
mgl@1371
  8296
+void
mgl@1371
  8297
+avr32_frob_file(void)
mgl@1371
  8298
+{
mgl@1371
  8299
+  /* if (1 || !linkrelax)
mgl@1371
  8300
+     return; */
mgl@1371
  8301
+
mgl@1371
  8302
+  bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
mgl@1371
  8303
+}
mgl@1371
  8304
+
mgl@1371
  8305
+static bfd_boolean
mgl@1371
  8306
+convert_to_diff_reloc(fixS *fixP)
mgl@1371
  8307
+{
mgl@1371
  8308
+  switch (fixP->fx_r_type)
mgl@1371
  8309
+    {
mgl@1371
  8310
+    case BFD_RELOC_32:
mgl@1371
  8311
+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
mgl@1371
  8312
+      break;
mgl@1371
  8313
+    case BFD_RELOC_16:
mgl@1371
  8314
+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
mgl@1371
  8315
+      break;
mgl@1371
  8316
+    case BFD_RELOC_8:
mgl@1371
  8317
+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
mgl@1371
  8318
+      break;
mgl@1371
  8319
+    default:
mgl@1371
  8320
+      return FALSE;
mgl@1371
  8321
+    }
mgl@1371
  8322
+
mgl@1371
  8323
+  return TRUE;
mgl@1371
  8324
+}
mgl@1371
  8325
+
mgl@1371
  8326
+/* Simplify a fixup.  If possible, the fixup is reduced to a single
mgl@1371
  8327
+   constant which is written to the output file.  Otherwise, a
mgl@1371
  8328
+   relocation is generated so that the linker can take care of the
mgl@1371
  8329
+   rest.
mgl@1371
  8330
+
mgl@1371
  8331
+   ELF relocations have certain constraints: They can only take a
mgl@1371
  8332
+   single symbol and a single addend.  This means that for difference
mgl@1371
  8333
+   expressions, we _must_ get rid of the fx_subsy symbol somehow.
mgl@1371
  8334
+
mgl@1371
  8335
+   The difference between two labels in the same section can be
mgl@1371
  8336
+   calculated directly unless 'linkrelax' is set, or a relocation is
mgl@1371
  8337
+   forced.  If so, we must emit a R_AVR32_DIFFxx relocation.  If there
mgl@1371
  8338
+   are addends involved at this point, we must be especially careful
mgl@1371
  8339
+   as the relocation must point exactly to the symbol being
mgl@1371
  8340
+   subtracted.
mgl@1371
  8341
+
mgl@1371
  8342
+   When subtracting a symbol defined in the same section as the fixup,
mgl@1371
  8343
+   we might be able to convert it to a PC-relative expression, unless
mgl@1371
  8344
+   linkrelax is set. If this is the case, there's no way we can make
mgl@1371
  8345
+   sure that the difference between the fixup and fx_subsy stays
mgl@1371
  8346
+   constant.  So for now, we're just going to disallow that.
mgl@1371
  8347
+   */
mgl@1371
  8348
+void
mgl@1371
  8349
+avr32_process_fixup(fixS *fixP, segT this_segment)
mgl@1371
  8350
+{
mgl@1371
  8351
+  segT add_symbol_segment = absolute_section;
mgl@1371
  8352
+  segT sub_symbol_segment = absolute_section;
mgl@1371
  8353
+  symbolS *fx_addsy, *fx_subsy;
mgl@1371
  8354
+  offsetT value = 0, fx_offset;
mgl@1371
  8355
+  bfd_boolean apply = FALSE;
mgl@1371
  8356
+
mgl@1371
  8357
+  assert(this_segment != absolute_section);
mgl@1371
  8358
+
mgl@1371
  8359
+  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
mgl@1371
  8360
+    {
mgl@1371
  8361
+      as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8362
+		   _("Bad relocation type %d\n"), fixP->fx_r_type);
mgl@1371
  8363
+      return;
mgl@1371
  8364
+    }
mgl@1371
  8365
+
mgl@1371
  8366
+  /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
mgl@1371
  8367
+  fx_addsy = fixP->fx_addsy;
mgl@1371
  8368
+  fx_subsy = fixP->fx_subsy;
mgl@1371
  8369
+  fx_offset = fixP->fx_offset;
mgl@1371
  8370
+
mgl@1371
  8371
+  if (fx_addsy)
mgl@1371
  8372
+    add_symbol_segment = S_GET_SEGMENT(fx_addsy);
mgl@1371
  8373
+
mgl@1371
  8374
+  if (fx_subsy)
mgl@1371
  8375
+    {
mgl@1371
  8376
+      resolve_symbol_value(fx_subsy);
mgl@1371
  8377
+      sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
mgl@1371
  8378
+
mgl@1371
  8379
+      if (sub_symbol_segment == this_segment
mgl@1371
  8380
+	  && (!linkrelax
mgl@1371
  8381
+	      || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
mgl@1371
  8382
+					   + fixP->fx_where)))
mgl@1371
  8383
+	{
mgl@1371
  8384
+	  fixP->fx_pcrel = TRUE;
mgl@1371
  8385
+	  fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
mgl@1371
  8386
+			- S_GET_VALUE(fx_subsy));
mgl@1371
  8387
+	  fx_subsy = NULL;
mgl@1371
  8388
+	}
mgl@1371
  8389
+      else if (sub_symbol_segment == absolute_section)
mgl@1371
  8390
+	{
mgl@1371
  8391
+	  /* The symbol is really a constant.  */
mgl@1371
  8392
+	  fx_offset -= S_GET_VALUE(fx_subsy);
mgl@1371
  8393
+	  fx_subsy = NULL;
mgl@1371
  8394
+	}
mgl@1371
  8395
+      else if (SEG_NORMAL(add_symbol_segment)
mgl@1371
  8396
+	       && sub_symbol_segment == add_symbol_segment
mgl@1371
  8397
+	       && (!linkrelax || convert_to_diff_reloc(fixP)))
mgl@1371
  8398
+	{
mgl@1371
  8399
+	  /* Difference between two labels in the same section.  */
mgl@1371
  8400
+	  if (linkrelax)
mgl@1371
  8401
+	    {
mgl@1371
  8402
+	      /* convert_to_diff() has ensured that the reloc type is
mgl@1371
  8403
+		 either DIFF32, DIFF16 or DIFF8.  */
mgl@1371
  8404
+	      value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
mgl@1371
  8405
+		       - S_GET_VALUE(fx_subsy));
mgl@1371
  8406
+
mgl@1371
  8407
+	      /* Try to convert it to a section symbol if possible  */
mgl@1371
  8408
+	      if (!S_FORCE_RELOC(fx_addsy, 1)
mgl@1371
  8409
+		  && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
mgl@1371
  8410
+		{
mgl@1371
  8411
+		  fx_offset = S_GET_VALUE(fx_subsy);
mgl@1371
  8412
+		  fx_addsy = section_symbol(sub_symbol_segment);
mgl@1371
  8413
+		}
mgl@1371
  8414
+	      else
mgl@1371
  8415
+		{
mgl@1371
  8416
+		  fx_addsy = fx_subsy;
mgl@1371
  8417
+		  fx_offset = 0;
mgl@1371
  8418
+		}
mgl@1371
  8419
+
mgl@1371
  8420
+	      fx_subsy = NULL;
mgl@1371
  8421
+	      apply = TRUE;
mgl@1371
  8422
+	    }
mgl@1371
  8423
+	  else
mgl@1371
  8424
+	    {
mgl@1371
  8425
+	      fx_offset += S_GET_VALUE(fx_addsy);
mgl@1371
  8426
+	      fx_offset -= S_GET_VALUE(fx_subsy);
mgl@1371
  8427
+	      fx_addsy = NULL;
mgl@1371
  8428
+	      fx_subsy = NULL;
mgl@1371
  8429
+	    }
mgl@1371
  8430
+	}
mgl@1371
  8431
+      else
mgl@1371
  8432
+	{
mgl@1371
  8433
+	  as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8434
+		       _("can't resolve `%s' {%s section} - `%s' {%s section}"),
mgl@1371
  8435
+		       fx_addsy ? S_GET_NAME (fx_addsy) : "0",
mgl@1371
  8436
+		       segment_name (add_symbol_segment),
mgl@1371
  8437
+		       S_GET_NAME (fx_subsy),
mgl@1371
  8438
+		       segment_name (sub_symbol_segment));
mgl@1371
  8439
+	  return;
mgl@1371
  8440
+	}
mgl@1371
  8441
+    }
mgl@1371
  8442
+
mgl@1371
  8443
+  if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
mgl@1371
  8444
+    {
mgl@1371
  8445
+      if (add_symbol_segment == this_segment
mgl@1371
  8446
+	  && fixP->fx_pcrel)
mgl@1371
  8447
+	{
mgl@1371
  8448
+	  value += S_GET_VALUE(fx_addsy);
mgl@1371
  8449
+	  value -= md_pcrel_from_section(fixP, this_segment);
mgl@1371
  8450
+	  fx_addsy = NULL;
mgl@1371
  8451
+	  fixP->fx_pcrel = FALSE;
mgl@1371
  8452
+	}
mgl@1371
  8453
+      else if (add_symbol_segment == absolute_section)
mgl@1371
  8454
+	{
mgl@1371
  8455
+	  fx_offset += S_GET_VALUE(fixP->fx_addsy);
mgl@1371
  8456
+	  fx_addsy = NULL;
mgl@1371
  8457
+	}
mgl@1371
  8458
+    }
mgl@1371
  8459
+
mgl@1371
  8460
+  if (!fx_addsy)
mgl@1371
  8461
+    fixP->fx_done = TRUE;
mgl@1371
  8462
+
mgl@1371
  8463
+  if (fixP->fx_pcrel)
mgl@1371
  8464
+    {
mgl@1371
  8465
+      if (fx_addsy != NULL
mgl@1371
  8466
+	  && S_IS_DEFINED(fx_addsy)
mgl@1371
  8467
+	  && S_GET_SEGMENT(fx_addsy) != this_segment)
mgl@1371
  8468
+	value += md_pcrel_from_section(fixP, this_segment);
mgl@1371
  8469
+
mgl@1371
  8470
+      switch (fixP->fx_r_type)
mgl@1371
  8471
+	{
mgl@1371
  8472
+	case BFD_RELOC_32:
mgl@1371
  8473
+	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
mgl@1371
  8474
+	  break;
mgl@1371
  8475
+	case BFD_RELOC_16:
mgl@1371
  8476
+	  fixP->fx_r_type = BFD_RELOC_16_PCREL;
mgl@1371
  8477
+	  break;
mgl@1371
  8478
+	case BFD_RELOC_8:
mgl@1371
  8479
+	  fixP->fx_r_type = BFD_RELOC_8_PCREL;
mgl@1371
  8480
+	  break;
mgl@1371
  8481
+	case BFD_RELOC_AVR32_SUB5:
mgl@1371
  8482
+	  fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
mgl@1371
  8483
+	  break;
mgl@1371
  8484
+	case BFD_RELOC_AVR32_16S:
mgl@1371
  8485
+	  fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
mgl@1371
  8486
+	  break;
mgl@1371
  8487
+	case BFD_RELOC_AVR32_14UW:
mgl@1371
  8488
+	  fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
mgl@1371
  8489
+	  break;
mgl@1371
  8490
+	case BFD_RELOC_AVR32_10UW:
mgl@1371
  8491
+	  fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
mgl@1371
  8492
+	  break;
mgl@1371
  8493
+	default:
mgl@1371
  8494
+	  /* Should have been taken care of already */
mgl@1371
  8495
+	  break;
mgl@1371
  8496
+	}
mgl@1371
  8497
+    }
mgl@1371
  8498
+
mgl@1371
  8499
+  if (fixP->fx_done || apply)
mgl@1371
  8500
+    {
mgl@1371
  8501
+      const struct avr32_ifield *ifield;
mgl@1371
  8502
+      char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
mgl@1371
  8503
+
mgl@1371
  8504
+      if (fixP->fx_done)
mgl@1371
  8505
+	value += fx_offset;
mgl@1371
  8506
+
mgl@1371
  8507
+      /* For hosts with longs bigger than 32-bits make sure that the top
mgl@1371
  8508
+         bits of a 32-bit negative value read in by the parser are set,
mgl@1371
  8509
+         so that the correct comparisons are made.  */
mgl@1371
  8510
+      if (value & 0x80000000)
mgl@1371
  8511
+        value |= (-1L << 31);
mgl@1371
  8512
+
mgl@1371
  8513
+      switch (fixP->fx_r_type)
mgl@1371
  8514
+	{
mgl@1371
  8515
+	case BFD_RELOC_32:
mgl@1371
  8516
+	case BFD_RELOC_16:
mgl@1371
  8517
+	case BFD_RELOC_8:
mgl@1371
  8518
+	case BFD_RELOC_AVR32_DIFF32:
mgl@1371
  8519
+	case BFD_RELOC_AVR32_DIFF16:
mgl@1371
  8520
+	case BFD_RELOC_AVR32_DIFF8:
mgl@1371
  8521
+	  md_number_to_chars(buf, value, fixP->fx_size);
mgl@1371
  8522
+	  break;
mgl@1371
  8523
+	case BFD_RELOC_HI16:
mgl@1371
  8524
+	  value >>= 16;
mgl@1371
  8525
+	case BFD_RELOC_LO16:
mgl@1371
  8526
+	  value &= 0xffff;
mgl@1371
  8527
+	  md_number_to_chars(buf + 2, value, 2);
mgl@1371
  8528
+	  break;
mgl@1371
  8529
+	case BFD_RELOC_AVR32_16N_PCREL:
mgl@1371
  8530
+	  value = -value;
mgl@1371
  8531
+	  /* fall through */
mgl@1371
  8532
+	case BFD_RELOC_AVR32_22H_PCREL:
mgl@1371
  8533
+	case BFD_RELOC_AVR32_18W_PCREL:
mgl@1371
  8534
+	case BFD_RELOC_AVR32_16B_PCREL:
mgl@1371
  8535
+	case BFD_RELOC_AVR32_11H_PCREL:
mgl@1371
  8536
+	case BFD_RELOC_AVR32_9H_PCREL:
mgl@1371
  8537
+	case BFD_RELOC_AVR32_9UW_PCREL:
mgl@1371
  8538
+	case BFD_RELOC_AVR32_3U:
mgl@1371
  8539
+	case BFD_RELOC_AVR32_4UH:
mgl@1371
  8540
+	case BFD_RELOC_AVR32_6UW:
mgl@1371
  8541
+	case BFD_RELOC_AVR32_6S:
mgl@1371
  8542
+	case BFD_RELOC_AVR32_7UW:
mgl@1371
  8543
+	case BFD_RELOC_AVR32_8S_EXT:
mgl@1371
  8544
+	case BFD_RELOC_AVR32_8S:
mgl@1371
  8545
+	case BFD_RELOC_AVR32_10UW:
mgl@1371
  8546
+	case BFD_RELOC_AVR32_10SW:
mgl@1371
  8547
+	case BFD_RELOC_AVR32_STHH_W:
mgl@1371
  8548
+	case BFD_RELOC_AVR32_14UW:
mgl@1371
  8549
+	case BFD_RELOC_AVR32_16S:
mgl@1371
  8550
+	case BFD_RELOC_AVR32_16U:
mgl@1371
  8551
+	case BFD_RELOC_AVR32_21S:
mgl@1371
  8552
+	case BFD_RELOC_AVR32_SUB5:
mgl@1371
  8553
+	case BFD_RELOC_AVR32_CPCALL:
mgl@1371
  8554
+	case BFD_RELOC_AVR32_16_CP:
mgl@1371
  8555
+	case BFD_RELOC_AVR32_9W_CP:
mgl@1371
  8556
+	case BFD_RELOC_AVR32_15S:
mgl@1371
  8557
+	  ifield = fixP->tc_fix_data.ifield;
mgl@1371
  8558
+	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
mgl@1371
  8559
+		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
mgl@1371
  8560
+		   fixP->tc_fix_data.align);
mgl@1371
  8561
+	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
mgl@1371
  8562
+	    as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8563
+			 _("operand out of range (%ld not between %ld and %ld)"),
mgl@1371
  8564
+			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
mgl@1371
  8565
+	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
mgl@1371
  8566
+	    as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8567
+			 _("misaligned operand (required alignment: %d)"),
mgl@1371
  8568
+			 1 << fixP->tc_fix_data.align);
mgl@1371
  8569
+	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
mgl@1371
  8570
+	  break;
mgl@1371
  8571
+	case BFD_RELOC_AVR32_ALIGN:
mgl@1371
  8572
+	  /* Nothing to do */
mgl@1371
  8573
+	  fixP->fx_done = FALSE;
mgl@1371
  8574
+	  break;
mgl@1371
  8575
+	default:
mgl@1371
  8576
+	  as_fatal("reloc type %s not handled\n",
mgl@1371
  8577
+		   bfd_get_reloc_code_name(fixP->fx_r_type));
mgl@1371
  8578
+	}
mgl@1371
  8579
+    }
mgl@1371
  8580
+
mgl@1371
  8581
+  fixP->fx_addsy = fx_addsy;
mgl@1371
  8582
+  fixP->fx_subsy = fx_subsy;
mgl@1371
  8583
+  fixP->fx_offset = fx_offset;
mgl@1371
  8584
+
mgl@1371
  8585
+  if (!fixP->fx_done)
mgl@1371
  8586
+    {
mgl@1371
  8587
+      if (!fixP->fx_addsy)
mgl@1371
  8588
+	fixP->fx_addsy = abs_section_sym;
mgl@1371
  8589
+
mgl@1371
  8590
+      symbol_mark_used_in_reloc(fixP->fx_addsy);
mgl@1371
  8591
+      if (fixP->fx_subsy)
mgl@1371
  8592
+	abort();
mgl@1371
  8593
+    }
mgl@1371
  8594
+}
mgl@1371
  8595
+
mgl@1371
  8596
+#if 0
mgl@1371
  8597
+void
mgl@1371
  8598
+md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
mgl@1371
  8599
+{
mgl@1371
  8600
+  const struct avr32_ifield *ifield;
mgl@1371
  8601
+  offsetT	value = *valP;
mgl@1371
  8602
+  char		*buf = fixP->fx_where + fixP->fx_frag->fr_literal;
mgl@1371
  8603
+  bfd_boolean	apply;
mgl@1371
  8604
+
mgl@1371
  8605
+  pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
mgl@1371
  8606
+	   fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
mgl@1371
  8607
+	   fixP->fx_offset);
mgl@1371
  8608
+
mgl@1371
  8609
+  if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
mgl@1371
  8610
+    {
mgl@1371
  8611
+      as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8612
+		   _("Bad relocation type %d\n"), fixP->fx_r_type);
mgl@1371
  8613
+      return;
mgl@1371
  8614
+    }
mgl@1371
  8615
+
mgl@1371
  8616
+  if (!fixP->fx_addsy && !fixP->fx_subsy)
mgl@1371
  8617
+    fixP->fx_done = 1;
mgl@1371
  8618
+
mgl@1371
  8619
+  if (fixP->fx_pcrel)
mgl@1371
  8620
+    {
mgl@1371
  8621
+      if (fixP->fx_addsy != NULL
mgl@1371
  8622
+	  && S_IS_DEFINED(fixP->fx_addsy)
mgl@1371
  8623
+	  && S_GET_SEGMENT(fixP->fx_addsy) != seg)
mgl@1371
  8624
+	value += md_pcrel_from_section(fixP, seg);
mgl@1371
  8625
+
mgl@1371
  8626
+      switch (fixP->fx_r_type)
mgl@1371
  8627
+	{
mgl@1371
  8628
+	case BFD_RELOC_32:
mgl@1371
  8629
+	  fixP->fx_r_type = BFD_RELOC_32_PCREL;
mgl@1371
  8630
+	  break;
mgl@1371
  8631
+	case BFD_RELOC_16:
mgl@1371
  8632
+	case BFD_RELOC_8:
mgl@1371
  8633
+	  as_bad_where (fixP->fx_file, fixP->fx_line,
mgl@1371
  8634
+			_("8- and 16-bit PC-relative relocations not supported"));
mgl@1371
  8635
+	  break;
mgl@1371
  8636
+	case BFD_RELOC_AVR32_SUB5:
mgl@1371
  8637
+	  fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
mgl@1371
  8638
+	  break;
mgl@1371
  8639
+	case BFD_RELOC_AVR32_16S:
mgl@1371
  8640
+	  fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
mgl@1371
  8641
+	  break;
mgl@1371
  8642
+	default:
mgl@1371
  8643
+	  /* Should have been taken care of already */
mgl@1371
  8644
+	  break;
mgl@1371
  8645
+	}
mgl@1371
  8646
+    }
mgl@1371
  8647
+
mgl@1371
  8648
+  if (fixP->fx_r_type == BFD_RELOC_32
mgl@1371
  8649
+      && fixP->fx_subsy)
mgl@1371
  8650
+    {
mgl@1371
  8651
+      fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
mgl@1371
  8652
+
mgl@1371
  8653
+      /* Offsets are only allowed if it's a result of adjusting a
mgl@1371
  8654
+	 local symbol into a section-relative offset.
mgl@1371
  8655
+	 tc_fix_adjustable() should prevent any adjustment if there
mgl@1371
  8656
+	 was an offset involved before.  */
mgl@1371
  8657
+      if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
mgl@1371
  8658
+	as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8659
+		     _("cannot represent symbol difference with an offset"));
mgl@1371
  8660
+
mgl@1371
  8661
+      value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
mgl@1371
  8662
+	       - S_GET_VALUE(fixP->fx_subsy));
mgl@1371
  8663
+
mgl@1371
  8664
+      /* The difference before any relaxing takes place is written
mgl@1371
  8665
+	 out, and the DIFF32 reloc identifies the address of the first
mgl@1371
  8666
+	 symbol (i.e. the on that's subtracted.)  */
mgl@1371
  8667
+      *valP = value;
mgl@1371
  8668
+      fixP->fx_offset -= value;
mgl@1371
  8669
+      fixP->fx_subsy = NULL;
mgl@1371
  8670
+
mgl@1371
  8671
+      md_number_to_chars(buf, value, fixP->fx_size);
mgl@1371
  8672
+    }
mgl@1371
  8673
+
mgl@1371
  8674
+  if (fixP->fx_done)
mgl@1371
  8675
+    {
mgl@1371
  8676
+      switch (fixP->fx_r_type)
mgl@1371
  8677
+	{
mgl@1371
  8678
+	case BFD_RELOC_8:
mgl@1371
  8679
+	case BFD_RELOC_16:
mgl@1371
  8680
+	case BFD_RELOC_32:
mgl@1371
  8681
+	  md_number_to_chars(buf, value, fixP->fx_size);
mgl@1371
  8682
+	  break;
mgl@1371
  8683
+	case BFD_RELOC_HI16:
mgl@1371
  8684
+	  value >>= 16;
mgl@1371
  8685
+	case BFD_RELOC_LO16:
mgl@1371
  8686
+	  value &= 0xffff;
mgl@1371
  8687
+	  *valP = value;
mgl@1371
  8688
+	  md_number_to_chars(buf + 2, value, 2);
mgl@1371
  8689
+	  break;
mgl@1371
  8690
+	case BFD_RELOC_AVR32_PCREL_SUB5:
mgl@1371
  8691
+	  value = -value;
mgl@1371
  8692
+	  /* fall through */
mgl@1371
  8693
+	case BFD_RELOC_AVR32_9_PCREL:
mgl@1371
  8694
+	case BFD_RELOC_AVR32_11_PCREL:
mgl@1371
  8695
+	case BFD_RELOC_AVR32_16_PCREL:
mgl@1371
  8696
+	case BFD_RELOC_AVR32_18_PCREL:
mgl@1371
  8697
+	case BFD_RELOC_AVR32_22_PCREL:
mgl@1371
  8698
+	case BFD_RELOC_AVR32_3U:
mgl@1371
  8699
+	case BFD_RELOC_AVR32_4UH:
mgl@1371
  8700
+	case BFD_RELOC_AVR32_6UW:
mgl@1371
  8701
+	case BFD_RELOC_AVR32_6S:
mgl@1371
  8702
+	case BFD_RELOC_AVR32_7UW:
mgl@1371
  8703
+	case BFD_RELOC_AVR32_8S:
mgl@1371
  8704
+	case BFD_RELOC_AVR32_10UW:
mgl@1371
  8705
+	case BFD_RELOC_AVR32_10SW:
mgl@1371
  8706
+	case BFD_RELOC_AVR32_14UW:
mgl@1371
  8707
+	case BFD_RELOC_AVR32_16S:
mgl@1371
  8708
+	case BFD_RELOC_AVR32_16U:
mgl@1371
  8709
+	case BFD_RELOC_AVR32_21S:
mgl@1371
  8710
+	case BFD_RELOC_AVR32_BRC1:
mgl@1371
  8711
+	case BFD_RELOC_AVR32_SUB5:
mgl@1371
  8712
+	case BFD_RELOC_AVR32_CPCALL:
mgl@1371
  8713
+	case BFD_RELOC_AVR32_16_CP:
mgl@1371
  8714
+	case BFD_RELOC_AVR32_9_CP:
mgl@1371
  8715
+	case BFD_RELOC_AVR32_15S:
mgl@1371
  8716
+	  ifield = fixP->tc_fix_data.ifield;
mgl@1371
  8717
+	  pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
mgl@1371
  8718
+		   fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
mgl@1371
  8719
+		   fixP->tc_fix_data.align);
mgl@1371
  8720
+	  if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
mgl@1371
  8721
+	    as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8722
+			 _("operand out of range (%ld not between %ld and %ld)"),
mgl@1371
  8723
+			 value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
mgl@1371
  8724
+	  if (value & ((1 << fixP->tc_fix_data.align) - 1))
mgl@1371
  8725
+	    as_bad_where(fixP->fx_file, fixP->fx_line,
mgl@1371
  8726
+			 _("misaligned operand (required alignment: %d)"),
mgl@1371
  8727
+			 1 << fixP->tc_fix_data.align);
mgl@1371
  8728
+	  ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
mgl@1371
  8729
+	  break;
mgl@1371
  8730
+	case BFD_RELOC_AVR32_ALIGN:
mgl@1371
  8731
+	  /* Nothing to do */
mgl@1371
  8732
+	  fixP->fx_done = FALSE;
mgl@1371
  8733
+	  break;
mgl@1371
  8734
+	default:
mgl@1371
  8735
+	  as_fatal("reloc type %s not handled\n",
mgl@1371
  8736
+		   bfd_get_reloc_code_name(fixP->fx_r_type));
mgl@1371
  8737
+	}
mgl@1371
  8738
+    }
mgl@1371
  8739
+}
mgl@1371
  8740
+#endif
mgl@1371
  8741
+
mgl@1371
  8742
+arelent *
mgl@1371
  8743
+tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
mgl@1371
  8744
+	      fixS *fixp)
mgl@1371
  8745
+{
mgl@1371
  8746
+  arelent *reloc;
mgl@1371
  8747
+  bfd_reloc_code_real_type code;
mgl@1371
  8748
+
mgl@1371
  8749
+  reloc = xmalloc (sizeof (arelent));
mgl@1371
  8750
+
mgl@1371
  8751
+  reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
mgl@1371
  8752
+  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
mgl@1371
  8753
+  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
mgl@1371
  8754
+  reloc->addend = fixp->fx_offset;
mgl@1371
  8755
+  code = fixp->fx_r_type;
mgl@1371
  8756
+
mgl@1371
  8757
+  reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
mgl@1371
  8758
+
mgl@1371
  8759
+  if (reloc->howto == NULL)
mgl@1371
  8760
+    {
mgl@1371
  8761
+      as_bad_where (fixp->fx_file, fixp->fx_line,
mgl@1371
  8762
+		    _("cannot represent relocation %s in this object file format"),
mgl@1371
  8763
+		    bfd_get_reloc_code_name (code));
mgl@1371
  8764
+      return NULL;
mgl@1371
  8765
+    }
mgl@1371
  8766
+
mgl@1371
  8767
+  return reloc;
mgl@1371
  8768
+}
mgl@1371
  8769
+
mgl@1371
  8770
+bfd_boolean
mgl@1371
  8771
+avr32_force_reloc(fixS *fixP)
mgl@1371
  8772
+{
mgl@1371
  8773
+  if (linkrelax && fixP->fx_addsy
mgl@1371
  8774
+      && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
mgl@1371
  8775
+      && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
mgl@1371
  8776
+    {
mgl@1371
  8777
+      pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
mgl@1371
  8778
+	       fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
mgl@1371
  8779
+      return 1;
mgl@1371
  8780
+    }
mgl@1371
  8781
+
mgl@1371
  8782
+  return generic_force_reloc(fixP);
mgl@1371
  8783
+}
mgl@1371
  8784
+
mgl@1371
  8785
+bfd_boolean
mgl@1371
  8786
+avr32_fix_adjustable(fixS *fixP)
mgl@1371
  8787
+{
mgl@1371
  8788
+  switch (fixP->fx_r_type)
mgl@1371
  8789
+    {
mgl@1371
  8790
+      /* GOT relocations can't have addends since BFD treats all
mgl@1371
  8791
+	 references to a given symbol the same. This means that we
mgl@1371
  8792
+	 must avoid section-relative references to local symbols when
mgl@1371
  8793
+	 dealing with these kinds of relocs */
mgl@1371
  8794
+    case BFD_RELOC_AVR32_GOT32:
mgl@1371
  8795
+    case BFD_RELOC_AVR32_GOT16:
mgl@1371
  8796
+    case BFD_RELOC_AVR32_GOT8:
mgl@1371
  8797
+    case BFD_RELOC_AVR32_GOT21S:
mgl@1371
  8798
+    case BFD_RELOC_AVR32_GOT18SW:
mgl@1371
  8799
+    case BFD_RELOC_AVR32_GOT16S:
mgl@1371
  8800
+    case BFD_RELOC_AVR32_LDA_GOT:
mgl@1371
  8801
+    case BFD_RELOC_AVR32_GOTCALL:
mgl@1371
  8802
+      pr_debug("fix not adjustable\n");
mgl@1371
  8803
+      return 0;
mgl@1371
  8804
+
mgl@1371
  8805
+    default:
mgl@1371
  8806
+      break;
mgl@1371
  8807
+    }
mgl@1371
  8808
+
mgl@1371
  8809
+  return 1;
mgl@1371
  8810
+}
mgl@1371
  8811
+
mgl@1371
  8812
+/* When we want the linker to be able to relax the code, we need to
mgl@1371
  8813
+   output a reloc for every .align directive requesting an alignment
mgl@1371
  8814
+   to a four byte boundary or larger.  If we don't do this, the linker
mgl@1371
  8815
+   can't guarantee that the alignment is actually maintained in the
mgl@1371
  8816
+   linker output.
mgl@1371
  8817
+
mgl@1371
  8818
+   TODO: Might as well insert proper NOPs while we're at it... */
mgl@1371
  8819
+void
mgl@1371
  8820
+avr32_handle_align(fragS *frag)
mgl@1371
  8821
+{
mgl@1371
  8822
+  if (linkrelax
mgl@1371
  8823
+      && frag->fr_type == rs_align_code
mgl@1371
  8824
+      && frag->fr_address + frag->fr_fix > 0
mgl@1371
  8825
+      && frag->fr_offset > 0)
mgl@1371
  8826
+    {
mgl@1371
  8827
+      /* The alignment order (fr_offset) is stored in the addend. */
mgl@1371
  8828
+      fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
mgl@1371
  8829
+	      FALSE, BFD_RELOC_AVR32_ALIGN);
mgl@1371
  8830
+    }
mgl@1371
  8831
+}
mgl@1371
  8832
+
mgl@1371
  8833
+/* Relax_align. Advance location counter to next address that has 'alignment'
mgl@1371
  8834
+   lowest order bits all 0s, return size of adjustment made.  */
mgl@1371
  8835
+relax_addressT
mgl@1371
  8836
+avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
mgl@1371
  8837
+		  fragS *fragP,
mgl@1371
  8838
+		  relax_addressT address)
mgl@1371
  8839
+{
mgl@1371
  8840
+  relax_addressT mask;
mgl@1371
  8841
+  relax_addressT new_address;
mgl@1371
  8842
+  int alignment;
mgl@1371
  8843
+
mgl@1371
  8844
+  alignment = fragP->fr_offset;
mgl@1371
  8845
+  mask = ~((~0) << alignment);
mgl@1371
  8846
+  new_address = (address + mask) & (~mask);
mgl@1371
  8847
+
mgl@1371
  8848
+  return new_address - address;
mgl@1371
  8849
+}
mgl@1371
  8850
+
mgl@1371
  8851
+/* Turn a string in input_line_pointer into a floating point constant
mgl@1371
  8852
+   of type type, and store the appropriate bytes in *litP.  The number
mgl@1371
  8853
+   of LITTLENUMS emitted is stored in *sizeP .  An error message is
mgl@1371
  8854
+   returned, or NULL on OK. */
mgl@1371
  8855
+
mgl@1371
  8856
+/* Equal to MAX_PRECISION in atof-ieee.c */
mgl@1371
  8857
+#define MAX_LITTLENUMS 6
mgl@1371
  8858
+
mgl@1371
  8859
+char *
mgl@1371
  8860
+md_atof (type, litP, sizeP)
mgl@1371
  8861
+char   type;
mgl@1371
  8862
+char * litP;
mgl@1371
  8863
+int *  sizeP;
mgl@1371
  8864
+{
mgl@1371
  8865
+  int              i;
mgl@1371
  8866
+  int              prec;
mgl@1371
  8867
+  LITTLENUM_TYPE   words [MAX_LITTLENUMS];
mgl@1371
  8868
+  char *           t;
mgl@1371
  8869
+
mgl@1371
  8870
+  switch (type)
mgl@1371
  8871
+  {
mgl@1371
  8872
+    case 'f':
mgl@1371
  8873
+    case 'F':
mgl@1371
  8874
+    case 's':
mgl@1371
  8875
+    case 'S':
mgl@1371
  8876
+      prec = 2;
mgl@1371
  8877
+      break;
mgl@1371
  8878
+
mgl@1371
  8879
+    case 'd':
mgl@1371
  8880
+    case 'D':
mgl@1371
  8881
+    case 'r':
mgl@1371
  8882
+    case 'R':
mgl@1371
  8883
+      prec = 4;
mgl@1371
  8884
+      break;
mgl@1371
  8885
+
mgl@1371
  8886
+      /* FIXME: Some targets allow other format chars for bigger sizes here.  */
mgl@1371
  8887
+
mgl@1371
  8888
+    default:
mgl@1371
  8889
+      * sizeP = 0;
mgl@1371
  8890
+      return _("Bad call to md_atof()");
mgl@1371
  8891
+  }
mgl@1371
  8892
+
mgl@1371
  8893
+  t = atof_ieee (input_line_pointer, type, words);
mgl@1371
  8894
+  if (t)
mgl@1371
  8895
+    input_line_pointer = t;
mgl@1371
  8896
+  * sizeP = prec * sizeof (LITTLENUM_TYPE);
mgl@1371
  8897
+
mgl@1371
  8898
+  for (i = 0; i < prec; i++)
mgl@1371
  8899
+  {
mgl@1371
  8900
+    md_number_to_chars (litP, (valueT) words[i],
mgl@1371
  8901
+                        sizeof (LITTLENUM_TYPE));
mgl@1371
  8902
+    litP += sizeof (LITTLENUM_TYPE);
mgl@1371
  8903
+  }
mgl@1371
  8904
+
mgl@1371
  8905
+  return 0;
mgl@1371
  8906
+}
mgl@1371
  8907
+
mgl@1371
  8908
+static char *avr32_end_of_match(char *cont, char *what)
mgl@1371
  8909
+{
mgl@1371
  8910
+  int len = strlen (what);
mgl@1371
  8911
+
mgl@1371
  8912
+  if (! is_part_of_name (cont[len])
mgl@1371
  8913
+      && strncasecmp (cont, what, len) == 0)
mgl@1371
  8914
+    return cont + len;
mgl@1371
  8915
+
mgl@1371
  8916
+  return NULL;
mgl@1371
  8917
+}
mgl@1371
  8918
+
mgl@1371
  8919
+int
mgl@1371
  8920
+avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
mgl@1371
  8921
+{
mgl@1371
  8922
+  char *next = input_line_pointer;
mgl@1371
  8923
+  char *next_end;
mgl@1371
  8924
+
mgl@1371
  8925
+  pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
mgl@1371
  8926
+
mgl@1371
  8927
+  if (*nextchar == '(')
mgl@1371
  8928
+    {
mgl@1371
  8929
+      if (strcasecmp(name, "hi") == 0)
mgl@1371
  8930
+	{
mgl@1371
  8931
+	  *next = *nextchar;
mgl@1371
  8932
+
mgl@1371
  8933
+	  expression(exp);
mgl@1371
  8934
+
mgl@1371
  8935
+	  if (exp->X_op == O_constant)
mgl@1371
  8936
+	    {
mgl@1371
  8937
+	      pr_debug("  -> constant hi(0x%08lx) -> 0x%04lx\n",
mgl@1371
  8938
+		       exp->X_add_number, exp->X_add_number >> 16);
mgl@1371
  8939
+	      exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
mgl@1371
  8940
+	    }
mgl@1371
  8941
+	  else
mgl@1371
  8942
+	    {
mgl@1371
  8943
+	      exp->X_md = exp->X_op;
mgl@1371
  8944
+	      exp->X_op = O_hi;
mgl@1371
  8945
+	    }
mgl@1371
  8946
+
mgl@1371
  8947
+	  return 1;
mgl@1371
  8948
+	}
mgl@1371
  8949
+      else if (strcasecmp(name, "lo") == 0)
mgl@1371
  8950
+	{
mgl@1371
  8951
+	  *next = *nextchar;
mgl@1371
  8952
+
mgl@1371
  8953
+	  expression(exp);
mgl@1371
  8954
+
mgl@1371
  8955
+	  if (exp->X_op == O_constant)
mgl@1371
  8956
+	    exp->X_add_number &= 0xffff;
mgl@1371
  8957
+	  else
mgl@1371
  8958
+	    {
mgl@1371
  8959
+	      exp->X_md = exp->X_op;
mgl@1371
  8960
+	      exp->X_op = O_lo;
mgl@1371
  8961
+	    }
mgl@1371
  8962
+
mgl@1371
  8963
+	  return 1;
mgl@1371
  8964
+	}
mgl@1371
  8965
+    }
mgl@1371
  8966
+  else if (*nextchar == '@')
mgl@1371
  8967
+    {
mgl@1371
  8968
+      exp->X_md = exp->X_op;
mgl@1371
  8969
+
mgl@1371
  8970
+      if ((next_end = avr32_end_of_match (next + 1, "got")))
mgl@1371
  8971
+	exp->X_op = O_got;
mgl@1371
  8972
+      else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
mgl@1371
  8973
+	exp->X_op = O_tlsgd;
mgl@1371
  8974
+      /* Add more as needed */
mgl@1371
  8975
+      else
mgl@1371
  8976
+	{
mgl@1371
  8977
+	  char c;
mgl@1371
  8978
+	  input_line_pointer++;
mgl@1371
  8979
+	  c = get_symbol_end();
mgl@1371
  8980
+	  as_bad (_("unknown relocation override `%s'"), next + 1);
mgl@1371
  8981
+	  *input_line_pointer = c;
mgl@1371
  8982
+	  input_line_pointer = next;
mgl@1371
  8983
+	  return 0;
mgl@1371
  8984
+	}
mgl@1371
  8985
+
mgl@1371
  8986
+      exp->X_op_symbol = NULL;
mgl@1371
  8987
+      exp->X_add_symbol = symbol_find_or_make (name);
mgl@1371
  8988
+      exp->X_add_number = 0;
mgl@1371
  8989
+
mgl@1371
  8990
+      *input_line_pointer = *nextchar;
mgl@1371
  8991
+      input_line_pointer = next_end;
mgl@1371
  8992
+      *nextchar = *input_line_pointer;
mgl@1371
  8993
+      *input_line_pointer = '\0';
mgl@1371
  8994
+      return 1;
mgl@1371
  8995
+    }
mgl@1371
  8996
+  else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
mgl@1371
  8997
+    {
mgl@1371
  8998
+      if (!GOT_symbol)
mgl@1371
  8999
+	GOT_symbol = symbol_find_or_make(name);
mgl@1371
  9000
+
mgl@1371
  9001
+      exp->X_add_symbol = GOT_symbol;
mgl@1371
  9002
+      exp->X_op = O_symbol;
mgl@1371
  9003
+      exp->X_add_number = 0;
mgl@1371
  9004
+      return 1;
mgl@1371
  9005
+    }
mgl@1371
  9006
+
mgl@1371
  9007
+  return 0;
mgl@1371
  9008
+}
mgl@1371
  9009
+
mgl@1371
  9010
+static void
mgl@1371
  9011
+s_rseg (int value ATTRIBUTE_UNUSED)
mgl@1371
  9012
+{
mgl@1371
  9013
+  /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
mgl@1371
  9014
+   * Defaults:
mgl@1371
  9015
+   *  - type: undocumented ("typically CODE or DATA")
mgl@1371
  9016
+   *  - ROOT
mgl@1371
  9017
+   *  - align: 1 for code, 0 for others
mgl@1371
  9018
+   *
mgl@1371
  9019
+   * TODO: NOROOT is ignored. If gas supports discardable segments, it should
mgl@1371
  9020
+   * be implemented.
mgl@1371
  9021
+   */
mgl@1371
  9022
+  char *name, *end;
mgl@1371
  9023
+  int length, type, attr;
mgl@1371
  9024
+  int align = 0;
mgl@1371
  9025
+
mgl@1371
  9026
+  SKIP_WHITESPACE();
mgl@1371
  9027
+
mgl@1371
  9028
+  end = input_line_pointer;
mgl@1371
  9029
+  while (0 == strchr ("\n\t;:( ", *end))
mgl@1371
  9030
+    end++;
mgl@1371
  9031
+  if (end == input_line_pointer)
mgl@1371
  9032
+    {
mgl@1371
  9033
+      as_warn (_("missing name"));
mgl@1371
  9034
+      ignore_rest_of_line();
mgl@1371
  9035
+      return;
mgl@1371
  9036
+    }
mgl@1371
  9037
+
mgl@1371
  9038
+  name = xmalloc (end - input_line_pointer + 1);
mgl@1371
  9039
+  memcpy (name, input_line_pointer, end - input_line_pointer);
mgl@1371
  9040
+  name[end - input_line_pointer] = '\0';
mgl@1371
  9041
+  input_line_pointer = end;
mgl@1371
  9042
+
mgl@1371
  9043
+  SKIP_WHITESPACE();
mgl@1371
  9044
+
mgl@1371
  9045
+  type = SHT_NULL;
mgl@1371
  9046
+  attr = 0;
mgl@1371
  9047
+
mgl@1371
  9048
+  if (*input_line_pointer == ':')
mgl@1371
  9049
+    {
mgl@1371
  9050
+      /* Skip the colon */
mgl@1371
  9051
+      ++input_line_pointer;
mgl@1371
  9052
+      SKIP_WHITESPACE();
mgl@1371
  9053
+
mgl@1371
  9054
+      /* Possible options at this point:
mgl@1371
  9055
+       *   - flag (ROOT or NOROOT)
mgl@1371
  9056
+       *   - a segment type
mgl@1371
  9057
+       */
mgl@1371
  9058
+      end = input_line_pointer;
mgl@1371
  9059
+      while (0 == strchr ("\n\t;:( ", *end))
mgl@1371
  9060
+	end++;
mgl@1371
  9061
+      length = end - input_line_pointer;
mgl@1371
  9062
+      if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
mgl@1371
  9063
+	  ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
mgl@1371
  9064
+	{
mgl@1371
  9065
+	  /* Ignore ROOT/NOROOT */
mgl@1371
  9066
+	  input_line_pointer = end;
mgl@1371
  9067
+	}
mgl@1371
  9068
+      else
mgl@1371
  9069
+	{
mgl@1371
  9070
+	  /* Must be a segment type */
mgl@1371
  9071
+	  switch (*input_line_pointer)
mgl@1371
  9072
+	    {
mgl@1371
  9073
+	    case 'C':
mgl@1371
  9074
+	    case 'c':
mgl@1371
  9075
+	      if ((length == 4) &&
mgl@1371
  9076
+		  (0 == strncasecmp (input_line_pointer, "CODE", 4)))
mgl@1371
  9077
+		{
mgl@1371
  9078
+		  attr |= SHF_ALLOC | SHF_EXECINSTR;
mgl@1371
  9079
+		  type = SHT_PROGBITS;
mgl@1371
  9080
+		  align = 1;
mgl@1371
  9081
+		  break;
mgl@1371
  9082
+		}
mgl@1371
  9083
+	      if ((length == 5) &&
mgl@1371
  9084
+		  (0 == strncasecmp (input_line_pointer, "CONST", 5)))
mgl@1371
  9085
+		{
mgl@1371
  9086
+		  attr |= SHF_ALLOC;
mgl@1371
  9087
+		  type = SHT_PROGBITS;
mgl@1371
  9088
+		  break;
mgl@1371
  9089
+		}
mgl@1371
  9090
+	      goto de_fault;
mgl@1371
  9091
+
mgl@1371
  9092
+	    case 'D':
mgl@1371
  9093
+	    case 'd':
mgl@1371
  9094
+	      if ((length == 4) &&
mgl@1371
  9095
+		  (0 == strncasecmp (input_line_pointer, "DATA", 4)))
mgl@1371
  9096
+		{
mgl@1371
  9097
+		  attr |= SHF_ALLOC | SHF_WRITE;
mgl@1371
  9098
+		  type = SHT_PROGBITS;
mgl@1371
  9099
+		  break;
mgl@1371
  9100
+		}
mgl@1371
  9101
+	      goto de_fault;
mgl@1371
  9102
+
mgl@1371
  9103
+	      /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
mgl@1371
  9104
+
mgl@1371
  9105
+	    case 'U':
mgl@1371
  9106
+	    case 'u':
mgl@1371
  9107
+	      if ((length == 7) &&
mgl@1371
  9108
+		  (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
mgl@1371
  9109
+		break;
mgl@1371
  9110
+	      goto de_fault;
mgl@1371
  9111
+
mgl@1371
  9112
+	      /* TODO: Add XDATA and ZPAGE if necessary */
mgl@1371
  9113
+
mgl@1371
  9114
+	    de_fault:
mgl@1371
  9115
+	    default:
mgl@1371
  9116
+	      as_warn (_("unrecognized segment type"));
mgl@1371
  9117
+	    }
mgl@1371
  9118
+
mgl@1371
  9119
+	  input_line_pointer = end;
mgl@1371
  9120
+	  SKIP_WHITESPACE();
mgl@1371
  9121
+
mgl@1371
  9122
+	  if (*input_line_pointer == ':')
mgl@1371
  9123
+	    {
mgl@1371
  9124
+	      /*  ROOT/NOROOT */
mgl@1371
  9125
+	      ++input_line_pointer;
mgl@1371
  9126
+	      SKIP_WHITESPACE();
mgl@1371
  9127
+
mgl@1371
  9128
+	      end = input_line_pointer;
mgl@1371
  9129
+	      while (0 == strchr ("\n\t;:( ", *end))
mgl@1371
  9130
+		end++;
mgl@1371
  9131
+	      length = end - input_line_pointer;
mgl@1371
  9132
+	      if (! ((length == 4) &&
mgl@1371
  9133
+		     (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
mgl@1371
  9134
+		  ! ((length == 6) &&
mgl@1371
  9135
+		     (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
mgl@1371
  9136
+		{
mgl@1371
  9137
+		  as_warn (_("unrecognized segment flag"));
mgl@1371
  9138
+		}
mgl@1371
  9139
+
mgl@1371
  9140
+	      input_line_pointer = end;
mgl@1371
  9141
+	      SKIP_WHITESPACE();
mgl@1371
  9142
+	    }
mgl@1371
  9143
+	}
mgl@1371
  9144
+    }
mgl@1371
  9145
+
mgl@1371
  9146
+  if (*input_line_pointer == '(')
mgl@1371
  9147
+    {
mgl@1371
  9148
+      align = get_absolute_expression ();
mgl@1371
  9149
+    }
mgl@1371
  9150
+
mgl@1371
  9151
+  demand_empty_rest_of_line();
mgl@1371
  9152
+
mgl@1371
  9153
+  obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
mgl@1371
  9154
+#ifdef AVR32_DEBUG
mgl@1371
  9155
+  fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
mgl@1371
  9156
+      name, type, attr );
mgl@1371
  9157
+  fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
mgl@1371
  9158
+#endif
mgl@1371
  9159
+
mgl@1371
  9160
+  if (align > 15)
mgl@1371
  9161
+    {
mgl@1371
  9162
+      align = 15;
mgl@1371
  9163
+      as_warn (_("alignment too large: %u assumed"), align);
mgl@1371
  9164
+    }
mgl@1371
  9165
+
mgl@1371
  9166
+  /* Hope not, that is */
mgl@1371
  9167
+  assert (now_seg != absolute_section);
mgl@1371
  9168
+
mgl@1371
  9169
+  /* Only make a frag if we HAVE to... */
mgl@1371
  9170
+  if (align != 0 && !need_pass_2)
mgl@1371
  9171
+    {
mgl@1371
  9172
+      if (subseg_text_p (now_seg))
mgl@1371
  9173
+	frag_align_code (align, 0);
mgl@1371
  9174
+      else
mgl@1371
  9175
+	frag_align (align, 0, 0);
mgl@1371
  9176
+    }
mgl@1371
  9177
+
mgl@1371
  9178
+  record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
mgl@1371
  9179
+}
mgl@1371
  9180
+
mgl@1371
  9181
+/* vim: syntax=c sw=2
mgl@1371
  9182
+ */
mgl@1371
  9183
--- /dev/null
mgl@1371
  9184
+++ b/gas/config/tc-avr32.h
mgl@1371
  9185
@@ -0,0 +1,325 @@
mgl@1371
  9186
+/* Assembler definitions for AVR32.
mgl@1371
  9187
+   Copyright 2003-2006 Atmel Corporation.
mgl@1371
  9188
+
mgl@1371
  9189
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
  9190
+
mgl@1371
  9191
+   This file is part of GAS, the GNU Assembler.
mgl@1371
  9192
+
mgl@1371
  9193
+   GAS is free software; you can redistribute it and/or modify it
mgl@1371
  9194
+   under the terms of the GNU General Public License as published by
mgl@1371
  9195
+   the Free Software Foundation; either version 2, or (at your option)
mgl@1371
  9196
+   any later version.
mgl@1371
  9197
+
mgl@1371
  9198
+   GAS is distributed in the hope that it will be useful, but WITHOUT
mgl@1371
  9199
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
mgl@1371
  9200
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
mgl@1371
  9201
+   License for more details.
mgl@1371
  9202
+
mgl@1371
  9203
+   You should have received a copy of the GNU General Public License
mgl@1371
  9204
+   along with GAS; see the file COPYING.  If not, write to the Free
mgl@1371
  9205
+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
mgl@1371
  9206
+   02111-1307, USA.  */
mgl@1371
  9207
+
mgl@1371
  9208
+#if 0
mgl@1371
  9209
+#define DEBUG
mgl@1371
  9210
+#define DEBUG1
mgl@1371
  9211
+#define DEBUG2
mgl@1371
  9212
+#define DEBUG3
mgl@1371
  9213
+#define DEBUG4
mgl@1371
  9214
+#define DEBUG5
mgl@1371
  9215
+#endif
mgl@1371
  9216
+
mgl@1371
  9217
+/* Are we trying to be compatible with the IAR assembler? (--iar) */
mgl@1371
  9218
+extern int avr32_iarcompat;
mgl@1371
  9219
+
mgl@1371
  9220
+/* By convention, you should define this macro in the `.h' file.  For
mgl@1371
  9221
+   example, `tc-m68k.h' defines `TC_M68K'.  You might have to use this
mgl@1371
  9222
+   if it is necessary to add CPU specific code to the object format
mgl@1371
  9223
+   file.  */
mgl@1371
  9224
+#define TC_AVR32
mgl@1371
  9225
+
mgl@1371
  9226
+/* This macro is the BFD target name to use when creating the output
mgl@1371
  9227
+   file.  This will normally depend upon the `OBJ_FMT' macro.  */
mgl@1371
  9228
+#define TARGET_FORMAT "elf32-avr32"
mgl@1371
  9229
+
mgl@1371
  9230
+/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'.  */
mgl@1371
  9231
+#define TARGET_ARCH bfd_arch_avr32
mgl@1371
  9232
+
mgl@1371
  9233
+/* This macro is the BFD machine number to pass to
mgl@1371
  9234
+   `bfd_set_arch_mach'.  If it is not defined, GAS will use 0.  */
mgl@1371
  9235
+#define TARGET_MACH 0
mgl@1371
  9236
+
mgl@1371
  9237
+/* UNDOCUMENTED: Allow //-style comments */
mgl@1371
  9238
+#define DOUBLESLASH_LINE_COMMENTS
mgl@1371
  9239
+
mgl@1371
  9240
+/* You should define this macro to be non-zero if the target is big
mgl@1371
  9241
+   endian, and zero if the target is little endian.  */
mgl@1371
  9242
+#define TARGET_BYTES_BIG_ENDIAN 1
mgl@1371
  9243
+
mgl@1371
  9244
+/* FIXME: It seems that GAS only expects a one-byte opcode...
mgl@1371
  9245
+   #define NOP_OPCODE 0xd703 */
mgl@1371
  9246
+
mgl@1371
  9247
+/* If you define this macro, GAS will warn about the use of
mgl@1371
  9248
+   nonstandard escape sequences in a string.  */
mgl@1371
  9249
+#undef ONLY_STANDARD_ESCAPES
mgl@1371
  9250
+
mgl@1371
  9251
+#define DWARF2_FORMAT() dwarf2_format_32bit
mgl@1371
  9252
+
mgl@1371
  9253
+/* Instructions are either 2 or 4 bytes long */
mgl@1371
  9254
+/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
mgl@1371
  9255
+
mgl@1371
  9256
+/* GAS will call this function for any expression that can not be
mgl@1371
  9257
+   recognized.  When the function is called, `input_line_pointer'
mgl@1371
  9258
+   will point to the start of the expression.  */
mgl@1371
  9259
+#define md_operand(x)
mgl@1371
  9260
+
mgl@1371
  9261
+#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
mgl@1371
  9262
+extern int avr32_parse_name(const char *, struct expressionS *, char *);
mgl@1371
  9263
+
mgl@1371
  9264
+/* You may define this macro to generate a fixup for a data
mgl@1371
  9265
+   allocation pseudo-op.  */
mgl@1371
  9266
+#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP)	\
mgl@1371
  9267
+  avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
mgl@1371
  9268
+void avr32_cons_fix_new (fragS *, int, int, expressionS *);
mgl@1371
  9269
+
mgl@1371
  9270
+/* `extsym - .' expressions can be emitted using PC-relative relocs */
mgl@1371
  9271
+#define DIFF_EXPR_OK
mgl@1371
  9272
+
mgl@1371
  9273
+/* This is used to construct expressions out of @gotoff, etc. The
mgl@1371
  9274
+   relocation type is stored in X_md */
mgl@1371
  9275
+#define O_got		O_md1
mgl@1371
  9276
+#define O_hi		O_md2
mgl@1371
  9277
+#define O_lo		O_md3
mgl@1371
  9278
+#define O_tlsgd		O_md4
mgl@1371
  9279
+
mgl@1371
  9280
+/* You may define this macro to parse an expression used in a data
mgl@1371
  9281
+   allocation pseudo-op such as `.word'.  You can use this to
mgl@1371
  9282
+   recognize relocation directives that may appear in such directives.  */
mgl@1371
  9283
+/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
mgl@1371
  9284
+   void avr_parse_cons_expression (expressionS *exp, int nbytes); */
mgl@1371
  9285
+
mgl@1371
  9286
+/* This should just call either `number_to_chars_bigendian' or
mgl@1371
  9287
+   `number_to_chars_littleendian', whichever is appropriate.  On
mgl@1371
  9288
+   targets like the MIPS which support options to change the
mgl@1371
  9289
+   endianness, which function to call is a runtime decision.  On
mgl@1371
  9290
+   other targets, `md_number_to_chars' can be a simple macro.  */
mgl@1371
  9291
+#define md_number_to_chars number_to_chars_bigendian
mgl@1371
  9292
+
mgl@1371
  9293
+/* `md_short_jump_size'
mgl@1371
  9294
+   `md_long_jump_size'
mgl@1371
  9295
+   `md_create_short_jump'
mgl@1371
  9296
+   `md_create_long_jump'
mgl@1371
  9297
+   If `WORKING_DOT_WORD' is defined, GAS will not do broken word
mgl@1371
  9298
+   processing (*note Broken words::.).  Otherwise, you should set
mgl@1371
  9299
+   `md_short_jump_size' to the size of a short jump (a jump that is
mgl@1371
  9300
+   just long enough to jump around a long jmp) and
mgl@1371
  9301
+   `md_long_jump_size' to the size of a long jump (a jump that can go
mgl@1371
  9302
+   anywhere in the function), You should define
mgl@1371
  9303
+   `md_create_short_jump' to create a short jump around a long jump,
mgl@1371
  9304
+   and define `md_create_long_jump' to create a long jump.  */
mgl@1371
  9305
+#define WORKING_DOT_WORD
mgl@1371
  9306
+
mgl@1371
  9307
+/* If you define this macro, it means that `tc_gen_reloc' may return
mgl@1371
  9308
+   multiple relocation entries for a single fixup.  In this case, the
mgl@1371
  9309
+   return value of `tc_gen_reloc' is a pointer to a null terminated
mgl@1371
  9310
+   array.  */
mgl@1371
  9311
+#undef RELOC_EXPANSION_POSSIBLE
mgl@1371
  9312
+
mgl@1371
  9313
+/* If you define this macro, GAS will not require pseudo-ops to start with a .
mgl@1371
  9314
+   character. */
mgl@1371
  9315
+#define NO_PSEUDO_DOT (avr32_iarcompat)
mgl@1371
  9316
+
mgl@1371
  9317
+/* The IAR assembler uses $ as the location counter. Unfortunately, we
mgl@1371
  9318
+   can't make this dependent on avr32_iarcompat... */
mgl@1371
  9319
+#define DOLLAR_DOT
mgl@1371
  9320
+
mgl@1371
  9321
+/* Values passed to md_apply_fix3 don't include the symbol value.  */
mgl@1371
  9322
+#define MD_APPLY_SYM_VALUE(FIX) 0
mgl@1371
  9323
+
mgl@1371
  9324
+/* The number of bytes to put into a word in a listing.  This affects
mgl@1371
  9325
+   the way the bytes are clumped together in the listing.  For
mgl@1371
  9326
+   example, a value of 2 might print `1234 5678' where a value of 1
mgl@1371
  9327
+   would print `12 34 56 78'.  The default value is 4.  */
mgl@1371
  9328
+#define LISTING_WORD_SIZE 4
mgl@1371
  9329
+
mgl@1371
  9330
+/* extern const struct relax_type md_relax_table[];
mgl@1371
  9331
+#define TC_GENERIC_RELAX_TABLE md_relax_table */
mgl@1371
  9332
+
mgl@1371
  9333
+/*
mgl@1371
  9334
+  An `.lcomm' directive with no explicit alignment parameter will use
mgl@1371
  9335
+  this macro to set P2VAR to the alignment that a request for SIZE
mgl@1371
  9336
+  bytes will have.  The alignment is expressed as a power of two.  If
mgl@1371
  9337
+  no alignment should take place, the macro definition should do
mgl@1371
  9338
+  nothing.  Some targets define a `.bss' directive that is also
mgl@1371
  9339
+  affected by this macro.  The default definition will set P2VAR to
mgl@1371
  9340
+  the truncated power of two of sizes up to eight bytes.
mgl@1371
  9341
+
mgl@1371
  9342
+  We want doublewords to be word-aligned, so we're going to modify the
mgl@1371
  9343
+  default definition a tiny bit.
mgl@1371
  9344
+*/
mgl@1371
  9345
+#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR)	\
mgl@1371
  9346
+  do							\
mgl@1371
  9347
+    {							\
mgl@1371
  9348
+      if ((SIZE) >= 4)					\
mgl@1371
  9349
+	(P2VAR) = 2;					\
mgl@1371
  9350
+      else if ((SIZE) >= 2)				\
mgl@1371
  9351
+	(P2VAR) = 1;					\
mgl@1371
  9352
+      else						\
mgl@1371
  9353
+	(P2VAR) = 0;					\
mgl@1371
  9354
+    }							\
mgl@1371
  9355
+  while (0)
mgl@1371
  9356
+
mgl@1371
  9357
+/* When relaxing, we need to generate relocations for alignment
mgl@1371
  9358
+   directives.  */
mgl@1371
  9359
+#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
mgl@1371
  9360
+extern void avr32_handle_align(fragS *);
mgl@1371
  9361
+
mgl@1371
  9362
+/* See internals doc for explanation. Oh wait...
mgl@1371
  9363
+   Now, can you guess where "alignment" comes from? ;-) */
mgl@1371
  9364
+#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
mgl@1371
  9365
+
mgl@1371
  9366
+/* We need to stop gas from reducing certain expressions (e.g. GOT
mgl@1371
  9367
+   references) */
mgl@1371
  9368
+#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
mgl@1371
  9369
+extern bfd_boolean avr32_fix_adjustable(struct fix *);
mgl@1371
  9370
+
mgl@1371
  9371
+/* The linker needs to be passed a little more information when relaxing. */
mgl@1371
  9372
+#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
mgl@1371
  9373
+extern bfd_boolean avr32_force_reloc(struct fix *);
mgl@1371
  9374
+
mgl@1371
  9375
+/* I'm tired of working around all the madness in fixup_segment().
mgl@1371
  9376
+   This hook will do basically the same things as the generic code,
mgl@1371
  9377
+   and then it will "goto" right past it.  */
mgl@1371
  9378
+#define TC_VALIDATE_FIX(FIX, SEG, SKIP)		\
mgl@1371
  9379
+  do						\
mgl@1371
  9380
+    {						\
mgl@1371
  9381
+      avr32_process_fixup(FIX, SEG);		\
mgl@1371
  9382
+      if (!(FIX)->fx_done)			\
mgl@1371
  9383
+	++seg_reloc_count;			\
mgl@1371
  9384
+      goto SKIP;				\
mgl@1371
  9385
+    }						\
mgl@1371
  9386
+  while (0)
mgl@1371
  9387
+extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
mgl@1371
  9388
+
mgl@1371
  9389
+/* Positive values of TC_FX_SIZE_SLACK allow a target to define
mgl@1371
  9390
+   fixups that far past the end of a frag.  Having such fixups
mgl@1371
  9391
+   is of course most most likely a bug in setting fx_size correctly.
mgl@1371
  9392
+   A negative value disables the fixup check entirely, which is
mgl@1371
  9393
+   appropriate for something like the Renesas / SuperH SH_COUNT
mgl@1371
  9394
+   reloc.  */
mgl@1371
  9395
+/* This target is buggy, and sets fix size too large.  */
mgl@1371
  9396
+#define TC_FX_SIZE_SLACK(FIX) -1
mgl@1371
  9397
+
mgl@1371
  9398
+/* We don't want the gas core to make any assumptions about our way of
mgl@1371
  9399
+   doing linkrelaxing.  */
mgl@1371
  9400
+#define TC_LINKRELAX_FIXUP(SEG)			0
mgl@1371
  9401
+
mgl@1371
  9402
+/* ... but we do want it to insert lots of padding. */
mgl@1371
  9403
+#define LINKER_RELAXING_SHRINKS_ONLY
mgl@1371
  9404
+
mgl@1371
  9405
+/* Better do it ourselves, really... */
mgl@1371
  9406
+#define TC_RELAX_ALIGN(SEG, FRAG, ADDR)	avr32_relax_align(SEG, FRAG, ADDR)
mgl@1371
  9407
+extern relax_addressT
mgl@1371
  9408
+avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
mgl@1371
  9409
+
mgl@1371
  9410
+/* Use line number format that is amenable to linker relaxation.  */
mgl@1371
  9411
+#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
mgl@1371
  9412
+
mgl@1371
  9413
+/* This is called by write_object_file() just before symbols are
mgl@1371
  9414
+   attempted converted into section symbols.  */
mgl@1371
  9415
+#define tc_frob_file_before_adjust()	avr32_frob_file()
mgl@1371
  9416
+extern void avr32_frob_file(void);
mgl@1371
  9417
+
mgl@1371
  9418
+/* If you define this macro, GAS will call it at the end of each input
mgl@1371
  9419
+   file.  */
mgl@1371
  9420
+#define md_cleanup() avr32_cleanup()
mgl@1371
  9421
+extern void avr32_cleanup(void);
mgl@1371
  9422
+
mgl@1371
  9423
+/* There's an AVR32-specific hack in operand() which creates O_md
mgl@1371
  9424
+   expressions when encountering HWRD or LWRD. We need to generate
mgl@1371
  9425
+   proper relocs for them */
mgl@1371
  9426
+/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
mgl@1371
  9427
+
mgl@1371
  9428
+/* I needed to add an extra hook in gas_cgen_finish_insn() for
mgl@1371
  9429
+   conversion of O_md* operands because md_cgen_record_fixup_exp()
mgl@1371
  9430
+   isn't called for relaxable insns */
mgl@1371
  9431
+/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
mgl@1371
  9432
+   int avr32_cgen_convert_expr(expressionS *, int); */
mgl@1371
  9433
+
mgl@1371
  9434
+/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
mgl@1371
  9435
+
mgl@1371
  9436
+/* If you define this macro, it should return the position from which
mgl@1371
  9437
+   the PC relative adjustment for a PC relative fixup should be
mgl@1371
  9438
+   made. On many processors, the base of a PC relative instruction is
mgl@1371
  9439
+   the next instruction, so this macro would return the length of an
mgl@1371
  9440
+   instruction, plus the address of the PC relative fixup. The latter
mgl@1371
  9441
+   can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
mgl@1371
  9442
+extern long md_pcrel_from_section (struct fix *, segT);
mgl@1371
  9443
+#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
mgl@1371
  9444
+
mgl@1371
  9445
+#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
mgl@1371
  9446
+#define LOCAL_LABELS_FB		1
mgl@1371
  9447
+
mgl@1371
  9448
+struct avr32_relaxer
mgl@1371
  9449
+{
mgl@1371
  9450
+  int (*estimate_size)(fragS *, segT);
mgl@1371
  9451
+  long (*relax_frag)(segT, fragS *, long);
mgl@1371
  9452
+  void (*convert_frag)(bfd *, segT, fragS *);
mgl@1371
  9453
+};
mgl@1371
  9454
+
mgl@1371
  9455
+/* AVR32 has quite complex instruction coding, which means we need
mgl@1371
  9456
+ * lots of information in order to do the right thing during relaxing
mgl@1371
  9457
+ * (basically, we need to be able to reconstruct a whole new opcode if
mgl@1371
  9458
+ * necessary) */
mgl@1371
  9459
+#define TC_FRAG_TYPE struct avr32_frag_data
mgl@1371
  9460
+
mgl@1371
  9461
+struct cpool;
mgl@1371
  9462
+
mgl@1371
  9463
+struct avr32_frag_data
mgl@1371
  9464
+{
mgl@1371
  9465
+  /* TODO: Maybe add an expression object here so that we can use
mgl@1371
  9466
+     fix_new_exp() in md_convert_frag?  We may have to decide
mgl@1371
  9467
+     pcrel-ness in md_estimate_size_before_relax() as well...or we
mgl@1371
  9468
+     might do it when parsing.  Doing it while parsing may fail
mgl@1371
  9469
+     because the sub_symbol is undefined then... */
mgl@1371
  9470
+  int pcrel;
mgl@1371
  9471
+  int force_extended;
mgl@1371
  9472
+  int reloc_info;
mgl@1371
  9473
+  struct avr32_relaxer *relaxer;
mgl@1371
  9474
+  expressionS exp;
mgl@1371
  9475
+
mgl@1371
  9476
+  /* Points to associated constant pool, for use by LDA and CALL in
mgl@1371
  9477
+     non-pic mode, and when relaxing the .cpool directive */
mgl@1371
  9478
+  struct cpool *pool;
mgl@1371
  9479
+  unsigned int pool_entry;
mgl@1371
  9480
+};
mgl@1371
  9481
+
mgl@1371
  9482
+/* We will have to initialize the fields explicitly when needed */
mgl@1371
  9483
+#define TC_FRAG_INIT(fragP)
mgl@1371
  9484
+
mgl@1371
  9485
+#define md_estimate_size_before_relax(fragP, segT)			\
mgl@1371
  9486
+  ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
mgl@1371
  9487
+#define md_relax_frag(segment, fragP, stretch)				\
mgl@1371
  9488
+  ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
mgl@1371
  9489
+#define md_convert_frag(abfd, segment, fragP)				\
mgl@1371
  9490
+  ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
mgl@1371
  9491
+
mgl@1371
  9492
+#define TC_FIX_TYPE struct avr32_fix_data
mgl@1371
  9493
+
mgl@1371
  9494
+struct avr32_fix_data
mgl@1371
  9495
+{
mgl@1371
  9496
+  const struct avr32_ifield *ifield;
mgl@1371
  9497
+  unsigned int align;
mgl@1371
  9498
+  long min;
mgl@1371
  9499
+  long max;
mgl@1371
  9500
+};
mgl@1371
  9501
+
mgl@1371
  9502
+#define TC_INIT_FIX_DATA(fixP)			\
mgl@1371
  9503
+  do						\
mgl@1371
  9504
+    {						\
mgl@1371
  9505
+      (fixP)->tc_fix_data.ifield = NULL;	\
mgl@1371
  9506
+      (fixP)->tc_fix_data.align = 0;		\
mgl@1371
  9507
+      (fixP)->tc_fix_data.min = 0;		\
mgl@1371
  9508
+      (fixP)->tc_fix_data.max = 0;		\
mgl@1371
  9509
+    }						\
mgl@1371
  9510
+  while (0)
mgl@1371
  9511
--- a/gas/configure.tgt
mgl@1371
  9512
+++ b/gas/configure.tgt
mgl@1371
  9513
@@ -33,6 +33,7 @@ case ${cpu} in
mgl@1371
  9514
   am33_2.0)		cpu_type=mn10300 endian=little ;;
mgl@1371
  9515
   arm*be|arm*b)		cpu_type=arm endian=big ;;
mgl@1371
  9516
   arm*)			cpu_type=arm endian=little ;;
mgl@1371
  9517
+  avr32*)		cpu_type=avr32 endian=big ;;
mgl@1371
  9518
   bfin*)		cpu_type=bfin endian=little ;;
mgl@1371
  9519
   c4x*)			cpu_type=tic4x ;;
mgl@1371
  9520
   cr16*)		cpu_type=cr16 endian=little ;;
mgl@1371
  9521
@@ -129,6 +130,9 @@ case ${generic_target} in
mgl@1371
  9522
   bfin-*elf)				fmt=elf ;;
mgl@1371
  9523
   cr16-*-elf*)	    			fmt=elf ;;
mgl@1371
  9524
 
mgl@1371
  9525
+  avr32-*-linux*)			fmt=elf  em=linux bfd_gas=yes ;;
mgl@1371
  9526
+  avr32*)				fmt=elf  bfd_gas=yes ;;
mgl@1371
  9527
+
mgl@1371
  9528
   cris-*-linux-* | crisv32-*-linux-*)
mgl@1371
  9529
 					fmt=multi em=linux ;;
mgl@1371
  9530
   cris-*-* | crisv32-*-*)		fmt=multi ;;
mgl@1371
  9531
--- a/gas/doc/all.texi
mgl@1371
  9532
+++ b/gas/doc/all.texi
mgl@1371
  9533
@@ -30,6 +30,7 @@
mgl@1371
  9534
 @set ARC
mgl@1371
  9535
 @set ARM
mgl@1371
  9536
 @set AVR
mgl@1371
  9537
+@set AVR32
mgl@1371
  9538
 @set BFIN
mgl@1371
  9539
 @set CR16
mgl@1371
  9540
 @set CRIS
mgl@1371
  9541
--- a/gas/doc/as.texinfo
mgl@1371
  9542
+++ b/gas/doc/as.texinfo
mgl@1371
  9543
@@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
mgl@1371
  9544
 @ifset AVR
mgl@1371
  9545
 * AVR-Dependent::               AVR Dependent Features
mgl@1371
  9546
 @end ifset
mgl@1371
  9547
+@ifset AVR32
mgl@1371
  9548
+* AVR32-Dependent::             AVR32 Dependent Features
mgl@1371
  9549
+@end ifset
mgl@1371
  9550
 @ifset BFIN
mgl@1371
  9551
 * BFIN-Dependent::		BFIN Dependent Features
mgl@1371
  9552
 @end ifset
mgl@1371
  9553
@@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
mgl@1371
  9554
 @include c-avr.texi
mgl@1371
  9555
 @end ifset
mgl@1371
  9556
 
mgl@1371
  9557
+@ifset AVR32
mgl@1371
  9558
+@include c-avr32.texi
mgl@1371
  9559
+@end ifset
mgl@1371
  9560
+
mgl@1371
  9561
 @ifset BFIN
mgl@1371
  9562
 @include c-bfin.texi
mgl@1371
  9563
 @end ifset
mgl@1371
  9564
--- /dev/null
mgl@1371
  9565
+++ b/gas/doc/c-avr32.texi
mgl@1371
  9566
@@ -0,0 +1,247 @@
mgl@1371
  9567
+@c Copyright 2005, 2006
mgl@1371
  9568
+@c Atmel Corporation
mgl@1371
  9569
+@c This is part of the GAS manual.
mgl@1371
  9570
+@c For copying conditions, see the file as.texinfo.
mgl@1371
  9571
+
mgl@1371
  9572
+@ifset GENERIC
mgl@1371
  9573
+@page
mgl@1371
  9574
+@node AVR32-Dependent
mgl@1371
  9575
+@chapter AVR32 Dependent Features
mgl@1371
  9576
+@end ifset
mgl@1371
  9577
+
mgl@1371
  9578
+@ifclear GENERIC
mgl@1371
  9579
+@node Machine Dependencies
mgl@1371
  9580
+@chapter AVR32 Dependent Features
mgl@1371
  9581
+@end ifclear
mgl@1371
  9582
+
mgl@1371
  9583
+@cindex AVR32 support
mgl@1371
  9584
+@menu
mgl@1371
  9585
+* AVR32 Options::               Options
mgl@1371
  9586
+* AVR32 Syntax::                Syntax
mgl@1371
  9587
+* AVR32 Directives::            Directives
mgl@1371
  9588
+* AVR32 Opcodes::               Opcodes
mgl@1371
  9589
+@end menu
mgl@1371
  9590
+
mgl@1371
  9591
+@node AVR32 Options
mgl@1371
  9592
+@section Options
mgl@1371
  9593
+@cindex AVR32 options
mgl@1371
  9594
+@cindex options for AVR32
mgl@1371
  9595
+
mgl@1371
  9596
+There are currently no AVR32-specific options.  However, the following
mgl@1371
  9597
+options are planned:
mgl@1371
  9598
+
mgl@1371
  9599
+@table @code
mgl@1371
  9600
+
mgl@1371
  9601
+@cindex @code{--pic} command line option, AVR32
mgl@1371
  9602
+@cindex PIC code generation for AVR32
mgl@1371
  9603
+@item --pic
mgl@1371
  9604
+This option specifies that the output of the assembler should be marked
mgl@1371
  9605
+as position-independent code (PIC).  It will also ensure that
mgl@1371
  9606
+pseudo-instructions that deal with address calculation are output as
mgl@1371
  9607
+PIC, and that all absolute address references in the code are marked as
mgl@1371
  9608
+such.
mgl@1371
  9609
+
mgl@1371
  9610
+@cindex @code{--linkrelax} command line option, AVR32
mgl@1371
  9611
+@item --linkrelax
mgl@1371
  9612
+This option specifies that the output of the assembler should be marked
mgl@1371
  9613
+as linker-relaxable.  It will also ensure that all PC-relative operands
mgl@1371
  9614
+that may change during linker relaxation get appropriate relocations.
mgl@1371
  9615
+
mgl@1371
  9616
+@end table
mgl@1371
  9617
+
mgl@1371
  9618
+
mgl@1371
  9619
+@node AVR32 Syntax
mgl@1371
  9620
+@section Syntax
mgl@1371
  9621
+@menu
mgl@1371
  9622
+* AVR32-Chars::              Special Characters
mgl@1371
  9623
+* AVR32-Symrefs::            Symbol references
mgl@1371
  9624
+@end menu
mgl@1371
  9625
+
mgl@1371
  9626
+@node AVR32-Chars
mgl@1371
  9627
+@subsection Special Characters
mgl@1371
  9628
+
mgl@1371
  9629
+@cindex line comment character, AVR32
mgl@1371
  9630
+@cindex AVR32 line comment character
mgl@1371
  9631
+The presence of a @samp{//} on a line indicates the start of a comment
mgl@1371
  9632
+that extends to the end of the current line.  If a @samp{#} appears as
mgl@1371
  9633
+the first character of a line, the whole line is treated as a comment.
mgl@1371
  9634
+
mgl@1371
  9635
+@cindex line separator, AVR32
mgl@1371
  9636
+@cindex statement separator, AVR32
mgl@1371
  9637
+@cindex AVR32 line separator
mgl@1371
  9638
+The @samp{;} character can be used instead of a newline to separate
mgl@1371
  9639
+statements.
mgl@1371
  9640
+
mgl@1371
  9641
+@node AVR32-Symrefs
mgl@1371
  9642
+@subsection Symbol references
mgl@1371
  9643
+
mgl@1371
  9644
+The absolute value of a symbol can be obtained by simply naming the
mgl@1371
  9645
+symbol.  However, as AVR32 symbols have 32-bit values, most symbols have
mgl@1371
  9646
+values that are outside the range of any instructions.
mgl@1371
  9647
+
mgl@1371
  9648
+Instructions that take a PC-relative offset, e.g. @code{lddpc} or
mgl@1371
  9649
+@code{rcall}, can also reference a symbol by simply naming the symbol
mgl@1371
  9650
+(no explicit calculations necessary).  In this case, the assembler or
mgl@1371
  9651
+linker subtracts the address of the instruction from the symbol's value
mgl@1371
  9652
+and inserts the result into the instruction.  Note that even though an
mgl@1371
  9653
+overflow is less likely to happen for a relative reference than for an
mgl@1371
  9654
+absolute reference, the assembler or linker will generate an error if
mgl@1371
  9655
+the referenced symbol is too far away from the current location.
mgl@1371
  9656
+
mgl@1371
  9657
+Relative references can be used for data as well.  For example:
mgl@1371
  9658
+
mgl@1371
  9659
+@smallexample
mgl@1371
  9660
+        lddpc   r0, 2f
mgl@1371
  9661
+1:      add     r0, pc
mgl@1371
  9662
+        ...
mgl@1371
  9663
+        .align  2
mgl@1371
  9664
+2:      .int    @var{some_symbol} - 1b
mgl@1371
  9665
+@end smallexample
mgl@1371
  9666
+
mgl@1371
  9667
+Here, r0 will end up with the run-time address of @var{some_symbol} even
mgl@1371
  9668
+if the program was loaded at a different address than it was linked
mgl@1371
  9669
+(position-independent code).
mgl@1371
  9670
+
mgl@1371
  9671
+@subsubsection Symbol modifiers
mgl@1371
  9672
+
mgl@1371
  9673
+@table @code
mgl@1371
  9674
+
mgl@1371
  9675
+@item @code{hi(@var{symbol})}
mgl@1371
  9676
+Evaluates to the value of the symbol shifted right 16 bits.  This will
mgl@1371
  9677
+work even if @var{symbol} is defined in a different module.
mgl@1371
  9678
+
mgl@1371
  9679
+@item @code{lo(@var{symbol})}
mgl@1371
  9680
+Evaluates to the low 16 bits of the symbol's value.  This will work even
mgl@1371
  9681
+if @var{symbol} is defined in a different module.
mgl@1371
  9682
+
mgl@1371
  9683
+@item @code{@var{symbol}@@got}
mgl@1371
  9684
+Create a GOT entry for @var{symbol} and return the offset of that entry
mgl@1371
  9685
+relative to the GOT base.
mgl@1371
  9686
+
mgl@1371
  9687
+@end table
mgl@1371
  9688
+
mgl@1371
  9689
+
mgl@1371
  9690
+@node AVR32 Directives
mgl@1371
  9691
+@section Directives
mgl@1371
  9692
+@cindex machine directives, AVR32
mgl@1371
  9693
+@cindex AVR32 directives
mgl@1371
  9694
+
mgl@1371
  9695
+@table @code
mgl@1371
  9696
+
mgl@1371
  9697
+@cindex @code{.cpool} directive, AVR32
mgl@1371
  9698
+@item .cpool
mgl@1371
  9699
+This directive causes the current contents of the constant pool to be
mgl@1371
  9700
+dumped into the current section at the current location (aligned to a
mgl@1371
  9701
+word boundary).  @code{GAS} maintains a separate constant pool for each
mgl@1371
  9702
+section and each sub-section.  The @code{.cpool} directive will only
mgl@1371
  9703
+affect the constant pool of the current section and sub-section.  At the
mgl@1371
  9704
+end of assembly, all remaining, non-empty constant pools will
mgl@1371
  9705
+automatically be dumped.
mgl@1371
  9706
+
mgl@1371
  9707
+@end table
mgl@1371
  9708
+
mgl@1371
  9709
+
mgl@1371
  9710
+@node AVR32 Opcodes
mgl@1371
  9711
+@section Opcodes
mgl@1371
  9712
+@cindex AVR32 opcodes
mgl@1371
  9713
+@cindex opcodes for AVR32
mgl@1371
  9714
+
mgl@1371
  9715
+@code{@value{AS}} implements all the standard AVR32 opcodes.  It also
mgl@1371
  9716
+implements several pseudo-opcodes, which are recommended to use wherever
mgl@1371
  9717
+possible because they give the tool chain better freedom to generate
mgl@1371
  9718
+optimal code.
mgl@1371
  9719
+
mgl@1371
  9720
+@table @code
mgl@1371
  9721
+
mgl@1371
  9722
+@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
mgl@1371
  9723
+@item LDA.W
mgl@1371
  9724
+@smallexample
mgl@1371
  9725
+        lda.w   @var{reg}, @var{symbol}
mgl@1371
  9726
+@end smallexample
mgl@1371
  9727
+
mgl@1371
  9728
+This instruction will load the address of @var{symbol} into
mgl@1371
  9729
+@var{reg}. The instruction will evaluate to one of the following,
mgl@1371
  9730
+depending on the relative distance to the symbol, the relative distance
mgl@1371
  9731
+to the constant pool and whether the @code{--pic} option has been
mgl@1371
  9732
+specified. If the @code{--pic} option has not been specified, the
mgl@1371
  9733
+alternatives are as follows:
mgl@1371
  9734
+@smallexample
mgl@1371
  9735
+        /* @var{symbol} evaluates to a small enough value */
mgl@1371
  9736
+        mov     @var{reg}, @var{symbol}
mgl@1371
  9737
+
mgl@1371
  9738
+        /* (. - @var{symbol}) evaluates to a small enough value */
mgl@1371
  9739
+        sub     @var{reg}, pc, . - @var{symbol}
mgl@1371
  9740
+
mgl@1371
  9741
+        /* Constant pool is close enough */
mgl@1371
  9742
+        lddpc   @var{reg}, @var{cpent}
mgl@1371
  9743
+        ...
mgl@1371
  9744
+@var{cpent}:
mgl@1371
  9745
+        .long   @var{symbol}
mgl@1371
  9746
+
mgl@1371
  9747
+        /* Otherwise (not implemented yet, probably not necessary) */
mgl@1371
  9748
+        mov     @var{reg}, lo(@var{symbol})
mgl@1371
  9749
+        orh     @var{reg}, hi(@var{symbol})
mgl@1371
  9750
+@end smallexample
mgl@1371
  9751
+
mgl@1371
  9752
+If the @code{--pic} option has been specified, the alternatives are as
mgl@1371
  9753
+follows:
mgl@1371
  9754
+@smallexample
mgl@1371
  9755
+        /* (. - @var{symbol}) evaluates to a small enough value */
mgl@1371
  9756
+        sub     @var{reg}, pc, . - @var{symbol}
mgl@1371
  9757
+
mgl@1371
  9758
+        /* If @code{--linkrelax} not specified */
mgl@1371
  9759
+        ld.w    @var{reg}, r6[@var{symbol}@@got]
mgl@1371
  9760
+
mgl@1371
  9761
+        /* Otherwise */
mgl@1371
  9762
+        mov     @var{reg}, @var{symbol}@@got / 4
mgl@1371
  9763
+        ld.w    @var{reg}, r6[@var{reg} << 2]
mgl@1371
  9764
+@end smallexample
mgl@1371
  9765
+
mgl@1371
  9766
+If @var{symbol} is not defined in the same file and section as the
mgl@1371
  9767
+@code{LDA.W} instruction, the most pessimistic alternative of the
mgl@1371
  9768
+above is selected. The linker may convert it back into the most
mgl@1371
  9769
+optimal alternative when the final value of all symbols is known.
mgl@1371
  9770
+
mgl@1371
  9771
+@cindex @code{CALL symbol} pseudo op, AVR32
mgl@1371
  9772
+@item CALL
mgl@1371
  9773
+@smallexample
mgl@1371
  9774
+        call    @var{symbol}
mgl@1371
  9775
+@end smallexample
mgl@1371
  9776
+
mgl@1371
  9777
+This instruction will insert code to call the subroutine identified by
mgl@1371
  9778
+@var{symbol}. It will evaluate to one of the following, depending on
mgl@1371
  9779
+the relative distance to the symbol as well as the @code{--linkrelax}
mgl@1371
  9780
+and @code{--pic} command-line options.
mgl@1371
  9781
+
mgl@1371
  9782
+If @var{symbol} is defined in the same section and input file, and the
mgl@1371
  9783
+distance is small enough, an @code{rcall} instruction is inserted:
mgl@1371
  9784
+@smallexample
mgl@1371
  9785
+        rcall   @var{symbol}
mgl@1371
  9786
+@end smallexample
mgl@1371
  9787
+
mgl@1371
  9788
+Otherwise, if the @code{--pic} option has not been specified:
mgl@1371
  9789
+@smallexample
mgl@1371
  9790
+        mcall   @var{cpent}
mgl@1371
  9791
+        ...
mgl@1371
  9792
+@var{cpent}:
mgl@1371
  9793
+        .long   @var{symbol}
mgl@1371
  9794
+@end smallexample
mgl@1371
  9795
+
mgl@1371
  9796
+Finally, if nothing else fits and the @code{--pic} option has been
mgl@1371
  9797
+specified, the assembler will indirect the call through the Global
mgl@1371
  9798
+Offset Table:
mgl@1371
  9799
+@smallexample
mgl@1371
  9800
+        /* If @code{--linkrelax} not specified */
mgl@1371
  9801
+        mcall   r6[@var{symbol}@@got]
mgl@1371
  9802
+
mgl@1371
  9803
+        /* If @code{--linkrelax} specified */
mgl@1371
  9804
+        mov     lr, @var{symbol}@@got / 4
mgl@1371
  9805
+        ld.w    lr, r6[lr << 2]
mgl@1371
  9806
+        icall   lr
mgl@1371
  9807
+@end smallexample
mgl@1371
  9808
+
mgl@1371
  9809
+The linker, after determining the final value of @var{symbol}, may
mgl@1371
  9810
+convert any of these into more optimal alternatives. This includes
mgl@1371
  9811
+deleting any superfluous constant pool- and GOT-entries.
mgl@1371
  9812
+
mgl@1371
  9813
+@end table
mgl@1371
  9814
--- a/gas/doc/Makefile.am
mgl@1371
  9815
+++ b/gas/doc/Makefile.am
mgl@1371
  9816
@@ -33,6 +33,7 @@ CPU_DOCS = \
mgl@1371
  9817
 	c-arc.texi \
mgl@1371
  9818
 	c-arm.texi \
mgl@1371
  9819
 	c-avr.texi \
mgl@1371
  9820
+    c-avr32.texi \
mgl@1371
  9821
 	c-bfin.texi \
mgl@1371
  9822
 	c-cr16.texi \
mgl@1371
  9823
 	c-d10v.texi \
mgl@1371
  9824
--- a/gas/Makefile.am
mgl@1371
  9825
+++ b/gas/Makefile.am
mgl@1371
  9826
@@ -47,6 +47,7 @@ CPU_TYPES = \
mgl@1371
  9827
 	arc \
mgl@1371
  9828
 	arm \
mgl@1371
  9829
 	avr \
mgl@1371
  9830
+	avr32 \
mgl@1371
  9831
 	bfin \
mgl@1371
  9832
 	cr16 \
mgl@1371
  9833
 	cris \
mgl@1371
  9834
@@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
mgl@1371
  9835
 	config/tc-arc.c \
mgl@1371
  9836
 	config/tc-arm.c \
mgl@1371
  9837
 	config/tc-avr.c \
mgl@1371
  9838
+	config/tc-avr32.c \
mgl@1371
  9839
 	config/tc-bfin.c \
mgl@1371
  9840
 	config/tc-cr16.c \
mgl@1371
  9841
 	config/tc-cris.c \
mgl@1371
  9842
@@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
mgl@1371
  9843
 	config/tc-arc.h \
mgl@1371
  9844
 	config/tc-arm.h \
mgl@1371
  9845
 	config/tc-avr.h \
mgl@1371
  9846
+	config/tc-avr32.h \
mgl@1371
  9847
 	config/tc-bfin.h \
mgl@1371
  9848
 	config/tc-cr16.h \
mgl@1371
  9849
 	config/tc-cris.h \
mgl@1371
  9850
@@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
mgl@1371
  9851
   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
mgl@1371
  9852
   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
mgl@1371
  9853
   $(INCDIR)/opcode/avr.h
mgl@1371
  9854
+DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
mgl@1371
  9855
+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
mgl@1371
  9856
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
mgl@1371
  9857
+  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
mgl@1371
  9858
+  $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
mgl@1371
  9859
 DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
mgl@1371
  9860
   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
  9861
   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
mgl@1371
  9862
@@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
mgl@1371
  9863
   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
mgl@1371
  9864
   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
mgl@1371
  9865
   $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
mgl@1371
  9866
+DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
mgl@1371
  9867
+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
mgl@1371
  9868
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
mgl@1371
  9869
+  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
mgl@1371
  9870
+  struc-symbol.h dwarf2dbg.h
mgl@1371
  9871
 DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
mgl@1371
  9872
   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
  9873
   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
mgl@1371
  9874
@@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
mgl@1371
  9875
   $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
mgl@1371
  9876
   $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
mgl@1371
  9877
   $(BFDDIR)/libcoff.h
mgl@1371
  9878
+DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
mgl@1371
  9879
+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
mgl@1371
  9880
+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
mgl@1371
  9881
 DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
mgl@1371
  9882
   $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
mgl@1371
  9883
 DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
mgl@1371
  9884
--- /dev/null
mgl@1371
  9885
+++ b/gas/testsuite/gas/avr32/aliases.d
mgl@1371
  9886
@@ -0,0 +1,19 @@
mgl@1371
  9887
+#as:
mgl@1371
  9888
+#objdump: -dr
mgl@1371
  9889
+#name: aliases
mgl@1371
  9890
+
mgl@1371
  9891
+.*: +file format .*
mgl@1371
  9892
+
mgl@1371
  9893
+Disassembly of section \.text:
mgl@1371
  9894
+
mgl@1371
  9895
+00000000 <ld_nodisp>:
mgl@1371
  9896
+   0:	19 80      [ \t]+ld\.ub r0,r12\[0x0\]
mgl@1371
  9897
+   2:	f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
mgl@1371
  9898
+   6:	98 80      [ \t]+ld\.uh r0,r12\[0x0\]
mgl@1371
  9899
+   8:	98 00      [ \t]+ld\.sh r0,r12\[0x0\]
mgl@1371
  9900
+   a:	78 00      [ \t]+ld\.w r0,r12\[0x0\]
mgl@1371
  9901
+
mgl@1371
  9902
+0000000c <st_nodisp>:
mgl@1371
  9903
+   c:	b8 80      [ \t]+st\.b r12\[0x0\],r0
mgl@1371
  9904
+   e:	b8 00      [ \t]+st\.h r12\[0x0\],r0
mgl@1371
  9905
+  10:	99 00      [ \t]+st\.w r12\[0x0\],r0
mgl@1371
  9906
--- /dev/null
mgl@1371
  9907
+++ b/gas/testsuite/gas/avr32/aliases.s
mgl@1371
  9908
@@ -0,0 +1,14 @@
mgl@1371
  9909
+	.text
mgl@1371
  9910
+	.global	ld_nodisp
mgl@1371
  9911
+ld_nodisp:
mgl@1371
  9912
+	ld.ub	r0, r12
mgl@1371
  9913
+	ld.sb	r0, r12
mgl@1371
  9914
+	ld.uh	r0, r12
mgl@1371
  9915
+	ld.sh	r0, r12
mgl@1371
  9916
+	ld.w	r0, r12
mgl@1371
  9917
+
mgl@1371
  9918
+	.global st_nodisp
mgl@1371
  9919
+st_nodisp:
mgl@1371
  9920
+	st.b	r12, r0
mgl@1371
  9921
+	st.h	r12, r0
mgl@1371
  9922
+	st.w	r12, r0
mgl@1371
  9923
--- /dev/null
mgl@1371
  9924
+++ b/gas/testsuite/gas/avr32/allinsn.d
mgl@1371
  9925
@@ -0,0 +1,2987 @@
mgl@1371
  9926
+#as:
mgl@1371
  9927
+#objdump: -dr
mgl@1371
  9928
+#name: allinsn
mgl@1371
  9929
+
mgl@1371
  9930
+.*: +file format .*
mgl@1371
  9931
+
mgl@1371
  9932
+Disassembly of section \.text:
mgl@1371
  9933
+
mgl@1371
  9934
+[0-9a-f]* <ld_d5>:
mgl@1371
  9935
+ *[0-9a-f]*:	fe 0f 02 3e 	ld\.d lr,pc\[pc<<0x3\]
mgl@1371
  9936
+ *[0-9a-f]*:	e0 00 02 00 	ld\.d r0,r0\[r0\]
mgl@1371
  9937
+ *[0-9a-f]*:	ea 05 02 26 	ld\.d r6,r5\[r5<<0x2\]
mgl@1371
  9938
+ *[0-9a-f]*:	e8 04 02 14 	ld\.d r4,r4\[r4<<0x1\]
mgl@1371
  9939
+ *[0-9a-f]*:	fc 0e 02 1e 	ld\.d lr,lr\[lr<<0x1\]
mgl@1371
  9940
+ *[0-9a-f]*:	e6 0d 02 2a 	ld\.d r10,r3\[sp<<0x2\]
mgl@1371
  9941
+ *[0-9a-f]*:	f4 06 02 28 	ld\.d r8,r10\[r6<<0x2\]
mgl@1371
  9942
+ *[0-9a-f]*:	ee 09 02 02 	ld\.d r2,r7\[r9\]
mgl@1371
  9943
+
mgl@1371
  9944
+[0-9a-f]* <ld_w5>:
mgl@1371
  9945
+ *[0-9a-f]*:	fe 0f 03 0f 	ld\.w pc,pc\[pc\]
mgl@1371
  9946
+ *[0-9a-f]*:	f8 0c 03 3c 	ld\.w r12,r12\[r12<<0x3\]
mgl@1371
  9947
+ *[0-9a-f]*:	ea 05 03 25 	ld\.w r5,r5\[r5<<0x2\]
mgl@1371
  9948
+ *[0-9a-f]*:	e8 04 03 14 	ld\.w r4,r4\[r4<<0x1\]
mgl@1371
  9949
+ *[0-9a-f]*:	fc 0e 03 1e 	ld\.w lr,lr\[lr<<0x1\]
mgl@1371
  9950
+ *[0-9a-f]*:	f2 09 03 02 	ld\.w r2,r9\[r9\]
mgl@1371
  9951
+ *[0-9a-f]*:	e4 06 03 0b 	ld\.w r11,r2\[r6\]
mgl@1371
  9952
+ *[0-9a-f]*:	e4 0d 03 30 	ld\.w r0,r2\[sp<<0x3\]
mgl@1371
  9953
+
mgl@1371
  9954
+[0-9a-f]* <ld_sh5>:
mgl@1371
  9955
+ *[0-9a-f]*:	fe 0f 04 0f 	ld\.sh pc,pc\[pc\]
mgl@1371
  9956
+ *[0-9a-f]*:	f8 0c 04 3c 	ld\.sh r12,r12\[r12<<0x3\]
mgl@1371
  9957
+ *[0-9a-f]*:	ea 05 04 25 	ld\.sh r5,r5\[r5<<0x2\]
mgl@1371
  9958
+ *[0-9a-f]*:	e8 04 04 14 	ld\.sh r4,r4\[r4<<0x1\]
mgl@1371
  9959
+ *[0-9a-f]*:	fc 0e 04 1e 	ld\.sh lr,lr\[lr<<0x1\]
mgl@1371
  9960
+ *[0-9a-f]*:	e0 0f 04 2b 	ld\.sh r11,r0\[pc<<0x2\]
mgl@1371
  9961
+ *[0-9a-f]*:	fa 06 04 2a 	ld\.sh r10,sp\[r6<<0x2\]
mgl@1371
  9962
+ *[0-9a-f]*:	e4 02 04 0c 	ld\.sh r12,r2\[r2\]
mgl@1371
  9963
+
mgl@1371
  9964
+[0-9a-f]* <ld_uh5>:
mgl@1371
  9965
+ *[0-9a-f]*:	fe 0f 05 0f 	ld\.uh pc,pc\[pc\]
mgl@1371
  9966
+ *[0-9a-f]*:	f8 0c 05 3c 	ld\.uh r12,r12\[r12<<0x3\]
mgl@1371
  9967
+ *[0-9a-f]*:	ea 05 05 25 	ld\.uh r5,r5\[r5<<0x2\]
mgl@1371
  9968
+ *[0-9a-f]*:	e8 04 05 14 	ld\.uh r4,r4\[r4<<0x1\]
mgl@1371
  9969
+ *[0-9a-f]*:	fc 0e 05 1e 	ld\.uh lr,lr\[lr<<0x1\]
mgl@1371
  9970
+ *[0-9a-f]*:	fe 0e 05 38 	ld\.uh r8,pc\[lr<<0x3\]
mgl@1371
  9971
+ *[0-9a-f]*:	e2 0f 05 16 	ld\.uh r6,r1\[pc<<0x1\]
mgl@1371
  9972
+ *[0-9a-f]*:	fc 0d 05 16 	ld\.uh r6,lr\[sp<<0x1\]
mgl@1371
  9973
+
mgl@1371
  9974
+[0-9a-f]* <ld_sb2>:
mgl@1371
  9975
+ *[0-9a-f]*:	fe 0f 06 0f 	ld\.sb pc,pc\[pc\]
mgl@1371
  9976
+ *[0-9a-f]*:	f8 0c 06 3c 	ld\.sb r12,r12\[r12<<0x3\]
mgl@1371
  9977
+ *[0-9a-f]*:	ea 05 06 25 	ld\.sb r5,r5\[r5<<0x2\]
mgl@1371
  9978
+ *[0-9a-f]*:	e8 04 06 14 	ld\.sb r4,r4\[r4<<0x1\]
mgl@1371
  9979
+ *[0-9a-f]*:	fc 0e 06 1e 	ld\.sb lr,lr\[lr<<0x1\]
mgl@1371
  9980
+ *[0-9a-f]*:	e2 0f 06 39 	ld\.sb r9,r1\[pc<<0x3\]
mgl@1371
  9981
+ *[0-9a-f]*:	e6 0b 06 10 	ld\.sb r0,r3\[r11<<0x1\]
mgl@1371
  9982
+ *[0-9a-f]*:	ea 05 06 1a 	ld\.sb r10,r5\[r5<<0x1\]
mgl@1371
  9983
+
mgl@1371
  9984
+[0-9a-f]* <ld_ub5>:
mgl@1371
  9985
+ *[0-9a-f]*:	fe 0f 07 0f 	ld\.ub pc,pc\[pc\]
mgl@1371
  9986
+ *[0-9a-f]*:	f8 0c 07 3c 	ld\.ub r12,r12\[r12<<0x3\]
mgl@1371
  9987
+ *[0-9a-f]*:	ea 05 07 25 	ld\.ub r5,r5\[r5<<0x2\]
mgl@1371
  9988
+ *[0-9a-f]*:	e8 04 07 14 	ld\.ub r4,r4\[r4<<0x1\]
mgl@1371
  9989
+ *[0-9a-f]*:	fc 0e 07 1e 	ld\.ub lr,lr\[lr<<0x1\]
mgl@1371
  9990
+ *[0-9a-f]*:	f8 07 07 36 	ld\.ub r6,r12\[r7<<0x3\]
mgl@1371
  9991
+ *[0-9a-f]*:	ec 0c 07 02 	ld\.ub r2,r6\[r12\]
mgl@1371
  9992
+ *[0-9a-f]*:	ee 0b 07 10 	ld\.ub r0,r7\[r11<<0x1\]
mgl@1371
  9993
+
mgl@1371
  9994
+[0-9a-f]* <st_d5>:
mgl@1371
  9995
+ *[0-9a-f]*:	fe 0f 08 0e 	st\.d pc\[pc\],lr
mgl@1371
  9996
+ *[0-9a-f]*:	f8 0c 08 3c 	st\.d r12\[r12<<0x3\],r12
mgl@1371
  9997
+ *[0-9a-f]*:	ea 05 08 26 	st\.d r5\[r5<<0x2\],r6
mgl@1371
  9998
+ *[0-9a-f]*:	e8 04 08 14 	st\.d r4\[r4<<0x1\],r4
mgl@1371
  9999
+ *[0-9a-f]*:	fc 0e 08 1e 	st\.d lr\[lr<<0x1\],lr
mgl@1371
 10000
+ *[0-9a-f]*:	e2 09 08 14 	st\.d r1\[r9<<0x1\],r4
mgl@1371
 10001
+ *[0-9a-f]*:	f4 02 08 14 	st\.d r10\[r2<<0x1\],r4
mgl@1371
 10002
+ *[0-9a-f]*:	f8 06 08 0e 	st\.d r12\[r6\],lr
mgl@1371
 10003
+
mgl@1371
 10004
+[0-9a-f]* <st_w5>:
mgl@1371
 10005
+ *[0-9a-f]*:	fe 0f 09 0f 	st\.w pc\[pc\],pc
mgl@1371
 10006
+ *[0-9a-f]*:	f8 0c 09 3c 	st\.w r12\[r12<<0x3\],r12
mgl@1371
 10007
+ *[0-9a-f]*:	ea 05 09 25 	st\.w r5\[r5<<0x2\],r5
mgl@1371
 10008
+ *[0-9a-f]*:	e8 04 09 14 	st\.w r4\[r4<<0x1\],r4
mgl@1371
 10009
+ *[0-9a-f]*:	fc 0e 09 1e 	st\.w lr\[lr<<0x1\],lr
mgl@1371
 10010
+ *[0-9a-f]*:	e2 0a 09 03 	st\.w r1\[r10\],r3
mgl@1371
 10011
+ *[0-9a-f]*:	e0 0a 09 19 	st\.w r0\[r10<<0x1\],r9
mgl@1371
 10012
+ *[0-9a-f]*:	e8 05 09 3f 	st\.w r4\[r5<<0x3\],pc
mgl@1371
 10013
+
mgl@1371
 10014
+[0-9a-f]* <st_h5>:
mgl@1371
 10015
+ *[0-9a-f]*:	fe 0f 0a 0f 	st\.h pc\[pc\],pc
mgl@1371
 10016
+ *[0-9a-f]*:	f8 0c 0a 3c 	st\.h r12\[r12<<0x3\],r12
mgl@1371
 10017
+ *[0-9a-f]*:	ea 05 0a 25 	st\.h r5\[r5<<0x2\],r5
mgl@1371
 10018
+ *[0-9a-f]*:	e8 04 0a 14 	st\.h r4\[r4<<0x1\],r4
mgl@1371
 10019
+ *[0-9a-f]*:	fc 0e 0a 1e 	st\.h lr\[lr<<0x1\],lr
mgl@1371
 10020
+ *[0-9a-f]*:	e4 09 0a 0b 	st\.h r2\[r9\],r11
mgl@1371
 10021
+ *[0-9a-f]*:	ea 01 0a 2c 	st\.h r5\[r1<<0x2\],r12
mgl@1371
 10022
+ *[0-9a-f]*:	fe 08 0a 23 	st\.h pc\[r8<<0x2\],r3
mgl@1371
 10023
+
mgl@1371
 10024
+[0-9a-f]* <st_b5>:
mgl@1371
 10025
+ *[0-9a-f]*:	fe 0f 0b 0f 	st\.b pc\[pc\],pc
mgl@1371
 10026
+ *[0-9a-f]*:	f8 0c 0b 3c 	st\.b r12\[r12<<0x3\],r12
mgl@1371
 10027
+ *[0-9a-f]*:	ea 05 0b 25 	st\.b r5\[r5<<0x2\],r5
mgl@1371
 10028
+ *[0-9a-f]*:	e8 04 0b 14 	st\.b r4\[r4<<0x1\],r4
mgl@1371
 10029
+ *[0-9a-f]*:	fc 0e 0b 1e 	st\.b lr\[lr<<0x1\],lr
mgl@1371
 10030
+ *[0-9a-f]*:	e2 08 0b 16 	st\.b r1\[r8<<0x1\],r6
mgl@1371
 10031
+ *[0-9a-f]*:	fc 0e 0b 31 	st\.b lr\[lr<<0x3\],r1
mgl@1371
 10032
+ *[0-9a-f]*:	ea 00 0b 2f 	st\.b r5\[r0<<0x2\],pc
mgl@1371
 10033
+
mgl@1371
 10034
+[0-9a-f]* <divs>:
mgl@1371
 10035
+ *[0-9a-f]*:	fe 0f 0c 0f 	divs pc,pc,pc
mgl@1371
 10036
+ *[0-9a-f]*:	f8 0c 0c 0c 	divs r12,r12,r12
mgl@1371
 10037
+ *[0-9a-f]*:	ea 05 0c 05 	divs r5,r5,r5
mgl@1371
 10038
+ *[0-9a-f]*:	e8 04 0c 04 	divs r4,r4,r4
mgl@1371
 10039
+ *[0-9a-f]*:	fc 0e 0c 0e 	divs lr,lr,lr
mgl@1371
 10040
+ *[0-9a-f]*:	fe 0f 0c 03 	divs r3,pc,pc
mgl@1371
 10041
+ *[0-9a-f]*:	f8 02 0c 09 	divs r9,r12,r2
mgl@1371
 10042
+ *[0-9a-f]*:	e8 01 0c 07 	divs r7,r4,r1
mgl@1371
 10043
+
mgl@1371
 10044
+[0-9a-f]* <add1>:
mgl@1371
 10045
+ *[0-9a-f]*:	1e 0f       	add pc,pc
mgl@1371
 10046
+ *[0-9a-f]*:	18 0c       	add r12,r12
mgl@1371
 10047
+ *[0-9a-f]*:	0a 05       	add r5,r5
mgl@1371
 10048
+ *[0-9a-f]*:	08 04       	add r4,r4
mgl@1371
 10049
+ *[0-9a-f]*:	1c 0e       	add lr,lr
mgl@1371
 10050
+ *[0-9a-f]*:	12 0c       	add r12,r9
mgl@1371
 10051
+ *[0-9a-f]*:	06 06       	add r6,r3
mgl@1371
 10052
+ *[0-9a-f]*:	18 0a       	add r10,r12
mgl@1371
 10053
+
mgl@1371
 10054
+[0-9a-f]* <sub1>:
mgl@1371
 10055
+ *[0-9a-f]*:	1e 1f       	sub pc,pc
mgl@1371
 10056
+ *[0-9a-f]*:	18 1c       	sub r12,r12
mgl@1371
 10057
+ *[0-9a-f]*:	0a 15       	sub r5,r5
mgl@1371
 10058
+ *[0-9a-f]*:	08 14       	sub r4,r4
mgl@1371
 10059
+ *[0-9a-f]*:	1c 1e       	sub lr,lr
mgl@1371
 10060
+ *[0-9a-f]*:	0c 1e       	sub lr,r6
mgl@1371
 10061
+ *[0-9a-f]*:	1a 10       	sub r0,sp
mgl@1371
 10062
+ *[0-9a-f]*:	18 16       	sub r6,r12
mgl@1371
 10063
+
mgl@1371
 10064
+[0-9a-f]* <rsub1>:
mgl@1371
 10065
+ *[0-9a-f]*:	1e 2f       	rsub pc,pc
mgl@1371
 10066
+ *[0-9a-f]*:	18 2c       	rsub r12,r12
mgl@1371
 10067
+ *[0-9a-f]*:	0a 25       	rsub r5,r5
mgl@1371
 10068
+ *[0-9a-f]*:	08 24       	rsub r4,r4
mgl@1371
 10069
+ *[0-9a-f]*:	1c 2e       	rsub lr,lr
mgl@1371
 10070
+ *[0-9a-f]*:	1a 2b       	rsub r11,sp
mgl@1371
 10071
+ *[0-9a-f]*:	08 27       	rsub r7,r4
mgl@1371
 10072
+ *[0-9a-f]*:	02 29       	rsub r9,r1
mgl@1371
 10073
+
mgl@1371
 10074
+[0-9a-f]* <cp1>:
mgl@1371
 10075
+ *[0-9a-f]*:	1e 3f       	cp\.w pc,pc
mgl@1371
 10076
+ *[0-9a-f]*:	18 3c       	cp\.w r12,r12
mgl@1371
 10077
+ *[0-9a-f]*:	0a 35       	cp\.w r5,r5
mgl@1371
 10078
+ *[0-9a-f]*:	08 34       	cp\.w r4,r4
mgl@1371
 10079
+ *[0-9a-f]*:	1c 3e       	cp\.w lr,lr
mgl@1371
 10080
+ *[0-9a-f]*:	04 36       	cp\.w r6,r2
mgl@1371
 10081
+ *[0-9a-f]*:	12 30       	cp\.w r0,r9
mgl@1371
 10082
+ *[0-9a-f]*:	1a 33       	cp\.w r3,sp
mgl@1371
 10083
+
mgl@1371
 10084
+[0-9a-f]* <or1>:
mgl@1371
 10085
+ *[0-9a-f]*:	1e 4f       	or pc,pc
mgl@1371
 10086
+ *[0-9a-f]*:	18 4c       	or r12,r12
mgl@1371
 10087
+ *[0-9a-f]*:	0a 45       	or r5,r5
mgl@1371
 10088
+ *[0-9a-f]*:	08 44       	or r4,r4
mgl@1371
 10089
+ *[0-9a-f]*:	1c 4e       	or lr,lr
mgl@1371
 10090
+ *[0-9a-f]*:	12 44       	or r4,r9
mgl@1371
 10091
+ *[0-9a-f]*:	08 4b       	or r11,r4
mgl@1371
 10092
+ *[0-9a-f]*:	00 44       	or r4,r0
mgl@1371
 10093
+
mgl@1371
 10094
+[0-9a-f]* <eor1>:
mgl@1371
 10095
+ *[0-9a-f]*:	1e 5f       	eor pc,pc
mgl@1371
 10096
+ *[0-9a-f]*:	18 5c       	eor r12,r12
mgl@1371
 10097
+ *[0-9a-f]*:	0a 55       	eor r5,r5
mgl@1371
 10098
+ *[0-9a-f]*:	08 54       	eor r4,r4
mgl@1371
 10099
+ *[0-9a-f]*:	1c 5e       	eor lr,lr
mgl@1371
 10100
+ *[0-9a-f]*:	16 5c       	eor r12,r11
mgl@1371
 10101
+ *[0-9a-f]*:	02 50       	eor r0,r1
mgl@1371
 10102
+ *[0-9a-f]*:	1e 55       	eor r5,pc
mgl@1371
 10103
+
mgl@1371
 10104
+[0-9a-f]* <and1>:
mgl@1371
 10105
+ *[0-9a-f]*:	1e 6f       	and pc,pc
mgl@1371
 10106
+ *[0-9a-f]*:	18 6c       	and r12,r12
mgl@1371
 10107
+ *[0-9a-f]*:	0a 65       	and r5,r5
mgl@1371
 10108
+ *[0-9a-f]*:	08 64       	and r4,r4
mgl@1371
 10109
+ *[0-9a-f]*:	1c 6e       	and lr,lr
mgl@1371
 10110
+ *[0-9a-f]*:	02 68       	and r8,r1
mgl@1371
 10111
+ *[0-9a-f]*:	1a 60       	and r0,sp
mgl@1371
 10112
+ *[0-9a-f]*:	0a 6a       	and r10,r5
mgl@1371
 10113
+
mgl@1371
 10114
+[0-9a-f]* <tst>:
mgl@1371
 10115
+ *[0-9a-f]*:	1e 7f       	tst pc,pc
mgl@1371
 10116
+ *[0-9a-f]*:	18 7c       	tst r12,r12
mgl@1371
 10117
+ *[0-9a-f]*:	0a 75       	tst r5,r5
mgl@1371
 10118
+ *[0-9a-f]*:	08 74       	tst r4,r4
mgl@1371
 10119
+ *[0-9a-f]*:	1c 7e       	tst lr,lr
mgl@1371
 10120
+ *[0-9a-f]*:	18 70       	tst r0,r12
mgl@1371
 10121
+ *[0-9a-f]*:	0c 7a       	tst r10,r6
mgl@1371
 10122
+ *[0-9a-f]*:	08 7d       	tst sp,r4
mgl@1371
 10123
+
mgl@1371
 10124
+[0-9a-f]* <andn>:
mgl@1371
 10125
+ *[0-9a-f]*:	1e 8f       	andn pc,pc
mgl@1371
 10126
+ *[0-9a-f]*:	18 8c       	andn r12,r12
mgl@1371
 10127
+ *[0-9a-f]*:	0a 85       	andn r5,r5
mgl@1371
 10128
+ *[0-9a-f]*:	08 84       	andn r4,r4
mgl@1371
 10129
+ *[0-9a-f]*:	1c 8e       	andn lr,lr
mgl@1371
 10130
+ *[0-9a-f]*:	18 89       	andn r9,r12
mgl@1371
 10131
+ *[0-9a-f]*:	1a 8b       	andn r11,sp
mgl@1371
 10132
+ *[0-9a-f]*:	0a 8c       	andn r12,r5
mgl@1371
 10133
+
mgl@1371
 10134
+[0-9a-f]* <mov3>:
mgl@1371
 10135
+ *[0-9a-f]*:	1e 9f       	mov pc,pc
mgl@1371
 10136
+ *[0-9a-f]*:	18 9c       	mov r12,r12
mgl@1371
 10137
+ *[0-9a-f]*:	0a 95       	mov r5,r5
mgl@1371
 10138
+ *[0-9a-f]*:	08 94       	mov r4,r4
mgl@1371
 10139
+ *[0-9a-f]*:	1c 9e       	mov lr,lr
mgl@1371
 10140
+ *[0-9a-f]*:	12 95       	mov r5,r9
mgl@1371
 10141
+ *[0-9a-f]*:	16 9b       	mov r11,r11
mgl@1371
 10142
+ *[0-9a-f]*:	1c 92       	mov r2,lr
mgl@1371
 10143
+
mgl@1371
 10144
+[0-9a-f]* <st_w1>:
mgl@1371
 10145
+ *[0-9a-f]*:	1e af       	st\.w pc\+\+,pc
mgl@1371
 10146
+ *[0-9a-f]*:	18 ac       	st\.w r12\+\+,r12
mgl@1371
 10147
+ *[0-9a-f]*:	0a a5       	st\.w r5\+\+,r5
mgl@1371
 10148
+ *[0-9a-f]*:	08 a4       	st\.w r4\+\+,r4
mgl@1371
 10149
+ *[0-9a-f]*:	1c ae       	st\.w lr\+\+,lr
mgl@1371
 10150
+ *[0-9a-f]*:	02 ab       	st\.w r1\+\+,r11
mgl@1371
 10151
+ *[0-9a-f]*:	1a a0       	st\.w sp\+\+,r0
mgl@1371
 10152
+ *[0-9a-f]*:	1a a1       	st\.w sp\+\+,r1
mgl@1371
 10153
+
mgl@1371
 10154
+[0-9a-f]* <st_h1>:
mgl@1371
 10155
+ *[0-9a-f]*:	1e bf       	st\.h pc\+\+,pc
mgl@1371
 10156
+ *[0-9a-f]*:	18 bc       	st\.h r12\+\+,r12
mgl@1371
 10157
+ *[0-9a-f]*:	0a b5       	st\.h r5\+\+,r5
mgl@1371
 10158
+ *[0-9a-f]*:	08 b4       	st\.h r4\+\+,r4
mgl@1371
 10159
+ *[0-9a-f]*:	1c be       	st\.h lr\+\+,lr
mgl@1371
 10160
+ *[0-9a-f]*:	18 bd       	st\.h r12\+\+,sp
mgl@1371
 10161
+ *[0-9a-f]*:	0e be       	st\.h r7\+\+,lr
mgl@1371
 10162
+ *[0-9a-f]*:	0e b4       	st\.h r7\+\+,r4
mgl@1371
 10163
+
mgl@1371
 10164
+[0-9a-f]* <st_b1>:
mgl@1371
 10165
+ *[0-9a-f]*:	1e cf       	st\.b pc\+\+,pc
mgl@1371
 10166
+ *[0-9a-f]*:	18 cc       	st\.b r12\+\+,r12
mgl@1371
 10167
+ *[0-9a-f]*:	0a c5       	st\.b r5\+\+,r5
mgl@1371
 10168
+ *[0-9a-f]*:	08 c4       	st\.b r4\+\+,r4
mgl@1371
 10169
+ *[0-9a-f]*:	1c ce       	st\.b lr\+\+,lr
mgl@1371
 10170
+ *[0-9a-f]*:	12 cd       	st\.b r9\+\+,sp
mgl@1371
 10171
+ *[0-9a-f]*:	02 cd       	st\.b r1\+\+,sp
mgl@1371
 10172
+ *[0-9a-f]*:	00 c4       	st\.b r0\+\+,r4
mgl@1371
 10173
+
mgl@1371
 10174
+[0-9a-f]* <st_w2>:
mgl@1371
 10175
+ *[0-9a-f]*:	1e df       	st\.w --pc,pc
mgl@1371
 10176
+ *[0-9a-f]*:	18 dc       	st\.w --r12,r12
mgl@1371
 10177
+ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
mgl@1371
 10178
+ *[0-9a-f]*:	08 d4       	st\.w --r4,r4
mgl@1371
 10179
+ *[0-9a-f]*:	1c de       	st\.w --lr,lr
mgl@1371
 10180
+ *[0-9a-f]*:	02 d7       	st\.w --r1,r7
mgl@1371
 10181
+ *[0-9a-f]*:	06 d9       	st\.w --r3,r9
mgl@1371
 10182
+ *[0-9a-f]*:	0a d5       	st\.w --r5,r5
mgl@1371
 10183
+
mgl@1371
 10184
+[0-9a-f]* <st_h2>:
mgl@1371
 10185
+ *[0-9a-f]*:	1e ef       	st\.h --pc,pc
mgl@1371
 10186
+ *[0-9a-f]*:	18 ec       	st\.h --r12,r12
mgl@1371
 10187
+ *[0-9a-f]*:	0a e5       	st\.h --r5,r5
mgl@1371
 10188
+ *[0-9a-f]*:	08 e4       	st\.h --r4,r4
mgl@1371
 10189
+ *[0-9a-f]*:	1c ee       	st\.h --lr,lr
mgl@1371
 10190
+ *[0-9a-f]*:	0a e7       	st\.h --r5,r7
mgl@1371
 10191
+ *[0-9a-f]*:	10 e8       	st\.h --r8,r8
mgl@1371
 10192
+ *[0-9a-f]*:	0e e2       	st\.h --r7,r2
mgl@1371
 10193
+
mgl@1371
 10194
+[0-9a-f]* <st_b2>:
mgl@1371
 10195
+ *[0-9a-f]*:	1e ff       	st\.b --pc,pc
mgl@1371
 10196
+ *[0-9a-f]*:	18 fc       	st\.b --r12,r12
mgl@1371
 10197
+ *[0-9a-f]*:	0a f5       	st\.b --r5,r5
mgl@1371
 10198
+ *[0-9a-f]*:	08 f4       	st\.b --r4,r4
mgl@1371
 10199
+ *[0-9a-f]*:	1c fe       	st\.b --lr,lr
mgl@1371
 10200
+ *[0-9a-f]*:	1a fd       	st\.b --sp,sp
mgl@1371
 10201
+ *[0-9a-f]*:	1a fb       	st\.b --sp,r11
mgl@1371
 10202
+ *[0-9a-f]*:	08 f5       	st\.b --r4,r5
mgl@1371
 10203
+
mgl@1371
 10204
+[0-9a-f]* <ld_w1>:
mgl@1371
 10205
+ *[0-9a-f]*:	1f 0f       	ld\.w pc,pc\+\+
mgl@1371
 10206
+ *[0-9a-f]*:	19 0c       	ld\.w r12,r12\+\+
mgl@1371
 10207
+ *[0-9a-f]*:	0b 05       	ld\.w r5,r5\+\+
mgl@1371
 10208
+ *[0-9a-f]*:	09 04       	ld\.w r4,r4\+\+
mgl@1371
 10209
+ *[0-9a-f]*:	1d 0e       	ld\.w lr,lr\+\+
mgl@1371
 10210
+ *[0-9a-f]*:	0f 03       	ld\.w r3,r7\+\+
mgl@1371
 10211
+ *[0-9a-f]*:	1d 03       	ld\.w r3,lr\+\+
mgl@1371
 10212
+ *[0-9a-f]*:	0b 0c       	ld\.w r12,r5\+\+
mgl@1371
 10213
+
mgl@1371
 10214
+[0-9a-f]* <ld_sh1>:
mgl@1371
 10215
+ *[0-9a-f]*:	1f 1f       	ld\.sh pc,pc\+\+
mgl@1371
 10216
+ *[0-9a-f]*:	19 1c       	ld\.sh r12,r12\+\+
mgl@1371
 10217
+ *[0-9a-f]*:	0b 15       	ld\.sh r5,r5\+\+
mgl@1371
 10218
+ *[0-9a-f]*:	09 14       	ld\.sh r4,r4\+\+
mgl@1371
 10219
+ *[0-9a-f]*:	1d 1e       	ld\.sh lr,lr\+\+
mgl@1371
 10220
+ *[0-9a-f]*:	05 1b       	ld\.sh r11,r2\+\+
mgl@1371
 10221
+ *[0-9a-f]*:	11 12       	ld\.sh r2,r8\+\+
mgl@1371
 10222
+ *[0-9a-f]*:	0d 17       	ld\.sh r7,r6\+\+
mgl@1371
 10223
+
mgl@1371
 10224
+[0-9a-f]* <ld_uh1>:
mgl@1371
 10225
+ *[0-9a-f]*:	1f 2f       	ld\.uh pc,pc\+\+
mgl@1371
 10226
+ *[0-9a-f]*:	19 2c       	ld\.uh r12,r12\+\+
mgl@1371
 10227
+ *[0-9a-f]*:	0b 25       	ld\.uh r5,r5\+\+
mgl@1371
 10228
+ *[0-9a-f]*:	09 24       	ld\.uh r4,r4\+\+
mgl@1371
 10229
+ *[0-9a-f]*:	1d 2e       	ld\.uh lr,lr\+\+
mgl@1371
 10230
+ *[0-9a-f]*:	0f 26       	ld\.uh r6,r7\+\+
mgl@1371
 10231
+ *[0-9a-f]*:	17 2a       	ld\.uh r10,r11\+\+
mgl@1371
 10232
+ *[0-9a-f]*:	09 2e       	ld\.uh lr,r4\+\+
mgl@1371
 10233
+
mgl@1371
 10234
+[0-9a-f]* <ld_ub1>:
mgl@1371
 10235
+ *[0-9a-f]*:	1f 3f       	ld\.ub pc,pc\+\+
mgl@1371
 10236
+ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
mgl@1371
 10237
+ *[0-9a-f]*:	0b 35       	ld\.ub r5,r5\+\+
mgl@1371
 10238
+ *[0-9a-f]*:	09 34       	ld\.ub r4,r4\+\+
mgl@1371
 10239
+ *[0-9a-f]*:	1d 3e       	ld\.ub lr,lr\+\+
mgl@1371
 10240
+ *[0-9a-f]*:	1d 38       	ld\.ub r8,lr\+\+
mgl@1371
 10241
+ *[0-9a-f]*:	19 3c       	ld\.ub r12,r12\+\+
mgl@1371
 10242
+ *[0-9a-f]*:	15 3b       	ld\.ub r11,r10\+\+
mgl@1371
 10243
+
mgl@1371
 10244
+[0-9a-f]* <ld_w2>:
mgl@1371
 10245
+ *[0-9a-f]*:	1f 4f       	ld\.w pc,--pc
mgl@1371
 10246
+ *[0-9a-f]*:	19 4c       	ld\.w r12,--r12
mgl@1371
 10247
+ *[0-9a-f]*:	0b 45       	ld\.w r5,--r5
mgl@1371
 10248
+ *[0-9a-f]*:	09 44       	ld\.w r4,--r4
mgl@1371
 10249
+ *[0-9a-f]*:	1d 4e       	ld\.w lr,--lr
mgl@1371
 10250
+ *[0-9a-f]*:	1d 4a       	ld\.w r10,--lr
mgl@1371
 10251
+ *[0-9a-f]*:	13 4c       	ld\.w r12,--r9
mgl@1371
 10252
+ *[0-9a-f]*:	0b 46       	ld\.w r6,--r5
mgl@1371
 10253
+
mgl@1371
 10254
+[0-9a-f]* <ld_sh2>:
mgl@1371
 10255
+ *[0-9a-f]*:	1f 5f       	ld\.sh pc,--pc
mgl@1371
 10256
+ *[0-9a-f]*:	19 5c       	ld\.sh r12,--r12
mgl@1371
 10257
+ *[0-9a-f]*:	0b 55       	ld\.sh r5,--r5
mgl@1371
 10258
+ *[0-9a-f]*:	09 54       	ld\.sh r4,--r4
mgl@1371
 10259
+ *[0-9a-f]*:	1d 5e       	ld\.sh lr,--lr
mgl@1371
 10260
+ *[0-9a-f]*:	15 5f       	ld\.sh pc,--r10
mgl@1371
 10261
+ *[0-9a-f]*:	07 56       	ld\.sh r6,--r3
mgl@1371
 10262
+ *[0-9a-f]*:	0d 54       	ld\.sh r4,--r6
mgl@1371
 10263
+
mgl@1371
 10264
+[0-9a-f]* <ld_uh2>:
mgl@1371
 10265
+ *[0-9a-f]*:	1f 6f       	ld\.uh pc,--pc
mgl@1371
 10266
+ *[0-9a-f]*:	19 6c       	ld\.uh r12,--r12
mgl@1371
 10267
+ *[0-9a-f]*:	0b 65       	ld\.uh r5,--r5
mgl@1371
 10268
+ *[0-9a-f]*:	09 64       	ld\.uh r4,--r4
mgl@1371
 10269
+ *[0-9a-f]*:	1d 6e       	ld\.uh lr,--lr
mgl@1371
 10270
+ *[0-9a-f]*:	05 63       	ld\.uh r3,--r2
mgl@1371
 10271
+ *[0-9a-f]*:	01 61       	ld\.uh r1,--r0
mgl@1371
 10272
+ *[0-9a-f]*:	13 62       	ld\.uh r2,--r9
mgl@1371
 10273
+
mgl@1371
 10274
+[0-9a-f]* <ld_ub2>:
mgl@1371
 10275
+ *[0-9a-f]*:	1f 7f       	ld\.ub pc,--pc
mgl@1371
 10276
+ *[0-9a-f]*:	19 7c       	ld\.ub r12,--r12
mgl@1371
 10277
+ *[0-9a-f]*:	0b 75       	ld\.ub r5,--r5
mgl@1371
 10278
+ *[0-9a-f]*:	09 74       	ld\.ub r4,--r4
mgl@1371
 10279
+ *[0-9a-f]*:	1d 7e       	ld\.ub lr,--lr
mgl@1371
 10280
+ *[0-9a-f]*:	03 71       	ld\.ub r1,--r1
mgl@1371
 10281
+ *[0-9a-f]*:	0d 70       	ld\.ub r0,--r6
mgl@1371
 10282
+ *[0-9a-f]*:	0f 72       	ld\.ub r2,--r7
mgl@1371
 10283
+
mgl@1371
 10284
+[0-9a-f]* <ld_ub3>:
mgl@1371
 10285
+ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
mgl@1371
 10286
+ *[0-9a-f]*:	19 fc       	ld\.ub r12,r12\[0x7\]
mgl@1371
 10287
+ *[0-9a-f]*:	0b c5       	ld\.ub r5,r5\[0x4\]
mgl@1371
 10288
+ *[0-9a-f]*:	09 b4       	ld\.ub r4,r4\[0x3\]
mgl@1371
 10289
+ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
mgl@1371
 10290
+ *[0-9a-f]*:	13 e6       	ld\.ub r6,r9\[0x6\]
mgl@1371
 10291
+ *[0-9a-f]*:	1d c2       	ld\.ub r2,lr\[0x4\]
mgl@1371
 10292
+ *[0-9a-f]*:	11 81       	ld\.ub r1,r8\[0x0\]
mgl@1371
 10293
+
mgl@1371
 10294
+[0-9a-f]* <sub3_sp>:
mgl@1371
 10295
+ *[0-9a-f]*:	20 0d       	sub sp,0
mgl@1371
 10296
+ *[0-9a-f]*:	2f fd       	sub sp,-4
mgl@1371
 10297
+ *[0-9a-f]*:	28 0d       	sub sp,-512
mgl@1371
 10298
+ *[0-9a-f]*:	27 fd       	sub sp,508
mgl@1371
 10299
+ *[0-9a-f]*:	20 1d       	sub sp,4
mgl@1371
 10300
+ *[0-9a-f]*:	20 bd       	sub sp,44
mgl@1371
 10301
+ *[0-9a-f]*:	20 2d       	sub sp,8
mgl@1371
 10302
+ *[0-9a-f]*:	25 7d       	sub sp,348
mgl@1371
 10303
+
mgl@1371
 10304
+[0-9a-f]* <sub3>:
mgl@1371
 10305
+ *[0-9a-f]*:	20 0f       	sub pc,0
mgl@1371
 10306
+ *[0-9a-f]*:	2f fc       	sub r12,-1
mgl@1371
 10307
+ *[0-9a-f]*:	28 05       	sub r5,-128
mgl@1371
 10308
+ *[0-9a-f]*:	27 f4       	sub r4,127
mgl@1371
 10309
+ *[0-9a-f]*:	20 1e       	sub lr,1
mgl@1371
 10310
+ *[0-9a-f]*:	2d 76       	sub r6,-41
mgl@1371
 10311
+ *[0-9a-f]*:	22 54       	sub r4,37
mgl@1371
 10312
+ *[0-9a-f]*:	23 8c       	sub r12,56
mgl@1371
 10313
+
mgl@1371
 10314
+[0-9a-f]* <mov1>:
mgl@1371
 10315
+ *[0-9a-f]*:	30 0f       	mov pc,0
mgl@1371
 10316
+ *[0-9a-f]*:	3f fc       	mov r12,-1
mgl@1371
 10317
+ *[0-9a-f]*:	38 05       	mov r5,-128
mgl@1371
 10318
+ *[0-9a-f]*:	37 f4       	mov r4,127
mgl@1371
 10319
+ *[0-9a-f]*:	30 1e       	mov lr,1
mgl@1371
 10320
+ *[0-9a-f]*:	30 ef       	mov pc,14
mgl@1371
 10321
+ *[0-9a-f]*:	39 c6       	mov r6,-100
mgl@1371
 10322
+ *[0-9a-f]*:	38 6e       	mov lr,-122
mgl@1371
 10323
+
mgl@1371
 10324
+[0-9a-f]* <lddsp>:
mgl@1371
 10325
+ *[0-9a-f]*:	40 0f       	lddsp pc,sp\[0x0\]
mgl@1371
 10326
+ *[0-9a-f]*:	47 fc       	lddsp r12,sp\[0x1fc\]
mgl@1371
 10327
+ *[0-9a-f]*:	44 05       	lddsp r5,sp\[0x100\]
mgl@1371
 10328
+ *[0-9a-f]*:	43 f4       	lddsp r4,sp\[0xfc\]
mgl@1371
 10329
+ *[0-9a-f]*:	40 1e       	lddsp lr,sp\[0x4\]
mgl@1371
 10330
+ *[0-9a-f]*:	44 0e       	lddsp lr,sp\[0x100\]
mgl@1371
 10331
+ *[0-9a-f]*:	40 5c       	lddsp r12,sp\[0x14\]
mgl@1371
 10332
+ *[0-9a-f]*:	47 69       	lddsp r9,sp\[0x1d8\]
mgl@1371
 10333
+
mgl@1371
 10334
+[0-9a-f]* <lddpc>:
mgl@1371
 10335
+ *[0-9a-f]*:	48 0f       	lddpc pc,[0-9a-f]* <.*>
mgl@1371
 10336
+ *[0-9a-f]*:	4f f0       	lddpc r0,[0-9a-f]* <.*>
mgl@1371
 10337
+ *[0-9a-f]*:	4c 08       	lddpc r8,[0-9a-f]* <.*>
mgl@1371
 10338
+ *[0-9a-f]*:	4b f7       	lddpc r7,[0-9a-f]* <.*>
mgl@1371
 10339
+ *[0-9a-f]*:	48 1e       	lddpc lr,[0-9a-f]* <.*>
mgl@1371
 10340
+ *[0-9a-f]*:	4f 6d       	lddpc sp,[0-9a-f]* <.*>
mgl@1371
 10341
+ *[0-9a-f]*:	49 e6       	lddpc r6,[0-9a-f]* <.*>
mgl@1371
 10342
+ *[0-9a-f]*:	48 7b       	lddpc r11,[0-9a-f]* <.*>
mgl@1371
 10343
+
mgl@1371
 10344
+[0-9a-f]* <stdsp>:
mgl@1371
 10345
+ *[0-9a-f]*:	50 0f       	stdsp sp\[0x0\],pc
mgl@1371
 10346
+ *[0-9a-f]*:	57 fc       	stdsp sp\[0x1fc\],r12
mgl@1371
 10347
+ *[0-9a-f]*:	54 05       	stdsp sp\[0x100\],r5
mgl@1371
 10348
+ *[0-9a-f]*:	53 f4       	stdsp sp\[0xfc\],r4
mgl@1371
 10349
+ *[0-9a-f]*:	50 1e       	stdsp sp\[0x4\],lr
mgl@1371
 10350
+ *[0-9a-f]*:	54 cf       	stdsp sp\[0x130\],pc
mgl@1371
 10351
+ *[0-9a-f]*:	54 00       	stdsp sp\[0x100\],r0
mgl@1371
 10352
+ *[0-9a-f]*:	55 45       	stdsp sp\[0x150\],r5
mgl@1371
 10353
+
mgl@1371
 10354
+[0-9a-f]* <cp2>:
mgl@1371
 10355
+ *[0-9a-f]*:	58 0f       	cp.w pc,0
mgl@1371
 10356
+ *[0-9a-f]*:	5b fc       	cp.w r12,-1
mgl@1371
 10357
+ *[0-9a-f]*:	5a 05       	cp.w r5,-32
mgl@1371
 10358
+ *[0-9a-f]*:	59 f4       	cp.w r4,31
mgl@1371
 10359
+ *[0-9a-f]*:	58 1e       	cp.w lr,1
mgl@1371
 10360
+ *[0-9a-f]*:	58 38       	cp.w r8,3
mgl@1371
 10361
+ *[0-9a-f]*:	59 0e       	cp.w lr,16
mgl@1371
 10362
+ *[0-9a-f]*:	5a 67       	cp.w r7,-26
mgl@1371
 10363
+
mgl@1371
 10364
+[0-9a-f]* <acr>:
mgl@1371
 10365
+ *[0-9a-f]*:	5c 0f       	acr pc
mgl@1371
 10366
+ *[0-9a-f]*:	5c 0c       	acr r12
mgl@1371
 10367
+ *[0-9a-f]*:	5c 05       	acr r5
mgl@1371
 10368
+ *[0-9a-f]*:	5c 04       	acr r4
mgl@1371
 10369
+ *[0-9a-f]*:	5c 0e       	acr lr
mgl@1371
 10370
+ *[0-9a-f]*:	5c 02       	acr r2
mgl@1371
 10371
+ *[0-9a-f]*:	5c 0c       	acr r12
mgl@1371
 10372
+ *[0-9a-f]*:	5c 0f       	acr pc
mgl@1371
 10373
+
mgl@1371
 10374
+[0-9a-f]* <scr>:
mgl@1371
 10375
+ *[0-9a-f]*:	5c 1f       	scr pc
mgl@1371
 10376
+ *[0-9a-f]*:	5c 1c       	scr r12
mgl@1371
 10377
+ *[0-9a-f]*:	5c 15       	scr r5
mgl@1371
 10378
+ *[0-9a-f]*:	5c 14       	scr r4
mgl@1371
 10379
+ *[0-9a-f]*:	5c 1e       	scr lr
mgl@1371
 10380
+ *[0-9a-f]*:	5c 1f       	scr pc
mgl@1371
 10381
+ *[0-9a-f]*:	5c 16       	scr r6
mgl@1371
 10382
+ *[0-9a-f]*:	5c 11       	scr r1
mgl@1371
 10383
+
mgl@1371
 10384
+[0-9a-f]* <cpc0>:
mgl@1371
 10385
+ *[0-9a-f]*:	5c 2f       	cpc pc
mgl@1371
 10386
+ *[0-9a-f]*:	5c 2c       	cpc r12
mgl@1371
 10387
+ *[0-9a-f]*:	5c 25       	cpc r5
mgl@1371
 10388
+ *[0-9a-f]*:	5c 24       	cpc r4
mgl@1371
 10389
+ *[0-9a-f]*:	5c 2e       	cpc lr
mgl@1371
 10390
+ *[0-9a-f]*:	5c 2f       	cpc pc
mgl@1371
 10391
+ *[0-9a-f]*:	5c 24       	cpc r4
mgl@1371
 10392
+ *[0-9a-f]*:	5c 29       	cpc r9
mgl@1371
 10393
+
mgl@1371
 10394
+[0-9a-f]* <neg>:
mgl@1371
 10395
+ *[0-9a-f]*:	5c 3f       	neg pc
mgl@1371
 10396
+ *[0-9a-f]*:	5c 3c       	neg r12
mgl@1371
 10397
+ *[0-9a-f]*:	5c 35       	neg r5
mgl@1371
 10398
+ *[0-9a-f]*:	5c 34       	neg r4
mgl@1371
 10399
+ *[0-9a-f]*:	5c 3e       	neg lr
mgl@1371
 10400
+ *[0-9a-f]*:	5c 37       	neg r7
mgl@1371
 10401
+ *[0-9a-f]*:	5c 31       	neg r1
mgl@1371
 10402
+ *[0-9a-f]*:	5c 39       	neg r9
mgl@1371
 10403
+
mgl@1371
 10404
+[0-9a-f]* <abs>:
mgl@1371
 10405
+ *[0-9a-f]*:	5c 4f       	abs pc
mgl@1371
 10406
+ *[0-9a-f]*:	5c 4c       	abs r12
mgl@1371
 10407
+ *[0-9a-f]*:	5c 45       	abs r5
mgl@1371
 10408
+ *[0-9a-f]*:	5c 44       	abs r4
mgl@1371
 10409
+ *[0-9a-f]*:	5c 4e       	abs lr
mgl@1371
 10410
+ *[0-9a-f]*:	5c 46       	abs r6
mgl@1371
 10411
+ *[0-9a-f]*:	5c 46       	abs r6
mgl@1371
 10412
+ *[0-9a-f]*:	5c 44       	abs r4
mgl@1371
 10413
+
mgl@1371
 10414
+[0-9a-f]* <castu_b>:
mgl@1371
 10415
+ *[0-9a-f]*:	5c 5f       	castu\.b pc
mgl@1371
 10416
+ *[0-9a-f]*:	5c 5c       	castu\.b r12
mgl@1371
 10417
+ *[0-9a-f]*:	5c 55       	castu\.b r5
mgl@1371
 10418
+ *[0-9a-f]*:	5c 54       	castu\.b r4
mgl@1371
 10419
+ *[0-9a-f]*:	5c 5e       	castu\.b lr
mgl@1371
 10420
+ *[0-9a-f]*:	5c 57       	castu\.b r7
mgl@1371
 10421
+ *[0-9a-f]*:	5c 5d       	castu\.b sp
mgl@1371
 10422
+ *[0-9a-f]*:	5c 59       	castu\.b r9
mgl@1371
 10423
+
mgl@1371
 10424
+[0-9a-f]* <casts_b>:
mgl@1371
 10425
+ *[0-9a-f]*:	5c 6f       	casts\.b pc
mgl@1371
 10426
+ *[0-9a-f]*:	5c 6c       	casts\.b r12
mgl@1371
 10427
+ *[0-9a-f]*:	5c 65       	casts\.b r5
mgl@1371
 10428
+ *[0-9a-f]*:	5c 64       	casts\.b r4
mgl@1371
 10429
+ *[0-9a-f]*:	5c 6e       	casts\.b lr
mgl@1371
 10430
+ *[0-9a-f]*:	5c 6b       	casts\.b r11
mgl@1371
 10431
+ *[0-9a-f]*:	5c 61       	casts\.b r1
mgl@1371
 10432
+ *[0-9a-f]*:	5c 6a       	casts\.b r10
mgl@1371
 10433
+
mgl@1371
 10434
+[0-9a-f]* <castu_h>:
mgl@1371
 10435
+ *[0-9a-f]*:	5c 7f       	castu\.h pc
mgl@1371
 10436
+ *[0-9a-f]*:	5c 7c       	castu\.h r12
mgl@1371
 10437
+ *[0-9a-f]*:	5c 75       	castu\.h r5
mgl@1371
 10438
+ *[0-9a-f]*:	5c 74       	castu\.h r4
mgl@1371
 10439
+ *[0-9a-f]*:	5c 7e       	castu\.h lr
mgl@1371
 10440
+ *[0-9a-f]*:	5c 7a       	castu\.h r10
mgl@1371
 10441
+ *[0-9a-f]*:	5c 7b       	castu\.h r11
mgl@1371
 10442
+ *[0-9a-f]*:	5c 71       	castu\.h r1
mgl@1371
 10443
+
mgl@1371
 10444
+[0-9a-f]* <casts_h>:
mgl@1371
 10445
+ *[0-9a-f]*:	5c 8f       	casts\.h pc
mgl@1371
 10446
+ *[0-9a-f]*:	5c 8c       	casts\.h r12
mgl@1371
 10447
+ *[0-9a-f]*:	5c 85       	casts\.h r5
mgl@1371
 10448
+ *[0-9a-f]*:	5c 84       	casts\.h r4
mgl@1371
 10449
+ *[0-9a-f]*:	5c 8e       	casts\.h lr
mgl@1371
 10450
+ *[0-9a-f]*:	5c 80       	casts\.h r0
mgl@1371
 10451
+ *[0-9a-f]*:	5c 85       	casts\.h r5
mgl@1371
 10452
+ *[0-9a-f]*:	5c 89       	casts\.h r9
mgl@1371
 10453
+
mgl@1371
 10454
+[0-9a-f]* <brev>:
mgl@1371
 10455
+ *[0-9a-f]*:	5c 9f       	brev pc
mgl@1371
 10456
+ *[0-9a-f]*:	5c 9c       	brev r12
mgl@1371
 10457
+ *[0-9a-f]*:	5c 95       	brev r5
mgl@1371
 10458
+ *[0-9a-f]*:	5c 94       	brev r4
mgl@1371
 10459
+ *[0-9a-f]*:	5c 9e       	brev lr
mgl@1371
 10460
+ *[0-9a-f]*:	5c 95       	brev r5
mgl@1371
 10461
+ *[0-9a-f]*:	5c 9a       	brev r10
mgl@1371
 10462
+ *[0-9a-f]*:	5c 98       	brev r8
mgl@1371
 10463
+
mgl@1371
 10464
+[0-9a-f]* <swap_h>:
mgl@1371
 10465
+ *[0-9a-f]*:	5c af       	swap\.h pc
mgl@1371
 10466
+ *[0-9a-f]*:	5c ac       	swap\.h r12
mgl@1371
 10467
+ *[0-9a-f]*:	5c a5       	swap\.h r5
mgl@1371
 10468
+ *[0-9a-f]*:	5c a4       	swap\.h r4
mgl@1371
 10469
+ *[0-9a-f]*:	5c ae       	swap\.h lr
mgl@1371
 10470
+ *[0-9a-f]*:	5c a7       	swap\.h r7
mgl@1371
 10471
+ *[0-9a-f]*:	5c a0       	swap\.h r0
mgl@1371
 10472
+ *[0-9a-f]*:	5c a8       	swap\.h r8
mgl@1371
 10473
+
mgl@1371
 10474
+[0-9a-f]* <swap_b>:
mgl@1371
 10475
+ *[0-9a-f]*:	5c bf       	swap\.b pc
mgl@1371
 10476
+ *[0-9a-f]*:	5c bc       	swap\.b r12
mgl@1371
 10477
+ *[0-9a-f]*:	5c b5       	swap\.b r5
mgl@1371
 10478
+ *[0-9a-f]*:	5c b4       	swap\.b r4
mgl@1371
 10479
+ *[0-9a-f]*:	5c be       	swap\.b lr
mgl@1371
 10480
+ *[0-9a-f]*:	5c ba       	swap\.b r10
mgl@1371
 10481
+ *[0-9a-f]*:	5c bc       	swap\.b r12
mgl@1371
 10482
+ *[0-9a-f]*:	5c b1       	swap\.b r1
mgl@1371
 10483
+
mgl@1371
 10484
+[0-9a-f]* <swap_bh>:
mgl@1371
 10485
+ *[0-9a-f]*:	5c cf       	swap\.bh pc
mgl@1371
 10486
+ *[0-9a-f]*:	5c cc       	swap\.bh r12
mgl@1371
 10487
+ *[0-9a-f]*:	5c c5       	swap\.bh r5
mgl@1371
 10488
+ *[0-9a-f]*:	5c c4       	swap\.bh r4
mgl@1371
 10489
+ *[0-9a-f]*:	5c ce       	swap\.bh lr
mgl@1371
 10490
+ *[0-9a-f]*:	5c c9       	swap\.bh r9
mgl@1371
 10491
+ *[0-9a-f]*:	5c c4       	swap\.bh r4
mgl@1371
 10492
+ *[0-9a-f]*:	5c c1       	swap\.bh r1
mgl@1371
 10493
+
mgl@1371
 10494
+[0-9a-f]* <One_s_compliment>:
mgl@1371
 10495
+ *[0-9a-f]*:	5c df       	com pc
mgl@1371
 10496
+ *[0-9a-f]*:	5c dc       	com r12
mgl@1371
 10497
+ *[0-9a-f]*:	5c d5       	com r5
mgl@1371
 10498
+ *[0-9a-f]*:	5c d4       	com r4
mgl@1371
 10499
+ *[0-9a-f]*:	5c de       	com lr
mgl@1371
 10500
+ *[0-9a-f]*:	5c d2       	com r2
mgl@1371
 10501
+ *[0-9a-f]*:	5c d2       	com r2
mgl@1371
 10502
+ *[0-9a-f]*:	5c d7       	com r7
mgl@1371
 10503
+
mgl@1371
 10504
+[0-9a-f]* <tnbz>:
mgl@1371
 10505
+ *[0-9a-f]*:	5c ef       	tnbz pc
mgl@1371
 10506
+ *[0-9a-f]*:	5c ec       	tnbz r12
mgl@1371
 10507
+ *[0-9a-f]*:	5c e5       	tnbz r5
mgl@1371
 10508
+ *[0-9a-f]*:	5c e4       	tnbz r4
mgl@1371
 10509
+ *[0-9a-f]*:	5c ee       	tnbz lr
mgl@1371
 10510
+ *[0-9a-f]*:	5c e8       	tnbz r8
mgl@1371
 10511
+ *[0-9a-f]*:	5c ec       	tnbz r12
mgl@1371
 10512
+ *[0-9a-f]*:	5c ef       	tnbz pc
mgl@1371
 10513
+
mgl@1371
 10514
+[0-9a-f]* <rol>:
mgl@1371
 10515
+ *[0-9a-f]*:	5c ff       	rol pc
mgl@1371
 10516
+ *[0-9a-f]*:	5c fc       	rol r12
mgl@1371
 10517
+ *[0-9a-f]*:	5c f5       	rol r5
mgl@1371
 10518
+ *[0-9a-f]*:	5c f4       	rol r4
mgl@1371
 10519
+ *[0-9a-f]*:	5c fe       	rol lr
mgl@1371
 10520
+ *[0-9a-f]*:	5c fa       	rol r10
mgl@1371
 10521
+ *[0-9a-f]*:	5c f9       	rol r9
mgl@1371
 10522
+ *[0-9a-f]*:	5c f5       	rol r5
mgl@1371
 10523
+
mgl@1371
 10524
+[0-9a-f]* <ror>:
mgl@1371
 10525
+ *[0-9a-f]*:	5d 0f       	ror pc
mgl@1371
 10526
+ *[0-9a-f]*:	5d 0c       	ror r12
mgl@1371
 10527
+ *[0-9a-f]*:	5d 05       	ror r5
mgl@1371
 10528
+ *[0-9a-f]*:	5d 04       	ror r4
mgl@1371
 10529
+ *[0-9a-f]*:	5d 0e       	ror lr
mgl@1371
 10530
+ *[0-9a-f]*:	5d 08       	ror r8
mgl@1371
 10531
+ *[0-9a-f]*:	5d 04       	ror r4
mgl@1371
 10532
+ *[0-9a-f]*:	5d 07       	ror r7
mgl@1371
 10533
+
mgl@1371
 10534
+[0-9a-f]* <icall>:
mgl@1371
 10535
+ *[0-9a-f]*:	5d 1f       	icall pc
mgl@1371
 10536
+ *[0-9a-f]*:	5d 1c       	icall r12
mgl@1371
 10537
+ *[0-9a-f]*:	5d 15       	icall r5
mgl@1371
 10538
+ *[0-9a-f]*:	5d 14       	icall r4
mgl@1371
 10539
+ *[0-9a-f]*:	5d 1e       	icall lr
mgl@1371
 10540
+ *[0-9a-f]*:	5d 13       	icall r3
mgl@1371
 10541
+ *[0-9a-f]*:	5d 11       	icall r1
mgl@1371
 10542
+ *[0-9a-f]*:	5d 13       	icall r3
mgl@1371
 10543
+
mgl@1371
 10544
+[0-9a-f]* <mustr>:
mgl@1371
 10545
+ *[0-9a-f]*:	5d 2f       	mustr pc
mgl@1371
 10546
+ *[0-9a-f]*:	5d 2c       	mustr r12
mgl@1371
 10547
+ *[0-9a-f]*:	5d 25       	mustr r5
mgl@1371
 10548
+ *[0-9a-f]*:	5d 24       	mustr r4
mgl@1371
 10549
+ *[0-9a-f]*:	5d 2e       	mustr lr
mgl@1371
 10550
+ *[0-9a-f]*:	5d 21       	mustr r1
mgl@1371
 10551
+ *[0-9a-f]*:	5d 24       	mustr r4
mgl@1371
 10552
+ *[0-9a-f]*:	5d 2c       	mustr r12
mgl@1371
 10553
+
mgl@1371
 10554
+[0-9a-f]* <musfr>:
mgl@1371
 10555
+ *[0-9a-f]*:	5d 3f       	musfr pc
mgl@1371
 10556
+ *[0-9a-f]*:	5d 3c       	musfr r12
mgl@1371
 10557
+ *[0-9a-f]*:	5d 35       	musfr r5
mgl@1371
 10558
+ *[0-9a-f]*:	5d 34       	musfr r4
mgl@1371
 10559
+ *[0-9a-f]*:	5d 3e       	musfr lr
mgl@1371
 10560
+ *[0-9a-f]*:	5d 3b       	musfr r11
mgl@1371
 10561
+ *[0-9a-f]*:	5d 3c       	musfr r12
mgl@1371
 10562
+ *[0-9a-f]*:	5d 32       	musfr r2
mgl@1371
 10563
+
mgl@1371
 10564
+[0-9a-f]* <ret_cond>:
mgl@1371
 10565
+ *[0-9a-f]*:	5e 0f       	reteq 1
mgl@1371
 10566
+ *[0-9a-f]*:	5e fc       	retal r12
mgl@1371
 10567
+ *[0-9a-f]*:	5e 85       	retls r5
mgl@1371
 10568
+ *[0-9a-f]*:	5e 74       	retpl r4
mgl@1371
 10569
+ *[0-9a-f]*:	5e 1e       	retne -1
mgl@1371
 10570
+ *[0-9a-f]*:	5e 90       	retgt r0
mgl@1371
 10571
+ *[0-9a-f]*:	5e 9c       	retgt r12
mgl@1371
 10572
+ *[0-9a-f]*:	5e 4a       	retge r10
mgl@1371
 10573
+
mgl@1371
 10574
+[0-9a-f]* <sr_cond>:
mgl@1371
 10575
+ *[0-9a-f]*:	5f 0f       	sreq pc
mgl@1371
 10576
+ *[0-9a-f]*:	5f fc       	sral r12
mgl@1371
 10577
+ *[0-9a-f]*:	5f 85       	srls r5
mgl@1371
 10578
+ *[0-9a-f]*:	5f 74       	srpl r4
mgl@1371
 10579
+ *[0-9a-f]*:	5f 1e       	srne lr
mgl@1371
 10580
+ *[0-9a-f]*:	5f 50       	srlt r0
mgl@1371
 10581
+ *[0-9a-f]*:	5f fd       	sral sp
mgl@1371
 10582
+ *[0-9a-f]*:	5f 49       	srge r9
mgl@1371
 10583
+
mgl@1371
 10584
+[0-9a-f]* <ld_w3>:
mgl@1371
 10585
+ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
mgl@1371
 10586
+ *[0-9a-f]*:	79 fc       	ld\.w r12,r12\[0x7c\]
mgl@1371
 10587
+ *[0-9a-f]*:	6b 05       	ld\.w r5,r5\[0x40\]
mgl@1371
 10588
+ *[0-9a-f]*:	68 f4       	ld\.w r4,r4\[0x3c\]
mgl@1371
 10589
+ *[0-9a-f]*:	7c 1e       	ld\.w lr,lr\[0x4\]
mgl@1371
 10590
+ *[0-9a-f]*:	64 dd       	ld\.w sp,r2\[0x34\]
mgl@1371
 10591
+ *[0-9a-f]*:	62 29       	ld\.w r9,r1\[0x8\]
mgl@1371
 10592
+ *[0-9a-f]*:	7a f5       	ld\.w r5,sp\[0x3c\]
mgl@1371
 10593
+
mgl@1371
 10594
+[0-9a-f]* <ld_sh3>:
mgl@1371
 10595
+ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
mgl@1371
 10596
+ *[0-9a-f]*:	98 7c       	ld\.sh r12,r12\[0xe\]
mgl@1371
 10597
+ *[0-9a-f]*:	8a 45       	ld\.sh r5,r5\[0x8\]
mgl@1371
 10598
+ *[0-9a-f]*:	88 34       	ld\.sh r4,r4\[0x6\]
mgl@1371
 10599
+ *[0-9a-f]*:	9c 1e       	ld\.sh lr,lr\[0x2\]
mgl@1371
 10600
+ *[0-9a-f]*:	84 44       	ld\.sh r4,r2\[0x8\]
mgl@1371
 10601
+ *[0-9a-f]*:	9c 5d       	ld\.sh sp,lr\[0xa\]
mgl@1371
 10602
+ *[0-9a-f]*:	96 12       	ld\.sh r2,r11\[0x2\]
mgl@1371
 10603
+
mgl@1371
 10604
+[0-9a-f]* <ld_uh3>:
mgl@1371
 10605
+ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
mgl@1371
 10606
+ *[0-9a-f]*:	98 fc       	ld\.uh r12,r12\[0xe\]
mgl@1371
 10607
+ *[0-9a-f]*:	8a c5       	ld\.uh r5,r5\[0x8\]
mgl@1371
 10608
+ *[0-9a-f]*:	88 b4       	ld\.uh r4,r4\[0x6\]
mgl@1371
 10609
+ *[0-9a-f]*:	9c 9e       	ld\.uh lr,lr\[0x2\]
mgl@1371
 10610
+ *[0-9a-f]*:	80 da       	ld\.uh r10,r0\[0xa\]
mgl@1371
 10611
+ *[0-9a-f]*:	96 c8       	ld\.uh r8,r11\[0x8\]
mgl@1371
 10612
+ *[0-9a-f]*:	84 ea       	ld\.uh r10,r2\[0xc\]
mgl@1371
 10613
+
mgl@1371
 10614
+[0-9a-f]* <st_w3>:
mgl@1371
 10615
+ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
mgl@1371
 10616
+ *[0-9a-f]*:	99 fc       	st\.w r12\[0x3c\],r12
mgl@1371
 10617
+ *[0-9a-f]*:	8b 85       	st\.w r5\[0x20\],r5
mgl@1371
 10618
+ *[0-9a-f]*:	89 74       	st\.w r4\[0x1c\],r4
mgl@1371
 10619
+ *[0-9a-f]*:	9d 1e       	st\.w lr\[0x4\],lr
mgl@1371
 10620
+ *[0-9a-f]*:	8f bb       	st\.w r7\[0x2c\],r11
mgl@1371
 10621
+ *[0-9a-f]*:	85 66       	st\.w r2\[0x18\],r6
mgl@1371
 10622
+ *[0-9a-f]*:	89 39       	st\.w r4\[0xc\],r9
mgl@1371
 10623
+
mgl@1371
 10624
+[0-9a-f]* <st_h3>:
mgl@1371
 10625
+ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
mgl@1371
 10626
+ *[0-9a-f]*:	b8 7c       	st\.h r12\[0xe\],r12
mgl@1371
 10627
+ *[0-9a-f]*:	aa 45       	st\.h r5\[0x8\],r5
mgl@1371
 10628
+ *[0-9a-f]*:	a8 34       	st\.h r4\[0x6\],r4
mgl@1371
 10629
+ *[0-9a-f]*:	bc 1e       	st\.h lr\[0x2\],lr
mgl@1371
 10630
+ *[0-9a-f]*:	bc 5c       	st\.h lr\[0xa\],r12
mgl@1371
 10631
+ *[0-9a-f]*:	ac 20       	st\.h r6\[0x4\],r0
mgl@1371
 10632
+ *[0-9a-f]*:	aa 6d       	st\.h r5\[0xc\],sp
mgl@1371
 10633
+
mgl@1371
 10634
+[0-9a-f]* <st_b3>:
mgl@1371
 10635
+ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
mgl@1371
 10636
+ *[0-9a-f]*:	b8 fc       	st\.b r12\[0x7\],r12
mgl@1371
 10637
+ *[0-9a-f]*:	aa c5       	st\.b r5\[0x4\],r5
mgl@1371
 10638
+ *[0-9a-f]*:	a8 b4       	st\.b r4\[0x3\],r4
mgl@1371
 10639
+ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
mgl@1371
 10640
+ *[0-9a-f]*:	b8 e9       	st\.b r12\[0x6\],r9
mgl@1371
 10641
+ *[0-9a-f]*:	a4 be       	st\.b r2\[0x3\],lr
mgl@1371
 10642
+ *[0-9a-f]*:	a2 bb       	st\.b r1\[0x3\],r11
mgl@1371
 10643
+
mgl@1371
 10644
+[0-9a-f]* <ldd>:
mgl@1371
 10645
+ *[0-9a-f]*:	bf 00       	ld\.d r0,pc
mgl@1371
 10646
+ *[0-9a-f]*:	b9 0e       	ld\.d lr,r12
mgl@1371
 10647
+ *[0-9a-f]*:	ab 08       	ld\.d r8,r5
mgl@1371
 10648
+ *[0-9a-f]*:	a9 06       	ld\.d r6,r4
mgl@1371
 10649
+ *[0-9a-f]*:	bd 02       	ld\.d r2,lr
mgl@1371
 10650
+ *[0-9a-f]*:	af 0e       	ld\.d lr,r7
mgl@1371
 10651
+ *[0-9a-f]*:	a9 04       	ld\.d r4,r4
mgl@1371
 10652
+ *[0-9a-f]*:	bf 0e       	ld\.d lr,pc
mgl@1371
 10653
+
mgl@1371
 10654
+[0-9a-f]* <ldd_postinc>:
mgl@1371
 10655
+ *[0-9a-f]*:	bf 01       	ld\.d r0,pc\+\+
mgl@1371
 10656
+ *[0-9a-f]*:	b9 0f       	ld\.d lr,r12\+\+
mgl@1371
 10657
+ *[0-9a-f]*:	ab 09       	ld\.d r8,r5\+\+
mgl@1371
 10658
+ *[0-9a-f]*:	a9 07       	ld\.d r6,r4\+\+
mgl@1371
 10659
+ *[0-9a-f]*:	bd 03       	ld\.d r2,lr\+\+
mgl@1371
 10660
+ *[0-9a-f]*:	ab 0f       	ld\.d lr,r5\+\+
mgl@1371
 10661
+ *[0-9a-f]*:	b7 0d       	ld\.d r12,r11\+\+
mgl@1371
 10662
+ *[0-9a-f]*:	b9 03       	ld\.d r2,r12\+\+
mgl@1371
 10663
+
mgl@1371
 10664
+[0-9a-f]* <ldd_predec>:
mgl@1371
 10665
+ *[0-9a-f]*:	bf 10       	ld\.d r0,--pc
mgl@1371
 10666
+ *[0-9a-f]*:	b9 1e       	ld\.d lr,--r12
mgl@1371
 10667
+ *[0-9a-f]*:	ab 18       	ld\.d r8,--r5
mgl@1371
 10668
+ *[0-9a-f]*:	a9 16       	ld\.d r6,--r4
mgl@1371
 10669
+ *[0-9a-f]*:	bd 12       	ld\.d r2,--lr
mgl@1371
 10670
+ *[0-9a-f]*:	a1 18       	ld\.d r8,--r0
mgl@1371
 10671
+ *[0-9a-f]*:	bf 1a       	ld\.d r10,--pc
mgl@1371
 10672
+ *[0-9a-f]*:	a9 12       	ld\.d r2,--r4
mgl@1371
 10673
+
mgl@1371
 10674
+[0-9a-f]* <std>:
mgl@1371
 10675
+ *[0-9a-f]*:	bf 11       	st\.d pc,r0
mgl@1371
 10676
+ *[0-9a-f]*:	b9 1f       	st\.d r12,lr
mgl@1371
 10677
+ *[0-9a-f]*:	ab 19       	st\.d r5,r8
mgl@1371
 10678
+ *[0-9a-f]*:	a9 17       	st\.d r4,r6
mgl@1371
 10679
+ *[0-9a-f]*:	bd 13       	st\.d lr,r2
mgl@1371
 10680
+ *[0-9a-f]*:	a1 1d       	st\.d r0,r12
mgl@1371
 10681
+ *[0-9a-f]*:	bb 15       	st\.d sp,r4
mgl@1371
 10682
+ *[0-9a-f]*:	b9 1d       	st\.d r12,r12
mgl@1371
 10683
+
mgl@1371
 10684
+[0-9a-f]* <std_postinc>:
mgl@1371
 10685
+ *[0-9a-f]*:	bf 20       	st\.d pc\+\+,r0
mgl@1371
 10686
+ *[0-9a-f]*:	b9 2e       	st\.d r12\+\+,lr
mgl@1371
 10687
+ *[0-9a-f]*:	ab 28       	st\.d r5\+\+,r8
mgl@1371
 10688
+ *[0-9a-f]*:	a9 26       	st\.d r4\+\+,r6
mgl@1371
 10689
+ *[0-9a-f]*:	bd 22       	st\.d lr\+\+,r2
mgl@1371
 10690
+ *[0-9a-f]*:	bb 26       	st\.d sp\+\+,r6
mgl@1371
 10691
+ *[0-9a-f]*:	b5 26       	st\.d r10\+\+,r6
mgl@1371
 10692
+ *[0-9a-f]*:	af 22       	st\.d r7\+\+,r2
mgl@1371
 10693
+
mgl@1371
 10694
+[0-9a-f]* <std_predec>:
mgl@1371
 10695
+ *[0-9a-f]*:	bf 21       	st\.d --pc,r0
mgl@1371
 10696
+ *[0-9a-f]*:	b9 2f       	st\.d --r12,lr
mgl@1371
 10697
+ *[0-9a-f]*:	ab 29       	st\.d --r5,r8
mgl@1371
 10698
+ *[0-9a-f]*:	a9 27       	st\.d --r4,r6
mgl@1371
 10699
+ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
mgl@1371
 10700
+ *[0-9a-f]*:	a7 27       	st\.d --r3,r6
mgl@1371
 10701
+ *[0-9a-f]*:	bd 23       	st\.d --lr,r2
mgl@1371
 10702
+ *[0-9a-f]*:	a1 25       	st\.d --r0,r4
mgl@1371
 10703
+
mgl@1371
 10704
+[0-9a-f]* <mul>:
mgl@1371
 10705
+ *[0-9a-f]*:	bf 3f       	mul pc,pc
mgl@1371
 10706
+ *[0-9a-f]*:	b9 3c       	mul r12,r12
mgl@1371
 10707
+ *[0-9a-f]*:	ab 35       	mul r5,r5
mgl@1371
 10708
+ *[0-9a-f]*:	a9 34       	mul r4,r4
mgl@1371
 10709
+ *[0-9a-f]*:	bd 3e       	mul lr,lr
mgl@1371
 10710
+ *[0-9a-f]*:	bd 3a       	mul r10,lr
mgl@1371
 10711
+ *[0-9a-f]*:	b1 30       	mul r0,r8
mgl@1371
 10712
+ *[0-9a-f]*:	ab 38       	mul r8,r5
mgl@1371
 10713
+
mgl@1371
 10714
+[0-9a-f]* <asr_imm5>:
mgl@1371
 10715
+ *[0-9a-f]*:	a1 4f       	asr pc,0x0
mgl@1371
 10716
+ *[0-9a-f]*:	bf 5c       	asr r12,0x1f
mgl@1371
 10717
+ *[0-9a-f]*:	b1 45       	asr r5,0x10
mgl@1371
 10718
+ *[0-9a-f]*:	af 54       	asr r4,0xf
mgl@1371
 10719
+ *[0-9a-f]*:	a1 5e       	asr lr,0x1
mgl@1371
 10720
+ *[0-9a-f]*:	b7 56       	asr r6,0x17
mgl@1371
 10721
+ *[0-9a-f]*:	b3 46       	asr r6,0x12
mgl@1371
 10722
+ *[0-9a-f]*:	a9 45       	asr r5,0x8
mgl@1371
 10723
+
mgl@1371
 10724
+[0-9a-f]* <lsl_imm5>:
mgl@1371
 10725
+ *[0-9a-f]*:	a1 6f       	lsl pc,0x0
mgl@1371
 10726
+ *[0-9a-f]*:	bf 7c       	lsl r12,0x1f
mgl@1371
 10727
+ *[0-9a-f]*:	b1 65       	lsl r5,0x10
mgl@1371
 10728
+ *[0-9a-f]*:	af 74       	lsl r4,0xf
mgl@1371
 10729
+ *[0-9a-f]*:	a1 7e       	lsl lr,0x1
mgl@1371
 10730
+ *[0-9a-f]*:	ad 7c       	lsl r12,0xd
mgl@1371
 10731
+ *[0-9a-f]*:	b1 66       	lsl r6,0x10
mgl@1371
 10732
+ *[0-9a-f]*:	b9 71       	lsl r1,0x19
mgl@1371
 10733
+
mgl@1371
 10734
+[0-9a-f]* <lsr_imm5>:
mgl@1371
 10735
+ *[0-9a-f]*:	a1 8f       	lsr pc,0x0
mgl@1371
 10736
+ *[0-9a-f]*:	bf 9c       	lsr r12,0x1f
mgl@1371
 10737
+ *[0-9a-f]*:	b1 85       	lsr r5,0x10
mgl@1371
 10738
+ *[0-9a-f]*:	af 94       	lsr r4,0xf
mgl@1371
 10739
+ *[0-9a-f]*:	a1 9e       	lsr lr,0x1
mgl@1371
 10740
+ *[0-9a-f]*:	a1 90       	lsr r0,0x1
mgl@1371
 10741
+ *[0-9a-f]*:	ab 88       	lsr r8,0xa
mgl@1371
 10742
+ *[0-9a-f]*:	bb 87       	lsr r7,0x1a
mgl@1371
 10743
+
mgl@1371
 10744
+[0-9a-f]* <sbr>:
mgl@1371
 10745
+ *[0-9a-f]*:	a1 af       	sbr pc,0x0
mgl@1371
 10746
+ *[0-9a-f]*:	bf bc       	sbr r12,0x1f
mgl@1371
 10747
+ *[0-9a-f]*:	b1 a5       	sbr r5,0x10
mgl@1371
 10748
+ *[0-9a-f]*:	af b4       	sbr r4,0xf
mgl@1371
 10749
+ *[0-9a-f]*:	a1 be       	sbr lr,0x1
mgl@1371
 10750
+ *[0-9a-f]*:	bf b8       	sbr r8,0x1f
mgl@1371
 10751
+ *[0-9a-f]*:	b7 a6       	sbr r6,0x16
mgl@1371
 10752
+ *[0-9a-f]*:	b7 b1       	sbr r1,0x17
mgl@1371
 10753
+
mgl@1371
 10754
+[0-9a-f]* <cbr>:
mgl@1371
 10755
+ *[0-9a-f]*:	a1 cf       	cbr pc,0x0
mgl@1371
 10756
+ *[0-9a-f]*:	bf dc       	cbr r12,0x1f
mgl@1371
 10757
+ *[0-9a-f]*:	b1 c5       	cbr r5,0x10
mgl@1371
 10758
+ *[0-9a-f]*:	af d4       	cbr r4,0xf
mgl@1371
 10759
+ *[0-9a-f]*:	a1 de       	cbr lr,0x1
mgl@1371
 10760
+ *[0-9a-f]*:	ab cc       	cbr r12,0xa
mgl@1371
 10761
+ *[0-9a-f]*:	b7 c7       	cbr r7,0x16
mgl@1371
 10762
+ *[0-9a-f]*:	a9 d8       	cbr r8,0x9
mgl@1371
 10763
+
mgl@1371
 10764
+[0-9a-f]* <brc1>:
mgl@1371
 10765
+ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
mgl@1371
 10766
+ *[0-9a-f]*:	cf f7       	brpl [0-9a-f]* <.*>
mgl@1371
 10767
+ *[0-9a-f]*:	c8 04       	brge [0-9a-f]* <.*>
mgl@1371
 10768
+ *[0-9a-f]*:	c7 f3       	brcs [0-9a-f]* <.*>
mgl@1371
 10769
+ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
mgl@1371
 10770
+ *[0-9a-f]*:	c7 33       	brcs [0-9a-f]* <.*>
mgl@1371
 10771
+ *[0-9a-f]*:	cf 70       	breq [0-9a-f]* <.*>
mgl@1371
 10772
+ *[0-9a-f]*:	c0 60       	breq [0-9a-f]* <.*>
mgl@1371
 10773
+
mgl@1371
 10774
+[0-9a-f]* <rjmp>:
mgl@1371
 10775
+ *[0-9a-f]*:	c0 08       	rjmp [0-9a-f]* <.*>
mgl@1371
 10776
+ *[0-9a-f]*:	cf fb       	rjmp [0-9a-f]* <.*>
mgl@1371
 10777
+ *[0-9a-f]*:	c0 0a       	rjmp [0-9a-f]* <.*>
mgl@1371
 10778
+ *[0-9a-f]*:	cf f9       	rjmp [0-9a-f]* <.*>
mgl@1371
 10779
+ *[0-9a-f]*:	c0 18       	rjmp [0-9a-f]* <.*>
mgl@1371
 10780
+ *[0-9a-f]*:	c1 fa       	rjmp [0-9a-f]* <.*>
mgl@1371
 10781
+ *[0-9a-f]*:	c0 78       	rjmp [0-9a-f]* <.*>
mgl@1371
 10782
+ *[0-9a-f]*:	cf ea       	rjmp [0-9a-f]* <.*>
mgl@1371
 10783
+
mgl@1371
 10784
+[0-9a-f]* <rcall1>:
mgl@1371
 10785
+ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
mgl@1371
 10786
+ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
mgl@1371
 10787
+ *[0-9a-f]*:	c0 0e       	rcall [0-9a-f]* <.*>
mgl@1371
 10788
+ *[0-9a-f]*:	cf fd       	rcall [0-9a-f]* <.*>
mgl@1371
 10789
+ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
mgl@1371
 10790
+ *[0-9a-f]*:	c6 cc       	rcall [0-9a-f]* <.*>
mgl@1371
 10791
+ *[0-9a-f]*:	cf 7e       	rcall [0-9a-f]* <.*>
mgl@1371
 10792
+ *[0-9a-f]*:	c1 ae       	rcall [0-9a-f]* <.*>
mgl@1371
 10793
+
mgl@1371
 10794
+[0-9a-f]* <acall>:
mgl@1371
 10795
+ *[0-9a-f]*:	d0 00       	acall 0x0
mgl@1371
 10796
+ *[0-9a-f]*:	df f0       	acall 0x3fc
mgl@1371
 10797
+ *[0-9a-f]*:	d8 00       	acall 0x200
mgl@1371
 10798
+ *[0-9a-f]*:	d7 f0       	acall 0x1fc
mgl@1371
 10799
+ *[0-9a-f]*:	d0 10       	acall 0x4
mgl@1371
 10800
+ *[0-9a-f]*:	d5 90       	acall 0x164
mgl@1371
 10801
+ *[0-9a-f]*:	d4 c0       	acall 0x130
mgl@1371
 10802
+ *[0-9a-f]*:	d2 b0       	acall 0xac
mgl@1371
 10803
+
mgl@1371
 10804
+[0-9a-f]* <scall>:
mgl@1371
 10805
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10806
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10807
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10808
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10809
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10810
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10811
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10812
+ *[0-9a-f]*:	d7 33       	scall
mgl@1371
 10813
+
mgl@1371
 10814
+[0-9a-f]* <popm>:
mgl@1371
 10815
+ *[0-9a-f]*:	d8 02       	popm pc
mgl@1371
 10816
+ *[0-9a-f]*:	dd fa       	popm r0-r11,pc,r12=-1
mgl@1371
 10817
+ *[0-9a-f]*:	d4 02       	popm lr
mgl@1371
 10818
+ *[0-9a-f]*:	db fa       	popm r0-r11,pc,r12=1
mgl@1371
 10819
+ *[0-9a-f]*:	d0 12       	popm r0-r3
mgl@1371
 10820
+ *[0-9a-f]*:	d8 e2       	popm r4-r10,pc
mgl@1371
 10821
+ *[0-9a-f]*:	d9 1a       	popm r0-r3,r11,pc,r12=0
mgl@1371
 10822
+ *[0-9a-f]*:	d7 b2       	popm r0-r7,r10-r12,lr
mgl@1371
 10823
+
mgl@1371
 10824
+[0-9a-f]* <pushm>:
mgl@1371
 10825
+ *[0-9a-f]*:	d8 01       	pushm pc
mgl@1371
 10826
+ *[0-9a-f]*:	df f1       	pushm r0-r12,lr-pc
mgl@1371
 10827
+ *[0-9a-f]*:	d8 01       	pushm pc
mgl@1371
 10828
+ *[0-9a-f]*:	d7 f1       	pushm r0-r12,lr
mgl@1371
 10829
+ *[0-9a-f]*:	d0 11       	pushm r0-r3
mgl@1371
 10830
+ *[0-9a-f]*:	dc c1       	pushm r8-r10,lr-pc
mgl@1371
 10831
+ *[0-9a-f]*:	d0 91       	pushm r0-r3,r10
mgl@1371
 10832
+ *[0-9a-f]*:	d2 41       	pushm r8-r9,r12
mgl@1371
 10833
+
mgl@1371
 10834
+[0-9a-f]* <popm_n>:
mgl@1371
 10835
+.*
mgl@1371
 10836
+.*
mgl@1371
 10837
+.*
mgl@1371
 10838
+.*
mgl@1371
 10839
+.*
mgl@1371
 10840
+.*
mgl@1371
 10841
+.*
mgl@1371
 10842
+.*
mgl@1371
 10843
+
mgl@1371
 10844
+[0-9a-f]* <pushm_n>:
mgl@1371
 10845
+.*
mgl@1371
 10846
+.*
mgl@1371
 10847
+.*
mgl@1371
 10848
+.*
mgl@1371
 10849
+.*
mgl@1371
 10850
+.*
mgl@1371
 10851
+.*
mgl@1371
 10852
+.*
mgl@1371
 10853
+
mgl@1371
 10854
+[0-9a-f]* <csrfcz>:
mgl@1371
 10855
+ *[0-9a-f]*:	d0 03       	csrfcz 0x0
mgl@1371
 10856
+ *[0-9a-f]*:	d1 f3       	csrfcz 0x1f
mgl@1371
 10857
+ *[0-9a-f]*:	d1 03       	csrfcz 0x10
mgl@1371
 10858
+ *[0-9a-f]*:	d0 f3       	csrfcz 0xf
mgl@1371
 10859
+ *[0-9a-f]*:	d0 13       	csrfcz 0x1
mgl@1371
 10860
+ *[0-9a-f]*:	d0 53       	csrfcz 0x5
mgl@1371
 10861
+ *[0-9a-f]*:	d0 d3       	csrfcz 0xd
mgl@1371
 10862
+ *[0-9a-f]*:	d1 73       	csrfcz 0x17
mgl@1371
 10863
+
mgl@1371
 10864
+[0-9a-f]* <ssrf>:
mgl@1371
 10865
+ *[0-9a-f]*:	d2 03       	ssrf 0x0
mgl@1371
 10866
+ *[0-9a-f]*:	d3 f3       	ssrf 0x1f
mgl@1371
 10867
+ *[0-9a-f]*:	d3 03       	ssrf 0x10
mgl@1371
 10868
+ *[0-9a-f]*:	d2 f3       	ssrf 0xf
mgl@1371
 10869
+ *[0-9a-f]*:	d2 13       	ssrf 0x1
mgl@1371
 10870
+ *[0-9a-f]*:	d3 d3       	ssrf 0x1d
mgl@1371
 10871
+ *[0-9a-f]*:	d2 d3       	ssrf 0xd
mgl@1371
 10872
+ *[0-9a-f]*:	d2 d3       	ssrf 0xd
mgl@1371
 10873
+
mgl@1371
 10874
+[0-9a-f]* <csrf>:
mgl@1371
 10875
+ *[0-9a-f]*:	d4 03       	csrf 0x0
mgl@1371
 10876
+ *[0-9a-f]*:	d5 f3       	csrf 0x1f
mgl@1371
 10877
+ *[0-9a-f]*:	d5 03       	csrf 0x10
mgl@1371
 10878
+ *[0-9a-f]*:	d4 f3       	csrf 0xf
mgl@1371
 10879
+ *[0-9a-f]*:	d4 13       	csrf 0x1
mgl@1371
 10880
+ *[0-9a-f]*:	d4 a3       	csrf 0xa
mgl@1371
 10881
+ *[0-9a-f]*:	d4 f3       	csrf 0xf
mgl@1371
 10882
+ *[0-9a-f]*:	d4 b3       	csrf 0xb
mgl@1371
 10883
+
mgl@1371
 10884
+[0-9a-f]* <rete>:
mgl@1371
 10885
+ *[0-9a-f]*:	d6 03       	rete
mgl@1371
 10886
+
mgl@1371
 10887
+[0-9a-f]* <rets>:
mgl@1371
 10888
+ *[0-9a-f]*:	d6 13       	rets
mgl@1371
 10889
+
mgl@1371
 10890
+[0-9a-f]* <retd>:
mgl@1371
 10891
+ *[0-9a-f]*:	d6 23       	retd
mgl@1371
 10892
+
mgl@1371
 10893
+[0-9a-f]* <retj>:
mgl@1371
 10894
+ *[0-9a-f]*:	d6 33       	retj
mgl@1371
 10895
+
mgl@1371
 10896
+[0-9a-f]* <tlbr>:
mgl@1371
 10897
+ *[0-9a-f]*:	d6 43       	tlbr
mgl@1371
 10898
+
mgl@1371
 10899
+[0-9a-f]* <tlbs>:
mgl@1371
 10900
+ *[0-9a-f]*:	d6 53       	tlbs
mgl@1371
 10901
+
mgl@1371
 10902
+[0-9a-f]* <tlbw>:
mgl@1371
 10903
+ *[0-9a-f]*:	d6 63       	tlbw
mgl@1371
 10904
+
mgl@1371
 10905
+[0-9a-f]* <breakpoint>:
mgl@1371
 10906
+ *[0-9a-f]*:	d6 73       	breakpoint
mgl@1371
 10907
+
mgl@1371
 10908
+[0-9a-f]* <incjosp>:
mgl@1371
 10909
+ *[0-9a-f]*:	d6 83       	incjosp 1
mgl@1371
 10910
+ *[0-9a-f]*:	d6 93       	incjosp 2
mgl@1371
 10911
+ *[0-9a-f]*:	d6 a3       	incjosp 3
mgl@1371
 10912
+ *[0-9a-f]*:	d6 b3       	incjosp 4
mgl@1371
 10913
+ *[0-9a-f]*:	d6 c3       	incjosp -4
mgl@1371
 10914
+ *[0-9a-f]*:	d6 d3       	incjosp -3
mgl@1371
 10915
+ *[0-9a-f]*:	d6 e3       	incjosp -2
mgl@1371
 10916
+ *[0-9a-f]*:	d6 f3       	incjosp -1
mgl@1371
 10917
+
mgl@1371
 10918
+[0-9a-f]* <nop>:
mgl@1371
 10919
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 10920
+
mgl@1371
 10921
+[0-9a-f]* <popjc>:
mgl@1371
 10922
+ *[0-9a-f]*:	d7 13       	popjc
mgl@1371
 10923
+
mgl@1371
 10924
+[0-9a-f]* <pushjc>:
mgl@1371
 10925
+ *[0-9a-f]*:	d7 23       	pushjc
mgl@1371
 10926
+
mgl@1371
 10927
+[0-9a-f]* <add2>:
mgl@1371
 10928
+ *[0-9a-f]*:	fe 0f 00 0f 	add pc,pc,pc
mgl@1371
 10929
+ *[0-9a-f]*:	f8 0c 00 3c 	add r12,r12,r12<<0x3
mgl@1371
 10930
+ *[0-9a-f]*:	ea 05 00 25 	add r5,r5,r5<<0x2
mgl@1371
 10931
+ *[0-9a-f]*:	e8 04 00 14 	add r4,r4,r4<<0x1
mgl@1371
 10932
+ *[0-9a-f]*:	fc 0e 00 1e 	add lr,lr,lr<<0x1
mgl@1371
 10933
+ *[0-9a-f]*:	f8 00 00 10 	add r0,r12,r0<<0x1
mgl@1371
 10934
+ *[0-9a-f]*:	f8 04 00 09 	add r9,r12,r4
mgl@1371
 10935
+ *[0-9a-f]*:	f8 07 00 2c 	add r12,r12,r7<<0x2
mgl@1371
 10936
+
mgl@1371
 10937
+[0-9a-f]* <sub2>:
mgl@1371
 10938
+ *[0-9a-f]*:	fe 0f 01 0f 	sub pc,pc,pc
mgl@1371
 10939
+ *[0-9a-f]*:	f8 0c 01 3c 	sub r12,r12,r12<<0x3
mgl@1371
 10940
+ *[0-9a-f]*:	ea 05 01 25 	sub r5,r5,r5<<0x2
mgl@1371
 10941
+ *[0-9a-f]*:	e8 04 01 14 	sub r4,r4,r4<<0x1
mgl@1371
 10942
+ *[0-9a-f]*:	fc 0e 01 1e 	sub lr,lr,lr<<0x1
mgl@1371
 10943
+ *[0-9a-f]*:	e6 04 01 0d 	sub sp,r3,r4
mgl@1371
 10944
+ *[0-9a-f]*:	ee 03 01 03 	sub r3,r7,r3
mgl@1371
 10945
+ *[0-9a-f]*:	f4 0d 01 1d 	sub sp,r10,sp<<0x1
mgl@1371
 10946
+
mgl@1371
 10947
+[0-9a-f]* <divu>:
mgl@1371
 10948
+ *[0-9a-f]*:	fe 0f 0d 0f 	divu pc,pc,pc
mgl@1371
 10949
+ *[0-9a-f]*:	f8 0c 0d 0c 	divu r12,r12,r12
mgl@1371
 10950
+ *[0-9a-f]*:	ea 05 0d 05 	divu r5,r5,r5
mgl@1371
 10951
+ *[0-9a-f]*:	e8 04 0d 04 	divu r4,r4,r4
mgl@1371
 10952
+ *[0-9a-f]*:	fc 0e 0d 0e 	divu lr,lr,lr
mgl@1371
 10953
+ *[0-9a-f]*:	e8 0f 0d 0d 	divu sp,r4,pc
mgl@1371
 10954
+ *[0-9a-f]*:	ea 0d 0d 05 	divu r5,r5,sp
mgl@1371
 10955
+ *[0-9a-f]*:	fa 00 0d 0a 	divu r10,sp,r0
mgl@1371
 10956
+
mgl@1371
 10957
+[0-9a-f]* <addhh_w>:
mgl@1371
 10958
+ *[0-9a-f]*:	fe 0f 0e 0f 	addhh\.w pc,pc:b,pc:b
mgl@1371
 10959
+ *[0-9a-f]*:	f8 0c 0e 3c 	addhh\.w r12,r12:t,r12:t
mgl@1371
 10960
+ *[0-9a-f]*:	ea 05 0e 35 	addhh\.w r5,r5:t,r5:t
mgl@1371
 10961
+ *[0-9a-f]*:	e8 04 0e 04 	addhh\.w r4,r4:b,r4:b
mgl@1371
 10962
+ *[0-9a-f]*:	fc 0e 0e 3e 	addhh\.w lr,lr:t,lr:t
mgl@1371
 10963
+ *[0-9a-f]*:	e0 03 0e 00 	addhh\.w r0,r0:b,r3:b
mgl@1371
 10964
+ *[0-9a-f]*:	f8 07 0e 2e 	addhh\.w lr,r12:t,r7:b
mgl@1371
 10965
+ *[0-9a-f]*:	f4 02 0e 23 	addhh\.w r3,r10:t,r2:b
mgl@1371
 10966
+
mgl@1371
 10967
+[0-9a-f]* <subhh_w>:
mgl@1371
 10968
+ *[0-9a-f]*:	fe 0f 0f 0f 	subhh\.w pc,pc:b,pc:b
mgl@1371
 10969
+ *[0-9a-f]*:	f8 0c 0f 3c 	subhh\.w r12,r12:t,r12:t
mgl@1371
 10970
+ *[0-9a-f]*:	ea 05 0f 35 	subhh\.w r5,r5:t,r5:t
mgl@1371
 10971
+ *[0-9a-f]*:	e8 04 0f 04 	subhh\.w r4,r4:b,r4:b
mgl@1371
 10972
+ *[0-9a-f]*:	fc 0e 0f 3e 	subhh\.w lr,lr:t,lr:t
mgl@1371
 10973
+ *[0-9a-f]*:	e2 07 0f 2a 	subhh\.w r10,r1:t,r7:b
mgl@1371
 10974
+ *[0-9a-f]*:	f4 0e 0f 3f 	subhh\.w pc,r10:t,lr:t
mgl@1371
 10975
+ *[0-9a-f]*:	e0 0c 0f 23 	subhh\.w r3,r0:t,r12:b
mgl@1371
 10976
+
mgl@1371
 10977
+[0-9a-f]* <adc>:
mgl@1371
 10978
+ *[0-9a-f]*:	fe 0f 00 4f 	adc pc,pc,pc
mgl@1371
 10979
+ *[0-9a-f]*:	f8 0c 00 4c 	adc r12,r12,r12
mgl@1371
 10980
+ *[0-9a-f]*:	ea 05 00 45 	adc r5,r5,r5
mgl@1371
 10981
+ *[0-9a-f]*:	e8 04 00 44 	adc r4,r4,r4
mgl@1371
 10982
+ *[0-9a-f]*:	fc 0e 00 4e 	adc lr,lr,lr
mgl@1371
 10983
+ *[0-9a-f]*:	e0 07 00 44 	adc r4,r0,r7
mgl@1371
 10984
+ *[0-9a-f]*:	e8 03 00 4d 	adc sp,r4,r3
mgl@1371
 10985
+ *[0-9a-f]*:	f8 00 00 42 	adc r2,r12,r0
mgl@1371
 10986
+
mgl@1371
 10987
+[0-9a-f]* <sbc>:
mgl@1371
 10988
+ *[0-9a-f]*:	fe 0f 01 4f 	sbc pc,pc,pc
mgl@1371
 10989
+ *[0-9a-f]*:	f8 0c 01 4c 	sbc r12,r12,r12
mgl@1371
 10990
+ *[0-9a-f]*:	ea 05 01 45 	sbc r5,r5,r5
mgl@1371
 10991
+ *[0-9a-f]*:	e8 04 01 44 	sbc r4,r4,r4
mgl@1371
 10992
+ *[0-9a-f]*:	fc 0e 01 4e 	sbc lr,lr,lr
mgl@1371
 10993
+ *[0-9a-f]*:	ee 09 01 46 	sbc r6,r7,r9
mgl@1371
 10994
+ *[0-9a-f]*:	f0 05 01 40 	sbc r0,r8,r5
mgl@1371
 10995
+ *[0-9a-f]*:	e0 04 01 41 	sbc r1,r0,r4
mgl@1371
 10996
+
mgl@1371
 10997
+[0-9a-f]* <mul_2>:
mgl@1371
 10998
+ *[0-9a-f]*:	fe 0f 02 4f 	mul pc,pc,pc
mgl@1371
 10999
+ *[0-9a-f]*:	f8 0c 02 4c 	mul r12,r12,r12
mgl@1371
 11000
+ *[0-9a-f]*:	ea 05 02 45 	mul r5,r5,r5
mgl@1371
 11001
+ *[0-9a-f]*:	e8 04 02 44 	mul r4,r4,r4
mgl@1371
 11002
+ *[0-9a-f]*:	fc 0e 02 4e 	mul lr,lr,lr
mgl@1371
 11003
+ *[0-9a-f]*:	e0 00 02 4f 	mul pc,r0,r0
mgl@1371
 11004
+ *[0-9a-f]*:	fe 0e 02 48 	mul r8,pc,lr
mgl@1371
 11005
+ *[0-9a-f]*:	f8 0f 02 44 	mul r4,r12,pc
mgl@1371
 11006
+
mgl@1371
 11007
+[0-9a-f]* <mac>:
mgl@1371
 11008
+ *[0-9a-f]*:	fe 0f 03 4f 	mac pc,pc,pc
mgl@1371
 11009
+ *[0-9a-f]*:	f8 0c 03 4c 	mac r12,r12,r12
mgl@1371
 11010
+ *[0-9a-f]*:	ea 05 03 45 	mac r5,r5,r5
mgl@1371
 11011
+ *[0-9a-f]*:	e8 04 03 44 	mac r4,r4,r4
mgl@1371
 11012
+ *[0-9a-f]*:	fc 0e 03 4e 	mac lr,lr,lr
mgl@1371
 11013
+ *[0-9a-f]*:	e8 00 03 4a 	mac r10,r4,r0
mgl@1371
 11014
+ *[0-9a-f]*:	fc 00 03 47 	mac r7,lr,r0
mgl@1371
 11015
+ *[0-9a-f]*:	f2 0c 03 42 	mac r2,r9,r12
mgl@1371
 11016
+
mgl@1371
 11017
+[0-9a-f]* <mulsd>:
mgl@1371
 11018
+ *[0-9a-f]*:	fe 0f 04 4f 	muls\.d pc,pc,pc
mgl@1371
 11019
+ *[0-9a-f]*:	f8 0c 04 4c 	muls\.d r12,r12,r12
mgl@1371
 11020
+ *[0-9a-f]*:	ea 05 04 45 	muls\.d r5,r5,r5
mgl@1371
 11021
+ *[0-9a-f]*:	e8 04 04 44 	muls\.d r4,r4,r4
mgl@1371
 11022
+ *[0-9a-f]*:	fc 0e 04 4e 	muls\.d lr,lr,lr
mgl@1371
 11023
+ *[0-9a-f]*:	f0 0e 04 42 	muls\.d r2,r8,lr
mgl@1371
 11024
+ *[0-9a-f]*:	e0 0b 04 44 	muls\.d r4,r0,r11
mgl@1371
 11025
+ *[0-9a-f]*:	fc 06 04 45 	muls\.d r5,lr,r6
mgl@1371
 11026
+
mgl@1371
 11027
+[0-9a-f]* <macsd>:
mgl@1371
 11028
+ *[0-9a-f]*:	fe 0f 05 40 	macs\.d r0,pc,pc
mgl@1371
 11029
+ *[0-9a-f]*:	f8 0c 05 4e 	macs\.d lr,r12,r12
mgl@1371
 11030
+ *[0-9a-f]*:	ea 05 05 48 	macs\.d r8,r5,r5
mgl@1371
 11031
+ *[0-9a-f]*:	e8 04 05 46 	macs\.d r6,r4,r4
mgl@1371
 11032
+ *[0-9a-f]*:	fc 0e 05 42 	macs\.d r2,lr,lr
mgl@1371
 11033
+ *[0-9a-f]*:	e2 09 05 48 	macs\.d r8,r1,r9
mgl@1371
 11034
+ *[0-9a-f]*:	f0 08 05 4e 	macs\.d lr,r8,r8
mgl@1371
 11035
+ *[0-9a-f]*:	e6 0c 05 44 	macs\.d r4,r3,r12
mgl@1371
 11036
+
mgl@1371
 11037
+[0-9a-f]* <mulud>:
mgl@1371
 11038
+ *[0-9a-f]*:	fe 0f 06 40 	mulu\.d r0,pc,pc
mgl@1371
 11039
+ *[0-9a-f]*:	f8 0c 06 4e 	mulu\.d lr,r12,r12
mgl@1371
 11040
+ *[0-9a-f]*:	ea 05 06 48 	mulu\.d r8,r5,r5
mgl@1371
 11041
+ *[0-9a-f]*:	e8 04 06 46 	mulu\.d r6,r4,r4
mgl@1371
 11042
+ *[0-9a-f]*:	fc 0e 06 42 	mulu\.d r2,lr,lr
mgl@1371
 11043
+ *[0-9a-f]*:	ea 00 06 46 	mulu\.d r6,r5,r0
mgl@1371
 11044
+ *[0-9a-f]*:	ec 01 06 44 	mulu\.d r4,r6,r1
mgl@1371
 11045
+ *[0-9a-f]*:	f0 02 06 48 	mulu\.d r8,r8,r2
mgl@1371
 11046
+
mgl@1371
 11047
+[0-9a-f]* <macud>:
mgl@1371
 11048
+ *[0-9a-f]*:	fe 0f 07 40 	macu\.d r0,pc,pc
mgl@1371
 11049
+ *[0-9a-f]*:	f8 0c 07 4e 	macu\.d lr,r12,r12
mgl@1371
 11050
+ *[0-9a-f]*:	ea 05 07 48 	macu\.d r8,r5,r5
mgl@1371
 11051
+ *[0-9a-f]*:	e8 04 07 46 	macu\.d r6,r4,r4
mgl@1371
 11052
+ *[0-9a-f]*:	fc 0e 07 42 	macu\.d r2,lr,lr
mgl@1371
 11053
+ *[0-9a-f]*:	fa 0b 07 46 	macu\.d r6,sp,r11
mgl@1371
 11054
+ *[0-9a-f]*:	e8 08 07 42 	macu\.d r2,r4,r8
mgl@1371
 11055
+ *[0-9a-f]*:	f4 09 07 46 	macu\.d r6,r10,r9
mgl@1371
 11056
+
mgl@1371
 11057
+[0-9a-f]* <asr_1>:
mgl@1371
 11058
+ *[0-9a-f]*:	fe 0f 08 4f 	asr pc,pc,pc
mgl@1371
 11059
+ *[0-9a-f]*:	f8 0c 08 4c 	asr r12,r12,r12
mgl@1371
 11060
+ *[0-9a-f]*:	ea 05 08 45 	asr r5,r5,r5
mgl@1371
 11061
+ *[0-9a-f]*:	e8 04 08 44 	asr r4,r4,r4
mgl@1371
 11062
+ *[0-9a-f]*:	fc 0e 08 4e 	asr lr,lr,lr
mgl@1371
 11063
+ *[0-9a-f]*:	ec 0f 08 4f 	asr pc,r6,pc
mgl@1371
 11064
+ *[0-9a-f]*:	ec 0c 08 40 	asr r0,r6,r12
mgl@1371
 11065
+ *[0-9a-f]*:	fa 00 08 44 	asr r4,sp,r0
mgl@1371
 11066
+
mgl@1371
 11067
+[0-9a-f]* <lsl_1>:
mgl@1371
 11068
+ *[0-9a-f]*:	fe 0f 09 4f 	lsl pc,pc,pc
mgl@1371
 11069
+ *[0-9a-f]*:	f8 0c 09 4c 	lsl r12,r12,r12
mgl@1371
 11070
+ *[0-9a-f]*:	ea 05 09 45 	lsl r5,r5,r5
mgl@1371
 11071
+ *[0-9a-f]*:	e8 04 09 44 	lsl r4,r4,r4
mgl@1371
 11072
+ *[0-9a-f]*:	fc 0e 09 4e 	lsl lr,lr,lr
mgl@1371
 11073
+ *[0-9a-f]*:	ea 0e 09 4e 	lsl lr,r5,lr
mgl@1371
 11074
+ *[0-9a-f]*:	fe 03 09 45 	lsl r5,pc,r3
mgl@1371
 11075
+ *[0-9a-f]*:	fe 09 09 41 	lsl r1,pc,r9
mgl@1371
 11076
+
mgl@1371
 11077
+[0-9a-f]* <lsr_1>:
mgl@1371
 11078
+ *[0-9a-f]*:	fe 0f 0a 4f 	lsr pc,pc,pc
mgl@1371
 11079
+ *[0-9a-f]*:	f8 0c 0a 4c 	lsr r12,r12,r12
mgl@1371
 11080
+ *[0-9a-f]*:	ea 05 0a 45 	lsr r5,r5,r5
mgl@1371
 11081
+ *[0-9a-f]*:	e8 04 0a 44 	lsr r4,r4,r4
mgl@1371
 11082
+ *[0-9a-f]*:	fc 0e 0a 4e 	lsr lr,lr,lr
mgl@1371
 11083
+ *[0-9a-f]*:	e8 01 0a 42 	lsr r2,r4,r1
mgl@1371
 11084
+ *[0-9a-f]*:	e2 06 0a 45 	lsr r5,r1,r6
mgl@1371
 11085
+ *[0-9a-f]*:	ec 07 0a 4d 	lsr sp,r6,r7
mgl@1371
 11086
+
mgl@1371
 11087
+[0-9a-f]* <xchg>:
mgl@1371
 11088
+ *[0-9a-f]*:	fe 0f 0b 4f 	xchg pc,pc,pc
mgl@1371
 11089
+ *[0-9a-f]*:	f8 0c 0b 4c 	xchg r12,r12,r12
mgl@1371
 11090
+ *[0-9a-f]*:	ea 05 0b 45 	xchg r5,r5,r5
mgl@1371
 11091
+ *[0-9a-f]*:	e8 04 0b 44 	xchg r4,r4,r4
mgl@1371
 11092
+ *[0-9a-f]*:	fc 0e 0b 4e 	xchg lr,lr,lr
mgl@1371
 11093
+ *[0-9a-f]*:	e8 0d 0b 4e 	xchg lr,r4,sp
mgl@1371
 11094
+ *[0-9a-f]*:	ea 0c 0b 41 	xchg r1,r5,r12
mgl@1371
 11095
+ *[0-9a-f]*:	f8 00 0b 4e 	xchg lr,r12,r0
mgl@1371
 11096
+
mgl@1371
 11097
+[0-9a-f]* <max>:
mgl@1371
 11098
+ *[0-9a-f]*:	fe 0f 0c 4f 	max pc,pc,pc
mgl@1371
 11099
+ *[0-9a-f]*:	f8 0c 0c 4c 	max r12,r12,r12
mgl@1371
 11100
+ *[0-9a-f]*:	ea 05 0c 45 	max r5,r5,r5
mgl@1371
 11101
+ *[0-9a-f]*:	e8 04 0c 44 	max r4,r4,r4
mgl@1371
 11102
+ *[0-9a-f]*:	fc 0e 0c 4e 	max lr,lr,lr
mgl@1371
 11103
+ *[0-9a-f]*:	e4 0d 0c 4e 	max lr,r2,sp
mgl@1371
 11104
+ *[0-9a-f]*:	f4 09 0c 44 	max r4,r10,r9
mgl@1371
 11105
+ *[0-9a-f]*:	f2 0e 0c 4e 	max lr,r9,lr
mgl@1371
 11106
+
mgl@1371
 11107
+[0-9a-f]* <min>:
mgl@1371
 11108
+ *[0-9a-f]*:	fe 0f 0d 4f 	min pc,pc,pc
mgl@1371
 11109
+ *[0-9a-f]*:	f8 0c 0d 4c 	min r12,r12,r12
mgl@1371
 11110
+ *[0-9a-f]*:	ea 05 0d 45 	min r5,r5,r5
mgl@1371
 11111
+ *[0-9a-f]*:	e8 04 0d 44 	min r4,r4,r4
mgl@1371
 11112
+ *[0-9a-f]*:	fc 0e 0d 4e 	min lr,lr,lr
mgl@1371
 11113
+ *[0-9a-f]*:	ee 08 0d 49 	min r9,r7,r8
mgl@1371
 11114
+ *[0-9a-f]*:	ea 05 0d 4d 	min sp,r5,r5
mgl@1371
 11115
+ *[0-9a-f]*:	e2 04 0d 44 	min r4,r1,r4
mgl@1371
 11116
+
mgl@1371
 11117
+[0-9a-f]* <addabs>:
mgl@1371
 11118
+ *[0-9a-f]*:	fe 0f 0e 4f 	addabs pc,pc,pc
mgl@1371
 11119
+ *[0-9a-f]*:	f8 0c 0e 4c 	addabs r12,r12,r12
mgl@1371
 11120
+ *[0-9a-f]*:	ea 05 0e 45 	addabs r5,r5,r5
mgl@1371
 11121
+ *[0-9a-f]*:	e8 04 0e 44 	addabs r4,r4,r4
mgl@1371
 11122
+ *[0-9a-f]*:	fc 0e 0e 4e 	addabs lr,lr,lr
mgl@1371
 11123
+ *[0-9a-f]*:	f4 00 0e 47 	addabs r7,r10,r0
mgl@1371
 11124
+ *[0-9a-f]*:	f2 07 0e 49 	addabs r9,r9,r7
mgl@1371
 11125
+ *[0-9a-f]*:	f0 0c 0e 42 	addabs r2,r8,r12
mgl@1371
 11126
+
mgl@1371
 11127
+[0-9a-f]* <mulnhh_w>:
mgl@1371
 11128
+ *[0-9a-f]*:	fe 0f 01 8f 	mulnhh\.w pc,pc:b,pc:b
mgl@1371
 11129
+ *[0-9a-f]*:	f8 0c 01 bc 	mulnhh\.w r12,r12:t,r12:t
mgl@1371
 11130
+ *[0-9a-f]*:	ea 05 01 b5 	mulnhh\.w r5,r5:t,r5:t
mgl@1371
 11131
+ *[0-9a-f]*:	e8 04 01 84 	mulnhh\.w r4,r4:b,r4:b
mgl@1371
 11132
+ *[0-9a-f]*:	fc 0e 01 be 	mulnhh\.w lr,lr:t,lr:t
mgl@1371
 11133
+ *[0-9a-f]*:	fa 09 01 ab 	mulnhh\.w r11,sp:t,r9:b
mgl@1371
 11134
+ *[0-9a-f]*:	e8 0e 01 9d 	mulnhh\.w sp,r4:b,lr:t
mgl@1371
 11135
+ *[0-9a-f]*:	e4 0b 01 ac 	mulnhh\.w r12,r2:t,r11:b
mgl@1371
 11136
+
mgl@1371
 11137
+[0-9a-f]* <mulnwh_d>:
mgl@1371
 11138
+ *[0-9a-f]*:	fe 0f 02 80 	mulnwh\.d r0,pc,pc:b
mgl@1371
 11139
+ *[0-9a-f]*:	f8 0c 02 9e 	mulnwh\.d lr,r12,r12:t
mgl@1371
 11140
+ *[0-9a-f]*:	ea 05 02 98 	mulnwh\.d r8,r5,r5:t
mgl@1371
 11141
+ *[0-9a-f]*:	e8 04 02 86 	mulnwh\.d r6,r4,r4:b
mgl@1371
 11142
+ *[0-9a-f]*:	fc 0e 02 92 	mulnwh\.d r2,lr,lr:t
mgl@1371
 11143
+ *[0-9a-f]*:	e6 02 02 9e 	mulnwh\.d lr,r3,r2:t
mgl@1371
 11144
+ *[0-9a-f]*:	ea 09 02 84 	mulnwh\.d r4,r5,r9:b
mgl@1371
 11145
+ *[0-9a-f]*:	e8 04 02 9c 	mulnwh\.d r12,r4,r4:t
mgl@1371
 11146
+
mgl@1371
 11147
+[0-9a-f]* <machh_w>:
mgl@1371
 11148
+ *[0-9a-f]*:	fe 0f 04 8f 	machh\.w pc,pc:b,pc:b
mgl@1371
 11149
+ *[0-9a-f]*:	f8 0c 04 bc 	machh\.w r12,r12:t,r12:t
mgl@1371
 11150
+ *[0-9a-f]*:	ea 05 04 b5 	machh\.w r5,r5:t,r5:t
mgl@1371
 11151
+ *[0-9a-f]*:	e8 04 04 84 	machh\.w r4,r4:b,r4:b
mgl@1371
 11152
+ *[0-9a-f]*:	fc 0e 04 be 	machh\.w lr,lr:t,lr:t
mgl@1371
 11153
+ *[0-9a-f]*:	ea 01 04 9e 	machh\.w lr,r5:b,r1:t
mgl@1371
 11154
+ *[0-9a-f]*:	ec 07 04 89 	machh\.w r9,r6:b,r7:b
mgl@1371
 11155
+ *[0-9a-f]*:	fc 0c 04 a5 	machh\.w r5,lr:t,r12:b
mgl@1371
 11156
+
mgl@1371
 11157
+[0-9a-f]* <machh_d>:
mgl@1371
 11158
+ *[0-9a-f]*:	fe 0f 05 80 	machh\.d r0,pc:b,pc:b
mgl@1371
 11159
+ *[0-9a-f]*:	f8 0c 05 be 	machh\.d lr,r12:t,r12:t
mgl@1371
 11160
+ *[0-9a-f]*:	ea 05 05 b8 	machh\.d r8,r5:t,r5:t
mgl@1371
 11161
+ *[0-9a-f]*:	e8 04 05 86 	machh\.d r6,r4:b,r4:b
mgl@1371
 11162
+ *[0-9a-f]*:	fc 0e 05 b2 	machh\.d r2,lr:t,lr:t
mgl@1371
 11163
+ *[0-9a-f]*:	e0 08 05 8a 	machh\.d r10,r0:b,r8:b
mgl@1371
 11164
+ *[0-9a-f]*:	e8 05 05 9e 	machh\.d lr,r4:b,r5:t
mgl@1371
 11165
+ *[0-9a-f]*:	e0 04 05 98 	machh\.d r8,r0:b,r4:t
mgl@1371
 11166
+
mgl@1371
 11167
+[0-9a-f]* <macsathh_w>:
mgl@1371
 11168
+ *[0-9a-f]*:	fe 0f 06 8f 	macsathh\.w pc,pc:b,pc:b
mgl@1371
 11169
+ *[0-9a-f]*:	f8 0c 06 bc 	macsathh\.w r12,r12:t,r12:t
mgl@1371
 11170
+ *[0-9a-f]*:	ea 05 06 b5 	macsathh\.w r5,r5:t,r5:t
mgl@1371
 11171
+ *[0-9a-f]*:	e8 04 06 84 	macsathh\.w r4,r4:b,r4:b
mgl@1371
 11172
+ *[0-9a-f]*:	fc 0e 06 be 	macsathh\.w lr,lr:t,lr:t
mgl@1371
 11173
+ *[0-9a-f]*:	ee 0f 06 b7 	macsathh\.w r7,r7:t,pc:t
mgl@1371
 11174
+ *[0-9a-f]*:	e4 04 06 a4 	macsathh\.w r4,r2:t,r4:b
mgl@1371
 11175
+ *[0-9a-f]*:	f0 03 06 b4 	macsathh\.w r4,r8:t,r3:t
mgl@1371
 11176
+
mgl@1371
 11177
+[0-9a-f]* <mulhh_w>:
mgl@1371
 11178
+ *[0-9a-f]*:	fe 0f 07 8f 	mulhh\.w pc,pc:b,pc:b
mgl@1371
 11179
+ *[0-9a-f]*:	f8 0c 07 bc 	mulhh\.w r12,r12:t,r12:t
mgl@1371
 11180
+ *[0-9a-f]*:	ea 05 07 b5 	mulhh\.w r5,r5:t,r5:t
mgl@1371
 11181
+ *[0-9a-f]*:	e8 04 07 84 	mulhh\.w r4,r4:b,r4:b
mgl@1371
 11182
+ *[0-9a-f]*:	fc 0e 07 be 	mulhh\.w lr,lr:t,lr:t
mgl@1371
 11183
+ *[0-9a-f]*:	e8 09 07 a7 	mulhh\.w r7,r4:t,r9:b
mgl@1371
 11184
+ *[0-9a-f]*:	e6 07 07 bf 	mulhh\.w pc,r3:t,r7:t
mgl@1371
 11185
+ *[0-9a-f]*:	e8 09 07 9f 	mulhh\.w pc,r4:b,r9:t
mgl@1371
 11186
+
mgl@1371
 11187
+[0-9a-f]* <mulsathh_h>:
mgl@1371
 11188
+ *[0-9a-f]*:	fe 0f 08 8f 	mulsathh\.h pc,pc:b,pc:b
mgl@1371
 11189
+ *[0-9a-f]*:	f8 0c 08 bc 	mulsathh\.h r12,r12:t,r12:t
mgl@1371
 11190
+ *[0-9a-f]*:	ea 05 08 b5 	mulsathh\.h r5,r5:t,r5:t
mgl@1371
 11191
+ *[0-9a-f]*:	e8 04 08 84 	mulsathh\.h r4,r4:b,r4:b
mgl@1371
 11192
+ *[0-9a-f]*:	fc 0e 08 be 	mulsathh\.h lr,lr:t,lr:t
mgl@1371
 11193
+ *[0-9a-f]*:	e2 0d 08 83 	mulsathh\.h r3,r1:b,sp:b
mgl@1371
 11194
+ *[0-9a-f]*:	fc 0b 08 ab 	mulsathh\.h r11,lr:t,r11:b
mgl@1371
 11195
+ *[0-9a-f]*:	f0 0b 08 98 	mulsathh\.h r8,r8:b,r11:t
mgl@1371
 11196
+
mgl@1371
 11197
+[0-9a-f]* <mulsathh_w>:
mgl@1371
 11198
+ *[0-9a-f]*:	fe 0f 09 8f 	mulsathh\.w pc,pc:b,pc:b
mgl@1371
 11199
+ *[0-9a-f]*:	f8 0c 09 bc 	mulsathh\.w r12,r12:t,r12:t
mgl@1371
 11200
+ *[0-9a-f]*:	ea 05 09 b5 	mulsathh\.w r5,r5:t,r5:t
mgl@1371
 11201
+ *[0-9a-f]*:	e8 04 09 84 	mulsathh\.w r4,r4:b,r4:b
mgl@1371
 11202
+ *[0-9a-f]*:	fc 0e 09 be 	mulsathh\.w lr,lr:t,lr:t
mgl@1371
 11203
+ *[0-9a-f]*:	f6 06 09 ae 	mulsathh\.w lr,r11:t,r6:b
mgl@1371
 11204
+ *[0-9a-f]*:	ec 07 09 96 	mulsathh\.w r6,r6:b,r7:t
mgl@1371
 11205
+ *[0-9a-f]*:	e4 03 09 8a 	mulsathh\.w r10,r2:b,r3:b
mgl@1371
 11206
+
mgl@1371
 11207
+[0-9a-f]* <mulsatrndhh_h>:
mgl@1371
 11208
+ *[0-9a-f]*:	fe 0f 0a 8f 	mulsatrndhh\.h pc,pc:b,pc:b
mgl@1371
 11209
+ *[0-9a-f]*:	f8 0c 0a bc 	mulsatrndhh\.h r12,r12:t,r12:t
mgl@1371
 11210
+ *[0-9a-f]*:	ea 05 0a b5 	mulsatrndhh\.h r5,r5:t,r5:t
mgl@1371
 11211
+ *[0-9a-f]*:	e8 04 0a 84 	mulsatrndhh\.h r4,r4:b,r4:b
mgl@1371
 11212
+ *[0-9a-f]*:	fc 0e 0a be 	mulsatrndhh\.h lr,lr:t,lr:t
mgl@1371
 11213
+ *[0-9a-f]*:	ec 09 0a 8b 	mulsatrndhh\.h r11,r6:b,r9:b
mgl@1371
 11214
+ *[0-9a-f]*:	e6 08 0a 9b 	mulsatrndhh\.h r11,r3:b,r8:t
mgl@1371
 11215
+ *[0-9a-f]*:	fa 07 0a b5 	mulsatrndhh\.h r5,sp:t,r7:t
mgl@1371
 11216
+
mgl@1371
 11217
+[0-9a-f]* <mulsatrndwh_w>:
mgl@1371
 11218
+ *[0-9a-f]*:	fe 0f 0b 8f 	mulsatrndwh\.w pc,pc,pc:b
mgl@1371
 11219
+ *[0-9a-f]*:	f8 0c 0b 9c 	mulsatrndwh\.w r12,r12,r12:t
mgl@1371
 11220
+ *[0-9a-f]*:	ea 05 0b 95 	mulsatrndwh\.w r5,r5,r5:t
mgl@1371
 11221
+ *[0-9a-f]*:	e8 04 0b 84 	mulsatrndwh\.w r4,r4,r4:b
mgl@1371
 11222
+ *[0-9a-f]*:	fc 0e 0b 9e 	mulsatrndwh\.w lr,lr,lr:t
mgl@1371
 11223
+ *[0-9a-f]*:	f8 00 0b 85 	mulsatrndwh\.w r5,r12,r0:b
mgl@1371
 11224
+ *[0-9a-f]*:	f4 0f 0b 87 	mulsatrndwh\.w r7,r10,pc:b
mgl@1371
 11225
+ *[0-9a-f]*:	f0 05 0b 9a 	mulsatrndwh\.w r10,r8,r5:t
mgl@1371
 11226
+
mgl@1371
 11227
+[0-9a-f]* <macwh_d>:
mgl@1371
 11228
+ *[0-9a-f]*:	fe 0f 0c 80 	macwh\.d r0,pc,pc:b
mgl@1371
 11229
+ *[0-9a-f]*:	f8 0c 0c 9e 	macwh\.d lr,r12,r12:t
mgl@1371
 11230
+ *[0-9a-f]*:	ea 05 0c 98 	macwh\.d r8,r5,r5:t
mgl@1371
 11231
+ *[0-9a-f]*:	e8 04 0c 86 	macwh\.d r6,r4,r4:b
mgl@1371
 11232
+ *[0-9a-f]*:	fc 0e 0c 92 	macwh\.d r2,lr,lr:t
mgl@1371
 11233
+ *[0-9a-f]*:	f4 0c 0c 94 	macwh\.d r4,r10,r12:t
mgl@1371
 11234
+ *[0-9a-f]*:	ee 0d 0c 84 	macwh\.d r4,r7,sp:b
mgl@1371
 11235
+ *[0-9a-f]*:	f2 0b 0c 8e 	macwh\.d lr,r9,r11:b
mgl@1371
 11236
+
mgl@1371
 11237
+[0-9a-f]* <mulwh_d>:
mgl@1371
 11238
+ *[0-9a-f]*:	fe 0f 0d 80 	mulwh\.d r0,pc,pc:b
mgl@1371
 11239
+ *[0-9a-f]*:	f8 0c 0d 9e 	mulwh\.d lr,r12,r12:t
mgl@1371
 11240
+ *[0-9a-f]*:	ea 05 0d 98 	mulwh\.d r8,r5,r5:t
mgl@1371
 11241
+ *[0-9a-f]*:	e8 04 0d 86 	mulwh\.d r6,r4,r4:b
mgl@1371
 11242
+ *[0-9a-f]*:	fc 0e 0d 92 	mulwh\.d r2,lr,lr:t
mgl@1371
 11243
+ *[0-9a-f]*:	ea 01 0d 8c 	mulwh\.d r12,r5,r1:b
mgl@1371
 11244
+ *[0-9a-f]*:	e2 03 0d 90 	mulwh\.d r0,r1,r3:t
mgl@1371
 11245
+ *[0-9a-f]*:	f2 02 0d 80 	mulwh\.d r0,r9,r2:b
mgl@1371
 11246
+
mgl@1371
 11247
+[0-9a-f]* <mulsatwh_w>:
mgl@1371
 11248
+ *[0-9a-f]*:	fe 0f 0e 8f 	mulsatwh\.w pc,pc,pc:b
mgl@1371
 11249
+ *[0-9a-f]*:	f8 0c 0e 9c 	mulsatwh\.w r12,r12,r12:t
mgl@1371
 11250
+ *[0-9a-f]*:	ea 05 0e 95 	mulsatwh\.w r5,r5,r5:t
mgl@1371
 11251
+ *[0-9a-f]*:	e8 04 0e 84 	mulsatwh\.w r4,r4,r4:b
mgl@1371
 11252
+ *[0-9a-f]*:	fc 0e 0e 9e 	mulsatwh\.w lr,lr,lr:t
mgl@1371
 11253
+ *[0-9a-f]*:	fe 0a 0e 9b 	mulsatwh\.w r11,pc,r10:t
mgl@1371
 11254
+ *[0-9a-f]*:	f8 09 0e 9d 	mulsatwh\.w sp,r12,r9:t
mgl@1371
 11255
+ *[0-9a-f]*:	e6 02 0e 90 	mulsatwh\.w r0,r3,r2:t
mgl@1371
 11256
+
mgl@1371
 11257
+[0-9a-f]* <ldw7>:
mgl@1371
 11258
+ *[0-9a-f]*:	fe 0f 0f 8f 	ld\.w pc,pc\[pc:b<<2\]
mgl@1371
 11259
+ *[0-9a-f]*:	f8 0c 0f bc 	ld\.w r12,r12\[r12:t<<2\]
mgl@1371
 11260
+ *[0-9a-f]*:	ea 05 0f a5 	ld\.w r5,r5\[r5:u<<2\]
mgl@1371
 11261
+ *[0-9a-f]*:	e8 04 0f 94 	ld\.w r4,r4\[r4:l<<2\]
mgl@1371
 11262
+ *[0-9a-f]*:	fc 0e 0f 9e 	ld\.w lr,lr\[lr:l<<2\]
mgl@1371
 11263
+ *[0-9a-f]*:	f4 06 0f 99 	ld\.w r9,r10\[r6:l<<2\]
mgl@1371
 11264
+ *[0-9a-f]*:	f4 0a 0f 82 	ld\.w r2,r10\[r10:b<<2\]
mgl@1371
 11265
+ *[0-9a-f]*:	ea 0f 0f 8b 	ld\.w r11,r5\[pc:b<<2\]
mgl@1371
 11266
+
mgl@1371
 11267
+[0-9a-f]* <satadd_w>:
mgl@1371
 11268
+ *[0-9a-f]*:	fe 0f 00 cf 	satadd\.w pc,pc,pc
mgl@1371
 11269
+ *[0-9a-f]*:	f8 0c 00 cc 	satadd\.w r12,r12,r12
mgl@1371
 11270
+ *[0-9a-f]*:	ea 05 00 c5 	satadd\.w r5,r5,r5
mgl@1371
 11271
+ *[0-9a-f]*:	e8 04 00 c4 	satadd\.w r4,r4,r4
mgl@1371
 11272
+ *[0-9a-f]*:	fc 0e 00 ce 	satadd\.w lr,lr,lr
mgl@1371
 11273
+ *[0-9a-f]*:	f0 0b 00 c4 	satadd\.w r4,r8,r11
mgl@1371
 11274
+ *[0-9a-f]*:	f8 06 00 c3 	satadd\.w r3,r12,r6
mgl@1371
 11275
+ *[0-9a-f]*:	fc 09 00 c3 	satadd\.w r3,lr,r9
mgl@1371
 11276
+
mgl@1371
 11277
+[0-9a-f]* <satsub_w1>:
mgl@1371
 11278
+ *[0-9a-f]*:	fe 0f 01 cf 	satsub\.w pc,pc,pc
mgl@1371
 11279
+ *[0-9a-f]*:	f8 0c 01 cc 	satsub\.w r12,r12,r12
mgl@1371
 11280
+ *[0-9a-f]*:	ea 05 01 c5 	satsub\.w r5,r5,r5
mgl@1371
 11281
+ *[0-9a-f]*:	e8 04 01 c4 	satsub\.w r4,r4,r4
mgl@1371
 11282
+ *[0-9a-f]*:	fc 0e 01 ce 	satsub\.w lr,lr,lr
mgl@1371
 11283
+ *[0-9a-f]*:	fa 00 01 c8 	satsub\.w r8,sp,r0
mgl@1371
 11284
+ *[0-9a-f]*:	f0 04 01 c9 	satsub\.w r9,r8,r4
mgl@1371
 11285
+ *[0-9a-f]*:	fc 02 01 cf 	satsub\.w pc,lr,r2
mgl@1371
 11286
+
mgl@1371
 11287
+[0-9a-f]* <satadd_h>:
mgl@1371
 11288
+ *[0-9a-f]*:	fe 0f 02 cf 	satadd\.h pc,pc,pc
mgl@1371
 11289
+ *[0-9a-f]*:	f8 0c 02 cc 	satadd\.h r12,r12,r12
mgl@1371
 11290
+ *[0-9a-f]*:	ea 05 02 c5 	satadd\.h r5,r5,r5
mgl@1371
 11291
+ *[0-9a-f]*:	e8 04 02 c4 	satadd\.h r4,r4,r4
mgl@1371
 11292
+ *[0-9a-f]*:	fc 0e 02 ce 	satadd\.h lr,lr,lr
mgl@1371
 11293
+ *[0-9a-f]*:	e6 09 02 c7 	satadd\.h r7,r3,r9
mgl@1371
 11294
+ *[0-9a-f]*:	e0 02 02 c1 	satadd\.h r1,r0,r2
mgl@1371
 11295
+ *[0-9a-f]*:	e8 0e 02 c1 	satadd\.h r1,r4,lr
mgl@1371
 11296
+
mgl@1371
 11297
+[0-9a-f]* <satsub_h>:
mgl@1371
 11298
+ *[0-9a-f]*:	fe 0f 03 cf 	satsub\.h pc,pc,pc
mgl@1371
 11299
+ *[0-9a-f]*:	f8 0c 03 cc 	satsub\.h r12,r12,r12
mgl@1371
 11300
+ *[0-9a-f]*:	ea 05 03 c5 	satsub\.h r5,r5,r5
mgl@1371
 11301
+ *[0-9a-f]*:	e8 04 03 c4 	satsub\.h r4,r4,r4
mgl@1371
 11302
+ *[0-9a-f]*:	fc 0e 03 ce 	satsub\.h lr,lr,lr
mgl@1371
 11303
+ *[0-9a-f]*:	fc 03 03 ce 	satsub\.h lr,lr,r3
mgl@1371
 11304
+ *[0-9a-f]*:	ec 05 03 cb 	satsub\.h r11,r6,r5
mgl@1371
 11305
+ *[0-9a-f]*:	fa 00 03 c3 	satsub\.h r3,sp,r0
mgl@1371
 11306
+
mgl@1371
 11307
+[0-9a-f]* <mul3>:
mgl@1371
 11308
+ *[0-9a-f]*:	fe 0f 10 00 	mul pc,pc,0
mgl@1371
 11309
+ *[0-9a-f]*:	f8 0c 10 ff 	mul r12,r12,-1
mgl@1371
 11310
+ *[0-9a-f]*:	ea 05 10 80 	mul r5,r5,-128
mgl@1371
 11311
+ *[0-9a-f]*:	e8 04 10 7f 	mul r4,r4,127
mgl@1371
 11312
+ *[0-9a-f]*:	fc 0e 10 01 	mul lr,lr,1
mgl@1371
 11313
+ *[0-9a-f]*:	e4 0c 10 f9 	mul r12,r2,-7
mgl@1371
 11314
+ *[0-9a-f]*:	fe 01 10 5f 	mul r1,pc,95
mgl@1371
 11315
+ *[0-9a-f]*:	ec 04 10 13 	mul r4,r6,19
mgl@1371
 11316
+
mgl@1371
 11317
+[0-9a-f]* <rsub2>:
mgl@1371
 11318
+ *[0-9a-f]*:	fe 0f 11 00 	rsub pc,pc,0
mgl@1371
 11319
+ *[0-9a-f]*:	f8 0c 11 ff 	rsub r12,r12,-1
mgl@1371
 11320
+ *[0-9a-f]*:	ea 05 11 80 	rsub r5,r5,-128
mgl@1371
 11321
+ *[0-9a-f]*:	e8 04 11 7f 	rsub r4,r4,127
mgl@1371
 11322
+ *[0-9a-f]*:	fc 0e 11 01 	rsub lr,lr,1
mgl@1371
 11323
+ *[0-9a-f]*:	fc 09 11 60 	rsub r9,lr,96
mgl@1371
 11324
+ *[0-9a-f]*:	e2 0b 11 38 	rsub r11,r1,56
mgl@1371
 11325
+ *[0-9a-f]*:	ee 00 11 a9 	rsub r0,r7,-87
mgl@1371
 11326
+
mgl@1371
 11327
+[0-9a-f]* <clz>:
mgl@1371
 11328
+ *[0-9a-f]*:	fe 0f 12 00 	clz pc,pc
mgl@1371
 11329
+ *[0-9a-f]*:	f8 0c 12 00 	clz r12,r12
mgl@1371
 11330
+ *[0-9a-f]*:	ea 05 12 00 	clz r5,r5
mgl@1371
 11331
+ *[0-9a-f]*:	e8 04 12 00 	clz r4,r4
mgl@1371
 11332
+ *[0-9a-f]*:	fc 0e 12 00 	clz lr,lr
mgl@1371
 11333
+ *[0-9a-f]*:	e6 02 12 00 	clz r2,r3
mgl@1371
 11334
+ *[0-9a-f]*:	f6 05 12 00 	clz r5,r11
mgl@1371
 11335
+ *[0-9a-f]*:	e6 0f 12 00 	clz pc,r3
mgl@1371
 11336
+
mgl@1371
 11337
+[0-9a-f]* <cpc1>:
mgl@1371
 11338
+ *[0-9a-f]*:	fe 0f 13 00 	cpc pc,pc
mgl@1371
 11339
+ *[0-9a-f]*:	f8 0c 13 00 	cpc r12,r12
mgl@1371
 11340
+ *[0-9a-f]*:	ea 05 13 00 	cpc r5,r5
mgl@1371
 11341
+ *[0-9a-f]*:	e8 04 13 00 	cpc r4,r4
mgl@1371
 11342
+ *[0-9a-f]*:	fc 0e 13 00 	cpc lr,lr
mgl@1371
 11343
+ *[0-9a-f]*:	e8 0f 13 00 	cpc pc,r4
mgl@1371
 11344
+ *[0-9a-f]*:	f2 05 13 00 	cpc r5,r9
mgl@1371
 11345
+ *[0-9a-f]*:	ee 06 13 00 	cpc r6,r7
mgl@1371
 11346
+
mgl@1371
 11347
+[0-9a-f]* <asr3>:
mgl@1371
 11348
+ *[0-9a-f]*:	fe 0f 14 00 	asr pc,pc,0x0
mgl@1371
 11349
+ *[0-9a-f]*:	f8 0c 14 1f 	asr r12,r12,0x1f
mgl@1371
 11350
+ *[0-9a-f]*:	ea 05 14 10 	asr r5,r5,0x10
mgl@1371
 11351
+ *[0-9a-f]*:	e8 04 14 0f 	asr r4,r4,0xf
mgl@1371
 11352
+ *[0-9a-f]*:	fc 0e 14 01 	asr lr,lr,0x1
mgl@1371
 11353
+ *[0-9a-f]*:	f6 04 14 13 	asr r4,r11,0x13
mgl@1371
 11354
+ *[0-9a-f]*:	fe 0d 14 1a 	asr sp,pc,0x1a
mgl@1371
 11355
+ *[0-9a-f]*:	fa 0b 14 08 	asr r11,sp,0x8
mgl@1371
 11356
+
mgl@1371
 11357
+[0-9a-f]* <lsl3>:
mgl@1371
 11358
+ *[0-9a-f]*:	fe 0f 15 00 	lsl pc,pc,0x0
mgl@1371
 11359
+ *[0-9a-f]*:	f8 0c 15 1f 	lsl r12,r12,0x1f
mgl@1371
 11360
+ *[0-9a-f]*:	ea 05 15 10 	lsl r5,r5,0x10
mgl@1371
 11361
+ *[0-9a-f]*:	e8 04 15 0f 	lsl r4,r4,0xf
mgl@1371
 11362
+ *[0-9a-f]*:	fc 0e 15 01 	lsl lr,lr,0x1
mgl@1371
 11363
+ *[0-9a-f]*:	f4 08 15 11 	lsl r8,r10,0x11
mgl@1371
 11364
+ *[0-9a-f]*:	fc 02 15 03 	lsl r2,lr,0x3
mgl@1371
 11365
+ *[0-9a-f]*:	f6 0e 15 0e 	lsl lr,r11,0xe
mgl@1371
 11366
+
mgl@1371
 11367
+[0-9a-f]* <lsr3>:
mgl@1371
 11368
+ *[0-9a-f]*:	fe 0f 16 00 	lsr pc,pc,0x0
mgl@1371
 11369
+ *[0-9a-f]*:	f8 0c 16 1f 	lsr r12,r12,0x1f
mgl@1371
 11370
+ *[0-9a-f]*:	ea 05 16 10 	lsr r5,r5,0x10
mgl@1371
 11371
+ *[0-9a-f]*:	e8 04 16 0f 	lsr r4,r4,0xf
mgl@1371
 11372
+ *[0-9a-f]*:	fc 0e 16 01 	lsr lr,lr,0x1
mgl@1371
 11373
+ *[0-9a-f]*:	e6 04 16 1f 	lsr r4,r3,0x1f
mgl@1371
 11374
+ *[0-9a-f]*:	f2 0f 16 0e 	lsr pc,r9,0xe
mgl@1371
 11375
+ *[0-9a-f]*:	e0 03 16 06 	lsr r3,r0,0x6
mgl@1371
 11376
+
mgl@1371
 11377
+[0-9a-f]* <movc1>:
mgl@1371
 11378
+ *[0-9a-f]*:	fe 0f 17 00 	moveq pc,pc
mgl@1371
 11379
+ *[0-9a-f]*:	f8 0c 17 f0 	moval r12,r12
mgl@1371
 11380
+ *[0-9a-f]*:	ea 05 17 80 	movls r5,r5
mgl@1371
 11381
+ *[0-9a-f]*:	e8 04 17 70 	movpl r4,r4
mgl@1371
 11382
+ *[0-9a-f]*:	fc 0e 17 10 	movne lr,lr
mgl@1371
 11383
+ *[0-9a-f]*:	f6 0f 17 10 	movne pc,r11
mgl@1371
 11384
+ *[0-9a-f]*:	e4 0a 17 60 	movmi r10,r2
mgl@1371
 11385
+ *[0-9a-f]*:	f8 08 17 80 	movls r8,r12
mgl@1371
 11386
+
mgl@1371
 11387
+[0-9a-f]* <padd_h>:
mgl@1371
 11388
+ *[0-9a-f]*:	fe 0f 20 0f 	padd\.h pc,pc,pc
mgl@1371
 11389
+ *[0-9a-f]*:	f8 0c 20 0c 	padd\.h r12,r12,r12
mgl@1371
 11390
+ *[0-9a-f]*:	ea 05 20 05 	padd\.h r5,r5,r5
mgl@1371
 11391
+ *[0-9a-f]*:	e8 04 20 04 	padd\.h r4,r4,r4
mgl@1371
 11392
+ *[0-9a-f]*:	fc 0e 20 0e 	padd\.h lr,lr,lr
mgl@1371
 11393
+ *[0-9a-f]*:	e4 07 20 08 	padd\.h r8,r2,r7
mgl@1371
 11394
+ *[0-9a-f]*:	e0 03 20 00 	padd\.h r0,r0,r3
mgl@1371
 11395
+ *[0-9a-f]*:	f6 06 20 0d 	padd\.h sp,r11,r6
mgl@1371
 11396
+
mgl@1371
 11397
+[0-9a-f]* <psub_h>:
mgl@1371
 11398
+ *[0-9a-f]*:	fe 0f 20 1f 	psub\.h pc,pc,pc
mgl@1371
 11399
+ *[0-9a-f]*:	f8 0c 20 1c 	psub\.h r12,r12,r12
mgl@1371
 11400
+ *[0-9a-f]*:	ea 05 20 15 	psub\.h r5,r5,r5
mgl@1371
 11401
+ *[0-9a-f]*:	e8 04 20 14 	psub\.h r4,r4,r4
mgl@1371
 11402
+ *[0-9a-f]*:	fc 0e 20 1e 	psub\.h lr,lr,lr
mgl@1371
 11403
+ *[0-9a-f]*:	ec 08 20 1e 	psub\.h lr,r6,r8
mgl@1371
 11404
+ *[0-9a-f]*:	e2 0d 20 10 	psub\.h r0,r1,sp
mgl@1371
 11405
+ *[0-9a-f]*:	fe 0d 20 1f 	psub\.h pc,pc,sp
mgl@1371
 11406
+
mgl@1371
 11407
+[0-9a-f]* <paddx_h>:
mgl@1371
 11408
+ *[0-9a-f]*:	fe 0f 20 2f 	paddx\.h pc,pc,pc
mgl@1371
 11409
+ *[0-9a-f]*:	f8 0c 20 2c 	paddx\.h r12,r12,r12
mgl@1371
 11410
+ *[0-9a-f]*:	ea 05 20 25 	paddx\.h r5,r5,r5
mgl@1371
 11411
+ *[0-9a-f]*:	e8 04 20 24 	paddx\.h r4,r4,r4
mgl@1371
 11412
+ *[0-9a-f]*:	fc 0e 20 2e 	paddx\.h lr,lr,lr
mgl@1371
 11413
+ *[0-9a-f]*:	fe 01 20 2f 	paddx\.h pc,pc,r1
mgl@1371
 11414
+ *[0-9a-f]*:	e8 05 20 2a 	paddx\.h r10,r4,r5
mgl@1371
 11415
+ *[0-9a-f]*:	fe 02 20 25 	paddx\.h r5,pc,r2
mgl@1371
 11416
+
mgl@1371
 11417
+[0-9a-f]* <psubx_h>:
mgl@1371
 11418
+ *[0-9a-f]*:	fe 0f 20 3f 	psubx\.h pc,pc,pc
mgl@1371
 11419
+ *[0-9a-f]*:	f8 0c 20 3c 	psubx\.h r12,r12,r12
mgl@1371
 11420
+ *[0-9a-f]*:	ea 05 20 35 	psubx\.h r5,r5,r5
mgl@1371
 11421
+ *[0-9a-f]*:	e8 04 20 34 	psubx\.h r4,r4,r4
mgl@1371
 11422
+ *[0-9a-f]*:	fc 0e 20 3e 	psubx\.h lr,lr,lr
mgl@1371
 11423
+ *[0-9a-f]*:	f8 05 20 35 	psubx\.h r5,r12,r5
mgl@1371
 11424
+ *[0-9a-f]*:	f0 03 20 33 	psubx\.h r3,r8,r3
mgl@1371
 11425
+ *[0-9a-f]*:	e4 03 20 35 	psubx\.h r5,r2,r3
mgl@1371
 11426
+
mgl@1371
 11427
+[0-9a-f]* <padds_sh>:
mgl@1371
 11428
+ *[0-9a-f]*:	fe 0f 20 4f 	padds\.sh pc,pc,pc
mgl@1371
 11429
+ *[0-9a-f]*:	f8 0c 20 4c 	padds\.sh r12,r12,r12
mgl@1371
 11430
+ *[0-9a-f]*:	ea 05 20 45 	padds\.sh r5,r5,r5
mgl@1371
 11431
+ *[0-9a-f]*:	e8 04 20 44 	padds\.sh r4,r4,r4
mgl@1371
 11432
+ *[0-9a-f]*:	fc 0e 20 4e 	padds\.sh lr,lr,lr
mgl@1371
 11433
+ *[0-9a-f]*:	fc 02 20 49 	padds\.sh r9,lr,r2
mgl@1371
 11434
+ *[0-9a-f]*:	f0 01 20 46 	padds\.sh r6,r8,r1
mgl@1371
 11435
+ *[0-9a-f]*:	e8 0a 20 46 	padds\.sh r6,r4,r10
mgl@1371
 11436
+
mgl@1371
 11437
+[0-9a-f]* <psubs_sh>:
mgl@1371
 11438
+ *[0-9a-f]*:	fe 0f 20 5f 	psubs\.sh pc,pc,pc
mgl@1371
 11439
+ *[0-9a-f]*:	f8 0c 20 5c 	psubs\.sh r12,r12,r12
mgl@1371
 11440
+ *[0-9a-f]*:	ea 05 20 55 	psubs\.sh r5,r5,r5
mgl@1371
 11441
+ *[0-9a-f]*:	e8 04 20 54 	psubs\.sh r4,r4,r4
mgl@1371
 11442
+ *[0-9a-f]*:	fc 0e 20 5e 	psubs\.sh lr,lr,lr
mgl@1371
 11443
+ *[0-9a-f]*:	fc 0b 20 56 	psubs\.sh r6,lr,r11
mgl@1371
 11444
+ *[0-9a-f]*:	f8 04 20 52 	psubs\.sh r2,r12,r4
mgl@1371
 11445
+ *[0-9a-f]*:	f2 00 20 50 	psubs\.sh r0,r9,r0
mgl@1371
 11446
+
mgl@1371
 11447
+[0-9a-f]* <paddxs_sh>:
mgl@1371
 11448
+ *[0-9a-f]*:	fe 0f 20 6f 	paddxs\.sh pc,pc,pc
mgl@1371
 11449
+ *[0-9a-f]*:	f8 0c 20 6c 	paddxs\.sh r12,r12,r12
mgl@1371
 11450
+ *[0-9a-f]*:	ea 05 20 65 	paddxs\.sh r5,r5,r5
mgl@1371
 11451
+ *[0-9a-f]*:	e8 04 20 64 	paddxs\.sh r4,r4,r4
mgl@1371
 11452
+ *[0-9a-f]*:	fc 0e 20 6e 	paddxs\.sh lr,lr,lr
mgl@1371
 11453
+ *[0-9a-f]*:	e6 09 20 60 	paddxs\.sh r0,r3,r9
mgl@1371
 11454
+ *[0-9a-f]*:	f4 0b 20 6f 	paddxs\.sh pc,r10,r11
mgl@1371
 11455
+ *[0-9a-f]*:	f4 0f 20 6f 	paddxs\.sh pc,r10,pc
mgl@1371
 11456
+
mgl@1371
 11457
+[0-9a-f]* <psubxs_sh>:
mgl@1371
 11458
+ *[0-9a-f]*:	fe 0f 20 7f 	psubxs\.sh pc,pc,pc
mgl@1371
 11459
+ *[0-9a-f]*:	f8 0c 20 7c 	psubxs\.sh r12,r12,r12
mgl@1371
 11460
+ *[0-9a-f]*:	ea 05 20 75 	psubxs\.sh r5,r5,r5
mgl@1371
 11461
+ *[0-9a-f]*:	e8 04 20 74 	psubxs\.sh r4,r4,r4
mgl@1371
 11462
+ *[0-9a-f]*:	fc 0e 20 7e 	psubxs\.sh lr,lr,lr
mgl@1371
 11463
+ *[0-9a-f]*:	e8 04 20 77 	psubxs\.sh r7,r4,r4
mgl@1371
 11464
+ *[0-9a-f]*:	f0 03 20 77 	psubxs\.sh r7,r8,r3
mgl@1371
 11465
+ *[0-9a-f]*:	ec 05 20 7f 	psubxs\.sh pc,r6,r5
mgl@1371
 11466
+
mgl@1371
 11467
+[0-9a-f]* <padds_uh>:
mgl@1371
 11468
+ *[0-9a-f]*:	fe 0f 20 8f 	padds\.uh pc,pc,pc
mgl@1371
 11469
+ *[0-9a-f]*:	f8 0c 20 8c 	padds\.uh r12,r12,r12
mgl@1371
 11470
+ *[0-9a-f]*:	ea 05 20 85 	padds\.uh r5,r5,r5
mgl@1371
 11471
+ *[0-9a-f]*:	e8 04 20 84 	padds\.uh r4,r4,r4
mgl@1371
 11472
+ *[0-9a-f]*:	fc 0e 20 8e 	padds\.uh lr,lr,lr
mgl@1371
 11473
+ *[0-9a-f]*:	f6 07 20 8c 	padds\.uh r12,r11,r7
mgl@1371
 11474
+ *[0-9a-f]*:	f0 0e 20 87 	padds\.uh r7,r8,lr
mgl@1371
 11475
+ *[0-9a-f]*:	f2 07 20 86 	padds\.uh r6,r9,r7
mgl@1371
 11476
+
mgl@1371
 11477
+[0-9a-f]* <psubs_uh>:
mgl@1371
 11478
+ *[0-9a-f]*:	fe 0f 20 9f 	psubs\.uh pc,pc,pc
mgl@1371
 11479
+ *[0-9a-f]*:	f8 0c 20 9c 	psubs\.uh r12,r12,r12
mgl@1371
 11480
+ *[0-9a-f]*:	ea 05 20 95 	psubs\.uh r5,r5,r5
mgl@1371
 11481
+ *[0-9a-f]*:	e8 04 20 94 	psubs\.uh r4,r4,r4
mgl@1371
 11482
+ *[0-9a-f]*:	fc 0e 20 9e 	psubs\.uh lr,lr,lr
mgl@1371
 11483
+ *[0-9a-f]*:	f4 06 20 9e 	psubs\.uh lr,r10,r6
mgl@1371
 11484
+ *[0-9a-f]*:	e4 0f 20 9d 	psubs\.uh sp,r2,pc
mgl@1371
 11485
+ *[0-9a-f]*:	f2 02 20 92 	psubs\.uh r2,r9,r2
mgl@1371
 11486
+
mgl@1371
 11487
+[0-9a-f]* <paddxs_uh>:
mgl@1371
 11488
+ *[0-9a-f]*:	fe 0f 20 af 	paddxs\.uh pc,pc,pc
mgl@1371
 11489
+ *[0-9a-f]*:	f8 0c 20 ac 	paddxs\.uh r12,r12,r12
mgl@1371
 11490
+ *[0-9a-f]*:	ea 05 20 a5 	paddxs\.uh r5,r5,r5
mgl@1371
 11491
+ *[0-9a-f]*:	e8 04 20 a4 	paddxs\.uh r4,r4,r4
mgl@1371
 11492
+ *[0-9a-f]*:	fc 0e 20 ae 	paddxs\.uh lr,lr,lr
mgl@1371
 11493
+ *[0-9a-f]*:	f2 05 20 a7 	paddxs\.uh r7,r9,r5
mgl@1371
 11494
+ *[0-9a-f]*:	e2 04 20 a9 	paddxs\.uh r9,r1,r4
mgl@1371
 11495
+ *[0-9a-f]*:	e4 03 20 a5 	paddxs\.uh r5,r2,r3
mgl@1371
 11496
+
mgl@1371
 11497
+[0-9a-f]* <psubxs_uh>:
mgl@1371
 11498
+ *[0-9a-f]*:	fe 0f 20 bf 	psubxs\.uh pc,pc,pc
mgl@1371
 11499
+ *[0-9a-f]*:	f8 0c 20 bc 	psubxs\.uh r12,r12,r12
mgl@1371
 11500
+ *[0-9a-f]*:	ea 05 20 b5 	psubxs\.uh r5,r5,r5
mgl@1371
 11501
+ *[0-9a-f]*:	e8 04 20 b4 	psubxs\.uh r4,r4,r4
mgl@1371
 11502
+ *[0-9a-f]*:	fc 0e 20 be 	psubxs\.uh lr,lr,lr
mgl@1371
 11503
+ *[0-9a-f]*:	ea 0d 20 bd 	psubxs\.uh sp,r5,sp
mgl@1371
 11504
+ *[0-9a-f]*:	ec 06 20 bd 	psubxs\.uh sp,r6,r6
mgl@1371
 11505
+ *[0-9a-f]*:	f6 08 20 b3 	psubxs\.uh r3,r11,r8
mgl@1371
 11506
+
mgl@1371
 11507
+[0-9a-f]* <paddh_sh>:
mgl@1371
 11508
+ *[0-9a-f]*:	fe 0f 20 cf 	paddh\.sh pc,pc,pc
mgl@1371
 11509
+ *[0-9a-f]*:	f8 0c 20 cc 	paddh\.sh r12,r12,r12
mgl@1371
 11510
+ *[0-9a-f]*:	ea 05 20 c5 	paddh\.sh r5,r5,r5
mgl@1371
 11511
+ *[0-9a-f]*:	e8 04 20 c4 	paddh\.sh r4,r4,r4
mgl@1371
 11512
+ *[0-9a-f]*:	fc 0e 20 ce 	paddh\.sh lr,lr,lr
mgl@1371
 11513
+ *[0-9a-f]*:	fa 03 20 cc 	paddh\.sh r12,sp,r3
mgl@1371
 11514
+ *[0-9a-f]*:	ea 03 20 cf 	paddh\.sh pc,r5,r3
mgl@1371
 11515
+ *[0-9a-f]*:	f0 0d 20 c8 	paddh\.sh r8,r8,sp
mgl@1371
 11516
+
mgl@1371
 11517
+[0-9a-f]* <psubh_sh>:
mgl@1371
 11518
+ *[0-9a-f]*:	fe 0f 20 df 	psubh\.sh pc,pc,pc
mgl@1371
 11519
+ *[0-9a-f]*:	f8 0c 20 dc 	psubh\.sh r12,r12,r12
mgl@1371
 11520
+ *[0-9a-f]*:	ea 05 20 d5 	psubh\.sh r5,r5,r5
mgl@1371
 11521
+ *[0-9a-f]*:	e8 04 20 d4 	psubh\.sh r4,r4,r4
mgl@1371
 11522
+ *[0-9a-f]*:	fc 0e 20 de 	psubh\.sh lr,lr,lr
mgl@1371
 11523
+ *[0-9a-f]*:	ea 08 20 d1 	psubh\.sh r1,r5,r8
mgl@1371
 11524
+ *[0-9a-f]*:	e6 06 20 d7 	psubh\.sh r7,r3,r6
mgl@1371
 11525
+ *[0-9a-f]*:	e6 03 20 d4 	psubh\.sh r4,r3,r3
mgl@1371
 11526
+
mgl@1371
 11527
+[0-9a-f]* <paddxh_sh>:
mgl@1371
 11528
+ *[0-9a-f]*:	fe 0f 20 ef 	paddxh\.sh pc,pc,pc
mgl@1371
 11529
+ *[0-9a-f]*:	f8 0c 20 ec 	paddxh\.sh r12,r12,r12
mgl@1371
 11530
+ *[0-9a-f]*:	ea 05 20 e5 	paddxh\.sh r5,r5,r5
mgl@1371
 11531
+ *[0-9a-f]*:	e8 04 20 e4 	paddxh\.sh r4,r4,r4
mgl@1371
 11532
+ *[0-9a-f]*:	fc 0e 20 ee 	paddxh\.sh lr,lr,lr
mgl@1371
 11533
+ *[0-9a-f]*:	e0 04 20 e6 	paddxh\.sh r6,r0,r4
mgl@1371
 11534
+ *[0-9a-f]*:	f0 09 20 e9 	paddxh\.sh r9,r8,r9
mgl@1371
 11535
+ *[0-9a-f]*:	e0 0d 20 e3 	paddxh\.sh r3,r0,sp
mgl@1371
 11536
+
mgl@1371
 11537
+[0-9a-f]* <psubxh_sh>:
mgl@1371
 11538
+ *[0-9a-f]*:	fe 0f 20 ff 	psubxh\.sh pc,pc,pc
mgl@1371
 11539
+ *[0-9a-f]*:	f8 0c 20 fc 	psubxh\.sh r12,r12,r12
mgl@1371
 11540
+ *[0-9a-f]*:	ea 05 20 f5 	psubxh\.sh r5,r5,r5
mgl@1371
 11541
+ *[0-9a-f]*:	e8 04 20 f4 	psubxh\.sh r4,r4,r4
mgl@1371
 11542
+ *[0-9a-f]*:	fc 0e 20 fe 	psubxh\.sh lr,lr,lr
mgl@1371
 11543
+ *[0-9a-f]*:	fe 0c 20 f4 	psubxh\.sh r4,pc,r12
mgl@1371
 11544
+ *[0-9a-f]*:	e8 06 20 f8 	psubxh\.sh r8,r4,r6
mgl@1371
 11545
+ *[0-9a-f]*:	f2 04 20 fc 	psubxh\.sh r12,r9,r4
mgl@1371
 11546
+
mgl@1371
 11547
+[0-9a-f]* <paddsub_h>:
mgl@1371
 11548
+ *[0-9a-f]*:	fe 0f 21 0f 	paddsub\.h pc,pc:b,pc:b
mgl@1371
 11549
+ *[0-9a-f]*:	f8 0c 21 3c 	paddsub\.h r12,r12:t,r12:t
mgl@1371
 11550
+ *[0-9a-f]*:	ea 05 21 35 	paddsub\.h r5,r5:t,r5:t
mgl@1371
 11551
+ *[0-9a-f]*:	e8 04 21 04 	paddsub\.h r4,r4:b,r4:b
mgl@1371
 11552
+ *[0-9a-f]*:	fc 0e 21 3e 	paddsub\.h lr,lr:t,lr:t
mgl@1371
 11553
+ *[0-9a-f]*:	e4 0e 21 25 	paddsub\.h r5,r2:t,lr:b
mgl@1371
 11554
+ *[0-9a-f]*:	e2 08 21 07 	paddsub\.h r7,r1:b,r8:b
mgl@1371
 11555
+ *[0-9a-f]*:	f4 05 21 36 	paddsub\.h r6,r10:t,r5:t
mgl@1371
 11556
+
mgl@1371
 11557
+[0-9a-f]* <psubadd_h>:
mgl@1371
 11558
+ *[0-9a-f]*:	fe 0f 21 4f 	psubadd\.h pc,pc:b,pc:b
mgl@1371
 11559
+ *[0-9a-f]*:	f8 0c 21 7c 	psubadd\.h r12,r12:t,r12:t
mgl@1371
 11560
+ *[0-9a-f]*:	ea 05 21 75 	psubadd\.h r5,r5:t,r5:t
mgl@1371
 11561
+ *[0-9a-f]*:	e8 04 21 44 	psubadd\.h r4,r4:b,r4:b
mgl@1371
 11562
+ *[0-9a-f]*:	fc 0e 21 7e 	psubadd\.h lr,lr:t,lr:t
mgl@1371
 11563
+ *[0-9a-f]*:	f6 08 21 79 	psubadd\.h r9,r11:t,r8:t
mgl@1371
 11564
+ *[0-9a-f]*:	ee 0e 21 7a 	psubadd\.h r10,r7:t,lr:t
mgl@1371
 11565
+ *[0-9a-f]*:	fe 0f 21 66 	psubadd\.h r6,pc:t,pc:b
mgl@1371
 11566
+
mgl@1371
 11567
+[0-9a-f]* <paddsubs_sh>:
mgl@1371
 11568
+ *[0-9a-f]*:	fe 0f 21 8f 	paddsubs\.sh pc,pc:b,pc:b
mgl@1371
 11569
+ *[0-9a-f]*:	f8 0c 21 bc 	paddsubs\.sh r12,r12:t,r12:t
mgl@1371
 11570
+ *[0-9a-f]*:	ea 05 21 b5 	paddsubs\.sh r5,r5:t,r5:t
mgl@1371
 11571
+ *[0-9a-f]*:	e8 04 21 84 	paddsubs\.sh r4,r4:b,r4:b
mgl@1371
 11572
+ *[0-9a-f]*:	fc 0e 21 be 	paddsubs\.sh lr,lr:t,lr:t
mgl@1371
 11573
+ *[0-9a-f]*:	fc 00 21 a0 	paddsubs\.sh r0,lr:t,r0:b
mgl@1371
 11574
+ *[0-9a-f]*:	e4 04 21 b9 	paddsubs\.sh r9,r2:t,r4:t
mgl@1371
 11575
+ *[0-9a-f]*:	f2 0d 21 bc 	paddsubs\.sh r12,r9:t,sp:t
mgl@1371
 11576
+
mgl@1371
 11577
+[0-9a-f]* <psubadds_sh>:
mgl@1371
 11578
+ *[0-9a-f]*:	fe 0f 21 cf 	psubadds\.sh pc,pc:b,pc:b
mgl@1371
 11579
+ *[0-9a-f]*:	f8 0c 21 fc 	psubadds\.sh r12,r12:t,r12:t
mgl@1371
 11580
+ *[0-9a-f]*:	ea 05 21 f5 	psubadds\.sh r5,r5:t,r5:t
mgl@1371
 11581
+ *[0-9a-f]*:	e8 04 21 c4 	psubadds\.sh r4,r4:b,r4:b
mgl@1371
 11582
+ *[0-9a-f]*:	fc 0e 21 fe 	psubadds\.sh lr,lr:t,lr:t
mgl@1371
 11583
+ *[0-9a-f]*:	fc 01 21 df 	psubadds\.sh pc,lr:b,r1:t
mgl@1371
 11584
+ *[0-9a-f]*:	e6 0c 21 cb 	psubadds\.sh r11,r3:b,r12:b
mgl@1371
 11585
+ *[0-9a-f]*:	e4 08 21 fa 	psubadds\.sh r10,r2:t,r8:t
mgl@1371
 11586
+
mgl@1371
 11587
+[0-9a-f]* <paddsubs_uh>:
mgl@1371
 11588
+ *[0-9a-f]*:	fe 0f 22 0f 	paddsubs\.uh pc,pc:b,pc:b
mgl@1371
 11589
+ *[0-9a-f]*:	f8 0c 22 3c 	paddsubs\.uh r12,r12:t,r12:t
mgl@1371
 11590
+ *[0-9a-f]*:	ea 05 22 35 	paddsubs\.uh r5,r5:t,r5:t
mgl@1371
 11591
+ *[0-9a-f]*:	e8 04 22 04 	paddsubs\.uh r4,r4:b,r4:b
mgl@1371
 11592
+ *[0-9a-f]*:	fc 0e 22 3e 	paddsubs\.uh lr,lr:t,lr:t
mgl@1371
 11593
+ *[0-9a-f]*:	e4 03 22 09 	paddsubs\.uh r9,r2:b,r3:b
mgl@1371
 11594
+ *[0-9a-f]*:	fa 07 22 1d 	paddsubs\.uh sp,sp:b,r7:t
mgl@1371
 11595
+ *[0-9a-f]*:	e0 0a 22 1e 	paddsubs\.uh lr,r0:b,r10:t
mgl@1371
 11596
+
mgl@1371
 11597
+[0-9a-f]* <psubadds_uh>:
mgl@1371
 11598
+ *[0-9a-f]*:	fe 0f 22 4f 	psubadds\.uh pc,pc:b,pc:b
mgl@1371
 11599
+ *[0-9a-f]*:	f8 0c 22 7c 	psubadds\.uh r12,r12:t,r12:t
mgl@1371
 11600
+ *[0-9a-f]*:	ea 05 22 75 	psubadds\.uh r5,r5:t,r5:t
mgl@1371
 11601
+ *[0-9a-f]*:	e8 04 22 44 	psubadds\.uh r4,r4:b,r4:b
mgl@1371
 11602
+ *[0-9a-f]*:	fc 0e 22 7e 	psubadds\.uh lr,lr:t,lr:t
mgl@1371
 11603
+ *[0-9a-f]*:	f2 0f 22 7c 	psubadds\.uh r12,r9:t,pc:t
mgl@1371
 11604
+ *[0-9a-f]*:	ec 08 22 48 	psubadds\.uh r8,r6:b,r8:b
mgl@1371
 11605
+ *[0-9a-f]*:	f0 04 22 48 	psubadds\.uh r8,r8:b,r4:b
mgl@1371
 11606
+
mgl@1371
 11607
+[0-9a-f]* <paddsubh_sh>:
mgl@1371
 11608
+ *[0-9a-f]*:	fe 0f 22 8f 	paddsubh\.sh pc,pc:b,pc:b
mgl@1371
 11609
+ *[0-9a-f]*:	f8 0c 22 bc 	paddsubh\.sh r12,r12:t,r12:t
mgl@1371
 11610
+ *[0-9a-f]*:	ea 05 22 b5 	paddsubh\.sh r5,r5:t,r5:t
mgl@1371
 11611
+ *[0-9a-f]*:	e8 04 22 84 	paddsubh\.sh r4,r4:b,r4:b
mgl@1371
 11612
+ *[0-9a-f]*:	fc 0e 22 be 	paddsubh\.sh lr,lr:t,lr:t
mgl@1371
 11613
+ *[0-9a-f]*:	f2 09 22 a8 	paddsubh\.sh r8,r9:t,r9:b
mgl@1371
 11614
+ *[0-9a-f]*:	fa 01 22 b0 	paddsubh\.sh r0,sp:t,r1:t
mgl@1371
 11615
+ *[0-9a-f]*:	e2 00 22 93 	paddsubh\.sh r3,r1:b,r0:t
mgl@1371
 11616
+
mgl@1371
 11617
+[0-9a-f]* <psubaddh_sh>:
mgl@1371
 11618
+ *[0-9a-f]*:	fe 0f 22 cf 	psubaddh\.sh pc,pc:b,pc:b
mgl@1371
 11619
+ *[0-9a-f]*:	f8 0c 22 fc 	psubaddh\.sh r12,r12:t,r12:t
mgl@1371
 11620
+ *[0-9a-f]*:	ea 05 22 f5 	psubaddh\.sh r5,r5:t,r5:t
mgl@1371
 11621
+ *[0-9a-f]*:	e8 04 22 c4 	psubaddh\.sh r4,r4:b,r4:b
mgl@1371
 11622
+ *[0-9a-f]*:	fc 0e 22 fe 	psubaddh\.sh lr,lr:t,lr:t
mgl@1371
 11623
+ *[0-9a-f]*:	e6 0a 22 e7 	psubaddh\.sh r7,r3:t,r10:b
mgl@1371
 11624
+ *[0-9a-f]*:	e4 01 22 f7 	psubaddh\.sh r7,r2:t,r1:t
mgl@1371
 11625
+ *[0-9a-f]*:	e6 06 22 cb 	psubaddh\.sh r11,r3:b,r6:b
mgl@1371
 11626
+
mgl@1371
 11627
+[0-9a-f]* <padd_b>:
mgl@1371
 11628
+ *[0-9a-f]*:	fe 0f 23 0f 	padd\.b pc,pc,pc
mgl@1371
 11629
+ *[0-9a-f]*:	f8 0c 23 0c 	padd\.b r12,r12,r12
mgl@1371
 11630
+ *[0-9a-f]*:	ea 05 23 05 	padd\.b r5,r5,r5
mgl@1371
 11631
+ *[0-9a-f]*:	e8 04 23 04 	padd\.b r4,r4,r4
mgl@1371
 11632
+ *[0-9a-f]*:	fc 0e 23 0e 	padd\.b lr,lr,lr
mgl@1371
 11633
+ *[0-9a-f]*:	ec 0f 23 02 	padd\.b r2,r6,pc
mgl@1371
 11634
+ *[0-9a-f]*:	f2 0c 23 08 	padd\.b r8,r9,r12
mgl@1371
 11635
+ *[0-9a-f]*:	f8 03 23 05 	padd\.b r5,r12,r3
mgl@1371
 11636
+
mgl@1371
 11637
+[0-9a-f]* <psub_b>:
mgl@1371
 11638
+ *[0-9a-f]*:	fe 0f 23 1f 	psub\.b pc,pc,pc
mgl@1371
 11639
+ *[0-9a-f]*:	f8 0c 23 1c 	psub\.b r12,r12,r12
mgl@1371
 11640
+ *[0-9a-f]*:	ea 05 23 15 	psub\.b r5,r5,r5
mgl@1371
 11641
+ *[0-9a-f]*:	e8 04 23 14 	psub\.b r4,r4,r4
mgl@1371
 11642
+ *[0-9a-f]*:	fc 0e 23 1e 	psub\.b lr,lr,lr
mgl@1371
 11643
+ *[0-9a-f]*:	f8 0f 23 10 	psub\.b r0,r12,pc
mgl@1371
 11644
+ *[0-9a-f]*:	fa 0a 23 17 	psub\.b r7,sp,r10
mgl@1371
 11645
+ *[0-9a-f]*:	fa 0c 23 15 	psub\.b r5,sp,r12
mgl@1371
 11646
+
mgl@1371
 11647
+[0-9a-f]* <padds_sb>:
mgl@1371
 11648
+ *[0-9a-f]*:	fe 0f 23 2f 	padds\.sb pc,pc,pc
mgl@1371
 11649
+ *[0-9a-f]*:	f8 0c 23 2c 	padds\.sb r12,r12,r12
mgl@1371
 11650
+ *[0-9a-f]*:	ea 05 23 25 	padds\.sb r5,r5,r5
mgl@1371
 11651
+ *[0-9a-f]*:	e8 04 23 24 	padds\.sb r4,r4,r4
mgl@1371
 11652
+ *[0-9a-f]*:	fc 0e 23 2e 	padds\.sb lr,lr,lr
mgl@1371
 11653
+ *[0-9a-f]*:	f6 04 23 2d 	padds\.sb sp,r11,r4
mgl@1371
 11654
+ *[0-9a-f]*:	f4 0b 23 2b 	padds\.sb r11,r10,r11
mgl@1371
 11655
+ *[0-9a-f]*:	f8 06 23 25 	padds\.sb r5,r12,r6
mgl@1371
 11656
+
mgl@1371
 11657
+[0-9a-f]* <psubs_sb>:
mgl@1371
 11658
+ *[0-9a-f]*:	fe 0f 23 3f 	psubs\.sb pc,pc,pc
mgl@1371
 11659
+ *[0-9a-f]*:	f8 0c 23 3c 	psubs\.sb r12,r12,r12
mgl@1371
 11660
+ *[0-9a-f]*:	ea 05 23 35 	psubs\.sb r5,r5,r5
mgl@1371
 11661
+ *[0-9a-f]*:	e8 04 23 34 	psubs\.sb r4,r4,r4
mgl@1371
 11662
+ *[0-9a-f]*:	fc 0e 23 3e 	psubs\.sb lr,lr,lr
mgl@1371
 11663
+ *[0-9a-f]*:	ec 08 23 37 	psubs\.sb r7,r6,r8
mgl@1371
 11664
+ *[0-9a-f]*:	f4 09 23 3c 	psubs\.sb r12,r10,r9
mgl@1371
 11665
+ *[0-9a-f]*:	f6 00 23 3f 	psubs\.sb pc,r11,r0
mgl@1371
 11666
+
mgl@1371
 11667
+[0-9a-f]* <padds_ub>:
mgl@1371
 11668
+ *[0-9a-f]*:	fe 0f 23 4f 	padds\.ub pc,pc,pc
mgl@1371
 11669
+ *[0-9a-f]*:	f8 0c 23 4c 	padds\.ub r12,r12,r12
mgl@1371
 11670
+ *[0-9a-f]*:	ea 05 23 45 	padds\.ub r5,r5,r5
mgl@1371
 11671
+ *[0-9a-f]*:	e8 04 23 44 	padds\.ub r4,r4,r4
mgl@1371
 11672
+ *[0-9a-f]*:	fc 0e 23 4e 	padds\.ub lr,lr,lr
mgl@1371
 11673
+ *[0-9a-f]*:	e4 0b 23 43 	padds\.ub r3,r2,r11
mgl@1371
 11674
+ *[0-9a-f]*:	f0 01 23 4a 	padds\.ub r10,r8,r1
mgl@1371
 11675
+ *[0-9a-f]*:	f0 0a 23 4b 	padds\.ub r11,r8,r10
mgl@1371
 11676
+
mgl@1371
 11677
+[0-9a-f]* <psubs_ub>:
mgl@1371
 11678
+ *[0-9a-f]*:	fe 0f 23 5f 	psubs\.ub pc,pc,pc
mgl@1371
 11679
+ *[0-9a-f]*:	f8 0c 23 5c 	psubs\.ub r12,r12,r12
mgl@1371
 11680
+ *[0-9a-f]*:	ea 05 23 55 	psubs\.ub r5,r5,r5
mgl@1371
 11681
+ *[0-9a-f]*:	e8 04 23 54 	psubs\.ub r4,r4,r4
mgl@1371
 11682
+ *[0-9a-f]*:	fc 0e 23 5e 	psubs\.ub lr,lr,lr
mgl@1371
 11683
+ *[0-9a-f]*:	e4 07 23 50 	psubs\.ub r0,r2,r7
mgl@1371
 11684
+ *[0-9a-f]*:	ea 03 23 5e 	psubs\.ub lr,r5,r3
mgl@1371
 11685
+ *[0-9a-f]*:	ee 09 23 56 	psubs\.ub r6,r7,r9
mgl@1371
 11686
+
mgl@1371
 11687
+[0-9a-f]* <paddh_ub>:
mgl@1371
 11688
+ *[0-9a-f]*:	fe 0f 23 6f 	paddh\.ub pc,pc,pc
mgl@1371
 11689
+ *[0-9a-f]*:	f8 0c 23 6c 	paddh\.ub r12,r12,r12
mgl@1371
 11690
+ *[0-9a-f]*:	ea 05 23 65 	paddh\.ub r5,r5,r5
mgl@1371
 11691
+ *[0-9a-f]*:	e8 04 23 64 	paddh\.ub r4,r4,r4
mgl@1371
 11692
+ *[0-9a-f]*:	fc 0e 23 6e 	paddh\.ub lr,lr,lr
mgl@1371
 11693
+ *[0-9a-f]*:	e2 00 23 6e 	paddh\.ub lr,r1,r0
mgl@1371
 11694
+ *[0-9a-f]*:	ee 07 23 62 	paddh\.ub r2,r7,r7
mgl@1371
 11695
+ *[0-9a-f]*:	e2 02 23 62 	paddh\.ub r2,r1,r2
mgl@1371
 11696
+
mgl@1371
 11697
+[0-9a-f]* <psubh_ub>:
mgl@1371
 11698
+ *[0-9a-f]*:	fe 0f 23 7f 	psubh\.ub pc,pc,pc
mgl@1371
 11699
+ *[0-9a-f]*:	f8 0c 23 7c 	psubh\.ub r12,r12,r12
mgl@1371
 11700
+ *[0-9a-f]*:	ea 05 23 75 	psubh\.ub r5,r5,r5
mgl@1371
 11701
+ *[0-9a-f]*:	e8 04 23 74 	psubh\.ub r4,r4,r4
mgl@1371
 11702
+ *[0-9a-f]*:	fc 0e 23 7e 	psubh\.ub lr,lr,lr
mgl@1371
 11703
+ *[0-9a-f]*:	e2 06 23 70 	psubh\.ub r0,r1,r6
mgl@1371
 11704
+ *[0-9a-f]*:	fc 0a 23 74 	psubh\.ub r4,lr,r10
mgl@1371
 11705
+ *[0-9a-f]*:	f0 01 23 79 	psubh\.ub r9,r8,r1
mgl@1371
 11706
+
mgl@1371
 11707
+[0-9a-f]* <pmax_ub>:
mgl@1371
 11708
+ *[0-9a-f]*:	fe 0f 23 8f 	pmax\.ub pc,pc,pc
mgl@1371
 11709
+ *[0-9a-f]*:	f8 0c 23 8c 	pmax\.ub r12,r12,r12
mgl@1371
 11710
+ *[0-9a-f]*:	ea 05 23 85 	pmax\.ub r5,r5,r5
mgl@1371
 11711
+ *[0-9a-f]*:	e8 04 23 84 	pmax\.ub r4,r4,r4
mgl@1371
 11712
+ *[0-9a-f]*:	fc 0e 23 8e 	pmax\.ub lr,lr,lr
mgl@1371
 11713
+ *[0-9a-f]*:	e4 0b 23 8f 	pmax\.ub pc,r2,r11
mgl@1371
 11714
+ *[0-9a-f]*:	e2 01 23 8c 	pmax\.ub r12,r1,r1
mgl@1371
 11715
+ *[0-9a-f]*:	e4 00 23 85 	pmax\.ub r5,r2,r0
mgl@1371
 11716
+
mgl@1371
 11717
+[0-9a-f]* <pmax_sh>:
mgl@1371
 11718
+ *[0-9a-f]*:	fe 0f 23 9f 	pmax\.sh pc,pc,pc
mgl@1371
 11719
+ *[0-9a-f]*:	f8 0c 23 9c 	pmax\.sh r12,r12,r12
mgl@1371
 11720
+ *[0-9a-f]*:	ea 05 23 95 	pmax\.sh r5,r5,r5
mgl@1371
 11721
+ *[0-9a-f]*:	e8 04 23 94 	pmax\.sh r4,r4,r4
mgl@1371
 11722
+ *[0-9a-f]*:	fc 0e 23 9e 	pmax\.sh lr,lr,lr
mgl@1371
 11723
+ *[0-9a-f]*:	ec 0c 23 9e 	pmax\.sh lr,r6,r12
mgl@1371
 11724
+ *[0-9a-f]*:	fe 05 23 92 	pmax\.sh r2,pc,r5
mgl@1371
 11725
+ *[0-9a-f]*:	e4 07 23 9f 	pmax\.sh pc,r2,r7
mgl@1371
 11726
+
mgl@1371
 11727
+[0-9a-f]* <pmin_ub>:
mgl@1371
 11728
+ *[0-9a-f]*:	fe 0f 23 af 	pmin\.ub pc,pc,pc
mgl@1371
 11729
+ *[0-9a-f]*:	f8 0c 23 ac 	pmin\.ub r12,r12,r12
mgl@1371
 11730
+ *[0-9a-f]*:	ea 05 23 a5 	pmin\.ub r5,r5,r5
mgl@1371
 11731
+ *[0-9a-f]*:	e8 04 23 a4 	pmin\.ub r4,r4,r4
mgl@1371
 11732
+ *[0-9a-f]*:	fc 0e 23 ae 	pmin\.ub lr,lr,lr
mgl@1371
 11733
+ *[0-9a-f]*:	e2 05 23 a8 	pmin\.ub r8,r1,r5
mgl@1371
 11734
+ *[0-9a-f]*:	f0 03 23 a1 	pmin\.ub r1,r8,r3
mgl@1371
 11735
+ *[0-9a-f]*:	e4 07 23 a0 	pmin\.ub r0,r2,r7
mgl@1371
 11736
+
mgl@1371
 11737
+[0-9a-f]* <pmin_sh>:
mgl@1371
 11738
+ *[0-9a-f]*:	fe 0f 23 bf 	pmin\.sh pc,pc,pc
mgl@1371
 11739
+ *[0-9a-f]*:	f8 0c 23 bc 	pmin\.sh r12,r12,r12
mgl@1371
 11740
+ *[0-9a-f]*:	ea 05 23 b5 	pmin\.sh r5,r5,r5
mgl@1371
 11741
+ *[0-9a-f]*:	e8 04 23 b4 	pmin\.sh r4,r4,r4
mgl@1371
 11742
+ *[0-9a-f]*:	fc 0e 23 be 	pmin\.sh lr,lr,lr
mgl@1371
 11743
+ *[0-9a-f]*:	e8 0a 23 b8 	pmin\.sh r8,r4,r10
mgl@1371
 11744
+ *[0-9a-f]*:	f4 0c 23 be 	pmin\.sh lr,r10,r12
mgl@1371
 11745
+ *[0-9a-f]*:	ec 02 23 b2 	pmin\.sh r2,r6,r2
mgl@1371
 11746
+
mgl@1371
 11747
+[0-9a-f]* <pavg_ub>:
mgl@1371
 11748
+ *[0-9a-f]*:	fe 0f 23 cf 	pavg\.ub pc,pc,pc
mgl@1371
 11749
+ *[0-9a-f]*:	f8 0c 23 cc 	pavg\.ub r12,r12,r12
mgl@1371
 11750
+ *[0-9a-f]*:	ea 05 23 c5 	pavg\.ub r5,r5,r5
mgl@1371
 11751
+ *[0-9a-f]*:	e8 04 23 c4 	pavg\.ub r4,r4,r4
mgl@1371
 11752
+ *[0-9a-f]*:	fc 0e 23 ce 	pavg\.ub lr,lr,lr
mgl@1371
 11753
+ *[0-9a-f]*:	e2 06 23 c0 	pavg\.ub r0,r1,r6
mgl@1371
 11754
+ *[0-9a-f]*:	e6 06 23 c8 	pavg\.ub r8,r3,r6
mgl@1371
 11755
+ *[0-9a-f]*:	f8 0a 23 cf 	pavg\.ub pc,r12,r10
mgl@1371
 11756
+
mgl@1371
 11757
+[0-9a-f]* <pavg_sh>:
mgl@1371
 11758
+ *[0-9a-f]*:	fe 0f 23 df 	pavg\.sh pc,pc,pc
mgl@1371
 11759
+ *[0-9a-f]*:	f8 0c 23 dc 	pavg\.sh r12,r12,r12
mgl@1371
 11760
+ *[0-9a-f]*:	ea 05 23 d5 	pavg\.sh r5,r5,r5
mgl@1371
 11761
+ *[0-9a-f]*:	e8 04 23 d4 	pavg\.sh r4,r4,r4
mgl@1371
 11762
+ *[0-9a-f]*:	fc 0e 23 de 	pavg\.sh lr,lr,lr
mgl@1371
 11763
+ *[0-9a-f]*:	fe 0d 23 d9 	pavg\.sh r9,pc,sp
mgl@1371
 11764
+ *[0-9a-f]*:	fa 03 23 df 	pavg\.sh pc,sp,r3
mgl@1371
 11765
+ *[0-9a-f]*:	e2 09 23 d6 	pavg\.sh r6,r1,r9
mgl@1371
 11766
+
mgl@1371
 11767
+[0-9a-f]* <pabs_sb>:
mgl@1371
 11768
+ *[0-9a-f]*:	e0 0f 23 ef 	pabs\.sb pc,pc
mgl@1371
 11769
+ *[0-9a-f]*:	e0 0c 23 ec 	pabs\.sb r12,r12
mgl@1371
 11770
+ *[0-9a-f]*:	e0 05 23 e5 	pabs\.sb r5,r5
mgl@1371
 11771
+ *[0-9a-f]*:	e0 04 23 e4 	pabs\.sb r4,r4
mgl@1371
 11772
+ *[0-9a-f]*:	e0 0e 23 ee 	pabs\.sb lr,lr
mgl@1371
 11773
+ *[0-9a-f]*:	e0 06 23 eb 	pabs\.sb r11,r6
mgl@1371
 11774
+ *[0-9a-f]*:	e0 09 23 ee 	pabs\.sb lr,r9
mgl@1371
 11775
+ *[0-9a-f]*:	e0 07 23 ed 	pabs\.sb sp,r7
mgl@1371
 11776
+
mgl@1371
 11777
+[0-9a-f]* <pabs_sh>:
mgl@1371
 11778
+ *[0-9a-f]*:	e0 0f 23 ff 	pabs\.sh pc,pc
mgl@1371
 11779
+ *[0-9a-f]*:	e0 0c 23 fc 	pabs\.sh r12,r12
mgl@1371
 11780
+ *[0-9a-f]*:	e0 05 23 f5 	pabs\.sh r5,r5
mgl@1371
 11781
+ *[0-9a-f]*:	e0 04 23 f4 	pabs\.sh r4,r4
mgl@1371
 11782
+ *[0-9a-f]*:	e0 0e 23 fe 	pabs\.sh lr,lr
mgl@1371
 11783
+ *[0-9a-f]*:	e0 03 23 ff 	pabs\.sh pc,r3
mgl@1371
 11784
+ *[0-9a-f]*:	e0 07 23 f5 	pabs\.sh r5,r7
mgl@1371
 11785
+ *[0-9a-f]*:	e0 00 23 f4 	pabs\.sh r4,r0
mgl@1371
 11786
+
mgl@1371
 11787
+[0-9a-f]* <psad>:
mgl@1371
 11788
+ *[0-9a-f]*:	fe 0f 24 0f 	psad pc,pc,pc
mgl@1371
 11789
+ *[0-9a-f]*:	f8 0c 24 0c 	psad r12,r12,r12
mgl@1371
 11790
+ *[0-9a-f]*:	ea 05 24 05 	psad r5,r5,r5
mgl@1371
 11791
+ *[0-9a-f]*:	e8 04 24 04 	psad r4,r4,r4
mgl@1371
 11792
+ *[0-9a-f]*:	fc 0e 24 0e 	psad lr,lr,lr
mgl@1371
 11793
+ *[0-9a-f]*:	f6 0b 24 09 	psad r9,r11,r11
mgl@1371
 11794
+ *[0-9a-f]*:	e8 0d 24 0e 	psad lr,r4,sp
mgl@1371
 11795
+ *[0-9a-f]*:	e8 05 24 0e 	psad lr,r4,r5
mgl@1371
 11796
+
mgl@1371
 11797
+[0-9a-f]* <pasr_b>:
mgl@1371
 11798
+ *[0-9a-f]*:	fe 00 24 1f 	pasr\.b pc,pc,0x0
mgl@1371
 11799
+ *[0-9a-f]*:	f8 07 24 1c 	pasr\.b r12,r12,0x7
mgl@1371
 11800
+ *[0-9a-f]*:	ea 04 24 15 	pasr\.b r5,r5,0x4
mgl@1371
 11801
+ *[0-9a-f]*:	e8 03 24 14 	pasr\.b r4,r4,0x3
mgl@1371
 11802
+ *[0-9a-f]*:	fc 01 24 1e 	pasr\.b lr,lr,0x1
mgl@1371
 11803
+ *[0-9a-f]*:	ee 01 24 1f 	pasr\.b pc,r7,0x1
mgl@1371
 11804
+ *[0-9a-f]*:	fc 06 24 1d 	pasr\.b sp,lr,0x6
mgl@1371
 11805
+ *[0-9a-f]*:	e6 02 24 1d 	pasr\.b sp,r3,0x2
mgl@1371
 11806
+
mgl@1371
 11807
+[0-9a-f]* <plsl_b>:
mgl@1371
 11808
+ *[0-9a-f]*:	fe 00 24 2f 	plsl\.b pc,pc,0x0
mgl@1371
 11809
+ *[0-9a-f]*:	f8 07 24 2c 	plsl\.b r12,r12,0x7
mgl@1371
 11810
+ *[0-9a-f]*:	ea 04 24 25 	plsl\.b r5,r5,0x4
mgl@1371
 11811
+ *[0-9a-f]*:	e8 03 24 24 	plsl\.b r4,r4,0x3
mgl@1371
 11812
+ *[0-9a-f]*:	fc 01 24 2e 	plsl\.b lr,lr,0x1
mgl@1371
 11813
+ *[0-9a-f]*:	f6 04 24 22 	plsl\.b r2,r11,0x4
mgl@1371
 11814
+ *[0-9a-f]*:	ea 07 24 28 	plsl\.b r8,r5,0x7
mgl@1371
 11815
+ *[0-9a-f]*:	e0 02 24 2f 	plsl\.b pc,r0,0x2
mgl@1371
 11816
+
mgl@1371
 11817
+[0-9a-f]* <plsr_b>:
mgl@1371
 11818
+ *[0-9a-f]*:	fe 00 24 3f 	plsr\.b pc,pc,0x0
mgl@1371
 11819
+ *[0-9a-f]*:	f8 07 24 3c 	plsr\.b r12,r12,0x7
mgl@1371
 11820
+ *[0-9a-f]*:	ea 04 24 35 	plsr\.b r5,r5,0x4
mgl@1371
 11821
+ *[0-9a-f]*:	e8 03 24 34 	plsr\.b r4,r4,0x3
mgl@1371
 11822
+ *[0-9a-f]*:	fc 01 24 3e 	plsr\.b lr,lr,0x1
mgl@1371
 11823
+ *[0-9a-f]*:	e2 02 24 3c 	plsr\.b r12,r1,0x2
mgl@1371
 11824
+ *[0-9a-f]*:	fe 07 24 36 	plsr\.b r6,pc,0x7
mgl@1371
 11825
+ *[0-9a-f]*:	f6 02 24 3c 	plsr\.b r12,r11,0x2
mgl@1371
 11826
+
mgl@1371
 11827
+[0-9a-f]* <pasr_h>:
mgl@1371
 11828
+ *[0-9a-f]*:	fe 00 24 4f 	pasr\.h pc,pc,0x0
mgl@1371
 11829
+ *[0-9a-f]*:	f8 0f 24 4c 	pasr\.h r12,r12,0xf
mgl@1371
 11830
+ *[0-9a-f]*:	ea 08 24 45 	pasr\.h r5,r5,0x8
mgl@1371
 11831
+ *[0-9a-f]*:	e8 07 24 44 	pasr\.h r4,r4,0x7
mgl@1371
 11832
+ *[0-9a-f]*:	fc 01 24 4e 	pasr\.h lr,lr,0x1
mgl@1371
 11833
+ *[0-9a-f]*:	f6 0a 24 40 	pasr\.h r0,r11,0xa
mgl@1371
 11834
+ *[0-9a-f]*:	ec 08 24 44 	pasr\.h r4,r6,0x8
mgl@1371
 11835
+ *[0-9a-f]*:	e4 04 24 46 	pasr\.h r6,r2,0x4
mgl@1371
 11836
+
mgl@1371
 11837
+[0-9a-f]* <plsl_h>:
mgl@1371
 11838
+ *[0-9a-f]*:	fe 00 24 5f 	plsl\.h pc,pc,0x0
mgl@1371
 11839
+ *[0-9a-f]*:	f8 0f 24 5c 	plsl\.h r12,r12,0xf
mgl@1371
 11840
+ *[0-9a-f]*:	ea 08 24 55 	plsl\.h r5,r5,0x8
mgl@1371
 11841
+ *[0-9a-f]*:	e8 07 24 54 	plsl\.h r4,r4,0x7
mgl@1371
 11842
+ *[0-9a-f]*:	fc 01 24 5e 	plsl\.h lr,lr,0x1
mgl@1371
 11843
+ *[0-9a-f]*:	f4 09 24 55 	plsl\.h r5,r10,0x9
mgl@1371
 11844
+ *[0-9a-f]*:	fc 08 24 5d 	plsl\.h sp,lr,0x8
mgl@1371
 11845
+ *[0-9a-f]*:	fc 07 24 50 	plsl\.h r0,lr,0x7
mgl@1371
 11846
+
mgl@1371
 11847
+[0-9a-f]* <plsr_h>:
mgl@1371
 11848
+ *[0-9a-f]*:	fe 00 24 6f 	plsr\.h pc,pc,0x0
mgl@1371
 11849
+ *[0-9a-f]*:	f8 0f 24 6c 	plsr\.h r12,r12,0xf
mgl@1371
 11850
+ *[0-9a-f]*:	ea 08 24 65 	plsr\.h r5,r5,0x8
mgl@1371
 11851
+ *[0-9a-f]*:	e8 07 24 64 	plsr\.h r4,r4,0x7
mgl@1371
 11852
+ *[0-9a-f]*:	fc 01 24 6e 	plsr\.h lr,lr,0x1
mgl@1371
 11853
+ *[0-9a-f]*:	e0 0f 24 6b 	plsr\.h r11,r0,0xf
mgl@1371
 11854
+ *[0-9a-f]*:	e6 03 24 6e 	plsr\.h lr,r3,0x3
mgl@1371
 11855
+ *[0-9a-f]*:	fc 0a 24 68 	plsr\.h r8,lr,0xa
mgl@1371
 11856
+
mgl@1371
 11857
+[0-9a-f]* <packw_sh>:
mgl@1371
 11858
+ *[0-9a-f]*:	fe 0f 24 7f 	packw\.sh pc,pc,pc
mgl@1371
 11859
+ *[0-9a-f]*:	f8 0c 24 7c 	packw\.sh r12,r12,r12
mgl@1371
 11860
+ *[0-9a-f]*:	ea 05 24 75 	packw\.sh r5,r5,r5
mgl@1371
 11861
+ *[0-9a-f]*:	e8 04 24 74 	packw\.sh r4,r4,r4
mgl@1371
 11862
+ *[0-9a-f]*:	fc 0e 24 7e 	packw\.sh lr,lr,lr
mgl@1371
 11863
+ *[0-9a-f]*:	f6 0a 24 7d 	packw\.sh sp,r11,r10
mgl@1371
 11864
+ *[0-9a-f]*:	e4 0c 24 78 	packw\.sh r8,r2,r12
mgl@1371
 11865
+ *[0-9a-f]*:	e2 05 24 78 	packw\.sh r8,r1,r5
mgl@1371
 11866
+
mgl@1371
 11867
+[0-9a-f]* <punpckub_h>:
mgl@1371
 11868
+ *[0-9a-f]*:	fe 00 24 8f 	punpckub\.h pc,pc:b
mgl@1371
 11869
+ *[0-9a-f]*:	f8 00 24 9c 	punpckub\.h r12,r12:t
mgl@1371
 11870
+ *[0-9a-f]*:	ea 00 24 95 	punpckub\.h r5,r5:t
mgl@1371
 11871
+ *[0-9a-f]*:	e8 00 24 84 	punpckub\.h r4,r4:b
mgl@1371
 11872
+ *[0-9a-f]*:	fc 00 24 9e 	punpckub\.h lr,lr:t
mgl@1371
 11873
+ *[0-9a-f]*:	e2 00 24 96 	punpckub\.h r6,r1:t
mgl@1371
 11874
+ *[0-9a-f]*:	ea 00 24 8e 	punpckub\.h lr,r5:b
mgl@1371
 11875
+ *[0-9a-f]*:	e4 00 24 9e 	punpckub\.h lr,r2:t
mgl@1371
 11876
+
mgl@1371
 11877
+[0-9a-f]* <punpcksb_h>:
mgl@1371
 11878
+ *[0-9a-f]*:	fe 00 24 af 	punpcksb\.h pc,pc:b
mgl@1371
 11879
+ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
mgl@1371
 11880
+ *[0-9a-f]*:	ea 00 24 b5 	punpcksb\.h r5,r5:t
mgl@1371
 11881
+ *[0-9a-f]*:	e8 00 24 a4 	punpcksb\.h r4,r4:b
mgl@1371
 11882
+ *[0-9a-f]*:	fc 00 24 be 	punpcksb\.h lr,lr:t
mgl@1371
 11883
+ *[0-9a-f]*:	ee 00 24 b4 	punpcksb\.h r4,r7:t
mgl@1371
 11884
+ *[0-9a-f]*:	fc 00 24 a6 	punpcksb\.h r6,lr:b
mgl@1371
 11885
+ *[0-9a-f]*:	f8 00 24 bc 	punpcksb\.h r12,r12:t
mgl@1371
 11886
+
mgl@1371
 11887
+[0-9a-f]* <packsh_ub>:
mgl@1371
 11888
+ *[0-9a-f]*:	fe 0f 24 cf 	packsh\.ub pc,pc,pc
mgl@1371
 11889
+ *[0-9a-f]*:	f8 0c 24 cc 	packsh\.ub r12,r12,r12
mgl@1371
 11890
+ *[0-9a-f]*:	ea 05 24 c5 	packsh\.ub r5,r5,r5
mgl@1371
 11891
+ *[0-9a-f]*:	e8 04 24 c4 	packsh\.ub r4,r4,r4
mgl@1371
 11892
+ *[0-9a-f]*:	fc 0e 24 ce 	packsh\.ub lr,lr,lr
mgl@1371
 11893
+ *[0-9a-f]*:	ec 03 24 c3 	packsh\.ub r3,r6,r3
mgl@1371
 11894
+ *[0-9a-f]*:	e0 03 24 c8 	packsh\.ub r8,r0,r3
mgl@1371
 11895
+ *[0-9a-f]*:	e6 0e 24 c9 	packsh\.ub r9,r3,lr
mgl@1371
 11896
+
mgl@1371
 11897
+[0-9a-f]* <packsh_sb>:
mgl@1371
 11898
+ *[0-9a-f]*:	fe 0f 24 df 	packsh\.sb pc,pc,pc
mgl@1371
 11899
+ *[0-9a-f]*:	f8 0c 24 dc 	packsh\.sb r12,r12,r12
mgl@1371
 11900
+ *[0-9a-f]*:	ea 05 24 d5 	packsh\.sb r5,r5,r5
mgl@1371
 11901
+ *[0-9a-f]*:	e8 04 24 d4 	packsh\.sb r4,r4,r4
mgl@1371
 11902
+ *[0-9a-f]*:	fc 0e 24 de 	packsh\.sb lr,lr,lr
mgl@1371
 11903
+ *[0-9a-f]*:	f0 01 24 d6 	packsh\.sb r6,r8,r1
mgl@1371
 11904
+ *[0-9a-f]*:	f2 08 24 de 	packsh\.sb lr,r9,r8
mgl@1371
 11905
+ *[0-9a-f]*:	ec 06 24 dd 	packsh\.sb sp,r6,r6
mgl@1371
 11906
+
mgl@1371
 11907
+[0-9a-f]* <andl>:
mgl@1371
 11908
+ *[0-9a-f]*:	e0 1f 00 00 	andl pc,0x0
mgl@1371
 11909
+ *[0-9a-f]*:	e0 1c ff ff 	andl r12,0xffff
mgl@1371
 11910
+ *[0-9a-f]*:	e0 15 80 00 	andl r5,0x8000
mgl@1371
 11911
+ *[0-9a-f]*:	e0 14 7f ff 	andl r4,0x7fff
mgl@1371
 11912
+ *[0-9a-f]*:	e0 1e 00 01 	andl lr,0x1
mgl@1371
 11913
+ *[0-9a-f]*:	e0 1f 5a 58 	andl pc,0x5a58
mgl@1371
 11914
+ *[0-9a-f]*:	e0 18 b8 9e 	andl r8,0xb89e
mgl@1371
 11915
+ *[0-9a-f]*:	e0 17 35 97 	andl r7,0x3597
mgl@1371
 11916
+
mgl@1371
 11917
+[0-9a-f]* <andl_coh>:
mgl@1371
 11918
+ *[0-9a-f]*:	e2 1f 00 00 	andl pc,0x0,COH
mgl@1371
 11919
+ *[0-9a-f]*:	e2 1c ff ff 	andl r12,0xffff,COH
mgl@1371
 11920
+ *[0-9a-f]*:	e2 15 80 00 	andl r5,0x8000,COH
mgl@1371
 11921
+ *[0-9a-f]*:	e2 14 7f ff 	andl r4,0x7fff,COH
mgl@1371
 11922
+ *[0-9a-f]*:	e2 1e 00 01 	andl lr,0x1,COH
mgl@1371
 11923
+ *[0-9a-f]*:	e2 16 58 e1 	andl r6,0x58e1,COH
mgl@1371
 11924
+ *[0-9a-f]*:	e2 10 9e cd 	andl r0,0x9ecd,COH
mgl@1371
 11925
+ *[0-9a-f]*:	e2 14 bd c4 	andl r4,0xbdc4,COH
mgl@1371
 11926
+
mgl@1371
 11927
+[0-9a-f]* <andh>:
mgl@1371
 11928
+ *[0-9a-f]*:	e4 1f 00 00 	andh pc,0x0
mgl@1371
 11929
+ *[0-9a-f]*:	e4 1c ff ff 	andh r12,0xffff
mgl@1371
 11930
+ *[0-9a-f]*:	e4 15 80 00 	andh r5,0x8000
mgl@1371
 11931
+ *[0-9a-f]*:	e4 14 7f ff 	andh r4,0x7fff
mgl@1371
 11932
+ *[0-9a-f]*:	e4 1e 00 01 	andh lr,0x1
mgl@1371
 11933
+ *[0-9a-f]*:	e4 1c cc 58 	andh r12,0xcc58
mgl@1371
 11934
+ *[0-9a-f]*:	e4 13 21 e3 	andh r3,0x21e3
mgl@1371
 11935
+ *[0-9a-f]*:	e4 12 a7 eb 	andh r2,0xa7eb
mgl@1371
 11936
+
mgl@1371
 11937
+[0-9a-f]* <andh_coh>:
mgl@1371
 11938
+ *[0-9a-f]*:	e6 1f 00 00 	andh pc,0x0,COH
mgl@1371
 11939
+ *[0-9a-f]*:	e6 1c ff ff 	andh r12,0xffff,COH
mgl@1371
 11940
+ *[0-9a-f]*:	e6 15 80 00 	andh r5,0x8000,COH
mgl@1371
 11941
+ *[0-9a-f]*:	e6 14 7f ff 	andh r4,0x7fff,COH
mgl@1371
 11942
+ *[0-9a-f]*:	e6 1e 00 01 	andh lr,0x1,COH
mgl@1371
 11943
+ *[0-9a-f]*:	e6 1b 86 0d 	andh r11,0x860d,COH
mgl@1371
 11944
+ *[0-9a-f]*:	e6 18 ce f6 	andh r8,0xcef6,COH
mgl@1371
 11945
+ *[0-9a-f]*:	e6 1a 5c 83 	andh r10,0x5c83,COH
mgl@1371
 11946
+
mgl@1371
 11947
+[0-9a-f]* <orl>:
mgl@1371
 11948
+ *[0-9a-f]*:	e8 1f 00 00 	orl pc,0x0
mgl@1371
 11949
+ *[0-9a-f]*:	e8 1c ff ff 	orl r12,0xffff
mgl@1371
 11950
+ *[0-9a-f]*:	e8 15 80 00 	orl r5,0x8000
mgl@1371
 11951
+ *[0-9a-f]*:	e8 14 7f ff 	orl r4,0x7fff
mgl@1371
 11952
+ *[0-9a-f]*:	e8 1e 00 01 	orl lr,0x1
mgl@1371
 11953
+ *[0-9a-f]*:	e8 1d 41 7e 	orl sp,0x417e
mgl@1371
 11954
+ *[0-9a-f]*:	e8 10 52 bd 	orl r0,0x52bd
mgl@1371
 11955
+ *[0-9a-f]*:	e8 1f ac 47 	orl pc,0xac47
mgl@1371
 11956
+
mgl@1371
 11957
+[0-9a-f]* <orh>:
mgl@1371
 11958
+ *[0-9a-f]*:	ea 1f 00 00 	orh pc,0x0
mgl@1371
 11959
+ *[0-9a-f]*:	ea 1c ff ff 	orh r12,0xffff
mgl@1371
 11960
+ *[0-9a-f]*:	ea 15 80 00 	orh r5,0x8000
mgl@1371
 11961
+ *[0-9a-f]*:	ea 14 7f ff 	orh r4,0x7fff
mgl@1371
 11962
+ *[0-9a-f]*:	ea 1e 00 01 	orh lr,0x1
mgl@1371
 11963
+ *[0-9a-f]*:	ea 18 6e 7d 	orh r8,0x6e7d
mgl@1371
 11964
+ *[0-9a-f]*:	ea 1c 77 1c 	orh r12,0x771c
mgl@1371
 11965
+ *[0-9a-f]*:	ea 11 ea 1a 	orh r1,0xea1a
mgl@1371
 11966
+
mgl@1371
 11967
+[0-9a-f]* <eorl>:
mgl@1371
 11968
+ *[0-9a-f]*:	ec 1f 00 00 	eorl pc,0x0
mgl@1371
 11969
+ *[0-9a-f]*:	ec 1c ff ff 	eorl r12,0xffff
mgl@1371
 11970
+ *[0-9a-f]*:	ec 15 80 00 	eorl r5,0x8000
mgl@1371
 11971
+ *[0-9a-f]*:	ec 14 7f ff 	eorl r4,0x7fff
mgl@1371
 11972
+ *[0-9a-f]*:	ec 1e 00 01 	eorl lr,0x1
mgl@1371
 11973
+ *[0-9a-f]*:	ec 14 c7 b9 	eorl r4,0xc7b9
mgl@1371
 11974
+ *[0-9a-f]*:	ec 16 fb dd 	eorl r6,0xfbdd
mgl@1371
 11975
+ *[0-9a-f]*:	ec 11 51 b1 	eorl r1,0x51b1
mgl@1371
 11976
+
mgl@1371
 11977
+[0-9a-f]* <eorh>:
mgl@1371
 11978
+ *[0-9a-f]*:	ee 1f 00 00 	eorh pc,0x0
mgl@1371
 11979
+ *[0-9a-f]*:	ee 1c ff ff 	eorh r12,0xffff
mgl@1371
 11980
+ *[0-9a-f]*:	ee 15 80 00 	eorh r5,0x8000
mgl@1371
 11981
+ *[0-9a-f]*:	ee 14 7f ff 	eorh r4,0x7fff
mgl@1371
 11982
+ *[0-9a-f]*:	ee 1e 00 01 	eorh lr,0x1
mgl@1371
 11983
+ *[0-9a-f]*:	ee 10 2d d4 	eorh r0,0x2dd4
mgl@1371
 11984
+ *[0-9a-f]*:	ee 1a 94 b5 	eorh r10,0x94b5
mgl@1371
 11985
+ *[0-9a-f]*:	ee 19 df 2a 	eorh r9,0xdf2a
mgl@1371
 11986
+
mgl@1371
 11987
+[0-9a-f]* <mcall>:
mgl@1371
 11988
+ *[0-9a-f]*:	f0 1f 00 00 	mcall [0-9a-f]* <.*>
mgl@1371
 11989
+ *[0-9a-f]*:	f0 1c ff ff 	mcall r12\[-4\]
mgl@1371
 11990
+ *[0-9a-f]*:	f0 15 80 00 	mcall r5\[-131072\]
mgl@1371
 11991
+ *[0-9a-f]*:	f0 14 7f ff 	mcall r4\[131068\]
mgl@1371
 11992
+ *[0-9a-f]*:	f0 1e 00 01 	mcall lr\[4\]
mgl@1371
 11993
+ *[0-9a-f]*:	f0 1d 3b bf 	mcall sp\[61180\]
mgl@1371
 11994
+ *[0-9a-f]*:	f0 14 dd d2 	mcall r4\[-35000\]
mgl@1371
 11995
+ *[0-9a-f]*:	f0 10 09 b1 	mcall r0\[9924\]
mgl@1371
 11996
+
mgl@1371
 11997
+[0-9a-f]* <pref>:
mgl@1371
 11998
+ *[0-9a-f]*:	f2 1f 00 00 	pref pc\[0\]
mgl@1371
 11999
+ *[0-9a-f]*:	f2 1c ff ff 	pref r12\[-1\]
mgl@1371
 12000
+ *[0-9a-f]*:	f2 15 80 00 	pref r5\[-32768\]
mgl@1371
 12001
+ *[0-9a-f]*:	f2 14 7f ff 	pref r4\[32767\]
mgl@1371
 12002
+ *[0-9a-f]*:	f2 1e 00 01 	pref lr\[1\]
mgl@1371
 12003
+ *[0-9a-f]*:	f2 17 1e 44 	pref r7\[7748\]
mgl@1371
 12004
+ *[0-9a-f]*:	f2 17 e1 ed 	pref r7\[-7699\]
mgl@1371
 12005
+ *[0-9a-f]*:	f2 12 9a dc 	pref r2\[-25892\]
mgl@1371
 12006
+
mgl@1371
 12007
+[0-9a-f]* <cache>:
mgl@1371
 12008
+ *[0-9a-f]*:	f4 1f 00 00 	cache pc\[0\],0x0
mgl@1371
 12009
+ *[0-9a-f]*:	f4 1c ff ff 	cache r12\[-1\],0x1f
mgl@1371
 12010
+ *[0-9a-f]*:	f4 15 84 00 	cache r5\[-1024\],0x10
mgl@1371
 12011
+ *[0-9a-f]*:	f4 14 7b ff 	cache r4\[1023\],0xf
mgl@1371
 12012
+ *[0-9a-f]*:	f4 1e 08 01 	cache lr\[1\],0x1
mgl@1371
 12013
+ *[0-9a-f]*:	f4 13 8c 3c 	cache r3\[-964\],0x11
mgl@1371
 12014
+ *[0-9a-f]*:	f4 14 b6 89 	cache r4\[-375\],0x16
mgl@1371
 12015
+ *[0-9a-f]*:	f4 13 8c 88 	cache r3\[-888\],0x11
mgl@1371
 12016
+
mgl@1371
 12017
+[0-9a-f]* <sub4>:
mgl@1371
 12018
+ *[0-9a-f]*:	20 0f       	sub pc,0
mgl@1371
 12019
+ *[0-9a-f]*:	2f fc       	sub r12,-1
mgl@1371
 12020
+ *[0-9a-f]*:	f0 25 00 00 	sub r5,-1048576
mgl@1371
 12021
+ *[0-9a-f]*:	ee 34 ff ff 	sub r4,1048575
mgl@1371
 12022
+ *[0-9a-f]*:	20 1e       	sub lr,1
mgl@1371
 12023
+ *[0-9a-f]*:	f6 22 8d 6c 	sub r2,-619156
mgl@1371
 12024
+ *[0-9a-f]*:	e6 3e 0a cd 	sub lr,461517
mgl@1371
 12025
+ *[0-9a-f]*:	fc 38 2d 25 	sub r8,-185051
mgl@1371
 12026
+
mgl@1371
 12027
+[0-9a-f]* <cp3>:
mgl@1371
 12028
+ *[0-9a-f]*:	58 0f       	cp.w pc,0
mgl@1371
 12029
+ *[0-9a-f]*:	5b fc       	cp.w r12,-1
mgl@1371
 12030
+ *[0-9a-f]*:	f0 45 00 00 	cp.w r5,-1048576
mgl@1371
 12031
+ *[0-9a-f]*:	ee 54 ff ff 	cp.w r4,1048575
mgl@1371
 12032
+ *[0-9a-f]*:	58 1e       	cp.w lr,1
mgl@1371
 12033
+ *[0-9a-f]*:	e0 51 e4 ae 	cp.w r1,124078
mgl@1371
 12034
+ *[0-9a-f]*:	fa 40 37 e3 	cp.w r0,-378909
mgl@1371
 12035
+ *[0-9a-f]*:	fc 44 4a 14 	cp.w r4,-243180
mgl@1371
 12036
+
mgl@1371
 12037
+[0-9a-f]* <mov2>:
mgl@1371
 12038
+ *[0-9a-f]*:	30 0f       	mov pc,0
mgl@1371
 12039
+ *[0-9a-f]*:	3f fc       	mov r12,-1
mgl@1371
 12040
+ *[0-9a-f]*:	f0 65 00 00 	mov r5,-1048576
mgl@1371
 12041
+ *[0-9a-f]*:	ee 74 ff ff 	mov r4,1048575
mgl@1371
 12042
+ *[0-9a-f]*:	30 1e       	mov lr,1
mgl@1371
 12043
+ *[0-9a-f]*:	fa 75 29 a3 	mov r5,-317021
mgl@1371
 12044
+ *[0-9a-f]*:	f4 6d 91 94 	mov sp,-749164
mgl@1371
 12045
+ *[0-9a-f]*:	ee 65 58 93 	mov r5,940179
mgl@1371
 12046
+
mgl@1371
 12047
+[0-9a-f]* <brc2>:
mgl@1371
 12048
+ *[0-9a-f]*:	c0 00       	breq [0-9a-f]* <.*>
mgl@1371
 12049
+ *[0-9a-f]*:	fe 9f ff ff 	bral [0-9a-f]* <.*>
mgl@1371
 12050
+ *[0-9a-f]*:	f0 88 00 00 	brls [0-9a-f]* <.*>
mgl@1371
 12051
+ *[0-9a-f]*:	ee 97 ff ff 	brpl [0-9a-f]* <.*>
mgl@1371
 12052
+ *[0-9a-f]*:	c0 11       	brne [0-9a-f]* <.*>
mgl@1371
 12053
+ *[0-9a-f]*:	f2 8b 4a 4d 	brhi [0-9a-f]* <.*>
mgl@1371
 12054
+ *[0-9a-f]*:	ea 8e 14 cc 	brqs [0-9a-f]* <.*>
mgl@1371
 12055
+ *[0-9a-f]*:	fa 98 98 33 	brls [0-9a-f]* <.*>
mgl@1371
 12056
+
mgl@1371
 12057
+[0-9a-f]* <rcall2>:
mgl@1371
 12058
+ *[0-9a-f]*:	c0 0c       	rcall [0-9a-f]* <.*>
mgl@1371
 12059
+ *[0-9a-f]*:	cf ff       	rcall [0-9a-f]* <.*>
mgl@1371
 12060
+ *[0-9a-f]*:	f0 a0 00 00 	rcall [0-9a-f]* <.*>
mgl@1371
 12061
+ *[0-9a-f]*:	ee b0 ff ff 	rcall [0-9a-f]* <.*>
mgl@1371
 12062
+ *[0-9a-f]*:	c0 1c       	rcall [0-9a-f]* <.*>
mgl@1371
 12063
+ *[0-9a-f]*:	e2 b0 ca 5a 	rcall [0-9a-f]* <.*>
mgl@1371
 12064
+ *[0-9a-f]*:	e8 a0 47 52 	rcall [0-9a-f]* <.*>
mgl@1371
 12065
+ *[0-9a-f]*:	fe b0 fd ef 	rcall [0-9a-f]* <.*>
mgl@1371
 12066
+
mgl@1371
 12067
+[0-9a-f]* <sub5>:
mgl@1371
 12068
+ *[0-9a-f]*:	fe cf 00 00 	sub pc,pc,0
mgl@1371
 12069
+ *[0-9a-f]*:	f8 cc ff ff 	sub r12,r12,-1
mgl@1371
 12070
+ *[0-9a-f]*:	ea c5 80 00 	sub r5,r5,-32768
mgl@1371
 12071
+ *[0-9a-f]*:	e8 c4 7f ff 	sub r4,r4,32767
mgl@1371
 12072
+ *[0-9a-f]*:	fc ce 00 01 	sub lr,lr,1
mgl@1371
 12073
+ *[0-9a-f]*:	fe cf ce 38 	sub pc,pc,-12744
mgl@1371
 12074
+ *[0-9a-f]*:	ee c7 95 1b 	sub r7,r7,-27365
mgl@1371
 12075
+ *[0-9a-f]*:	f2 c2 bc 32 	sub r2,r9,-17358
mgl@1371
 12076
+
mgl@1371
 12077
+[0-9a-f]* <satsub_w2>:
mgl@1371
 12078
+ *[0-9a-f]*:	fe df 00 00 	satsub\.w pc,pc,0
mgl@1371
 12079
+ *[0-9a-f]*:	f8 dc ff ff 	satsub\.w r12,r12,-1
mgl@1371
 12080
+ *[0-9a-f]*:	ea d5 80 00 	satsub\.w r5,r5,-32768
mgl@1371
 12081
+ *[0-9a-f]*:	e8 d4 7f ff 	satsub\.w r4,r4,32767
mgl@1371
 12082
+ *[0-9a-f]*:	fc de 00 01 	satsub\.w lr,lr,1
mgl@1371
 12083
+ *[0-9a-f]*:	fc d2 f8 29 	satsub\.w r2,lr,-2007
mgl@1371
 12084
+ *[0-9a-f]*:	f8 d7 fc f0 	satsub\.w r7,r12,-784
mgl@1371
 12085
+ *[0-9a-f]*:	ee d4 5a 8c 	satsub\.w r4,r7,23180
mgl@1371
 12086
+
mgl@1371
 12087
+[0-9a-f]* <ld_d4>:
mgl@1371
 12088
+ *[0-9a-f]*:	fe e0 00 00 	ld\.d r0,pc\[0\]
mgl@1371
 12089
+ *[0-9a-f]*:	f8 ee ff ff 	ld\.d lr,r12\[-1\]
mgl@1371
 12090
+ *[0-9a-f]*:	ea e8 80 00 	ld\.d r8,r5\[-32768\]
mgl@1371
 12091
+ *[0-9a-f]*:	e8 e6 7f ff 	ld\.d r6,r4\[32767\]
mgl@1371
 12092
+ *[0-9a-f]*:	fc e2 00 01 	ld\.d r2,lr\[1\]
mgl@1371
 12093
+ *[0-9a-f]*:	f6 ee 39 c0 	ld\.d lr,r11\[14784\]
mgl@1371
 12094
+ *[0-9a-f]*:	f2 e6 b6 27 	ld\.d r6,r9\[-18905\]
mgl@1371
 12095
+ *[0-9a-f]*:	e6 e2 e7 2d 	ld\.d r2,r3\[-6355\]
mgl@1371
 12096
+
mgl@1371
 12097
+[0-9a-f]* <ld_w4>:
mgl@1371
 12098
+ *[0-9a-f]*:	7e 0f       	ld\.w pc,pc\[0x0\]
mgl@1371
 12099
+ *[0-9a-f]*:	f8 fc ff ff 	ld\.w r12,r12\[-1\]
mgl@1371
 12100
+ *[0-9a-f]*:	ea f5 80 00 	ld\.w r5,r5\[-32768\]
mgl@1371
 12101
+ *[0-9a-f]*:	e8 f4 7f ff 	ld\.w r4,r4\[32767\]
mgl@1371
 12102
+ *[0-9a-f]*:	fc fe 00 01 	ld\.w lr,lr\[1\]
mgl@1371
 12103
+ *[0-9a-f]*:	f8 f0 a9 8b 	ld\.w r0,r12\[-22133\]
mgl@1371
 12104
+ *[0-9a-f]*:	fe fd af d7 	ld\.w sp,pc\[-20521\]
mgl@1371
 12105
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 12106
+
mgl@1371
 12107
+[0-9a-f]* <ld_sh4>:
mgl@1371
 12108
+ *[0-9a-f]*:	9e 0f       	ld\.sh pc,pc\[0x0\]
mgl@1371
 12109
+ *[0-9a-f]*:	f9 0c ff ff 	ld\.sh r12,r12\[-1\]
mgl@1371
 12110
+ *[0-9a-f]*:	eb 05 80 00 	ld\.sh r5,r5\[-32768\]
mgl@1371
 12111
+ *[0-9a-f]*:	e9 04 7f ff 	ld\.sh r4,r4\[32767\]
mgl@1371
 12112
+ *[0-9a-f]*:	fd 0e 00 01 	ld\.sh lr,lr\[1\]
mgl@1371
 12113
+ *[0-9a-f]*:	f5 06 78 d2 	ld\.sh r6,r10\[30930\]
mgl@1371
 12114
+ *[0-9a-f]*:	f5 06 55 d5 	ld\.sh r6,r10\[21973\]
mgl@1371
 12115
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 12116
+
mgl@1371
 12117
+[0-9a-f]* <ld_uh4>:
mgl@1371
 12118
+ *[0-9a-f]*:	9e 8f       	ld\.uh pc,pc\[0x0\]
mgl@1371
 12119
+ *[0-9a-f]*:	f9 1c ff ff 	ld\.uh r12,r12\[-1\]
mgl@1371
 12120
+ *[0-9a-f]*:	eb 15 80 00 	ld\.uh r5,r5\[-32768\]
mgl@1371
 12121
+ *[0-9a-f]*:	e9 14 7f ff 	ld\.uh r4,r4\[32767\]
mgl@1371
 12122
+ *[0-9a-f]*:	fd 1e 00 01 	ld\.uh lr,lr\[1\]
mgl@1371
 12123
+ *[0-9a-f]*:	f3 11 cb d6 	ld\.uh r1,r9\[-13354\]
mgl@1371
 12124
+ *[0-9a-f]*:	f7 1e 53 59 	ld\.uh lr,r11\[21337\]
mgl@1371
 12125
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 12126
+
mgl@1371
 12127
+[0-9a-f]* <ld_sb1>:
mgl@1371
 12128
+ *[0-9a-f]*:	ff 2f 00 00 	ld\.sb pc,pc\[0\]
mgl@1371
 12129
+ *[0-9a-f]*:	f9 2c ff ff 	ld\.sb r12,r12\[-1\]
mgl@1371
 12130
+ *[0-9a-f]*:	eb 25 80 00 	ld\.sb r5,r5\[-32768\]
mgl@1371
 12131
+ *[0-9a-f]*:	e9 24 7f ff 	ld\.sb r4,r4\[32767\]
mgl@1371
 12132
+ *[0-9a-f]*:	fd 2e 00 01 	ld\.sb lr,lr\[1\]
mgl@1371
 12133
+ *[0-9a-f]*:	fb 27 90 09 	ld\.sb r7,sp\[-28663\]
mgl@1371
 12134
+ *[0-9a-f]*:	e3 22 e9 09 	ld\.sb r2,r1\[-5879\]
mgl@1371
 12135
+ *[0-9a-f]*:	e7 2c 49 2e 	ld\.sb r12,r3\[18734\]
mgl@1371
 12136
+
mgl@1371
 12137
+[0-9a-f]* <ld_ub4>:
mgl@1371
 12138
+ *[0-9a-f]*:	1f 8f       	ld\.ub pc,pc\[0x0\]
mgl@1371
 12139
+ *[0-9a-f]*:	f9 3c ff ff 	ld\.ub r12,r12\[-1\]
mgl@1371
 12140
+ *[0-9a-f]*:	eb 35 80 00 	ld\.ub r5,r5\[-32768\]
mgl@1371
 12141
+ *[0-9a-f]*:	e9 34 7f ff 	ld\.ub r4,r4\[32767\]
mgl@1371
 12142
+ *[0-9a-f]*:	1d 9e       	ld\.ub lr,lr\[0x1\]
mgl@1371
 12143
+ *[0-9a-f]*:	e9 3f 20 55 	ld\.ub pc,r4\[8277\]
mgl@1371
 12144
+ *[0-9a-f]*:	f9 35 4a e4 	ld\.ub r5,r12\[19172\]
mgl@1371
 12145
+ *[0-9a-f]*:	fd 3a 66 eb 	ld\.ub r10,lr\[26347\]
mgl@1371
 12146
+
mgl@1371
 12147
+[0-9a-f]* <st_d4>:
mgl@1371
 12148
+ *[0-9a-f]*:	fe e1 00 00 	st\.d pc\[0\],r0
mgl@1371
 12149
+ *[0-9a-f]*:	f8 ef ff ff 	st\.d r12\[-1\],lr
mgl@1371
 12150
+ *[0-9a-f]*:	ea e9 80 00 	st\.d r5\[-32768\],r8
mgl@1371
 12151
+ *[0-9a-f]*:	e8 e7 7f ff 	st\.d r4\[32767\],r6
mgl@1371
 12152
+ *[0-9a-f]*:	fc e3 00 01 	st\.d lr\[1\],r2
mgl@1371
 12153
+ *[0-9a-f]*:	ea eb 33 90 	st\.d r5\[13200\],r10
mgl@1371
 12154
+ *[0-9a-f]*:	ea eb 24 88 	st\.d r5\[9352\],r10
mgl@1371
 12155
+ *[0-9a-f]*:	ea e5 7e 75 	st\.d r5\[32373\],r4
mgl@1371
 12156
+
mgl@1371
 12157
+[0-9a-f]* <st_w4>:
mgl@1371
 12158
+ *[0-9a-f]*:	9f 0f       	st\.w pc\[0x0\],pc
mgl@1371
 12159
+ *[0-9a-f]*:	f9 4c ff ff 	st\.w r12\[-1\],r12
mgl@1371
 12160
+ *[0-9a-f]*:	eb 45 80 00 	st\.w r5\[-32768\],r5
mgl@1371
 12161
+ *[0-9a-f]*:	e9 44 7f ff 	st\.w r4\[32767\],r4
mgl@1371
 12162
+ *[0-9a-f]*:	fd 4e 00 01 	st\.w lr\[1\],lr
mgl@1371
 12163
+ *[0-9a-f]*:	fb 47 17 f8 	st\.w sp\[6136\],r7
mgl@1371
 12164
+ *[0-9a-f]*:	ed 4c 69 cf 	st\.w r6\[27087\],r12
mgl@1371
 12165
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 12166
+
mgl@1371
 12167
+[0-9a-f]* <st_h4>:
mgl@1371
 12168
+ *[0-9a-f]*:	be 0f       	st\.h pc\[0x0\],pc
mgl@1371
 12169
+ *[0-9a-f]*:	f9 5c ff ff 	st\.h r12\[-1\],r12
mgl@1371
 12170
+ *[0-9a-f]*:	eb 55 80 00 	st\.h r5\[-32768\],r5
mgl@1371
 12171
+ *[0-9a-f]*:	e9 54 7f ff 	st\.h r4\[32767\],r4
mgl@1371
 12172
+ *[0-9a-f]*:	fd 5e 00 01 	st\.h lr\[1\],lr
mgl@1371
 12173
+ *[0-9a-f]*:	e9 57 d9 16 	st\.h r4\[-9962\],r7
mgl@1371
 12174
+ *[0-9a-f]*:	f3 53 c0 86 	st\.h r9\[-16250\],r3
mgl@1371
 12175
+ *[0-9a-f]*:	d7 03       	nop
mgl@1371
 12176
+
mgl@1371
 12177
+[0-9a-f]* <st_b4>:
mgl@1371
 12178
+ *[0-9a-f]*:	be 8f       	st\.b pc\[0x0\],pc
mgl@1371
 12179
+ *[0-9a-f]*:	f9 6c ff ff 	st\.b r12\[-1\],r12
mgl@1371
 12180
+ *[0-9a-f]*:	eb 65 80 00 	st\.b r5\[-32768\],r5
mgl@1371
 12181
+ *[0-9a-f]*:	e9 64 7f ff 	st\.b r4\[32767\],r4
mgl@1371
 12182
+ *[0-9a-f]*:	bc 9e       	st\.b lr\[0x1\],lr
mgl@1371
 12183
+ *[0-9a-f]*:	f9 66 75 96 	st\.b r12\[30102\],r6
mgl@1371
 12184
+ *[0-9a-f]*:	eb 61 71 31 	st\.b r5\[28977\],r1
mgl@1371
 12185
+ *[0-9a-f]*:	e1 61 15 5e 	st\.b r0\[5470\],r1
mgl@1371
 12186
+
mgl@1371
 12187
+[0-9a-f]* <mfsr>:
mgl@1371
 12188
+ *[0-9a-f]*:	e1 bf 00 00 	mfsr pc,0x0
mgl@1371
 12189
+ *[0-9a-f]*:	e1 bc 00 ff 	mfsr r12,0x3fc
mgl@1371
 12190
+ *[0-9a-f]*:	e1 b5 00 80 	mfsr r5,0x200
mgl@1371
 12191
+ *[0-9a-f]*:	e1 b4 00 7f 	mfsr r4,0x1fc
mgl@1371
 12192
+ *[0-9a-f]*:	e1 be 00 01 	mfsr lr,0x4
mgl@1371
 12193
+ *[0-9a-f]*:	e1 b2 00 ae 	mfsr r2,0x2b8
mgl@1371
 12194
+ *[0-9a-f]*:	e1 b4 00 41 	mfsr r4,0x104
mgl@1371
 12195
+ *[0-9a-f]*:	e1 ba 00 fe 	mfsr r10,0x3f8
mgl@1371
 12196
+
mgl@1371
 12197
+[0-9a-f]* <mtsr>:
mgl@1371
 12198
+ *[0-9a-f]*:	e3 bf 00 00 	mtsr 0x0,pc
mgl@1371
 12199
+ *[0-9a-f]*:	e3 bc 00 ff 	mtsr 0x3fc,r12
mgl@1371
 12200
+ *[0-9a-f]*:	e3 b5 00 80 	mtsr 0x200,r5
mgl@1371
 12201
+ *[0-9a-f]*:	e3 b4 00 7f 	mtsr 0x1fc,r4
mgl@1371
 12202
+ *[0-9a-f]*:	e3 be 00 01 	mtsr 0x4,lr
mgl@1371
 12203
+ *[0-9a-f]*:	e3 ba 00 38 	mtsr 0xe0,r10
mgl@1371
 12204
+ *[0-9a-f]*:	e3 bc 00 d1 	mtsr 0x344,r12
mgl@1371
 12205
+ *[0-9a-f]*:	e3 b9 00 4c 	mtsr 0x130,r9
mgl@1371
 12206
+
mgl@1371
 12207
+[0-9a-f]* <mfdr>:
mgl@1371
 12208
+ *[0-9a-f]*:	e5 bf 00 00 	mfdr pc,0x0
mgl@1371
 12209
+ *[0-9a-f]*:	e5 bc 00 ff 	mfdr r12,0x3fc
mgl@1371
 12210
+ *[0-9a-f]*:	e5 b5 00 80 	mfdr r5,0x200
mgl@1371
 12211
+ *[0-9a-f]*:	e5 b4 00 7f 	mfdr r4,0x1fc
mgl@1371
 12212
+ *[0-9a-f]*:	e5 be 00 01 	mfdr lr,0x4
mgl@1371
 12213
+ *[0-9a-f]*:	e5 b6 00 e9 	mfdr r6,0x3a4
mgl@1371
 12214
+ *[0-9a-f]*:	e5 b5 00 09 	mfdr r5,0x24
mgl@1371
 12215
+ *[0-9a-f]*:	e5 b9 00 4b 	mfdr r9,0x12c
mgl@1371
 12216
+
mgl@1371
 12217
+[0-9a-f]* <mtdr>:
mgl@1371
 12218
+ *[0-9a-f]*:	e7 bf 00 00 	mtdr 0x0,pc
mgl@1371
 12219
+ *[0-9a-f]*:	e7 bc 00 ff 	mtdr 0x3fc,r12
mgl@1371
 12220
+ *[0-9a-f]*:	e7 b5 00 80 	mtdr 0x200,r5
mgl@1371
 12221
+ *[0-9a-f]*:	e7 b4 00 7f 	mtdr 0x1fc,r4
mgl@1371
 12222
+ *[0-9a-f]*:	e7 be 00 01 	mtdr 0x4,lr
mgl@1371
 12223
+ *[0-9a-f]*:	e7 b8 00 2d 	mtdr 0xb4,r8
mgl@1371
 12224
+ *[0-9a-f]*:	e7 ba 00 b4 	mtdr 0x2d0,r10
mgl@1371
 12225
+ *[0-9a-f]*:	e7 be 00 66 	mtdr 0x198,lr
mgl@1371
 12226
+
mgl@1371
 12227
+[0-9a-f]* <sleep>:
mgl@1371
 12228
+ *[0-9a-f]*:	e9 b0 00 00 	sleep 0x0
mgl@1371
 12229
+ *[0-9a-f]*:	e9 b0 00 ff 	sleep 0xff
mgl@1371
 12230
+ *[0-9a-f]*:	e9 b0 00 80 	sleep 0x80
mgl@1371
 12231
+ *[0-9a-f]*:	e9 b0 00 7f 	sleep 0x7f
mgl@1371
 12232
+ *[0-9a-f]*:	e9 b0 00 01 	sleep 0x1
mgl@1371
 12233
+ *[0-9a-f]*:	e9 b0 00 fe 	sleep 0xfe
mgl@1371
 12234
+ *[0-9a-f]*:	e9 b0 00 0f 	sleep 0xf
mgl@1371
 12235
+ *[0-9a-f]*:	e9 b0 00 2b 	sleep 0x2b
mgl@1371
 12236
+
mgl@1371
 12237
+[0-9a-f]* <sync>:
mgl@1371
 12238
+ *[0-9a-f]*:	eb b0 00 00 	sync 0x0
mgl@1371
 12239
+ *[0-9a-f]*:	eb b0 00 ff 	sync 0xff
mgl@1371
 12240
+ *[0-9a-f]*:	eb b0 00 80 	sync 0x80
mgl@1371
 12241
+ *[0-9a-f]*:	eb b0 00 7f 	sync 0x7f
mgl@1371
 12242
+ *[0-9a-f]*:	eb b0 00 01 	sync 0x1
mgl@1371
 12243
+ *[0-9a-f]*:	eb b0 00 a6 	sync 0xa6
mgl@1371
 12244
+ *[0-9a-f]*:	eb b0 00 e6 	sync 0xe6
mgl@1371
 12245
+ *[0-9a-f]*:	eb b0 00 b4 	sync 0xb4
mgl@1371
 12246
+
mgl@1371
 12247
+[0-9a-f]* <bld>:
mgl@1371
 12248
+ *[0-9a-f]*:	ed bf 00 00 	bld pc,0x0
mgl@1371
 12249
+ *[0-9a-f]*:	ed bc 00 1f 	bld r12,0x1f
mgl@1371
 12250
+ *[0-9a-f]*:	ed b5 00 10 	bld r5,0x10
mgl@1371
 12251
+ *[0-9a-f]*:	ed b4 00 0f 	bld r4,0xf
mgl@1371
 12252
+ *[0-9a-f]*:	ed be 00 01 	bld lr,0x1
mgl@1371
 12253
+ *[0-9a-f]*:	ed b9 00 0f 	bld r9,0xf
mgl@1371
 12254
+ *[0-9a-f]*:	ed b0 00 04 	bld r0,0x4
mgl@1371
 12255
+ *[0-9a-f]*:	ed be 00 1a 	bld lr,0x1a
mgl@1371
 12256
+
mgl@1371
 12257
+[0-9a-f]* <bst>:
mgl@1371
 12258
+ *[0-9a-f]*:	ef bf 00 00 	bst pc,0x0
mgl@1371
 12259
+ *[0-9a-f]*:	ef bc 00 1f 	bst r12,0x1f
mgl@1371
 12260
+ *[0-9a-f]*:	ef b5 00 10 	bst r5,0x10
mgl@1371
 12261
+ *[0-9a-f]*:	ef b4 00 0f 	bst r4,0xf
mgl@1371
 12262
+ *[0-9a-f]*:	ef be 00 01 	bst lr,0x1
mgl@1371
 12263
+ *[0-9a-f]*:	ef ba 00 1c 	bst r10,0x1c
mgl@1371
 12264
+ *[0-9a-f]*:	ef b0 00 03 	bst r0,0x3
mgl@1371
 12265
+ *[0-9a-f]*:	ef bd 00 02 	bst sp,0x2
mgl@1371
 12266
+
mgl@1371
 12267
+[0-9a-f]* <sats>:
mgl@1371
 12268
+ *[0-9a-f]*:	f1 bf 00 00 	sats pc,0x0
mgl@1371
 12269
+ *[0-9a-f]*:	f1 bc 03 ff 	sats r12>>0x1f,0x1f
mgl@1371
 12270
+ *[0-9a-f]*:	f1 b5 02 10 	sats r5>>0x10,0x10
mgl@1371
 12271
+ *[0-9a-f]*:	f1 b4 01 ef 	sats r4>>0xf,0xf
mgl@1371
 12272
+ *[0-9a-f]*:	f1 be 00 21 	sats lr>>0x1,0x1
mgl@1371
 12273
+ *[0-9a-f]*:	f1 ba 02 63 	sats r10>>0x3,0x13
mgl@1371
 12274
+ *[0-9a-f]*:	f1 ba 03 42 	sats r10>>0x2,0x1a
mgl@1371
 12275
+ *[0-9a-f]*:	f1 b1 00 34 	sats r1>>0x14,0x1
mgl@1371
 12276
+
mgl@1371
 12277
+[0-9a-f]* <satu>:
mgl@1371
 12278
+ *[0-9a-f]*:	f1 bf 04 00 	satu pc,0x0
mgl@1371
 12279
+ *[0-9a-f]*:	f1 bc 07 ff 	satu r12>>0x1f,0x1f
mgl@1371
 12280
+ *[0-9a-f]*:	f1 b5 06 10 	satu r5>>0x10,0x10
mgl@1371
 12281
+ *[0-9a-f]*:	f1 b4 05 ef 	satu r4>>0xf,0xf
mgl@1371
 12282
+ *[0-9a-f]*:	f1 be 04 21 	satu lr>>0x1,0x1
mgl@1371
 12283
+ *[0-9a-f]*:	f1 bf 04 e5 	satu pc>>0x5,0x7
mgl@1371
 12284
+ *[0-9a-f]*:	f1 b7 04 a5 	satu r7>>0x5,0x5
mgl@1371
 12285
+ *[0-9a-f]*:	f1 b2 06 7a 	satu r2>>0x1a,0x13
mgl@1371
 12286
+
mgl@1371
 12287
+[0-9a-f]* <satrnds>:
mgl@1371
 12288
+ *[0-9a-f]*:	f3 bf 00 00 	satrnds pc,0x0
mgl@1371
 12289
+ *[0-9a-f]*:	f3 bc 03 ff 	satrnds r12>>0x1f,0x1f
mgl@1371
 12290
+ *[0-9a-f]*:	f3 b5 02 10 	satrnds r5>>0x10,0x10
mgl@1371
 12291
+ *[0-9a-f]*:	f3 b4 01 ef 	satrnds r4>>0xf,0xf
mgl@1371
 12292
+ *[0-9a-f]*:	f3 be 00 21 	satrnds lr>>0x1,0x1
mgl@1371
 12293
+ *[0-9a-f]*:	f3 b0 02 75 	satrnds r0>>0x15,0x13
mgl@1371
 12294
+ *[0-9a-f]*:	f3 bd 00 40 	satrnds sp,0x2
mgl@1371
 12295
+ *[0-9a-f]*:	f3 b7 03 a6 	satrnds r7>>0x6,0x1d
mgl@1371
 12296
+
mgl@1371
 12297
+[0-9a-f]* <satrndu>:
mgl@1371
 12298
+ *[0-9a-f]*:	f3 bf 04 00 	satrndu pc,0x0
mgl@1371
 12299
+ *[0-9a-f]*:	f3 bc 07 ff 	satrndu r12>>0x1f,0x1f
mgl@1371
 12300
+ *[0-9a-f]*:	f3 b5 06 10 	satrndu r5>>0x10,0x10
mgl@1371
 12301
+ *[0-9a-f]*:	f3 b4 05 ef 	satrndu r4>>0xf,0xf
mgl@1371
 12302
+ *[0-9a-f]*:	f3 be 04 21 	satrndu lr>>0x1,0x1
mgl@1371
 12303
+ *[0-9a-f]*:	f3 bc 07 40 	satrndu r12,0x1a
mgl@1371
 12304
+ *[0-9a-f]*:	f3 b4 04 75 	satrndu r4>>0x15,0x3
mgl@1371
 12305
+ *[0-9a-f]*:	f3 ba 06 03 	satrndu r10>>0x3,0x10
mgl@1371
 12306
+
mgl@1371
 12307
+[0-9a-f]* <subfc>:
mgl@1371
 12308
+ *[0-9a-f]*:	f5 bf 00 00 	subfeq pc,0
mgl@1371
 12309
+ *[0-9a-f]*:	f5 bc 0f ff 	subfal r12,-1
mgl@1371
 12310
+ *[0-9a-f]*:	f5 b5 08 80 	subfls r5,-128
mgl@1371
 12311
+ *[0-9a-f]*:	f5 b4 07 7f 	subfpl r4,127
mgl@1371
 12312
+ *[0-9a-f]*:	f5 be 01 01 	subfne lr,1
mgl@1371
 12313
+ *[0-9a-f]*:	f5 ba 08 08 	subfls r10,8
mgl@1371
 12314
+ *[0-9a-f]*:	f5 bb 0d 63 	subfvc r11,99
mgl@1371
 12315
+ *[0-9a-f]*:	f5 b2 0c 49 	subfvs r2,73
mgl@1371
 12316
+
mgl@1371
 12317
+[0-9a-f]* <subc>:
mgl@1371
 12318
+ *[0-9a-f]*:	f7 bf 00 00 	subeq pc,0
mgl@1371
 12319
+ *[0-9a-f]*:	f7 bc 0f ff 	subal r12,-1
mgl@1371
 12320
+ *[0-9a-f]*:	f7 b5 08 80 	subls r5,-128
mgl@1371
 12321
+ *[0-9a-f]*:	f7 b4 07 7f 	subpl r4,127
mgl@1371
 12322
+ *[0-9a-f]*:	f7 be 01 01 	subne lr,1
mgl@1371
 12323
+ *[0-9a-f]*:	f7 bc 08 76 	subls r12,118
mgl@1371
 12324
+ *[0-9a-f]*:	f7 be 0d f4 	subvc lr,-12
mgl@1371
 12325
+ *[0-9a-f]*:	f7 b4 06 f3 	submi r4,-13
mgl@1371
 12326
+
mgl@1371
 12327
+[0-9a-f]* <movc2>:
mgl@1371
 12328
+ *[0-9a-f]*:	f9 bf 00 00 	moveq pc,0
mgl@1371
 12329
+ *[0-9a-f]*:	f9 bc 0f ff 	moval r12,-1
mgl@1371
 12330
+ *[0-9a-f]*:	f9 b5 08 80 	movls r5,-128
mgl@1371
 12331
+ *[0-9a-f]*:	f9 b4 07 7f 	movpl r4,127
mgl@1371
 12332
+ *[0-9a-f]*:	f9 be 01 01 	movne lr,1
mgl@1371
 12333
+ *[0-9a-f]*:	f9 b3 05 86 	movlt r3,-122
mgl@1371
 12334
+ *[0-9a-f]*:	f9 b8 0d 02 	movvc r8,2
mgl@1371
 12335
+ *[0-9a-f]*:	f9 b7 01 91 	movne r7,-111
mgl@1371
 12336
+
mgl@1371
 12337
+[0-9a-f]* <cp_b>:
mgl@1371
 12338
+ *[0-9a-f]*:	e0 0f 18 00 	cp\.b pc,r0
mgl@1371
 12339
+ *[0-9a-f]*:	fe 00 18 00 	cp\.b r0,pc
mgl@1371
 12340
+ *[0-9a-f]*:	f0 07 18 00 	cp\.b r7,r8
mgl@1371
 12341
+ *[0-9a-f]*:	ee 08 18 00 	cp\.b r8,r7
mgl@1371
 12342
+
mgl@1371
 12343
+[0-9a-f]* <cp_h>:
mgl@1371
 12344
+ *[0-9a-f]*:	e0 0f 19 00 	cp\.h pc,r0
mgl@1371
 12345
+ *[0-9a-f]*:	fe 00 19 00 	cp\.h r0,pc
mgl@1371
 12346
+ *[0-9a-f]*:	f0 07 19 00 	cp\.h r7,r8
mgl@1371
 12347
+ *[0-9a-f]*:	ee 08 19 00 	cp\.h r8,r7
mgl@1371
 12348
+
mgl@1371
 12349
+[0-9a-f]* <ldm>:
mgl@1371
 12350
+ *[0-9a-f]*:	e1 cf 00 7e 	ldm pc,r1-r6
mgl@1371
 12351
+ *[0-9a-f]*:	e1 cc ff ff 	ldm r12,r0-pc
mgl@1371
 12352
+ *[0-9a-f]*:	e1 c5 80 00 	ldm r5,pc
mgl@1371
 12353
+ *[0-9a-f]*:	e1 c4 7f ff 	ldm r4,r0-lr
mgl@1371
 12354
+ *[0-9a-f]*:	e1 ce 00 01 	ldm lr,r0
mgl@1371
 12355
+ *[0-9a-f]*:	e1 c9 40 22 	ldm r9,r1,r5,lr
mgl@1371
 12356
+ *[0-9a-f]*:	e1 cb 81 ec 	ldm r11,r2-r3,r5-r8,pc
mgl@1371
 12357
+ *[0-9a-f]*:	e1 c6 a2 09 	ldm r6,r0,r3,r9,sp,pc
mgl@1371
 12358
+
mgl@1371
 12359
+[0-9a-f]* <ldm_pu>:
mgl@1371
 12360
+ *[0-9a-f]*:	e3 cf 03 c0 	ldm pc\+\+,r6-r9
mgl@1371
 12361
+ *[0-9a-f]*:	e3 cc ff ff 	ldm r12\+\+,r0-pc
mgl@1371
 12362
+ *[0-9a-f]*:	e3 c5 80 00 	ldm r5\+\+,pc
mgl@1371
 12363
+ *[0-9a-f]*:	e3 c4 7f ff 	ldm r4\+\+,r0-lr
mgl@1371
 12364
+ *[0-9a-f]*:	e3 ce 00 01 	ldm lr\+\+,r0
mgl@1371
 12365
+ *[0-9a-f]*:	e3 cc d5 38 	ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
mgl@1371
 12366
+ *[0-9a-f]*:	e3 ca c0 74 	ldm r10\+\+,r2,r4-r6,lr-pc
mgl@1371
 12367
+ *[0-9a-f]*:	e3 c6 7e 1a 	ldm r6\+\+,r1,r3-r4,r9-lr
mgl@1371
 12368
+
mgl@1371
 12369
+[0-9a-f]* <ldmts>:
mgl@1371
 12370
+ *[0-9a-f]*:	e5 cf 01 80 	ldmts pc,r7-r8
mgl@1371
 12371
+ *[0-9a-f]*:	e5 cc ff ff 	ldmts r12,r0-pc
mgl@1371
 12372
+ *[0-9a-f]*:	e5 c5 80 00 	ldmts r5,pc
mgl@1371
 12373
+ *[0-9a-f]*:	e5 c4 7f ff 	ldmts r4,r0-lr
mgl@1371
 12374
+ *[0-9a-f]*:	e5 ce 00 01 	ldmts lr,r0
mgl@1371
 12375
+ *[0-9a-f]*:	e5 c0 18 06 	ldmts r0,r1-r2,r11-r12
mgl@1371
 12376
+ *[0-9a-f]*:	e5 ce 61 97 	ldmts lr,r0-r2,r4,r7-r8,sp-lr
mgl@1371
 12377
+ *[0-9a-f]*:	e5 cc c2 3b 	ldmts r12,r0-r1,r3-r5,r9,lr-pc
mgl@1371
 12378
+
mgl@1371
 12379
+[0-9a-f]* <ldmts_pu>:
mgl@1371
 12380
+ *[0-9a-f]*:	e7 cf 02 00 	ldmts pc\+\+,r9
mgl@1371
 12381
+ *[0-9a-f]*:	e7 cc ff ff 	ldmts r12\+\+,r0-pc
mgl@1371
 12382
+ *[0-9a-f]*:	e7 c5 80 00 	ldmts r5\+\+,pc
mgl@1371
 12383
+ *[0-9a-f]*:	e7 c4 7f ff 	ldmts r4\+\+,r0-lr
mgl@1371
 12384
+ *[0-9a-f]*:	e7 ce 00 01 	ldmts lr\+\+,r0
mgl@1371
 12385
+ *[0-9a-f]*:	e7 cd 0a bd 	ldmts sp\+\+,r0,r2-r5,r7,r9,r11
mgl@1371
 12386
+ *[0-9a-f]*:	e7 c5 0c 8e 	ldmts r5\+\+,r1-r3,r7,r10-r11
mgl@1371
 12387
+ *[0-9a-f]*:	e7 c8 a1 9c 	ldmts r8\+\+,r2-r4,r7-r8,sp,pc
mgl@1371
 12388
+
mgl@1371
 12389
+[0-9a-f]* <stm>:
mgl@1371
 12390
+ *[0-9a-f]*:	e9 cf 00 80 	stm pc,r7
mgl@1371
 12391
+ *[0-9a-f]*:	e9 cc ff ff 	stm r12,r0-pc
mgl@1371
 12392
+ *[0-9a-f]*:	e9 c5 80 00 	stm r5,pc
mgl@1371
 12393
+ *[0-9a-f]*:	e9 c4 7f ff 	stm r4,r0-lr
mgl@1371
 12394
+ *[0-9a-f]*:	e9 ce 00 01 	stm lr,r0
mgl@1371
 12395
+ *[0-9a-f]*:	e9 cd 49 2c 	stm sp,r2-r3,r5,r8,r11,lr
mgl@1371
 12396
+ *[0-9a-f]*:	e9 c4 4c 5f 	stm r4,r0-r4,r6,r10-r11,lr
mgl@1371
 12397
+ *[0-9a-f]*:	e9 c9 f2 22 	stm r9,r1,r5,r9,r12-pc
mgl@1371
 12398
+
mgl@1371
 12399
+[0-9a-f]* <stm_pu>:
mgl@1371
 12400
+ *[0-9a-f]*:	eb cf 00 70 	stm --pc,r4-r6
mgl@1371
 12401
+ *[0-9a-f]*:	eb cc ff ff 	stm --r12,r0-pc
mgl@1371
 12402
+ *[0-9a-f]*:	eb c5 80 00 	stm --r5,pc
mgl@1371
 12403
+ *[0-9a-f]*:	eb c4 7f ff 	stm --r4,r0-lr
mgl@1371
 12404
+ *[0-9a-f]*:	eb ce 00 01 	stm --lr,r0
mgl@1371
 12405
+ *[0-9a-f]*:	eb cb fb f1 	stm --r11,r0,r4-r9,r11-pc
mgl@1371
 12406
+ *[0-9a-f]*:	eb cb 56 09 	stm --r11,r0,r3,r9-r10,r12,lr
mgl@1371
 12407
+ *[0-9a-f]*:	eb c6 63 04 	stm --r6,r2,r8-r9,sp-lr
mgl@1371
 12408
+
mgl@1371
 12409
+[0-9a-f]* <stmts>:
mgl@1371
 12410
+ *[0-9a-f]*:	ed cf 01 00 	stmts pc,r8
mgl@1371
 12411
+ *[0-9a-f]*:	ed cc ff ff 	stmts r12,r0-pc
mgl@1371
 12412
+ *[0-9a-f]*:	ed c5 80 00 	stmts r5,pc
mgl@1371
 12413
+ *[0-9a-f]*:	ed c4 7f ff 	stmts r4,r0-lr
mgl@1371
 12414
+ *[0-9a-f]*:	ed ce 00 01 	stmts lr,r0
mgl@1371
 12415
+ *[0-9a-f]*:	ed c1 c6 5b 	stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
mgl@1371
 12416
+ *[0-9a-f]*:	ed c3 1d c1 	stmts r3,r0,r6-r8,r10-r12
mgl@1371
 12417
+ *[0-9a-f]*:	ed cb d6 d1 	stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
mgl@1371
 12418
+
mgl@1371
 12419
+[0-9a-f]* <stmts_pu>:
mgl@1371
 12420
+ *[0-9a-f]*:	ef cf 01 c0 	stmts --pc,r6-r8
mgl@1371
 12421
+ *[0-9a-f]*:	ef cc ff ff 	stmts --r12,r0-pc
mgl@1371
 12422
+ *[0-9a-f]*:	ef c5 80 00 	stmts --r5,pc
mgl@1371
 12423
+ *[0-9a-f]*:	ef c4 7f ff 	stmts --r4,r0-lr
mgl@1371
 12424
+ *[0-9a-f]*:	ef ce 00 01 	stmts --lr,r0
mgl@1371
 12425
+ *[0-9a-f]*:	ef c2 36 19 	stmts --r2,r0,r3-r4,r9-r10,r12-sp
mgl@1371
 12426
+ *[0-9a-f]*:	ef c3 c0 03 	stmts --r3,r0-r1,lr-pc
mgl@1371
 12427
+ *[0-9a-f]*:	ef c0 44 7d 	stmts --r0,r0,r2-r6,r10,lr
mgl@1371
 12428
+
mgl@1371
 12429
+[0-9a-f]* <ldins_h>:
mgl@1371
 12430
+ *[0-9a-f]*:	ff df 00 00 	ldins\.h pc:b,pc\[0\]
mgl@1371
 12431
+ *[0-9a-f]*:	f9 dc 1f ff 	ldins\.h r12:t,r12\[-2\]
mgl@1371
 12432
+ *[0-9a-f]*:	eb d5 18 00 	ldins\.h r5:t,r5\[-4096\]
mgl@1371
 12433
+ *[0-9a-f]*:	e9 d4 07 ff 	ldins\.h r4:b,r4\[4094\]
mgl@1371
 12434
+ *[0-9a-f]*:	fd de 10 01 	ldins\.h lr:t,lr\[2\]
mgl@1371
 12435
+ *[0-9a-f]*:	fd d0 13 c5 	ldins\.h r0:t,lr\[1930\]
mgl@1371
 12436
+ *[0-9a-f]*:	ef d3 0e f5 	ldins\.h r3:b,r7\[-534\]
mgl@1371
 12437
+ *[0-9a-f]*:	f9 d2 0b 9a 	ldins\.h r2:b,r12\[-2252\]
mgl@1371
 12438
+
mgl@1371
 12439
+[0-9a-f]* <ldins_b>:
mgl@1371
 12440
+ *[0-9a-f]*:	ff df 40 00 	ldins\.b pc:b,pc\[0\]
mgl@1371
 12441
+ *[0-9a-f]*:	f9 dc 7f ff 	ldins\.b r12:t,r12\[-1\]
mgl@1371
 12442
+ *[0-9a-f]*:	eb d5 68 00 	ldins\.b r5:u,r5\[-2048\]
mgl@1371
 12443
+ *[0-9a-f]*:	e9 d4 57 ff 	ldins\.b r4:l,r4\[2047\]
mgl@1371
 12444
+ *[0-9a-f]*:	fd de 50 01 	ldins\.b lr:l,lr\[1\]
mgl@1371
 12445
+ *[0-9a-f]*:	e9 d6 7d 6a 	ldins\.b r6:t,r4\[-662\]
mgl@1371
 12446
+ *[0-9a-f]*:	e3 d5 4f 69 	ldins\.b r5:b,r1\[-151\]
mgl@1371
 12447
+ *[0-9a-f]*:	f7 da 78 7d 	ldins\.b r10:t,r11\[-1923\]
mgl@1371
 12448
+
mgl@1371
 12449
+[0-9a-f]* <ldswp_sh>:
mgl@1371
 12450
+ *[0-9a-f]*:	ff df 20 00 	ldswp\.sh pc,pc\[0\]
mgl@1371
 12451
+ *[0-9a-f]*:	f9 dc 2f ff 	ldswp\.sh r12,r12\[-2\]
mgl@1371
 12452
+ *[0-9a-f]*:	eb d5 28 00 	ldswp\.sh r5,r5\[-4096\]
mgl@1371
 12453
+ *[0-9a-f]*:	e9 d4 27 ff 	ldswp\.sh r4,r4\[4094\]
mgl@1371
 12454
+ *[0-9a-f]*:	fd de 20 01 	ldswp\.sh lr,lr\[2\]
mgl@1371
 12455
+ *[0-9a-f]*:	f5 d9 27 84 	ldswp\.sh r9,r10\[3848\]
mgl@1371
 12456
+ *[0-9a-f]*:	f9 d4 2c 04 	ldswp\.sh r4,r12\[-2040\]
mgl@1371
 12457
+ *[0-9a-f]*:	e5 da 26 08 	ldswp\.sh r10,r2\[3088\]
mgl@1371
 12458
+
mgl@1371
 12459
+[0-9a-f]* <ldswp_uh>:
mgl@1371
 12460
+ *[0-9a-f]*:	ff df 30 00 	ldswp\.uh pc,pc\[0\]
mgl@1371
 12461
+ *[0-9a-f]*:	f9 dc 3f ff 	ldswp\.uh r12,r12\[-2\]
mgl@1371
 12462
+ *[0-9a-f]*:	eb d5 38 00 	ldswp\.uh r5,r5\[-4096\]
mgl@1371
 12463
+ *[0-9a-f]*:	e9 d4 37 ff 	ldswp\.uh r4,r4\[4094\]
mgl@1371
 12464
+ *[0-9a-f]*:	fd de 30 01 	ldswp\.uh lr,lr\[2\]
mgl@1371
 12465
+ *[0-9a-f]*:	f3 d4 37 46 	ldswp\.uh r4,r9\[3724\]
mgl@1371
 12466
+ *[0-9a-f]*:	fb de 3c bc 	ldswp\.uh lr,sp\[-1672\]
mgl@1371
 12467
+ *[0-9a-f]*:	f9 d8 38 7d 	ldswp\.uh r8,r12\[-3846\]
mgl@1371
 12468
+
mgl@1371
 12469
+[0-9a-f]* <ldswp_w>:
mgl@1371
 12470
+ *[0-9a-f]*:	ff df 80 00 	ldswp\.w pc,pc\[0\]
mgl@1371
 12471
+ *[0-9a-f]*:	f9 dc 8f ff 	ldswp\.w r12,r12\[-4\]
mgl@1371
 12472
+ *[0-9a-f]*:	eb d5 88 00 	ldswp\.w r5,r5\[-8192\]
mgl@1371
 12473
+ *[0-9a-f]*:	e9 d4 87 ff 	ldswp\.w r4,r4\[8188\]
mgl@1371
 12474
+ *[0-9a-f]*:	fd de 80 01 	ldswp\.w lr,lr\[4\]
mgl@1371
 12475
+ *[0-9a-f]*:	ef dd 81 d1 	ldswp\.w sp,r7\[1860\]
mgl@1371
 12476
+ *[0-9a-f]*:	eb df 8c c1 	ldswp\.w pc,r5\[-3324\]
mgl@1371
 12477
+ *[0-9a-f]*:	f5 dc 8c c8 	ldswp\.w r12,r10\[-3296\]
mgl@1371
 12478
+
mgl@1371
 12479
+[0-9a-f]* <stswp_h>:
mgl@1371
 12480
+ *[0-9a-f]*:	ff df 90 00 	stswp\.h pc\[0\],pc
mgl@1371
 12481
+ *[0-9a-f]*:	f9 dc 9f ff 	stswp\.h r12\[-2\],r12
mgl@1371
 12482
+ *[0-9a-f]*:	eb d5 98 00 	stswp\.h r5\[-4096\],r5
mgl@1371
 12483
+ *[0-9a-f]*:	e9 d4 97 ff 	stswp\.h r4\[4094\],r4
mgl@1371
 12484
+ *[0-9a-f]*:	fd de 90 01 	stswp\.h lr\[2\],lr
mgl@1371
 12485
+ *[0-9a-f]*:	ef da 90 20 	stswp\.h r7\[64\],r10
mgl@1371
 12486
+ *[0-9a-f]*:	f5 d2 95 e8 	stswp\.h r10\[3024\],r2
mgl@1371
 12487
+ *[0-9a-f]*:	e1 da 9b 74 	stswp\.h r0\[-2328\],r10
mgl@1371
 12488
+
mgl@1371
 12489
+[0-9a-f]* <stswp_w>:
mgl@1371
 12490
+ *[0-9a-f]*:	ff df a0 00 	stswp\.w pc\[0\],pc
mgl@1371
 12491
+ *[0-9a-f]*:	f9 dc af ff 	stswp\.w r12\[-4\],r12
mgl@1371
 12492
+ *[0-9a-f]*:	eb d5 a8 00 	stswp\.w r5\[-8192\],r5
mgl@1371
 12493
+ *[0-9a-f]*:	e9 d4 a7 ff 	stswp\.w r4\[8188\],r4
mgl@1371
 12494
+ *[0-9a-f]*:	fd de a0 01 	stswp\.w lr\[4\],lr
mgl@1371
 12495
+ *[0-9a-f]*:	ff d8 a1 21 	stswp\.w pc\[1156\],r8
mgl@1371
 12496
+ *[0-9a-f]*:	fb da a7 ce 	stswp\.w sp\[7992\],r10
mgl@1371
 12497
+ *[0-9a-f]*:	f1 d5 ae db 	stswp\.w r8\[-1172\],r5
mgl@1371
 12498
+
mgl@1371
 12499
+[0-9a-f]* <and2>:
mgl@1371
 12500
+ *[0-9a-f]*:	ff ef 00 0f 	and pc,pc,pc
mgl@1371
 12501
+ *[0-9a-f]*:	f9 ec 01 fc 	and r12,r12,r12<<0x1f
mgl@1371
 12502
+ *[0-9a-f]*:	eb e5 01 05 	and r5,r5,r5<<0x10
mgl@1371
 12503
+ *[0-9a-f]*:	e9 e4 00 f4 	and r4,r4,r4<<0xf
mgl@1371
 12504
+ *[0-9a-f]*:	fd ee 00 1e 	and lr,lr,lr<<0x1
mgl@1371
 12505
+ *[0-9a-f]*:	e5 e1 00 1a 	and r10,r2,r1<<0x1
mgl@1371
 12506
+ *[0-9a-f]*:	f1 eb 01 bc 	and r12,r8,r11<<0x1b
mgl@1371
 12507
+ *[0-9a-f]*:	ef e0 00 3a 	and r10,r7,r0<<0x3
mgl@1371
 12508
+
mgl@1371
 12509
+[0-9a-f]* <and3>:
mgl@1371
 12510
+ *[0-9a-f]*:	ff ef 02 0f 	and pc,pc,pc
mgl@1371
 12511
+ *[0-9a-f]*:	f9 ec 03 fc 	and r12,r12,r12>>0x1f
mgl@1371
 12512
+ *[0-9a-f]*:	eb e5 03 05 	and r5,r5,r5>>0x10
mgl@1371
 12513
+ *[0-9a-f]*:	e9 e4 02 f4 	and r4,r4,r4>>0xf
mgl@1371
 12514
+ *[0-9a-f]*:	fd ee 02 1e 	and lr,lr,lr>>0x1
mgl@1371
 12515
+ *[0-9a-f]*:	f1 e7 03 1c 	and r12,r8,r7>>0x11
mgl@1371
 12516
+ *[0-9a-f]*:	e9 e9 03 4f 	and pc,r4,r9>>0x14
mgl@1371
 12517
+ *[0-9a-f]*:	f3 ea 02 ca 	and r10,r9,r10>>0xc
mgl@1371
 12518
+
mgl@1371
 12519
+[0-9a-f]* <or2>:
mgl@1371
 12520
+ *[0-9a-f]*:	ff ef 10 0f 	or pc,pc,pc
mgl@1371
 12521
+ *[0-9a-f]*:	f9 ec 11 fc 	or r12,r12,r12<<0x1f
mgl@1371
 12522
+ *[0-9a-f]*:	eb e5 11 05 	or r5,r5,r5<<0x10
mgl@1371
 12523
+ *[0-9a-f]*:	e9 e4 10 f4 	or r4,r4,r4<<0xf
mgl@1371
 12524
+ *[0-9a-f]*:	fd ee 10 1e 	or lr,lr,lr<<0x1
mgl@1371
 12525
+ *[0-9a-f]*:	fb eb 11 d8 	or r8,sp,r11<<0x1d
mgl@1371
 12526
+ *[0-9a-f]*:	f3 e2 11 cf 	or pc,r9,r2<<0x1c
mgl@1371
 12527
+ *[0-9a-f]*:	e3 e2 10 35 	or r5,r1,r2<<0x3
mgl@1371
 12528
+
mgl@1371
 12529
+[0-9a-f]* <or3>:
mgl@1371
 12530
+ *[0-9a-f]*:	ff ef 12 0f 	or pc,pc,pc
mgl@1371
 12531
+ *[0-9a-f]*:	f9 ec 13 fc 	or r12,r12,r12>>0x1f
mgl@1371
 12532
+ *[0-9a-f]*:	eb e5 13 05 	or r5,r5,r5>>0x10
mgl@1371
 12533
+ *[0-9a-f]*:	e9 e4 12 f4 	or r4,r4,r4>>0xf
mgl@1371
 12534
+ *[0-9a-f]*:	fd ee 12 1e 	or lr,lr,lr>>0x1
mgl@1371
 12535
+ *[0-9a-f]*:	fb ed 12 21 	or r1,sp,sp>>0x2
mgl@1371
 12536
+ *[0-9a-f]*:	e3 e1 13 d0 	or r0,r1,r1>>0x1d
mgl@1371
 12537
+ *[0-9a-f]*:	f9 e8 12 84 	or r4,r12,r8>>0x8
mgl@1371
 12538
+
mgl@1371
 12539
+[0-9a-f]* <eor2>:
mgl@1371
 12540
+ *[0-9a-f]*:	ff ef 20 0f 	eor pc,pc,pc
mgl@1371
 12541
+ *[0-9a-f]*:	f9 ec 21 fc 	eor r12,r12,r12<<0x1f
mgl@1371
 12542
+ *[0-9a-f]*:	eb e5 21 05 	eor r5,r5,r5<<0x10
mgl@1371
 12543
+ *[0-9a-f]*:	e9 e4 20 f4 	eor r4,r4,r4<<0xf
mgl@1371
 12544
+ *[0-9a-f]*:	fd ee 20 1e 	eor lr,lr,lr<<0x1
mgl@1371
 12545
+ *[0-9a-f]*:	f3 e4 20 ba 	eor r10,r9,r4<<0xb
mgl@1371
 12546
+ *[0-9a-f]*:	e1 e1 21 f4 	eor r4,r0,r1<<0x1f
mgl@1371
 12547
+ *[0-9a-f]*:	e5 ec 20 d6 	eor r6,r2,r12<<0xd
mgl@1371
 12548
+
mgl@1371
 12549
+[0-9a-f]* <eor3>:
mgl@1371
 12550
+ *[0-9a-f]*:	ff ef 22 0f 	eor pc,pc,pc
mgl@1371
 12551
+ *[0-9a-f]*:	f9 ec 23 fc 	eor r12,r12,r12>>0x1f
mgl@1371
 12552
+ *[0-9a-f]*:	eb e5 23 05 	eor r5,r5,r5>>0x10
mgl@1371
 12553
+ *[0-9a-f]*:	e9 e4 22 f4 	eor r4,r4,r4>>0xf
mgl@1371
 12554
+ *[0-9a-f]*:	fd ee 22 1e 	eor lr,lr,lr>>0x1
mgl@1371
 12555
+ *[0-9a-f]*:	eb e5 23 65 	eor r5,r5,r5>>0x16
mgl@1371
 12556
+ *[0-9a-f]*:	e3 ee 22 3a 	eor r10,r1,lr>>0x3
mgl@1371
 12557
+ *[0-9a-f]*:	fd ed 23 a7 	eor r7,lr,sp>>0x1a
mgl@1371
 12558
+
mgl@1371
 12559
+[0-9a-f]* <sthh_w2>:
mgl@1371
 12560
+ *[0-9a-f]*:	ff ef 8f 0f 	sthh\.w pc\[pc\],pc:b,pc:b
mgl@1371
 12561
+ *[0-9a-f]*:	f9 ec bc 3c 	sthh\.w r12\[r12<<0x3\],r12:t,r12:t
mgl@1371
 12562
+ *[0-9a-f]*:	eb e5 b5 25 	sthh\.w r5\[r5<<0x2\],r5:t,r5:t
mgl@1371
 12563
+ *[0-9a-f]*:	e9 e4 84 14 	sthh\.w r4\[r4<<0x1\],r4:b,r4:b
mgl@1371
 12564
+ *[0-9a-f]*:	fd ee be 1e 	sthh\.w lr\[lr<<0x1\],lr:t,lr:t
mgl@1371
 12565
+ *[0-9a-f]*:	e3 ec b6 3d 	sthh\.w sp\[r6<<0x3\],r1:t,r12:t
mgl@1371
 12566
+ *[0-9a-f]*:	f3 e9 b6 06 	sthh\.w r6\[r6\],r9:t,r9:t
mgl@1371
 12567
+ *[0-9a-f]*:	e1 eb 93 0a 	sthh\.w r10\[r3\],r0:b,r11:t
mgl@1371
 12568
+
mgl@1371
 12569
+[0-9a-f]* <sthh_w1>:
mgl@1371
 12570
+ *[0-9a-f]*:	ff ef c0 0f 	sthh\.w pc\[0x0\],pc:b,pc:b
mgl@1371
 12571
+ *[0-9a-f]*:	f9 ec ff fc 	sthh\.w r12\[0x3fc\],r12:t,r12:t
mgl@1371
 12572
+ *[0-9a-f]*:	eb e5 f8 05 	sthh\.w r5\[0x200\],r5:t,r5:t
mgl@1371
 12573
+ *[0-9a-f]*:	e9 e4 c7 f4 	sthh\.w r4\[0x1fc\],r4:b,r4:b
mgl@1371
 12574
+ *[0-9a-f]*:	fd ee f0 1e 	sthh\.w lr\[0x4\],lr:t,lr:t
mgl@1371
 12575
+ *[0-9a-f]*:	f3 e0 e6 54 	sthh\.w r4\[0x194\],r9:t,r0:b
mgl@1371
 12576
+ *[0-9a-f]*:	e5 ea e5 78 	sthh\.w r8\[0x15c\],r2:t,r10:b
mgl@1371
 12577
+ *[0-9a-f]*:	f3 e2 c2 bd 	sthh\.w sp\[0xac\],r9:b,r2:b
mgl@1371
 12578
+
mgl@1371
 12579
+[0-9a-f]* <cop>:
mgl@1371
 12580
+ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
mgl@1371
 12581
+ *[0-9a-f]*:	e7 af ff ff 	cop cp7,cr15,cr15,cr15,0x7f
mgl@1371
 12582
+ *[0-9a-f]*:	e3 a8 75 55 	cop cp3,cr5,cr5,cr5,0x31
mgl@1371
 12583
+ *[0-9a-f]*:	e3 a8 44 44 	cop cp2,cr4,cr4,cr4,0x30
mgl@1371
 12584
+ *[0-9a-f]*:	e5 ad a8 37 	cop cp5,cr8,cr3,cr7,0x5a
mgl@1371
 12585
+
mgl@1371
 12586
+[0-9a-f]* <ldc_w1>:
mgl@1371
 12587
+ *[0-9a-f]*:	e9 a0 00 00 	ldc\.w cp0,cr0,r0\[0x0\]
mgl@1371
 12588
+ *[0-9a-f]*:	e9 af ef ff 	ldc\.w cp7,cr15,pc\[0x3fc\]
mgl@1371
 12589
+ *[0-9a-f]*:	e9 a5 65 80 	ldc\.w cp3,cr5,r5\[0x200\]
mgl@1371
 12590
+ *[0-9a-f]*:	e9 a4 44 7f 	ldc\.w cp2,cr4,r4\[0x1fc\]
mgl@1371
 12591
+ *[0-9a-f]*:	e9 ad 89 24 	ldc\.w cp4,cr9,sp\[0x90\]
mgl@1371
 12592
+
mgl@1371
 12593
+[0-9a-f]* <ldc_w2>:
mgl@1371
 12594
+ *[0-9a-f]*:	ef a0 00 40 	ldc\.w cp0,cr0,--r0
mgl@1371
 12595
+ *[0-9a-f]*:	ef af ef 40 	ldc\.w cp7,cr15,--pc
mgl@1371
 12596
+ *[0-9a-f]*:	ef a5 65 40 	ldc\.w cp3,cr5,--r5
mgl@1371
 12597
+ *[0-9a-f]*:	ef a4 44 40 	ldc\.w cp2,cr4,--r4
mgl@1371
 12598
+ *[0-9a-f]*:	ef ad 89 40 	ldc\.w cp4,cr9,--sp
mgl@1371
 12599
+
mgl@1371
 12600
+[0-9a-f]* <ldc_w3>:
mgl@1371
 12601
+ *[0-9a-f]*:	ef a0 10 00 	ldc\.w cp0,cr0,r0\[r0\]
mgl@1371
 12602
+ *[0-9a-f]*:	ef af ff 3f 	ldc\.w cp7,cr15,pc\[pc<<0x3\]
mgl@1371
 12603
+ *[0-9a-f]*:	ef a5 75 24 	ldc\.w cp3,cr5,r5\[r4<<0x2\]
mgl@1371
 12604
+ *[0-9a-f]*:	ef a4 54 13 	ldc\.w cp2,cr4,r4\[r3<<0x1\]
mgl@1371
 12605
+ *[0-9a-f]*:	ef ad 99 0c 	ldc\.w cp4,cr9,sp\[r12\]
mgl@1371
 12606
+
mgl@1371
 12607
+[0-9a-f]* <ldc_d1>:
mgl@1371
 12608
+ *[0-9a-f]*:	e9 a0 10 00 	ldc\.d cp0,cr0,r0\[0x0\]
mgl@1371
 12609
+ *[0-9a-f]*:	e9 af fe ff 	ldc\.d cp7,cr14,pc\[0x3fc\]
mgl@1371
 12610
+ *[0-9a-f]*:	e9 a5 76 80 	ldc\.d cp3,cr6,r5\[0x200\]
mgl@1371
 12611
+ *[0-9a-f]*:	e9 a4 54 7f 	ldc\.d cp2,cr4,r4\[0x1fc\]
mgl@1371
 12612
+ *[0-9a-f]*:	e9 ad 98 24 	ldc\.d cp4,cr8,sp\[0x90\]
mgl@1371
 12613
+
mgl@1371
 12614
+[0-9a-f]* <ldc_d2>:
mgl@1371
 12615
+ *[0-9a-f]*:	ef a0 00 50 	ldc\.d cp0,cr0,--r0
mgl@1371
 12616
+ *[0-9a-f]*:	ef af ee 50 	ldc\.d cp7,cr14,--pc
mgl@1371
 12617
+ *[0-9a-f]*:	ef a5 66 50 	ldc\.d cp3,cr6,--r5
mgl@1371
 12618
+ *[0-9a-f]*:	ef a4 44 50 	ldc\.d cp2,cr4,--r4
mgl@1371
 12619
+ *[0-9a-f]*:	ef ad 88 50 	ldc\.d cp4,cr8,--sp
mgl@1371
 12620
+
mgl@1371
 12621
+[0-9a-f]* <ldc_d3>:
mgl@1371
 12622
+ *[0-9a-f]*:	ef a0 10 40 	ldc\.d cp0,cr0,r0\[r0\]
mgl@1371
 12623
+ *[0-9a-f]*:	ef af fe 7f 	ldc\.d cp7,cr14,pc\[pc<<0x3\]
mgl@1371
 12624
+ *[0-9a-f]*:	ef a5 76 64 	ldc\.d cp3,cr6,r5\[r4<<0x2\]
mgl@1371
 12625
+ *[0-9a-f]*:	ef a4 54 53 	ldc\.d cp2,cr4,r4\[r3<<0x1\]
mgl@1371
 12626
+ *[0-9a-f]*:	ef ad 98 4c 	ldc\.d cp4,cr8,sp\[r12\]
mgl@1371
 12627
+
mgl@1371
 12628
+[0-9a-f]* <stc_w1>:
mgl@1371
 12629
+ *[0-9a-f]*:	eb a0 00 00 	stc\.w cp0,r0\[0x0\],cr0
mgl@1371
 12630
+ *[0-9a-f]*:	eb af ef ff 	stc\.w cp7,pc\[0x3fc\],cr15
mgl@1371
 12631
+ *[0-9a-f]*:	eb a5 65 80 	stc\.w cp3,r5\[0x200\],cr5
mgl@1371
 12632
+ *[0-9a-f]*:	eb a4 44 7f 	stc\.w cp2,r4\[0x1fc\],cr4
mgl@1371
 12633
+ *[0-9a-f]*:	eb ad 89 24 	stc\.w cp4,sp\[0x90\],cr9
mgl@1371
 12634
+
mgl@1371
 12635
+[0-9a-f]* <stc_w2>:
mgl@1371
 12636
+ *[0-9a-f]*:	ef a0 00 60 	stc\.w cp0,r0\+\+,cr0
mgl@1371
 12637
+ *[0-9a-f]*:	ef af ef 60 	stc\.w cp7,pc\+\+,cr15
mgl@1371
 12638
+ *[0-9a-f]*:	ef a5 65 60 	stc\.w cp3,r5\+\+,cr5
mgl@1371
 12639
+ *[0-9a-f]*:	ef a4 44 60 	stc\.w cp2,r4\+\+,cr4
mgl@1371
 12640
+ *[0-9a-f]*:	ef ad 89 60 	stc\.w cp4,sp\+\+,cr9
mgl@1371
 12641
+
mgl@1371
 12642
+[0-9a-f]* <stc_w3>:
mgl@1371
 12643
+ *[0-9a-f]*:	ef a0 10 80 	stc\.w cp0,r0\[r0\],cr0
mgl@1371
 12644
+ *[0-9a-f]*:	ef af ff bf 	stc\.w cp7,pc\[pc<<0x3\],cr15
mgl@1371
 12645
+ *[0-9a-f]*:	ef a5 75 a4 	stc\.w cp3,r5\[r4<<0x2\],cr5
mgl@1371
 12646
+ *[0-9a-f]*:	ef a4 54 93 	stc\.w cp2,r4\[r3<<0x1\],cr4
mgl@1371
 12647
+ *[0-9a-f]*:	ef ad 99 8c 	stc\.w cp4,sp\[r12\],cr9
mgl@1371
 12648
+
mgl@1371
 12649
+[0-9a-f]* <stc_d1>:
mgl@1371
 12650
+ *[0-9a-f]*:	eb a0 10 00 	stc\.d cp0,r0\[0x0\],cr0
mgl@1371
 12651
+ *[0-9a-f]*:	eb af fe ff 	stc\.d cp7,pc\[0x3fc\],cr14
mgl@1371
 12652
+ *[0-9a-f]*:	eb a5 76 80 	stc\.d cp3,r5\[0x200\],cr6
mgl@1371
 12653
+ *[0-9a-f]*:	eb a4 54 7f 	stc\.d cp2,r4\[0x1fc\],cr4
mgl@1371
 12654
+ *[0-9a-f]*:	eb ad 98 24 	stc\.d cp4,sp\[0x90\],cr8
mgl@1371
 12655
+
mgl@1371
 12656
+[0-9a-f]* <stc_d2>:
mgl@1371
 12657
+ *[0-9a-f]*:	ef a0 00 70 	stc\.d cp0,r0\+\+,cr0
mgl@1371
 12658
+ *[0-9a-f]*:	ef af ee 70 	stc\.d cp7,pc\+\+,cr14
mgl@1371
 12659
+ *[0-9a-f]*:	ef a5 66 70 	stc\.d cp3,r5\+\+,cr6
mgl@1371
 12660
+ *[0-9a-f]*:	ef a4 44 70 	stc\.d cp2,r4\+\+,cr4
mgl@1371
 12661
+ *[0-9a-f]*:	ef ad 88 70 	stc\.d cp4,sp\+\+,cr8
mgl@1371
 12662
+
mgl@1371
 12663
+[0-9a-f]* <stc_d3>:
mgl@1371
 12664
+ *[0-9a-f]*:	ef a0 10 c0 	stc\.d cp0,r0\[r0\],cr0
mgl@1371
 12665
+ *[0-9a-f]*:	ef af fe ff 	stc\.d cp7,pc\[pc<<0x3\],cr14
mgl@1371
 12666
+ *[0-9a-f]*:	ef a5 76 e4 	stc\.d cp3,r5\[r4<<0x2\],cr6
mgl@1371
 12667
+ *[0-9a-f]*:	ef a4 54 d3 	stc\.d cp2,r4\[r3<<0x1\],cr4
mgl@1371
 12668
+ *[0-9a-f]*:	ef ad 98 cc 	stc\.d cp4,sp\[r12\],cr8
mgl@1371
 12669
+
mgl@1371
 12670
+[0-9a-f]* <ldc0_w>:
mgl@1371
 12671
+ *[0-9a-f]*:	f1 a0 00 00 	ldc0\.w cr0,r0\[0x0\]
mgl@1371
 12672
+ *[0-9a-f]*:	f1 af ff ff 	ldc0\.w cr15,pc\[0x3ffc\]
mgl@1371
 12673
+ *[0-9a-f]*:	f1 a5 85 00 	ldc0\.w cr5,r5\[0x2000\]
mgl@1371
 12674
+ *[0-9a-f]*:	f1 a4 74 ff 	ldc0\.w cr4,r4\[0x1ffc\]
mgl@1371
 12675
+ *[0-9a-f]*:	f1 ad 09 93 	ldc0\.w cr9,sp\[0x24c\]
mgl@1371
 12676
+
mgl@1371
 12677
+[0-9a-f]* <ldc0_d>:
mgl@1371
 12678
+ *[0-9a-f]*:	f3 a0 00 00 	ldc0\.d cr0,r0\[0x0\]
mgl@1371
 12679
+ *[0-9a-f]*:	f3 af fe ff 	ldc0\.d cr14,pc\[0x3ffc\]
mgl@1371
 12680
+ *[0-9a-f]*:	f3 a5 86 00 	ldc0\.d cr6,r5\[0x2000\]
mgl@1371
 12681
+ *[0-9a-f]*:	f3 a4 74 ff 	ldc0\.d cr4,r4\[0x1ffc\]
mgl@1371
 12682
+ *[0-9a-f]*:	f3 ad 08 93 	ldc0\.d cr8,sp\[0x24c\]
mgl@1371
 12683
+
mgl@1371
 12684
+[0-9a-f]* <stc0_w>:
mgl@1371
 12685
+ *[0-9a-f]*:	f5 a0 00 00 	stc0\.w r0\[0x0\],cr0
mgl@1371
 12686
+ *[0-9a-f]*:	f5 af ff ff 	stc0\.w pc\[0x3ffc\],cr15
mgl@1371
 12687
+ *[0-9a-f]*:	f5 a5 85 00 	stc0\.w r5\[0x2000\],cr5
mgl@1371
 12688
+ *[0-9a-f]*:	f5 a4 74 ff 	stc0\.w r4\[0x1ffc\],cr4
mgl@1371
 12689
+ *[0-9a-f]*:	f5 ad 09 93 	stc0\.w sp\[0x24c\],cr9
mgl@1371
 12690
+
mgl@1371
 12691
+[0-9a-f]* <stc0_d>:
mgl@1371
 12692
+ *[0-9a-f]*:	f7 a0 00 00 	stc0\.d r0\[0x0\],cr0
mgl@1371
 12693
+ *[0-9a-f]*:	f7 af fe ff 	stc0\.d pc\[0x3ffc\],cr14
mgl@1371
 12694
+ *[0-9a-f]*:	f7 a5 86 00 	stc0\.d r5\[0x2000\],cr6
mgl@1371
 12695
+ *[0-9a-f]*:	f7 a4 74 ff 	stc0\.d r4\[0x1ffc\],cr4
mgl@1371
 12696
+ *[0-9a-f]*:	f7 ad 08 93 	stc0\.d sp\[0x24c\],cr8
mgl@1371
 12697
+
mgl@1371
 12698
+[0-9a-f]* <memc>:
mgl@1371
 12699
+ *[0-9a-f]*:	f6 10 00 00 	memc 0,0x0
mgl@1371
 12700
+ *[0-9a-f]*:	f6 1f ff ff 	memc -4,0x1f
mgl@1371
 12701
+ *[0-9a-f]*:	f6 18 40 00 	memc -65536,0x10
mgl@1371
 12702
+ *[0-9a-f]*:	f6 17 bf ff 	memc 65532,0xf
mgl@1371
 12703
+
mgl@1371
 12704
+[0-9a-f]* <mems>:
mgl@1371
 12705
+ *[0-9a-f]*:	f8 10 00 00 	mems 0,0x0
mgl@1371
 12706
+ *[0-9a-f]*:	f8 1f ff ff 	mems -4,0x1f
mgl@1371
 12707
+ *[0-9a-f]*:	f8 18 40 00 	mems -65536,0x10
mgl@1371
 12708
+ *[0-9a-f]*:	f8 17 bf ff 	mems 65532,0xf
mgl@1371
 12709
+
mgl@1371
 12710
+[0-9a-f]* <memt>:
mgl@1371
 12711
+ *[0-9a-f]*:	fa 10 00 00 	memt 0,0x0
mgl@1371
 12712
+ *[0-9a-f]*:	fa 1f ff ff 	memt -4,0x1f
mgl@1371
 12713
+ *[0-9a-f]*:	fa 18 40 00 	memt -65536,0x10
mgl@1371
 12714
+ *[0-9a-f]*:	fa 17 bf ff 	memt 65532,0xf
mgl@1371
 12715
+
mgl@1371
 12716
+[0-9a-f]* <stcond>:
mgl@1371
 12717
+ *[0-9a-f]*:	e1 70 00 00 	stcond r0\[0\],r0
mgl@1371
 12718
+ *[0-9a-f]*:	ff 7f ff ff 	stcond pc\[-1\],pc
mgl@1371
 12719
+ *[0-9a-f]*:	f1 77 80 00 	stcond r8\[-32768\],r7
mgl@1371
 12720
+ *[0-9a-f]*:	ef 78 7f ff 	stcond r7\[32767\],r8
mgl@1371
 12721
+ *[0-9a-f]*:	eb 7a 12 34 	stcond r5\[4660\],r10
mgl@1371
 12722
+
mgl@1371
 12723
+[0-9a-f]* <ldcm_w>:
mgl@1371
 12724
+ *[0-9a-f]*:	ed af 00 ff 	ldcm\.w cp0,pc,cr0-cr7
mgl@1371
 12725
+ *[0-9a-f]*:	ed a0 e0 01 	ldcm\.w cp7,r0,cr0
mgl@1371
 12726
+ *[0-9a-f]*:	ed a4 90 7f 	ldcm\.w cp4,r4\+\+,cr0-cr6
mgl@1371
 12727
+ *[0-9a-f]*:	ed a7 60 80 	ldcm\.w cp3,r7,cr7
mgl@1371
 12728
+ *[0-9a-f]*:	ed ac 30 72 	ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
mgl@1371
 12729
+ *[0-9a-f]*:	ed af 01 ff 	ldcm\.w cp0,pc,cr8-cr15
mgl@1371
 12730
+ *[0-9a-f]*:	ed a0 e1 01 	ldcm\.w cp7,r0,cr8
mgl@1371
 12731
+ *[0-9a-f]*:	ed a4 91 7f 	ldcm\.w cp4,r4\+\+,cr8-cr14
mgl@1371
 12732
+ *[0-9a-f]*:	ed a7 61 80 	ldcm\.w cp3,r7,cr15
mgl@1371
 12733
+ *[0-9a-f]*:	ed ac 31 72 	ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
mgl@1371
 12734
+
mgl@1371
 12735
+[0-9a-f]* <ldcm_d>:
mgl@1371
 12736
+ *[0-9a-f]*:	ed af 04 ff 	ldcm\.d cp0,pc,cr0-cr15
mgl@1371
 12737
+ *[0-9a-f]*:	ed a0 e4 01 	ldcm\.d cp7,r0,cr0-cr1
mgl@1371
 12738
+ *[0-9a-f]*:	ed a4 94 7f 	ldcm\.d cp4,r4\+\+,cr0-cr13
mgl@1371
 12739
+ *[0-9a-f]*:	ed a7 64 80 	ldcm\.d cp3,r7,cr14-cr15
mgl@1371
 12740
+ *[0-9a-f]*:	ed ac 54 93 	ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
mgl@1371
 12741
+
mgl@1371
 12742
+[0-9a-f]* <stcm_w>:
mgl@1371
 12743
+ *[0-9a-f]*:	ed af 02 ff 	stcm\.w cp0,pc,cr0-cr7
mgl@1371
 12744
+ *[0-9a-f]*:	ed a0 e2 01 	stcm\.w cp7,r0,cr0
mgl@1371
 12745
+ *[0-9a-f]*:	ed a4 92 7f 	stcm\.w cp4,--r4,cr0-cr6
mgl@1371
 12746
+ *[0-9a-f]*:	ed a7 62 80 	stcm\.w cp3,r7,cr7
mgl@1371
 12747
+ *[0-9a-f]*:	ed ac 32 72 	stcm\.w cp1,--r12,cr1,cr4-cr6
mgl@1371
 12748
+ *[0-9a-f]*:	ed af 03 ff 	stcm\.w cp0,pc,cr8-cr15
mgl@1371
 12749
+ *[0-9a-f]*:	ed a0 e3 01 	stcm\.w cp7,r0,cr8
mgl@1371
 12750
+ *[0-9a-f]*:	ed a4 93 7f 	stcm\.w cp4,--r4,cr8-cr14
mgl@1371
 12751
+ *[0-9a-f]*:	ed a7 63 80 	stcm\.w cp3,r7,cr15
mgl@1371
 12752
+ *[0-9a-f]*:	ed ac 33 72 	stcm\.w cp1,--r12,cr9,cr12-cr14
mgl@1371
 12753
+
mgl@1371
 12754
+[0-9a-f]* <stcm_d>:
mgl@1371
 12755
+ *[0-9a-f]*:	ed af 05 ff 	stcm\.d cp0,pc,cr0-cr15
mgl@1371
 12756
+ *[0-9a-f]*:	ed a0 e5 01 	stcm\.d cp7,r0,cr0-cr1
mgl@1371
 12757
+ *[0-9a-f]*:	ed a4 95 7f 	stcm\.d cp4,--r4,cr0-cr13
mgl@1371
 12758
+ *[0-9a-f]*:	ed a7 65 80 	stcm\.d cp3,r7,cr14-cr15
mgl@1371
 12759
+ *[0-9a-f]*:	ed ac 55 93 	stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
mgl@1371
 12760
+
mgl@1371
 12761
+[0-9a-f]* <mvcr_w>:
mgl@1371
 12762
+ *[0-9a-f]*:	ef af ef 00 	mvcr\.w cp7,pc,cr15
mgl@1371
 12763
+ *[0-9a-f]*:	ef a0 00 00 	mvcr\.w cp0,r0,cr0
mgl@1371
 12764
+ *[0-9a-f]*:	ef af 0f 00 	mvcr\.w cp0,pc,cr15
mgl@1371
 12765
+ *[0-9a-f]*:	ef a0 ef 00 	mvcr\.w cp7,r0,cr15
mgl@1371
 12766
+ *[0-9a-f]*:	ef af e0 00 	mvcr\.w cp7,pc,cr0
mgl@1371
 12767
+ *[0-9a-f]*:	ef a7 88 00 	mvcr\.w cp4,r7,cr8
mgl@1371
 12768
+ *[0-9a-f]*:	ef a8 67 00 	mvcr\.w cp3,r8,cr7
mgl@1371
 12769
+
mgl@1371
 12770
+[0-9a-f]* <mvcr_d>:
mgl@1371
 12771
+ *[0-9a-f]*:	ef ae ee 10 	mvcr\.d cp7,lr,cr14
mgl@1371
 12772
+ *[0-9a-f]*:	ef a0 00 10 	mvcr\.d cp0,r0,cr0
mgl@1371
 12773
+ *[0-9a-f]*:	ef ae 0e 10 	mvcr\.d cp0,lr,cr14
mgl@1371
 12774
+ *[0-9a-f]*:	ef a0 ee 10 	mvcr\.d cp7,r0,cr14
mgl@1371
 12775
+ *[0-9a-f]*:	ef ae e0 10 	mvcr\.d cp7,lr,cr0
mgl@1371
 12776
+ *[0-9a-f]*:	ef a6 88 10 	mvcr\.d cp4,r6,cr8
mgl@1371
 12777
+ *[0-9a-f]*:	ef a8 66 10 	mvcr\.d cp3,r8,cr6
mgl@1371
 12778
+
mgl@1371
 12779
+[0-9a-f]* <mvrc_w>:
mgl@1371
 12780
+ *[0-9a-f]*:	ef af ef 20 	mvrc\.w cp7,cr15,pc
mgl@1371
 12781
+ *[0-9a-f]*:	ef a0 00 20 	mvrc\.w cp0,cr0,r0
mgl@1371
 12782
+ *[0-9a-f]*:	ef af 0f 20 	mvrc\.w cp0,cr15,pc
mgl@1371
 12783
+ *[0-9a-f]*:	ef a0 ef 20 	mvrc\.w cp7,cr15,r0
mgl@1371
 12784
+ *[0-9a-f]*:	ef af e0 20 	mvrc\.w cp7,cr0,pc
mgl@1371
 12785
+ *[0-9a-f]*:	ef a7 88 20 	mvrc\.w cp4,cr8,r7
mgl@1371
 12786
+ *[0-9a-f]*:	ef a8 67 20 	mvrc\.w cp3,cr7,r8
mgl@1371
 12787
+
mgl@1371
 12788
+[0-9a-f]* <mvrc_d>:
mgl@1371
 12789
+ *[0-9a-f]*:	ef ae ee 30 	mvrc\.d cp7,cr14,lr
mgl@1371
 12790
+ *[0-9a-f]*:	ef a0 00 30 	mvrc\.d cp0,cr0,r0
mgl@1371
 12791
+ *[0-9a-f]*:	ef ae 0e 30 	mvrc\.d cp0,cr14,lr
mgl@1371
 12792
+ *[0-9a-f]*:	ef a0 ee 30 	mvrc\.d cp7,cr14,r0
mgl@1371
 12793
+ *[0-9a-f]*:	ef ae e0 30 	mvrc\.d cp7,cr0,lr
mgl@1371
 12794
+ *[0-9a-f]*:	ef a6 88 30 	mvrc\.d cp4,cr8,r6
mgl@1371
 12795
+ *[0-9a-f]*:	ef a8 66 30 	mvrc\.d cp3,cr6,r8
mgl@1371
 12796
+
mgl@1371
 12797
+[0-9a-f]* <bfexts>:
mgl@1371
 12798
+ *[0-9a-f]*:	ff df b3 ff 	bfexts pc,pc,0x1f,0x1f
mgl@1371
 12799
+ *[0-9a-f]*:	e1 d0 b0 00 	bfexts r0,r0,0x0,0x0
mgl@1371
 12800
+ *[0-9a-f]*:	e1 df b3 ff 	bfexts r0,pc,0x1f,0x1f
mgl@1371
 12801
+ *[0-9a-f]*:	ff d0 b3 ff 	bfexts pc,r0,0x1f,0x1f
mgl@1371
 12802
+ *[0-9a-f]*:	ff df b0 1f 	bfexts pc,pc,0x0,0x1f
mgl@1371
 12803
+ *[0-9a-f]*:	ff df b3 e0 	bfexts pc,pc,0x1f,0x0
mgl@1371
 12804
+ *[0-9a-f]*:	ef d8 b1 f0 	bfexts r7,r8,0xf,0x10
mgl@1371
 12805
+ *[0-9a-f]*:	f1 d7 b2 0f 	bfexts r8,r7,0x10,0xf
mgl@1371
 12806
+
mgl@1371
 12807
+[0-9a-f]* <bfextu>:
mgl@1371
 12808
+ *[0-9a-f]*:	ff df c3 ff 	bfextu pc,pc,0x1f,0x1f
mgl@1371
 12809
+ *[0-9a-f]*:	e1 d0 c0 00 	bfextu r0,r0,0x0,0x0
mgl@1371
 12810
+ *[0-9a-f]*:	e1 df c3 ff 	bfextu r0,pc,0x1f,0x1f
mgl@1371
 12811
+ *[0-9a-f]*:	ff d0 c3 ff 	bfextu pc,r0,0x1f,0x1f
mgl@1371
 12812
+ *[0-9a-f]*:	ff df c0 1f 	bfextu pc,pc,0x0,0x1f
mgl@1371
 12813
+ *[0-9a-f]*:	ff df c3 e0 	bfextu pc,pc,0x1f,0x0
mgl@1371
 12814
+ *[0-9a-f]*:	ef d8 c1 f0 	bfextu r7,r8,0xf,0x10
mgl@1371
 12815
+ *[0-9a-f]*:	f1 d7 c2 0f 	bfextu r8,r7,0x10,0xf
mgl@1371
 12816
+
mgl@1371
 12817
+[0-9a-f]* <bfins>:
mgl@1371
 12818
+ *[0-9a-f]*:	ff df d3 ff 	bfins pc,pc,0x1f,0x1f
mgl@1371
 12819
+ *[0-9a-f]*:	e1 d0 d0 00 	bfins r0,r0,0x0,0x0
mgl@1371
 12820
+ *[0-9a-f]*:	e1 df d3 ff 	bfins r0,pc,0x1f,0x1f
mgl@1371
 12821
+ *[0-9a-f]*:	ff d0 d3 ff 	bfins pc,r0,0x1f,0x1f
mgl@1371
 12822
+ *[0-9a-f]*:	ff df d0 1f 	bfins pc,pc,0x0,0x1f
mgl@1371
 12823
+ *[0-9a-f]*:	ff df d3 e0 	bfins pc,pc,0x1f,0x0
mgl@1371
 12824
+ *[0-9a-f]*:	ef d8 d1 f0 	bfins r7,r8,0xf,0x10
mgl@1371
 12825
+ *[0-9a-f]*:	f1 d7 d2 0f 	bfins r8,r7,0x10,0xf
mgl@1371
 12826
+
mgl@1371
 12827
+[0-9a-f]* <rsubc>:
mgl@1371
 12828
+ *[0-9a-f]*:	fb bf 00 00 	rsubeq pc,0
mgl@1371
 12829
+ *[0-9a-f]*:	fb bc 0f ff 	rsubal r12,-1
mgl@1371
 12830
+ *[0-9a-f]*:	fb b5 08 80 	rsubls r5,-128
mgl@1371
 12831
+ *[0-9a-f]*:	fb b4 07 7f 	rsubpl r4,127
mgl@1371
 12832
+ *[0-9a-f]*:	fb be 01 01 	rsubne lr,1
mgl@1371
 12833
+ *[0-9a-f]*:	fb bc 08 76 	rsubls r12,118
mgl@1371
 12834
+ *[0-9a-f]*:	fb be 0d f4 	rsubvc lr,-12
mgl@1371
 12835
+ *[0-9a-f]*:	fb b4 06 f3 	rsubmi r4,-13
mgl@1371
 12836
+
mgl@1371
 12837
+[0-9a-f]* <addc>:
mgl@1371
 12838
+ *[0-9a-f]*:	ff df e0 0f 	addeq pc,pc,pc
mgl@1371
 12839
+ *[0-9a-f]*:	f9 dc ef 0c 	addal r12,r12,r12
mgl@1371
 12840
+ *[0-9a-f]*:	eb d5 e8 05 	addls r5,r5,r5
mgl@1371
 12841
+ *[0-9a-f]*:	e9 d4 e7 04 	addpl r4,r4,r4   
mgl@1371
 12842
+ *[0-9a-f]*:	fd de e1 0e 	addne lr,lr,lr
mgl@1371
 12843
+ *[0-9a-f]*:	e5 d1 e8 0a 	addls r10,r2,r1
mgl@1371
 12844
+ *[0-9a-f]*:	f1 db ed 0c 	addvc r12,r8,r11
mgl@1371
 12845
+ *[0-9a-f]*:	ef d0 e6 0a 	addmi r10,r7,r0
mgl@1371
 12846
+
mgl@1371
 12847
+[0-9a-f]* <subc2>:
mgl@1371
 12848
+ *[0-9a-f]*:	ff df e0 1f 	subeq pc,pc,pc
mgl@1371
 12849
+ *[0-9a-f]*:	f9 dc ef 1c 	subal r12,r12,r12
mgl@1371
 12850
+ *[0-9a-f]*:	eb d5 e8 15 	subls r5,r5,r5
mgl@1371
 12851
+ *[0-9a-f]*:	e9 d4 e7 14 	subpl r4,r4,r4   
mgl@1371
 12852
+ *[0-9a-f]*:	fd de e1 1e 	subne lr,lr,lr
mgl@1371
 12853
+ *[0-9a-f]*:	e5 d1 e8 1a 	subls r10,r2,r1
mgl@1371
 12854
+ *[0-9a-f]*:	f1 db ed 1c 	subvc r12,r8,r11
mgl@1371
 12855
+ *[0-9a-f]*:	ef d0 e6 1a 	submi r10,r7,r0
mgl@1371
 12856
+
mgl@1371
 12857
+[0-9a-f]* <andc>:
mgl@1371
 12858
+ *[0-9a-f]*:	ff df e0 2f 	andeq pc,pc,pc
mgl@1371
 12859
+ *[0-9a-f]*:	f9 dc ef 2c 	andal r12,r12,r12
mgl@1371
 12860
+ *[0-9a-f]*:	eb d5 e8 25 	andls r5,r5,r5
mgl@1371
 12861
+ *[0-9a-f]*:	e9 d4 e7 24 	andpl r4,r4,r4   
mgl@1371
 12862
+ *[0-9a-f]*:	fd de e1 2e 	andne lr,lr,lr
mgl@1371
 12863
+ *[0-9a-f]*:	e5 d1 e8 2a 	andls r10,r2,r1
mgl@1371
 12864
+ *[0-9a-f]*:	f1 db ed 2c 	andvc r12,r8,r11
mgl@1371
 12865
+ *[0-9a-f]*:	ef d0 e6 2a 	andmi r10,r7,r0
mgl@1371
 12866
+
mgl@1371
 12867
+[0-9a-f]* <orc>:
mgl@1371
 12868
+ *[0-9a-f]*:	ff df e0 3f 	oreq pc,pc,pc
mgl@1371
 12869
+ *[0-9a-f]*:	f9 dc ef 3c 	oral r12,r12,r12
mgl@1371
 12870
+ *[0-9a-f]*:	eb d5 e8 35 	orls r5,r5,r5
mgl@1371
 12871
+ *[0-9a-f]*:	e9 d4 e7 34 	orpl r4,r4,r4   
mgl@1371
 12872
+ *[0-9a-f]*:	fd de e1 3e 	orne lr,lr,lr
mgl@1371
 12873
+ *[0-9a-f]*:	e5 d1 e8 3a 	orls r10,r2,r1
mgl@1371
 12874
+ *[0-9a-f]*:	f1 db ed 3c 	orvc r12,r8,r11
mgl@1371
 12875
+ *[0-9a-f]*:	ef d0 e6 3a 	ormi r10,r7,r0
mgl@1371
 12876
+
mgl@1371
 12877
+[0-9a-f]* <eorc>:
mgl@1371
 12878
+ *[0-9a-f]*:	ff df e0 4f 	eoreq pc,pc,pc
mgl@1371
 12879
+ *[0-9a-f]*:	f9 dc ef 4c 	eoral r12,r12,r12
mgl@1371
 12880
+ *[0-9a-f]*:	eb d5 e8 45 	eorls r5,r5,r5
mgl@1371
 12881
+ *[0-9a-f]*:	e9 d4 e7 44 	eorpl r4,r4,r4   
mgl@1371
 12882
+ *[0-9a-f]*:	fd de e1 4e 	eorne lr,lr,lr
mgl@1371
 12883
+ *[0-9a-f]*:	e5 d1 e8 4a 	eorls r10,r2,r1
mgl@1371
 12884
+ *[0-9a-f]*:	f1 db ed 4c 	eorvc r12,r8,r11
mgl@1371
 12885
+ *[0-9a-f]*:	ef d0 e6 4a 	eormi r10,r7,r0
mgl@1371
 12886
+
mgl@1371
 12887
+[0-9a-f]* <ldcond>:
mgl@1371
 12888
+ *[0-9a-f]*:	ff ff 01 ff     ld.weq  pc,pc[0x7fc]
mgl@1371
 12889
+ *[0-9a-f]*:	f9 fc f3 ff     ld.shal r12,r12[0x3fe]
mgl@1371
 12890
+ *[0-9a-f]*:	eb f5 84 00     ld.shls r5,r5[0x0]
mgl@1371
 12891
+ *[0-9a-f]*:	e9 f4 79 ff     ld.ubpl r4,r4[0x1ff]
mgl@1371
 12892
+ *[0-9a-f]*:	fd fe 16 00     ld.sbne lr,lr[0x0]
mgl@1371
 12893
+ *[0-9a-f]*:	e5 fa 80 00     ld.wls  r10,r2[0x0]
mgl@1371
 12894
+ *[0-9a-f]*:	f1 fc d3 ff     ld.shvc r12,r8[0x3fe]
mgl@1371
 12895
+ *[0-9a-f]*:	ef fa 68 01     ld.ubmi r10,r7[0x1]
mgl@1371
 12896
+
mgl@1371
 12897
+[0-9a-f]* <stcond2>:
mgl@1371
 12898
+ *[0-9a-f]*:	ff ff 0b ff     st.weq pc[0x7fc],pc
mgl@1371
 12899
+ *[0-9a-f]*:	f9 fc fd ff     st.hal r12[0x3fe],r12
mgl@1371
 12900
+ *[0-9a-f]*:	eb f5 8c 00     st.hls r5[0x0],r5
mgl@1371
 12901
+ *[0-9a-f]*:	e9 f4 7f ff     st.bpl r4[0x1ff],r4
mgl@1371
 12902
+ *[0-9a-f]*:	fd fe 1e 00     st.bne lr[0x0],lr
mgl@1371
 12903
+ *[0-9a-f]*:	e5 fa 8a 00     st.wls r2[0x0],r10
mgl@1371
 12904
+ *[0-9a-f]*:	f1 fc dd ff     st.hvc r8[0x3fe],r12
mgl@1371
 12905
+ *[0-9a-f]*:	ef fa 6e 01     st.bmi r7[0x1],r10
mgl@1371
 12906
+
mgl@1371
 12907
+[0-9a-f]* <movh>:
mgl@1371
 12908
+ *[0-9a-f]*:	fc 1f ff ff     movh pc,0xffff
mgl@1371
 12909
+ *[0-9a-f]*:	fc 10 00 00     movh r0,0x0
mgl@1371
 12910
+ *[0-9a-f]*:	fc 15 00 01     movh r5,0x1
mgl@1371
 12911
+ *[0-9a-f]*:	fc 1c 7f ff     movh r12,0x7fff
mgl@1371
 12912
+
mgl@1371
 12913
--- /dev/null
mgl@1371
 12914
+++ b/gas/testsuite/gas/avr32/allinsn.exp
mgl@1371
 12915
@@ -0,0 +1,5 @@
mgl@1371
 12916
+# AVR32 assembler testsuite. -*- Tcl -*-
mgl@1371
 12917
+
mgl@1371
 12918
+if [istarget avr32-*-*] {
mgl@1371
 12919
+    run_dump_test "allinsn"
mgl@1371
 12920
+}
mgl@1371
 12921
--- /dev/null
mgl@1371
 12922
+++ b/gas/testsuite/gas/avr32/allinsn.s
mgl@1371
 12923
@@ -0,0 +1,3330 @@
mgl@1371
 12924
+ .data
mgl@1371
 12925
+foodata: .word 42
mgl@1371
 12926
+ .text
mgl@1371
 12927
+footext:
mgl@1371
 12928
+	.text
mgl@1371
 12929
+	.global ld_d5
mgl@1371
 12930
+ld_d5:
mgl@1371
 12931
+	ld.d lr,pc[pc<<3]
mgl@1371
 12932
+	ld.d r0,r0[r0<<0]
mgl@1371
 12933
+	ld.d r6,r5[r5<<2]
mgl@1371
 12934
+	ld.d r4,r4[r4<<1]
mgl@1371
 12935
+	ld.d lr,lr[lr<<1]
mgl@1371
 12936
+	ld.d r10,r3[sp<<2]
mgl@1371
 12937
+	ld.d r8,r10[r6<<2]
mgl@1371
 12938
+	ld.d r2,r7[r9<<0]
mgl@1371
 12939
+	.text
mgl@1371
 12940
+	.global ld_w5
mgl@1371
 12941
+ld_w5:
mgl@1371
 12942
+	ld.w pc,pc[pc<<0]
mgl@1371
 12943
+	ld.w r12,r12[r12<<3]
mgl@1371
 12944
+	ld.w r5,r5[r5<<2]
mgl@1371
 12945
+	ld.w r4,r4[r4<<1]
mgl@1371
 12946
+	ld.w lr,lr[lr<<1]
mgl@1371
 12947
+	ld.w r2,r9[r9<<0]
mgl@1371
 12948
+	ld.w r11,r2[r6<<0]
mgl@1371
 12949
+	ld.w r0,r2[sp<<3]
mgl@1371
 12950
+	.text
mgl@1371
 12951
+	.global ld_sh5
mgl@1371
 12952
+ld_sh5:
mgl@1371
 12953
+	ld.sh pc,pc[pc<<0]
mgl@1371
 12954
+	ld.sh r12,r12[r12<<3]
mgl@1371
 12955
+	ld.sh r5,r5[r5<<2]
mgl@1371
 12956
+	ld.sh r4,r4[r4<<1]
mgl@1371
 12957
+	ld.sh lr,lr[lr<<1]
mgl@1371
 12958
+	ld.sh r11,r0[pc<<2]
mgl@1371
 12959
+	ld.sh r10,sp[r6<<2]
mgl@1371
 12960
+	ld.sh r12,r2[r2<<0]
mgl@1371
 12961
+	.text
mgl@1371
 12962
+	.global ld_uh5
mgl@1371
 12963
+ld_uh5:
mgl@1371
 12964
+	ld.uh pc,pc[pc<<0]
mgl@1371
 12965
+	ld.uh r12,r12[r12<<3]
mgl@1371
 12966
+	ld.uh r5,r5[r5<<2]
mgl@1371
 12967
+	ld.uh r4,r4[r4<<1]
mgl@1371
 12968
+	ld.uh lr,lr[lr<<1]
mgl@1371
 12969
+	ld.uh r8,pc[lr<<3]
mgl@1371
 12970
+	ld.uh r6,r1[pc<<1]
mgl@1371
 12971
+	ld.uh r6,lr[sp<<1]
mgl@1371
 12972
+	.text
mgl@1371
 12973
+	.global ld_sb2
mgl@1371
 12974
+ld_sb2:
mgl@1371
 12975
+	ld.sb pc,pc[pc<<0]
mgl@1371
 12976
+	ld.sb r12,r12[r12<<3]
mgl@1371
 12977
+	ld.sb r5,r5[r5<<2]
mgl@1371
 12978
+	ld.sb r4,r4[r4<<1]
mgl@1371
 12979
+	ld.sb lr,lr[lr<<1]
mgl@1371
 12980
+	ld.sb r9,r1[pc<<3]
mgl@1371
 12981
+	ld.sb r0,r3[r11<<1]
mgl@1371
 12982
+	ld.sb r10,r5[r5<<1]
mgl@1371
 12983
+	.text
mgl@1371
 12984
+	.global ld_ub5
mgl@1371
 12985
+ld_ub5:
mgl@1371
 12986
+	ld.ub pc,pc[pc<<0]
mgl@1371
 12987
+	ld.ub r12,r12[r12<<3]
mgl@1371
 12988
+	ld.ub r5,r5[r5<<2]
mgl@1371
 12989
+	ld.ub r4,r4[r4<<1]
mgl@1371
 12990
+	ld.ub lr,lr[lr<<1]
mgl@1371
 12991
+	ld.ub r6,r12[r7<<3]
mgl@1371
 12992
+	ld.ub r2,r6[r12<<0]
mgl@1371
 12993
+	ld.ub r0,r7[r11<<1]
mgl@1371
 12994
+	.text
mgl@1371
 12995
+	.global st_d5
mgl@1371
 12996
+st_d5:
mgl@1371
 12997
+	st.d pc[pc<<0],r14
mgl@1371
 12998
+	st.d r12[r12<<3],r12
mgl@1371
 12999
+	st.d r5[r5<<2],r6
mgl@1371
 13000
+	st.d r4[r4<<1],r4
mgl@1371
 13001
+	st.d lr[lr<<1],lr
mgl@1371
 13002
+	st.d r1[r9<<1],r4
mgl@1371
 13003
+	st.d r10[r2<<1],r4
mgl@1371
 13004
+	st.d r12[r6<<0],lr
mgl@1371
 13005
+	.text
mgl@1371
 13006
+	.global st_w5
mgl@1371
 13007
+st_w5:
mgl@1371
 13008
+	st.w pc[pc<<0],pc
mgl@1371
 13009
+	st.w r12[r12<<3],r12
mgl@1371
 13010
+	st.w r5[r5<<2],r5
mgl@1371
 13011
+	st.w r4[r4<<1],r4
mgl@1371
 13012
+	st.w lr[lr<<1],lr
mgl@1371
 13013
+	st.w r1[r10<<0],r3
mgl@1371
 13014
+	st.w r0[r10<<1],r9
mgl@1371
 13015
+	st.w r4[r5<<3],pc
mgl@1371
 13016
+	.text
mgl@1371
 13017
+	.global st_h5
mgl@1371
 13018
+st_h5:
mgl@1371
 13019
+	st.h pc[pc<<0],pc
mgl@1371
 13020
+	st.h r12[r12<<3],r12
mgl@1371
 13021
+	st.h r5[r5<<2],r5
mgl@1371
 13022
+	st.h r4[r4<<1],r4
mgl@1371
 13023
+	st.h lr[lr<<1],lr
mgl@1371
 13024
+	st.h r2[r9<<0],r11
mgl@1371
 13025
+	st.h r5[r1<<2],r12
mgl@1371
 13026
+	st.h pc[r8<<2],r3
mgl@1371
 13027
+	.text
mgl@1371
 13028
+	.global st_b5
mgl@1371
 13029
+st_b5:
mgl@1371
 13030
+	st.b pc[pc<<0],pc
mgl@1371
 13031
+	st.b r12[r12<<3],r12
mgl@1371
 13032
+	st.b r5[r5<<2],r5
mgl@1371
 13033
+	st.b r4[r4<<1],r4
mgl@1371
 13034
+	st.b lr[lr<<1],lr
mgl@1371
 13035
+	st.b r1[r8<<1],r6
mgl@1371
 13036
+	st.b lr[lr<<3],r1
mgl@1371
 13037
+	st.b r5[r0<<2],pc
mgl@1371
 13038
+	.text
mgl@1371
 13039
+	.global divs
mgl@1371
 13040
+divs:
mgl@1371
 13041
+	divs pc,pc,pc
mgl@1371
 13042
+	divs r12,r12,r12
mgl@1371
 13043
+	divs r5,r5,r5
mgl@1371
 13044
+	divs r4,r4,r4
mgl@1371
 13045
+	divs lr,lr,lr
mgl@1371
 13046
+	divs r3,pc,pc
mgl@1371
 13047
+	divs r9,r12,r2
mgl@1371
 13048
+	divs r7,r4,r1
mgl@1371
 13049
+	.text
mgl@1371
 13050
+	.global add1
mgl@1371
 13051
+add1:
mgl@1371
 13052
+	add pc,pc
mgl@1371
 13053
+	add r12,r12
mgl@1371
 13054
+	add r5,r5
mgl@1371
 13055
+	add r4,r4
mgl@1371
 13056
+	add lr,lr
mgl@1371
 13057
+	add r12,r9
mgl@1371
 13058
+	add r6,r3
mgl@1371
 13059
+	add r10,r12
mgl@1371
 13060
+	.text
mgl@1371
 13061
+	.global sub1
mgl@1371
 13062
+sub1:
mgl@1371
 13063
+	sub pc,pc
mgl@1371
 13064
+	sub r12,r12
mgl@1371
 13065
+	sub r5,r5
mgl@1371
 13066
+	sub r4,r4
mgl@1371
 13067
+	sub lr,lr
mgl@1371
 13068
+	sub lr,r6
mgl@1371
 13069
+	sub r0,sp
mgl@1371
 13070
+	sub r6,r12
mgl@1371
 13071
+	.text
mgl@1371
 13072
+	.global rsub1
mgl@1371
 13073
+rsub1:
mgl@1371
 13074
+	rsub pc,pc
mgl@1371
 13075
+	rsub r12,r12
mgl@1371
 13076
+	rsub r5,r5
mgl@1371
 13077
+	rsub r4,r4
mgl@1371
 13078
+	rsub lr,lr
mgl@1371
 13079
+	rsub r11,sp
mgl@1371
 13080
+	rsub r7,r4
mgl@1371
 13081
+	rsub r9,r1
mgl@1371
 13082
+	.text
mgl@1371
 13083
+	.global cp1
mgl@1371
 13084
+cp1:
mgl@1371
 13085
+	cp pc,pc
mgl@1371
 13086
+	cp r12,r12
mgl@1371
 13087
+	cp r5,r5
mgl@1371
 13088
+	cp r4,r4
mgl@1371
 13089
+	cp lr,lr
mgl@1371
 13090
+	cp r6,r2
mgl@1371
 13091
+	cp r0,r9
mgl@1371
 13092
+	cp r3,sp
mgl@1371
 13093
+	.text
mgl@1371
 13094
+	.global or1
mgl@1371
 13095
+or1:
mgl@1371
 13096
+	or pc,pc
mgl@1371
 13097
+	or r12,r12
mgl@1371
 13098
+	or r5,r5
mgl@1371
 13099
+	or r4,r4
mgl@1371
 13100
+	or lr,lr
mgl@1371
 13101
+	or r4,r9
mgl@1371
 13102
+	or r11,r4
mgl@1371
 13103
+	or r4,r0
mgl@1371
 13104
+	.text
mgl@1371
 13105
+	.global eor1
mgl@1371
 13106
+eor1:
mgl@1371
 13107
+	eor pc,pc
mgl@1371
 13108
+	eor r12,r12
mgl@1371
 13109
+	eor r5,r5
mgl@1371
 13110
+	eor r4,r4
mgl@1371
 13111
+	eor lr,lr
mgl@1371
 13112
+	eor r12,r11
mgl@1371
 13113
+	eor r0,r1
mgl@1371
 13114
+	eor r5,pc
mgl@1371
 13115
+	.text
mgl@1371
 13116
+	.global and1
mgl@1371
 13117
+and1:
mgl@1371
 13118
+	and pc,pc
mgl@1371
 13119
+	and r12,r12
mgl@1371
 13120
+	and r5,r5
mgl@1371
 13121
+	and r4,r4
mgl@1371
 13122
+	and lr,lr
mgl@1371
 13123
+	and r8,r1
mgl@1371
 13124
+	and r0,sp
mgl@1371
 13125
+	and r10,r5
mgl@1371
 13126
+	.text
mgl@1371
 13127
+	.global tst
mgl@1371
 13128
+tst:
mgl@1371
 13129
+	tst pc,pc
mgl@1371
 13130
+	tst r12,r12
mgl@1371
 13131
+	tst r5,r5
mgl@1371
 13132
+	tst r4,r4
mgl@1371
 13133
+	tst lr,lr
mgl@1371
 13134
+	tst r0,r12
mgl@1371
 13135
+	tst r10,r6
mgl@1371
 13136
+	tst sp,r4
mgl@1371
 13137
+	.text
mgl@1371
 13138
+	.global andn
mgl@1371
 13139
+andn:
mgl@1371
 13140
+	andn pc,pc
mgl@1371
 13141
+	andn r12,r12
mgl@1371
 13142
+	andn r5,r5
mgl@1371
 13143
+	andn r4,r4
mgl@1371
 13144
+	andn lr,lr
mgl@1371
 13145
+	andn r9,r12
mgl@1371
 13146
+	andn r11,sp
mgl@1371
 13147
+	andn r12,r5
mgl@1371
 13148
+	.text
mgl@1371
 13149
+	.global mov3
mgl@1371
 13150
+mov3:
mgl@1371
 13151
+	mov pc,pc
mgl@1371
 13152
+	mov r12,r12
mgl@1371
 13153
+	mov r5,r5
mgl@1371
 13154
+	mov r4,r4
mgl@1371
 13155
+	mov lr,lr
mgl@1371
 13156
+	mov r5,r9
mgl@1371
 13157
+	mov r11,r11
mgl@1371
 13158
+	mov r2,lr
mgl@1371
 13159
+	.text
mgl@1371
 13160
+	.global st_w1
mgl@1371
 13161
+st_w1:
mgl@1371
 13162
+	st.w pc++,pc
mgl@1371
 13163
+	st.w r12++,r12
mgl@1371
 13164
+	st.w r5++,r5
mgl@1371
 13165
+	st.w r4++,r4
mgl@1371
 13166
+	st.w lr++,lr
mgl@1371
 13167
+	st.w r1++,r11
mgl@1371
 13168
+	st.w sp++,r0
mgl@1371
 13169
+	st.w sp++,r1
mgl@1371
 13170
+	.text
mgl@1371
 13171
+	.global st_h1
mgl@1371
 13172
+st_h1:
mgl@1371
 13173
+	st.h pc++,pc
mgl@1371
 13174
+	st.h r12++,r12
mgl@1371
 13175
+	st.h r5++,r5
mgl@1371
 13176
+	st.h r4++,r4
mgl@1371
 13177
+	st.h lr++,lr
mgl@1371
 13178
+	st.h r12++,sp
mgl@1371
 13179
+	st.h r7++,lr
mgl@1371
 13180
+	st.h r7++,r4
mgl@1371
 13181
+	.text
mgl@1371
 13182
+	.global st_b1
mgl@1371
 13183
+st_b1:
mgl@1371
 13184
+	st.b pc++,pc
mgl@1371
 13185
+	st.b r12++,r12
mgl@1371
 13186
+	st.b r5++,r5
mgl@1371
 13187
+	st.b r4++,r4
mgl@1371
 13188
+	st.b lr++,lr
mgl@1371
 13189
+	st.b r9++,sp
mgl@1371
 13190
+	st.b r1++,sp
mgl@1371
 13191
+	st.b r0++,r4
mgl@1371
 13192
+	.text
mgl@1371
 13193
+	.global st_w2
mgl@1371
 13194
+st_w2:
mgl@1371
 13195
+	st.w --pc,pc
mgl@1371
 13196
+	st.w --r12,r12
mgl@1371
 13197
+	st.w --r5,r5
mgl@1371
 13198
+	st.w --r4,r4
mgl@1371
 13199
+	st.w --lr,lr
mgl@1371
 13200
+	st.w --r1,r7
mgl@1371
 13201
+	st.w --r3,r9
mgl@1371
 13202
+	st.w --r5,r5
mgl@1371
 13203
+	.text
mgl@1371
 13204
+	.global st_h2
mgl@1371
 13205
+st_h2:
mgl@1371
 13206
+	st.h --pc,pc
mgl@1371
 13207
+	st.h --r12,r12
mgl@1371
 13208
+	st.h --r5,r5
mgl@1371
 13209
+	st.h --r4,r4
mgl@1371
 13210
+	st.h --lr,lr
mgl@1371
 13211
+	st.h --r5,r7
mgl@1371
 13212
+	st.h --r8,r8
mgl@1371
 13213
+	st.h --r7,r2
mgl@1371
 13214
+	.text
mgl@1371
 13215
+	.global st_b2
mgl@1371
 13216
+st_b2:
mgl@1371
 13217
+	st.b --pc,pc
mgl@1371
 13218
+	st.b --r12,r12
mgl@1371
 13219
+	st.b --r5,r5
mgl@1371
 13220
+	st.b --r4,r4
mgl@1371
 13221
+	st.b --lr,lr
mgl@1371
 13222
+	st.b --sp,sp
mgl@1371
 13223
+	st.b --sp,r11
mgl@1371
 13224
+	st.b --r4,r5
mgl@1371
 13225
+	.text
mgl@1371
 13226
+	.global ld_w1
mgl@1371
 13227
+ld_w1:
mgl@1371
 13228
+	ld.w pc,pc++
mgl@1371
 13229
+	ld.w r12,r12++
mgl@1371
 13230
+	ld.w r5,r5++
mgl@1371
 13231
+	ld.w r4,r4++
mgl@1371
 13232
+	ld.w lr,lr++
mgl@1371
 13233
+	ld.w r3,r7++
mgl@1371
 13234
+	ld.w r3,lr++
mgl@1371
 13235
+	ld.w r12,r5++
mgl@1371
 13236
+	.text
mgl@1371
 13237
+	.global ld_sh1
mgl@1371
 13238
+ld_sh1:
mgl@1371
 13239
+	ld.sh pc,pc++
mgl@1371
 13240
+	ld.sh r12,r12++
mgl@1371
 13241
+	ld.sh r5,r5++
mgl@1371
 13242
+	ld.sh r4,r4++
mgl@1371
 13243
+	ld.sh lr,lr++
mgl@1371
 13244
+	ld.sh r11,r2++
mgl@1371
 13245
+	ld.sh r2,r8++
mgl@1371
 13246
+	ld.sh r7,r6++
mgl@1371
 13247
+	.text
mgl@1371
 13248
+	.global ld_uh1
mgl@1371
 13249
+ld_uh1:
mgl@1371
 13250
+	ld.uh pc,pc++
mgl@1371
 13251
+	ld.uh r12,r12++
mgl@1371
 13252
+	ld.uh r5,r5++
mgl@1371
 13253
+	ld.uh r4,r4++
mgl@1371
 13254
+	ld.uh lr,lr++
mgl@1371
 13255
+	ld.uh r6,r7++
mgl@1371
 13256
+	ld.uh r10,r11++
mgl@1371
 13257
+	ld.uh lr,r4++
mgl@1371
 13258
+	.text
mgl@1371
 13259
+	.global ld_ub1
mgl@1371
 13260
+ld_ub1:
mgl@1371
 13261
+	ld.ub pc,pc++
mgl@1371
 13262
+	ld.ub r12,r12++
mgl@1371
 13263
+	ld.ub r5,r5++
mgl@1371
 13264
+	ld.ub r4,r4++
mgl@1371
 13265
+	ld.ub lr,lr++
mgl@1371
 13266
+	ld.ub r8,lr++
mgl@1371
 13267
+	ld.ub r12,r12++
mgl@1371
 13268
+	ld.ub r11,r10++
mgl@1371
 13269
+	.text
mgl@1371
 13270
+	.global ld_w2
mgl@1371
 13271
+ld_w2:
mgl@1371
 13272
+	ld.w pc,--pc
mgl@1371
 13273
+	ld.w r12,--r12
mgl@1371
 13274
+	ld.w r5,--r5
mgl@1371
 13275
+	ld.w r4,--r4
mgl@1371
 13276
+	ld.w lr,--lr
mgl@1371
 13277
+	ld.w r10,--lr
mgl@1371
 13278
+	ld.w r12,--r9
mgl@1371
 13279
+	ld.w r6,--r5
mgl@1371
 13280
+	.text
mgl@1371
 13281
+	.global ld_sh2
mgl@1371
 13282
+ld_sh2:
mgl@1371
 13283
+	ld.sh pc,--pc
mgl@1371
 13284
+	ld.sh r12,--r12
mgl@1371
 13285
+	ld.sh r5,--r5
mgl@1371
 13286
+	ld.sh r4,--r4
mgl@1371
 13287
+	ld.sh lr,--lr
mgl@1371
 13288
+	ld.sh pc,--r10
mgl@1371
 13289
+	ld.sh r6,--r3
mgl@1371
 13290
+	ld.sh r4,--r6
mgl@1371
 13291
+	.text
mgl@1371
 13292
+	.global ld_uh2
mgl@1371
 13293
+ld_uh2:
mgl@1371
 13294
+	ld.uh pc,--pc
mgl@1371
 13295
+	ld.uh r12,--r12
mgl@1371
 13296
+	ld.uh r5,--r5
mgl@1371
 13297
+	ld.uh r4,--r4
mgl@1371
 13298
+	ld.uh lr,--lr
mgl@1371
 13299
+	ld.uh r3,--r2
mgl@1371
 13300
+	ld.uh r1,--r0
mgl@1371
 13301
+	ld.uh r2,--r9
mgl@1371
 13302
+	.text
mgl@1371
 13303
+	.global ld_ub2
mgl@1371
 13304
+ld_ub2:
mgl@1371
 13305
+	ld.ub pc,--pc
mgl@1371
 13306
+	ld.ub r12,--r12
mgl@1371
 13307
+	ld.ub r5,--r5
mgl@1371
 13308
+	ld.ub r4,--r4
mgl@1371
 13309
+	ld.ub lr,--lr
mgl@1371
 13310
+	ld.ub r1,--r1
mgl@1371
 13311
+	ld.ub r0,--r6
mgl@1371
 13312
+	ld.ub r2,--r7
mgl@1371
 13313
+	.text
mgl@1371
 13314
+	.global ld_ub3
mgl@1371
 13315
+ld_ub3:
mgl@1371
 13316
+	ld.ub pc,pc[0]
mgl@1371
 13317
+	ld.ub r12,r12[7]
mgl@1371
 13318
+	ld.ub r5,r5[4]
mgl@1371
 13319
+	ld.ub r4,r4[3]
mgl@1371
 13320
+	ld.ub lr,lr[1]
mgl@1371
 13321
+	ld.ub r6,r9[6]
mgl@1371
 13322
+	ld.ub r2,lr[4]
mgl@1371
 13323
+	ld.ub r1,r8[0]
mgl@1371
 13324
+	.text
mgl@1371
 13325
+	.global sub3_sp
mgl@1371
 13326
+sub3_sp:
mgl@1371
 13327
+	sub sp,0
mgl@1371
 13328
+	sub sp,-4
mgl@1371
 13329
+	sub sp,-512
mgl@1371
 13330
+	sub sp,508
mgl@1371
 13331
+	sub sp,4
mgl@1371
 13332
+	sub sp,44
mgl@1371
 13333
+	sub sp,8
mgl@1371
 13334
+	sub sp,348
mgl@1371
 13335
+	.text
mgl@1371
 13336
+	.global sub3
mgl@1371
 13337
+sub3:
mgl@1371
 13338
+	sub pc,0
mgl@1371
 13339
+	sub r12,-1
mgl@1371
 13340
+	sub r5,-128
mgl@1371
 13341
+	sub r4,127
mgl@1371
 13342
+	sub lr,1
mgl@1371
 13343
+	sub r6,-41
mgl@1371
 13344
+	sub r4,37
mgl@1371
 13345
+	sub r12,56
mgl@1371
 13346
+	.text
mgl@1371
 13347
+	.global mov1
mgl@1371
 13348
+mov1:
mgl@1371
 13349
+	mov pc,0
mgl@1371
 13350
+	mov r12,-1
mgl@1371
 13351
+	mov r5,-128
mgl@1371
 13352
+	mov r4,127
mgl@1371
 13353
+	mov lr,1
mgl@1371
 13354
+	mov pc,14
mgl@1371
 13355
+	mov r6,-100
mgl@1371
 13356
+	mov lr,-122
mgl@1371
 13357
+	.text
mgl@1371
 13358
+	.global lddsp
mgl@1371
 13359
+lddsp:
mgl@1371
 13360
+	lddsp pc,sp[0]
mgl@1371
 13361
+	lddsp r12,sp[508]
mgl@1371
 13362
+	lddsp r5,sp[256]
mgl@1371
 13363
+	lddsp r4,sp[252]
mgl@1371
 13364
+	lddsp lr,sp[4]
mgl@1371
 13365
+	lddsp lr,sp[256]
mgl@1371
 13366
+	lddsp r12,sp[20]
mgl@1371
 13367
+	lddsp r9,sp[472]
mgl@1371
 13368
+	.text
mgl@1371
 13369
+	.global lddpc
mgl@1371
 13370
+lddpc:
mgl@1371
 13371
+	lddpc pc,pc[0]
mgl@1371
 13372
+	lddpc r0,pc[508]
mgl@1371
 13373
+	lddpc r8,pc[256]
mgl@1371
 13374
+	lddpc r7,pc[252]
mgl@1371
 13375
+	lddpc lr,pc[4]
mgl@1371
 13376
+	lddpc sp,pc[472]
mgl@1371
 13377
+	lddpc r6,pc[120]
mgl@1371
 13378
+	lddpc r11,pc[28]
mgl@1371
 13379
+	.text
mgl@1371
 13380
+	.global stdsp
mgl@1371
 13381
+stdsp:
mgl@1371
 13382
+	stdsp sp[0],pc
mgl@1371
 13383
+	stdsp sp[508],r12
mgl@1371
 13384
+	stdsp sp[256],r5
mgl@1371
 13385
+	stdsp sp[252],r4
mgl@1371
 13386
+	stdsp sp[4],lr
mgl@1371
 13387
+	stdsp sp[304],pc
mgl@1371
 13388
+	stdsp sp[256],r0
mgl@1371
 13389
+	stdsp sp[336],r5
mgl@1371
 13390
+	.text
mgl@1371
 13391
+	.global cp2
mgl@1371
 13392
+cp2:
mgl@1371
 13393
+	cp pc,0
mgl@1371
 13394
+	cp r12,-1
mgl@1371
 13395
+	cp r5,-32
mgl@1371
 13396
+	cp r4,31
mgl@1371
 13397
+	cp lr,1
mgl@1371
 13398
+	cp r8,3
mgl@1371
 13399
+	cp lr,16
mgl@1371
 13400
+	cp r7,-26
mgl@1371
 13401
+	.text
mgl@1371
 13402
+	.global acr
mgl@1371
 13403
+acr:
mgl@1371
 13404
+	acr pc
mgl@1371
 13405
+	acr r12
mgl@1371
 13406
+	acr r5
mgl@1371
 13407
+	acr r4
mgl@1371
 13408
+	acr lr
mgl@1371
 13409
+	acr r2
mgl@1371
 13410
+	acr r12
mgl@1371
 13411
+	acr pc
mgl@1371
 13412
+	.text
mgl@1371
 13413
+	.global scr
mgl@1371
 13414
+scr:
mgl@1371
 13415
+	scr pc
mgl@1371
 13416
+	scr r12
mgl@1371
 13417
+	scr r5
mgl@1371
 13418
+	scr r4
mgl@1371
 13419
+	scr lr
mgl@1371
 13420
+	scr pc
mgl@1371
 13421
+	scr r6
mgl@1371
 13422
+	scr r1
mgl@1371
 13423
+	.text
mgl@1371
 13424
+	.global cpc0
mgl@1371
 13425
+cpc0:
mgl@1371
 13426
+	cpc pc
mgl@1371
 13427
+	cpc r12
mgl@1371
 13428
+	cpc r5
mgl@1371
 13429
+	cpc r4
mgl@1371
 13430
+	cpc lr
mgl@1371
 13431
+	cpc pc
mgl@1371
 13432
+	cpc r4
mgl@1371
 13433
+	cpc r9
mgl@1371
 13434
+	.text
mgl@1371
 13435
+	.global neg
mgl@1371
 13436
+neg:
mgl@1371
 13437
+	neg pc
mgl@1371
 13438
+	neg r12
mgl@1371
 13439
+	neg r5
mgl@1371
 13440
+	neg r4
mgl@1371
 13441
+	neg lr
mgl@1371
 13442
+	neg r7
mgl@1371
 13443
+	neg r1
mgl@1371
 13444
+	neg r9
mgl@1371
 13445
+	.text
mgl@1371
 13446
+	.global abs
mgl@1371
 13447
+abs:
mgl@1371
 13448
+	abs pc
mgl@1371
 13449
+	abs r12
mgl@1371
 13450
+	abs r5
mgl@1371
 13451
+	abs r4
mgl@1371
 13452
+	abs lr
mgl@1371
 13453
+	abs r6
mgl@1371
 13454
+	abs r6
mgl@1371
 13455
+	abs r4
mgl@1371
 13456
+	.text
mgl@1371
 13457
+	.global castu_b
mgl@1371
 13458
+castu_b:
mgl@1371
 13459
+	castu.b pc
mgl@1371
 13460
+	castu.b r12
mgl@1371
 13461
+	castu.b r5
mgl@1371
 13462
+	castu.b r4
mgl@1371
 13463
+	castu.b lr
mgl@1371
 13464
+	castu.b r7
mgl@1371
 13465
+	castu.b sp
mgl@1371
 13466
+	castu.b r9
mgl@1371
 13467
+	.text
mgl@1371
 13468
+	.global casts_b
mgl@1371
 13469
+casts_b:
mgl@1371
 13470
+	casts.b pc
mgl@1371
 13471
+	casts.b r12
mgl@1371
 13472
+	casts.b r5
mgl@1371
 13473
+	casts.b r4
mgl@1371
 13474
+	casts.b lr
mgl@1371
 13475
+	casts.b r11
mgl@1371
 13476
+	casts.b r1
mgl@1371
 13477
+	casts.b r10
mgl@1371
 13478
+	.text
mgl@1371
 13479
+	.global castu_h
mgl@1371
 13480
+castu_h:
mgl@1371
 13481
+	castu.h pc
mgl@1371
 13482
+	castu.h r12
mgl@1371
 13483
+	castu.h r5
mgl@1371
 13484
+	castu.h r4
mgl@1371
 13485
+	castu.h lr
mgl@1371
 13486
+	castu.h r10
mgl@1371
 13487
+	castu.h r11
mgl@1371
 13488
+	castu.h r1
mgl@1371
 13489
+	.text
mgl@1371
 13490
+	.global casts_h
mgl@1371
 13491
+casts_h:
mgl@1371
 13492
+	casts.h pc
mgl@1371
 13493
+	casts.h r12
mgl@1371
 13494
+	casts.h r5
mgl@1371
 13495
+	casts.h r4
mgl@1371
 13496
+	casts.h lr
mgl@1371
 13497
+	casts.h r0
mgl@1371
 13498
+	casts.h r5
mgl@1371
 13499
+	casts.h r9
mgl@1371
 13500
+	.text
mgl@1371
 13501
+	.global brev
mgl@1371
 13502
+brev:
mgl@1371
 13503
+	brev pc
mgl@1371
 13504
+	brev r12
mgl@1371
 13505
+	brev r5
mgl@1371
 13506
+	brev r4
mgl@1371
 13507
+	brev lr
mgl@1371
 13508
+	brev r5
mgl@1371
 13509
+	brev r10
mgl@1371
 13510
+	brev r8
mgl@1371
 13511
+	.text
mgl@1371
 13512
+	.global swap_h
mgl@1371
 13513
+swap_h:
mgl@1371
 13514
+	swap.h pc
mgl@1371
 13515
+	swap.h r12
mgl@1371
 13516
+	swap.h r5
mgl@1371
 13517
+	swap.h r4
mgl@1371
 13518
+	swap.h lr
mgl@1371
 13519
+	swap.h r7
mgl@1371
 13520
+	swap.h r0
mgl@1371
 13521
+	swap.h r8
mgl@1371
 13522
+	.text
mgl@1371
 13523
+	.global swap_b
mgl@1371
 13524
+swap_b:
mgl@1371
 13525
+	swap.b pc
mgl@1371
 13526
+	swap.b r12
mgl@1371
 13527
+	swap.b r5
mgl@1371
 13528
+	swap.b r4
mgl@1371
 13529
+	swap.b lr
mgl@1371
 13530
+	swap.b r10
mgl@1371
 13531
+	swap.b r12
mgl@1371
 13532
+	swap.b r1
mgl@1371
 13533
+	.text
mgl@1371
 13534
+	.global swap_bh
mgl@1371
 13535
+swap_bh:
mgl@1371
 13536
+	swap.bh pc
mgl@1371
 13537
+	swap.bh r12
mgl@1371
 13538
+	swap.bh r5
mgl@1371
 13539
+	swap.bh r4
mgl@1371
 13540
+	swap.bh lr
mgl@1371
 13541
+	swap.bh r9
mgl@1371
 13542
+	swap.bh r4
mgl@1371
 13543
+	swap.bh r1
mgl@1371
 13544
+	.text
mgl@1371
 13545
+	.global One_s_compliment
mgl@1371
 13546
+One_s_compliment:
mgl@1371
 13547
+	com pc
mgl@1371
 13548
+	com r12
mgl@1371
 13549
+	com r5
mgl@1371
 13550
+	com r4
mgl@1371
 13551
+	com lr
mgl@1371
 13552
+	com r2
mgl@1371
 13553
+	com r2
mgl@1371
 13554
+	com r7
mgl@1371
 13555
+	.text
mgl@1371
 13556
+	.global tnbz
mgl@1371
 13557
+tnbz:
mgl@1371
 13558
+	tnbz pc
mgl@1371
 13559
+	tnbz r12
mgl@1371
 13560
+	tnbz r5
mgl@1371
 13561
+	tnbz r4
mgl@1371
 13562
+	tnbz lr
mgl@1371
 13563
+	tnbz r8
mgl@1371
 13564
+	tnbz r12
mgl@1371
 13565
+	tnbz pc
mgl@1371
 13566
+	.text
mgl@1371
 13567
+	.global rol
mgl@1371
 13568
+rol:
mgl@1371
 13569
+	rol pc
mgl@1371
 13570
+	rol r12
mgl@1371
 13571
+	rol r5
mgl@1371
 13572
+	rol r4
mgl@1371
 13573
+	rol lr
mgl@1371
 13574
+	rol r10
mgl@1371
 13575
+	rol r9
mgl@1371
 13576
+	rol r5
mgl@1371
 13577
+	.text
mgl@1371
 13578
+	.global ror
mgl@1371
 13579
+ror:
mgl@1371
 13580
+	ror pc
mgl@1371
 13581
+	ror r12
mgl@1371
 13582
+	ror r5
mgl@1371
 13583
+	ror r4
mgl@1371
 13584
+	ror lr
mgl@1371
 13585
+	ror r8
mgl@1371
 13586
+	ror r4
mgl@1371
 13587
+	ror r7
mgl@1371
 13588
+	.text
mgl@1371
 13589
+	.global icall
mgl@1371
 13590
+icall:
mgl@1371
 13591
+	icall pc
mgl@1371
 13592
+	icall r12
mgl@1371
 13593
+	icall r5
mgl@1371
 13594
+	icall r4
mgl@1371
 13595
+	icall lr
mgl@1371
 13596
+	icall r3
mgl@1371
 13597
+	icall r1
mgl@1371
 13598
+	icall r3
mgl@1371
 13599
+	.text
mgl@1371
 13600
+	.global mustr
mgl@1371
 13601
+mustr:
mgl@1371
 13602
+	mustr pc
mgl@1371
 13603
+	mustr r12
mgl@1371
 13604
+	mustr r5
mgl@1371
 13605
+	mustr r4
mgl@1371
 13606
+	mustr lr
mgl@1371
 13607
+	mustr r1
mgl@1371
 13608
+	mustr r4
mgl@1371
 13609
+	mustr r12
mgl@1371
 13610
+	.text
mgl@1371
 13611
+	.global musfr
mgl@1371
 13612
+musfr:
mgl@1371
 13613
+	musfr pc
mgl@1371
 13614
+	musfr r12
mgl@1371
 13615
+	musfr r5
mgl@1371
 13616
+	musfr r4
mgl@1371
 13617
+	musfr lr
mgl@1371
 13618
+	musfr r11
mgl@1371
 13619
+	musfr r12
mgl@1371
 13620
+	musfr r2
mgl@1371
 13621
+	.text
mgl@1371
 13622
+	.global ret_cond
mgl@1371
 13623
+ret_cond:
mgl@1371
 13624
+	reteq pc
mgl@1371
 13625
+	retal r12
mgl@1371
 13626
+	retls r5
mgl@1371
 13627
+	retpl r4
mgl@1371
 13628
+	retne lr
mgl@1371
 13629
+	retgt r0
mgl@1371
 13630
+	retgt r12
mgl@1371
 13631
+	retge r10
mgl@1371
 13632
+	.text
mgl@1371
 13633
+	.global sr_cond
mgl@1371
 13634
+sr_cond:
mgl@1371
 13635
+	sreq pc
mgl@1371
 13636
+	sral r12
mgl@1371
 13637
+	srls r5
mgl@1371
 13638
+	srpl r4
mgl@1371
 13639
+	srne lr
mgl@1371
 13640
+	srlt r0
mgl@1371
 13641
+	sral sp
mgl@1371
 13642
+	srge r9
mgl@1371
 13643
+	.text
mgl@1371
 13644
+	.global ld_w3
mgl@1371
 13645
+ld_w3:
mgl@1371
 13646
+	ld.w pc,pc[0]
mgl@1371
 13647
+	ld.w r12,r12[124]
mgl@1371
 13648
+	ld.w r5,r5[64]
mgl@1371
 13649
+	ld.w r4,r4[60]
mgl@1371
 13650
+	ld.w lr,lr[4]
mgl@1371
 13651
+	ld.w sp,r2[52]
mgl@1371
 13652
+	ld.w r9,r1[8]
mgl@1371
 13653
+	ld.w r5,sp[60]
mgl@1371
 13654
+	.text
mgl@1371
 13655
+	.global ld_sh3
mgl@1371
 13656
+ld_sh3:
mgl@1371
 13657
+	ld.sh pc,pc[0]
mgl@1371
 13658
+	ld.sh r12,r12[14]
mgl@1371
 13659
+	ld.sh r5,r5[8]
mgl@1371
 13660
+	ld.sh r4,r4[6]
mgl@1371
 13661
+	ld.sh lr,lr[2]
mgl@1371
 13662
+	ld.sh r4,r2[8]
mgl@1371
 13663
+	ld.sh sp,lr[10]
mgl@1371
 13664
+	ld.sh r2,r11[2]
mgl@1371
 13665
+	.text
mgl@1371
 13666
+	.global ld_uh3
mgl@1371
 13667
+ld_uh3:
mgl@1371
 13668
+	ld.uh pc,pc[0]
mgl@1371
 13669
+	ld.uh r12,r12[14]
mgl@1371
 13670
+	ld.uh r5,r5[8]
mgl@1371
 13671
+	ld.uh r4,r4[6]
mgl@1371
 13672
+	ld.uh lr,lr[2]
mgl@1371
 13673
+	ld.uh r10,r0[10]
mgl@1371
 13674
+	ld.uh r8,r11[8]
mgl@1371
 13675
+	ld.uh r10,r2[12]
mgl@1371
 13676
+	.text
mgl@1371
 13677
+	.global st_w3
mgl@1371
 13678
+st_w3:
mgl@1371
 13679
+	st.w pc[0],pc
mgl@1371
 13680
+	st.w r12[60],r12
mgl@1371
 13681
+	st.w r5[32],r5
mgl@1371
 13682
+	st.w r4[28],r4
mgl@1371
 13683
+	st.w lr[4],lr
mgl@1371
 13684
+	st.w r7[44],r11
mgl@1371
 13685
+	st.w r2[24],r6
mgl@1371
 13686
+	st.w r4[12],r9
mgl@1371
 13687
+	.text
mgl@1371
 13688
+	.global st_h3
mgl@1371
 13689
+st_h3:
mgl@1371
 13690
+	st.h pc[0],pc
mgl@1371
 13691
+	st.h r12[14],r12
mgl@1371
 13692
+	st.h r5[8],r5
mgl@1371
 13693
+	st.h r4[6],r4
mgl@1371
 13694
+	st.h lr[2],lr
mgl@1371
 13695
+	st.h lr[10],r12
mgl@1371
 13696
+	st.h r6[4],r0
mgl@1371
 13697
+	st.h r5[12],sp
mgl@1371
 13698
+	.text
mgl@1371
 13699
+	.global st_b3
mgl@1371
 13700
+st_b3:
mgl@1371
 13701
+	st.b pc[0],pc
mgl@1371
 13702
+	st.b r12[7],r12
mgl@1371
 13703
+	st.b r5[4],r5
mgl@1371
 13704
+	st.b r4[3],r4
mgl@1371
 13705
+	st.b lr[1],lr
mgl@1371
 13706
+	st.b r12[6],r9
mgl@1371
 13707
+	st.b r2[3],lr
mgl@1371
 13708
+	st.b r1[3],r11
mgl@1371
 13709
+	.text
mgl@1371
 13710
+	.global ldd
mgl@1371
 13711
+ldd:
mgl@1371
 13712
+	ld.d r0,pc
mgl@1371
 13713
+	ld.d r14,r12
mgl@1371
 13714
+	ld.d r8,r5
mgl@1371
 13715
+	ld.d r6,r4
mgl@1371
 13716
+	ld.d r2,lr
mgl@1371
 13717
+	ld.d r14,r7
mgl@1371
 13718
+	ld.d r4,r4
mgl@1371
 13719
+	ld.d r14,pc
mgl@1371
 13720
+	.text
mgl@1371
 13721
+	.global ldd_postinc
mgl@1371
 13722
+ldd_postinc:
mgl@1371
 13723
+	ld.d r0,pc++
mgl@1371
 13724
+	ld.d r14,r12++
mgl@1371
 13725
+	ld.d r8,r5++
mgl@1371
 13726
+	ld.d r6,r4++
mgl@1371
 13727
+	ld.d r2,lr++
mgl@1371
 13728
+	ld.d r14,r5++
mgl@1371
 13729
+	ld.d r12,r11++
mgl@1371
 13730
+	ld.d r2,r12++
mgl@1371
 13731
+	.text
mgl@1371
 13732
+	.global ldd_predec
mgl@1371
 13733
+ldd_predec:
mgl@1371
 13734
+	ld.d r0,--pc
mgl@1371
 13735
+	ld.d r14,--r12
mgl@1371
 13736
+	ld.d r8,--r5
mgl@1371
 13737
+	ld.d r6,--r4
mgl@1371
 13738
+	ld.d r2,--lr
mgl@1371
 13739
+	ld.d r8,--r0
mgl@1371
 13740
+	ld.d r10,--pc
mgl@1371
 13741
+	ld.d r2,--r4
mgl@1371
 13742
+	.text
mgl@1371
 13743
+	.global std
mgl@1371
 13744
+std:
mgl@1371
 13745
+	st.d pc,r0
mgl@1371
 13746
+	st.d r12,r14
mgl@1371
 13747
+	st.d r5,r8
mgl@1371
 13748
+	st.d r4,r6
mgl@1371
 13749
+	st.d lr,r2
mgl@1371
 13750
+	st.d r0,r12
mgl@1371
 13751
+	st.d sp,r4
mgl@1371
 13752
+	st.d r12,r12
mgl@1371
 13753
+	.text
mgl@1371
 13754
+	.global std_postinc
mgl@1371
 13755
+std_postinc:
mgl@1371
 13756
+	st.d pc++,r0
mgl@1371
 13757
+	st.d r12++,r14
mgl@1371
 13758
+	st.d r5++,r8
mgl@1371
 13759
+	st.d r4++,r6
mgl@1371
 13760
+	st.d lr++,r2
mgl@1371
 13761
+	st.d sp++,r6
mgl@1371
 13762
+	st.d r10++,r6
mgl@1371
 13763
+	st.d r7++,r2
mgl@1371
 13764
+	.text
mgl@1371
 13765
+	.global std_predec
mgl@1371
 13766
+std_predec:
mgl@1371
 13767
+	st.d --pc,r0
mgl@1371
 13768
+	st.d --r12,r14
mgl@1371
 13769
+	st.d --r5,r8
mgl@1371
 13770
+	st.d --r4,r6
mgl@1371
 13771
+	st.d --lr,r2
mgl@1371
 13772
+	st.d --r3,r6
mgl@1371
 13773
+	st.d --lr,r2
mgl@1371
 13774
+	st.d --r0,r4
mgl@1371
 13775
+	.text
mgl@1371
 13776
+	.global mul
mgl@1371
 13777
+mul:
mgl@1371
 13778
+	mul pc,pc
mgl@1371
 13779
+	mul r12,r12
mgl@1371
 13780
+	mul r5,r5
mgl@1371
 13781
+	mul r4,r4
mgl@1371
 13782
+	mul lr,lr
mgl@1371
 13783
+	mul r10,lr
mgl@1371
 13784
+	mul r0,r8
mgl@1371
 13785
+	mul r8,r5
mgl@1371
 13786
+	.text
mgl@1371
 13787
+	.global asr_imm5
mgl@1371
 13788
+asr_imm5:
mgl@1371
 13789
+	asr pc,0
mgl@1371
 13790
+	asr r12,31
mgl@1371
 13791
+	asr r5,16
mgl@1371
 13792
+	asr r4,15
mgl@1371
 13793
+	asr lr,1
mgl@1371
 13794
+	asr r6,23
mgl@1371
 13795
+	asr r6,18
mgl@1371
 13796
+	asr r5,8
mgl@1371
 13797
+	.text
mgl@1371
 13798
+	.global lsl_imm5
mgl@1371
 13799
+lsl_imm5:
mgl@1371
 13800
+	lsl pc,0
mgl@1371
 13801
+	lsl r12,31
mgl@1371
 13802
+	lsl r5,16
mgl@1371
 13803
+	lsl r4,15
mgl@1371
 13804
+	lsl lr,1
mgl@1371
 13805
+	lsl r12,13
mgl@1371
 13806
+	lsl r6,16
mgl@1371
 13807
+	lsl r1,25
mgl@1371
 13808
+	.text
mgl@1371
 13809
+	.global lsr_imm5
mgl@1371
 13810
+lsr_imm5:
mgl@1371
 13811
+	lsr pc,0
mgl@1371
 13812
+	lsr r12,31
mgl@1371
 13813
+	lsr r5,16
mgl@1371
 13814
+	lsr r4,15
mgl@1371
 13815
+	lsr lr,1
mgl@1371
 13816
+	lsr r0,1
mgl@1371
 13817
+	lsr r8,10
mgl@1371
 13818
+	lsr r7,26
mgl@1371
 13819
+	.text
mgl@1371
 13820
+	.global sbr
mgl@1371
 13821
+sbr:
mgl@1371
 13822
+	sbr pc,0
mgl@1371
 13823
+	sbr r12,31
mgl@1371
 13824
+	sbr r5,16
mgl@1371
 13825
+	sbr r4,15
mgl@1371
 13826
+	sbr lr,1
mgl@1371
 13827
+	sbr r8,31
mgl@1371
 13828
+	sbr r6,22
mgl@1371
 13829
+	sbr r1,23
mgl@1371
 13830
+	.text
mgl@1371
 13831
+	.global cbr
mgl@1371
 13832
+cbr:
mgl@1371
 13833
+	cbr pc,0
mgl@1371
 13834
+	cbr r12,31
mgl@1371
 13835
+	cbr r5,16
mgl@1371
 13836
+	cbr r4,15
mgl@1371
 13837
+	cbr lr,1
mgl@1371
 13838
+	cbr r12,10
mgl@1371
 13839
+	cbr r7,22
mgl@1371
 13840
+	cbr r8,9
mgl@1371
 13841
+	.text
mgl@1371
 13842
+	.global brc1
mgl@1371
 13843
+brc1:
mgl@1371
 13844
+	breq 0
mgl@1371
 13845
+	brpl -2
mgl@1371
 13846
+	brge -256
mgl@1371
 13847
+	brcs 254
mgl@1371
 13848
+	brne 2
mgl@1371
 13849
+	brcs 230
mgl@1371
 13850
+	breq -18
mgl@1371
 13851
+	breq 12
mgl@1371
 13852
+	.text
mgl@1371
 13853
+	.global rjmp
mgl@1371
 13854
+rjmp:
mgl@1371
 13855
+	rjmp 0
mgl@1371
 13856
+	rjmp -2
mgl@1371
 13857
+	rjmp -1024
mgl@1371
 13858
+	rjmp 1022
mgl@1371
 13859
+	rjmp 2
mgl@1371
 13860
+	rjmp -962
mgl@1371
 13861
+	rjmp 14
mgl@1371
 13862
+	rjmp -516
mgl@1371
 13863
+	.text
mgl@1371
 13864
+	.global rcall1
mgl@1371
 13865
+rcall1:
mgl@1371
 13866
+	rcall 0
mgl@1371
 13867
+	rcall -2
mgl@1371
 13868
+	rcall -1024
mgl@1371
 13869
+	rcall 1022
mgl@1371
 13870
+	rcall 2
mgl@1371
 13871
+	rcall 216
mgl@1371
 13872
+	rcall -530
mgl@1371
 13873
+	rcall -972
mgl@1371
 13874
+	.text
mgl@1371
 13875
+	.global acall
mgl@1371
 13876
+acall:
mgl@1371
 13877
+	acall 0
mgl@1371
 13878
+	acall 1020
mgl@1371
 13879
+	acall 512
mgl@1371
 13880
+	acall 508
mgl@1371
 13881
+	acall 4
mgl@1371
 13882
+	acall 356
mgl@1371
 13883
+	acall 304
mgl@1371
 13884
+	acall 172
mgl@1371
 13885
+	.text
mgl@1371
 13886
+	.global scall
mgl@1371
 13887
+scall:
mgl@1371
 13888
+	scall
mgl@1371
 13889
+	scall
mgl@1371
 13890
+	scall
mgl@1371
 13891
+	scall
mgl@1371
 13892
+	scall
mgl@1371
 13893
+	scall
mgl@1371
 13894
+	scall
mgl@1371
 13895
+	scall
mgl@1371
 13896
+	.text
mgl@1371
 13897
+	.global popm
mgl@1371
 13898
+popm:
mgl@1371
 13899
+	/* popm with no argument fails currently */
mgl@1371
 13900
+	popm pc
mgl@1371
 13901
+	popm r0-r11,pc,r12=-1
mgl@1371
 13902
+	popm lr
mgl@1371
 13903
+	popm r0-r11,pc,r12=1
mgl@1371
 13904
+	popm r0-r3
mgl@1371
 13905
+	popm r4-r10,pc
mgl@1371
 13906
+	popm r0-r3,r11,pc,r12=0
mgl@1371
 13907
+	popm r0-r7,r10-r12,lr
mgl@1371
 13908
+	.text
mgl@1371
 13909
+	.global pushm
mgl@1371
 13910
+pushm:
mgl@1371
 13911
+	pushm pc
mgl@1371
 13912
+	pushm r0-r12,lr,pc
mgl@1371
 13913
+	pushm pc
mgl@1371
 13914
+	pushm r0-r12,lr
mgl@1371
 13915
+	pushm r0-r3
mgl@1371
 13916
+	pushm r8-r10,lr,pc
mgl@1371
 13917
+	pushm r0-r3,r10
mgl@1371
 13918
+	pushm r8-r9,r12
mgl@1371
 13919
+	.text
mgl@1371
 13920
+	.global popm_n
mgl@1371
 13921
+popm_n:
mgl@1371
 13922
+	popm pc
mgl@1371
 13923
+	popm r0-r11,pc,r12=-1
mgl@1371
 13924
+	popm lr
mgl@1371
 13925
+	popm r0-r11,pc,r12=1
mgl@1371
 13926
+	popm r0-r3
mgl@1371
 13927
+	popm r4-r10,pc
mgl@1371
 13928
+	popm r0-r3,r11,pc,r12=0
mgl@1371
 13929
+	popm r0-r7,r10-r12,lr
mgl@1371
 13930
+	.text
mgl@1371
 13931
+	.global pushm_n
mgl@1371
 13932
+pushm_n:
mgl@1371
 13933
+	pushm pc
mgl@1371
 13934
+	pushm r0-r12,lr,pc
mgl@1371
 13935
+	pushm pc
mgl@1371
 13936
+	pushm r0-r12,lr
mgl@1371
 13937
+	pushm r0-r3
mgl@1371
 13938
+	pushm r8-r10,lr,pc
mgl@1371
 13939
+	pushm r0-r3,r10
mgl@1371
 13940
+	pushm r8-r9,r12
mgl@1371
 13941
+	.text
mgl@1371
 13942
+	.global csrfcz
mgl@1371
 13943
+csrfcz:
mgl@1371
 13944
+	csrfcz 0
mgl@1371
 13945
+	csrfcz 31
mgl@1371
 13946
+	csrfcz 16
mgl@1371
 13947
+	csrfcz 15
mgl@1371
 13948
+	csrfcz 1
mgl@1371
 13949
+	csrfcz 5
mgl@1371
 13950
+	csrfcz 13
mgl@1371
 13951
+	csrfcz 23
mgl@1371
 13952
+	.text
mgl@1371
 13953
+	.global ssrf
mgl@1371
 13954
+ssrf:
mgl@1371
 13955
+	ssrf 0
mgl@1371
 13956
+	ssrf 31
mgl@1371
 13957
+	ssrf 16
mgl@1371
 13958
+	ssrf 15
mgl@1371
 13959
+	ssrf 1
mgl@1371
 13960
+	ssrf 29
mgl@1371
 13961
+	ssrf 13
mgl@1371
 13962
+	ssrf 13
mgl@1371
 13963
+	.text
mgl@1371
 13964
+	.global csrf
mgl@1371
 13965
+csrf:
mgl@1371
 13966
+	csrf 0
mgl@1371
 13967
+	csrf 31
mgl@1371
 13968
+	csrf 16
mgl@1371
 13969
+	csrf 15
mgl@1371
 13970
+	csrf 1
mgl@1371
 13971
+	csrf 10
mgl@1371
 13972
+	csrf 15
mgl@1371
 13973
+	csrf 11
mgl@1371
 13974
+	.text
mgl@1371
 13975
+	.global rete
mgl@1371
 13976
+rete:
mgl@1371
 13977
+	rete
mgl@1371
 13978
+	.text
mgl@1371
 13979
+	.global rets
mgl@1371
 13980
+rets:
mgl@1371
 13981
+	rets
mgl@1371
 13982
+	.text
mgl@1371
 13983
+	.global retd
mgl@1371
 13984
+retd:
mgl@1371
 13985
+	retd
mgl@1371
 13986
+	.text
mgl@1371
 13987
+	.global retj
mgl@1371
 13988
+retj:
mgl@1371
 13989
+	retj
mgl@1371
 13990
+	.text
mgl@1371
 13991
+	.global tlbr
mgl@1371
 13992
+tlbr:
mgl@1371
 13993
+	tlbr
mgl@1371
 13994
+	.text
mgl@1371
 13995
+	.global tlbs
mgl@1371
 13996
+tlbs:
mgl@1371
 13997
+	tlbs
mgl@1371
 13998
+	.text
mgl@1371
 13999
+	.global tlbw
mgl@1371
 14000
+tlbw:
mgl@1371
 14001
+	tlbw
mgl@1371
 14002
+	.text
mgl@1371
 14003
+	.global breakpoint
mgl@1371
 14004
+breakpoint:
mgl@1371
 14005
+	breakpoint
mgl@1371
 14006
+	.text
mgl@1371
 14007
+	.global incjosp
mgl@1371
 14008
+incjosp:
mgl@1371
 14009
+	incjosp 1
mgl@1371
 14010
+	incjosp 2
mgl@1371
 14011
+	incjosp 3
mgl@1371
 14012
+	incjosp 4
mgl@1371
 14013
+	incjosp -4
mgl@1371
 14014
+	incjosp -3
mgl@1371
 14015
+	incjosp -2
mgl@1371
 14016
+	incjosp -1
mgl@1371
 14017
+	.text
mgl@1371
 14018
+	.global nop
mgl@1371
 14019
+nop:
mgl@1371
 14020
+	nop
mgl@1371
 14021
+	.text
mgl@1371
 14022
+	.global popjc
mgl@1371
 14023
+popjc:
mgl@1371
 14024
+	popjc
mgl@1371
 14025
+	.text
mgl@1371
 14026
+	.global pushjc
mgl@1371
 14027
+pushjc:
mgl@1371
 14028
+	pushjc
mgl@1371
 14029
+	.text
mgl@1371
 14030
+	.global add2
mgl@1371
 14031
+add2:
mgl@1371
 14032
+	add pc,pc,pc<<0
mgl@1371
 14033
+	add r12,r12,r12<<3
mgl@1371
 14034
+	add r5,r5,r5<<2
mgl@1371
 14035
+	add r4,r4,r4<<1
mgl@1371
 14036
+	add lr,lr,lr<<1
mgl@1371
 14037
+	add r0,r12,r0<<1
mgl@1371
 14038
+	add r9,r12,r4<<0
mgl@1371
 14039
+	add r12,r12,r7<<2
mgl@1371
 14040
+	.text
mgl@1371
 14041
+	.global sub2
mgl@1371
 14042
+sub2:
mgl@1371
 14043
+	sub pc,pc,pc<<0
mgl@1371
 14044
+	sub r12,r12,r12<<3
mgl@1371
 14045
+	sub r5,r5,r5<<2
mgl@1371
 14046
+	sub r4,r4,r4<<1
mgl@1371
 14047
+	sub lr,lr,lr<<1
mgl@1371
 14048
+	sub sp,r3,r4<<0
mgl@1371
 14049
+	sub r3,r7,r3<<0
mgl@1371
 14050
+	sub sp,r10,sp<<1
mgl@1371
 14051
+	.text
mgl@1371
 14052
+	.global divu
mgl@1371
 14053
+divu:
mgl@1371
 14054
+	divu pc,pc,pc
mgl@1371
 14055
+	divu r12,r12,r12
mgl@1371
 14056
+	divu r5,r5,r5
mgl@1371
 14057
+	divu r4,r4,r4
mgl@1371
 14058
+	divu lr,lr,lr
mgl@1371
 14059
+	divu sp,r4,pc
mgl@1371
 14060
+	divu r5,r5,sp
mgl@1371
 14061
+	divu r10,sp,r0
mgl@1371
 14062
+	.text
mgl@1371
 14063
+	.global addhh_w
mgl@1371
 14064
+addhh_w:
mgl@1371
 14065
+	addhh.w pc,pc:b,pc:b
mgl@1371
 14066
+	addhh.w r12,r12:t,r12:t
mgl@1371
 14067
+	addhh.w r5,r5:t,r5:t
mgl@1371
 14068
+	addhh.w r4,r4:b,r4:b
mgl@1371
 14069
+	addhh.w lr,lr:t,lr:t
mgl@1371
 14070
+	addhh.w r0,r0:b,r3:b
mgl@1371
 14071
+	addhh.w lr,r12:t,r7:b
mgl@1371
 14072
+	addhh.w r3,r10:t,r2:b
mgl@1371
 14073
+	.text
mgl@1371
 14074
+	.global subhh_w
mgl@1371
 14075
+subhh_w:
mgl@1371
 14076
+	subhh.w pc,pc:b,pc:b
mgl@1371
 14077
+	subhh.w r12,r12:t,r12:t
mgl@1371
 14078
+	subhh.w r5,r5:t,r5:t
mgl@1371
 14079
+	subhh.w r4,r4:b,r4:b
mgl@1371
 14080
+	subhh.w lr,lr:t,lr:t
mgl@1371
 14081
+	subhh.w r10,r1:t,r7:b
mgl@1371
 14082
+	subhh.w pc,r10:t,lr:t
mgl@1371
 14083
+	subhh.w r3,r0:t,r12:b
mgl@1371
 14084
+	.text
mgl@1371
 14085
+	.global adc
mgl@1371
 14086
+adc:
mgl@1371
 14087
+	adc pc,pc,pc
mgl@1371
 14088
+	adc r12,r12,r12
mgl@1371
 14089
+	adc r5,r5,r5
mgl@1371
 14090
+	adc r4,r4,r4
mgl@1371
 14091
+	adc lr,lr,lr
mgl@1371
 14092
+	adc r4,r0,r7
mgl@1371
 14093
+	adc sp,r4,r3
mgl@1371
 14094
+	adc r2,r12,r0
mgl@1371
 14095
+	.text
mgl@1371
 14096
+	.global sbc
mgl@1371
 14097
+sbc:
mgl@1371
 14098
+	sbc pc,pc,pc
mgl@1371
 14099
+	sbc r12,r12,r12
mgl@1371
 14100
+	sbc r5,r5,r5
mgl@1371
 14101
+	sbc r4,r4,r4
mgl@1371
 14102
+	sbc lr,lr,lr
mgl@1371
 14103
+	sbc r6,r7,r9
mgl@1371
 14104
+	sbc r0,r8,r5
mgl@1371
 14105
+	sbc r1,r0,r4
mgl@1371
 14106
+	.text
mgl@1371
 14107
+	.global mul_2
mgl@1371
 14108
+mul_2:
mgl@1371
 14109
+	mul pc,pc,pc
mgl@1371
 14110
+	mul r12,r12,r12
mgl@1371
 14111
+	mul r5,r5,r5
mgl@1371
 14112
+	mul r4,r4,r4
mgl@1371
 14113
+	mul lr,lr,lr
mgl@1371
 14114
+	mul pc,r0,r0
mgl@1371
 14115
+	mul r8,pc,lr
mgl@1371
 14116
+	mul r4,r12,pc
mgl@1371
 14117
+	.text
mgl@1371
 14118
+	.global mac
mgl@1371
 14119
+mac:
mgl@1371
 14120
+	mac pc,pc,pc
mgl@1371
 14121
+	mac r12,r12,r12
mgl@1371
 14122
+	mac r5,r5,r5
mgl@1371
 14123
+	mac r4,r4,r4
mgl@1371
 14124
+	mac lr,lr,lr
mgl@1371
 14125
+	mac r10,r4,r0
mgl@1371
 14126
+	mac r7,lr,r0
mgl@1371
 14127
+	mac r2,r9,r12
mgl@1371
 14128
+	.text
mgl@1371
 14129
+	.global mulsd
mgl@1371
 14130
+mulsd:
mgl@1371
 14131
+	muls.d pc,pc,pc
mgl@1371
 14132
+	muls.d r12,r12,r12
mgl@1371
 14133
+	muls.d r5,r5,r5
mgl@1371
 14134
+	muls.d r4,r4,r4
mgl@1371
 14135
+	muls.d lr,lr,lr
mgl@1371
 14136
+	muls.d r2,r8,lr
mgl@1371
 14137
+	muls.d r4,r0,r11
mgl@1371
 14138
+	muls.d r5,lr,r6
mgl@1371
 14139
+	.text
mgl@1371
 14140
+	.global macsd
mgl@1371
 14141
+macsd:
mgl@1371
 14142
+	macs.d r0,pc,pc
mgl@1371
 14143
+	macs.d r14,r12,r12
mgl@1371
 14144
+	macs.d r8,r5,r5
mgl@1371
 14145
+	macs.d r6,r4,r4
mgl@1371
 14146
+	macs.d r2,lr,lr
mgl@1371
 14147
+	macs.d r8,r1,r9
mgl@1371
 14148
+	macs.d r14,r8,r8
mgl@1371
 14149
+	macs.d r4,r3,r12
mgl@1371
 14150
+	.text
mgl@1371
 14151
+	.global mulud
mgl@1371
 14152
+mulud:
mgl@1371
 14153
+	mulu.d r0,pc,pc
mgl@1371
 14154
+	mulu.d r14,r12,r12
mgl@1371
 14155
+	mulu.d r8,r5,r5
mgl@1371
 14156
+	mulu.d r6,r4,r4
mgl@1371
 14157
+	mulu.d r2,lr,lr
mgl@1371
 14158
+	mulu.d r6,r5,r0
mgl@1371
 14159
+	mulu.d r4,r6,r1
mgl@1371
 14160
+	mulu.d r8,r8,r2
mgl@1371
 14161
+	.text
mgl@1371
 14162
+	.global macud
mgl@1371
 14163
+macud:
mgl@1371
 14164
+	macu.d r0,pc,pc
mgl@1371
 14165
+	macu.d r14,r12,r12
mgl@1371
 14166
+	macu.d r8,r5,r5
mgl@1371
 14167
+	macu.d r6,r4,r4
mgl@1371
 14168
+	macu.d r2,lr,lr
mgl@1371
 14169
+	macu.d r6,sp,r11
mgl@1371
 14170
+	macu.d r2,r4,r8
mgl@1371
 14171
+	macu.d r6,r10,r9
mgl@1371
 14172
+	.text
mgl@1371
 14173
+	.global asr_1
mgl@1371
 14174
+asr_1:
mgl@1371
 14175
+	asr pc,pc,pc
mgl@1371
 14176
+	asr r12,r12,r12
mgl@1371
 14177
+	asr r5,r5,r5
mgl@1371
 14178
+	asr r4,r4,r4
mgl@1371
 14179
+	asr lr,lr,lr
mgl@1371
 14180
+	asr pc,r6,pc
mgl@1371
 14181
+	asr r0,r6,r12
mgl@1371
 14182
+	asr r4,sp,r0
mgl@1371
 14183
+	.text
mgl@1371
 14184
+	.global lsl_1
mgl@1371
 14185
+lsl_1:
mgl@1371
 14186
+	lsl pc,pc,pc
mgl@1371
 14187
+	lsl r12,r12,r12
mgl@1371
 14188
+	lsl r5,r5,r5
mgl@1371
 14189
+	lsl r4,r4,r4
mgl@1371
 14190
+	lsl lr,lr,lr
mgl@1371
 14191
+	lsl lr,r5,lr
mgl@1371
 14192
+	lsl r5,pc,r3
mgl@1371
 14193
+	lsl r1,pc,r9
mgl@1371
 14194
+	.text
mgl@1371
 14195
+	.global lsr_1
mgl@1371
 14196
+lsr_1:
mgl@1371
 14197
+	lsr pc,pc,pc
mgl@1371
 14198
+	lsr r12,r12,r12
mgl@1371
 14199
+	lsr r5,r5,r5
mgl@1371
 14200
+	lsr r4,r4,r4
mgl@1371
 14201
+	lsr lr,lr,lr
mgl@1371
 14202
+	lsr r2,r4,r1
mgl@1371
 14203
+	lsr r5,r1,r6
mgl@1371
 14204
+	lsr sp,r6,r7
mgl@1371
 14205
+	.text
mgl@1371
 14206
+	.global xchg
mgl@1371
 14207
+xchg:
mgl@1371
 14208
+	xchg pc,pc,pc
mgl@1371
 14209
+	xchg r12,r12,r12
mgl@1371
 14210
+	xchg r5,r5,r5
mgl@1371
 14211
+	xchg r4,r4,r4
mgl@1371
 14212
+	xchg lr,lr,lr
mgl@1371
 14213
+	xchg lr,r4,sp
mgl@1371
 14214
+	xchg r1,r5,r12
mgl@1371
 14215
+	xchg lr,r12,r0
mgl@1371
 14216
+	.text
mgl@1371
 14217
+	.global max
mgl@1371
 14218
+max:
mgl@1371
 14219
+	max pc,pc,pc
mgl@1371
 14220
+	max r12,r12,r12
mgl@1371
 14221
+	max r5,r5,r5
mgl@1371
 14222
+	max r4,r4,r4
mgl@1371
 14223
+	max lr,lr,lr
mgl@1371
 14224
+	max lr,r2,sp
mgl@1371
 14225
+	max r4,r10,r9
mgl@1371
 14226
+	max lr,r9,lr
mgl@1371
 14227
+	.text
mgl@1371
 14228
+	.global min
mgl@1371
 14229
+min:
mgl@1371
 14230
+	min pc,pc,pc
mgl@1371
 14231
+	min r12,r12,r12
mgl@1371
 14232
+	min r5,r5,r5
mgl@1371
 14233
+	min r4,r4,r4
mgl@1371
 14234
+	min lr,lr,lr
mgl@1371
 14235
+	min r9,r7,r8
mgl@1371
 14236
+	min sp,r5,r5
mgl@1371
 14237
+	min r4,r1,r4
mgl@1371
 14238
+	.text
mgl@1371
 14239
+	.global addabs
mgl@1371
 14240
+addabs:
mgl@1371
 14241
+	addabs pc,pc,pc
mgl@1371
 14242
+	addabs r12,r12,r12
mgl@1371
 14243
+	addabs r5,r5,r5
mgl@1371
 14244
+	addabs r4,r4,r4
mgl@1371
 14245
+	addabs lr,lr,lr
mgl@1371
 14246
+	addabs r7,r10,r0
mgl@1371
 14247
+	addabs r9,r9,r7
mgl@1371
 14248
+	addabs r2,r8,r12
mgl@1371
 14249
+	.text
mgl@1371
 14250
+	.global mulnhh_w
mgl@1371
 14251
+mulnhh_w:
mgl@1371
 14252
+	mulnhh.w pc,pc:b,pc:b
mgl@1371
 14253
+	mulnhh.w r12,r12:t,r12:t
mgl@1371
 14254
+	mulnhh.w r5,r5:t,r5:t
mgl@1371
 14255
+	mulnhh.w r4,r4:b,r4:b
mgl@1371
 14256
+	mulnhh.w lr,lr:t,lr:t
mgl@1371
 14257
+	mulnhh.w r11,sp:t,r9:b
mgl@1371
 14258
+	mulnhh.w sp,r4:b,lr:t
mgl@1371
 14259
+	mulnhh.w r12,r2:t,r11:b
mgl@1371
 14260
+	.text
mgl@1371
 14261
+	.global mulnwh_d
mgl@1371
 14262
+mulnwh_d:
mgl@1371
 14263
+	mulnwh.d r0,pc,pc:b
mgl@1371
 14264
+	mulnwh.d r14,r12,r12:t
mgl@1371
 14265
+	mulnwh.d r8,r5,r5:t
mgl@1371
 14266
+	mulnwh.d r6,r4,r4:b
mgl@1371
 14267
+	mulnwh.d r2,lr,lr:t
mgl@1371
 14268
+	mulnwh.d r14,r3,r2:t
mgl@1371
 14269
+	mulnwh.d r4,r5,r9:b
mgl@1371
 14270
+	mulnwh.d r12,r4,r4:t
mgl@1371
 14271
+	.text
mgl@1371
 14272
+	.global machh_w
mgl@1371
 14273
+machh_w:
mgl@1371
 14274
+	machh.w pc,pc:b,pc:b
mgl@1371
 14275
+	machh.w r12,r12:t,r12:t
mgl@1371
 14276
+	machh.w r5,r5:t,r5:t
mgl@1371
 14277
+	machh.w r4,r4:b,r4:b
mgl@1371
 14278
+	machh.w lr,lr:t,lr:t
mgl@1371
 14279
+	machh.w lr,r5:b,r1:t
mgl@1371
 14280
+	machh.w r9,r6:b,r7:b
mgl@1371
 14281
+	machh.w r5,lr:t,r12:b
mgl@1371
 14282
+	.text
mgl@1371
 14283
+	.global machh_d
mgl@1371
 14284
+machh_d:
mgl@1371
 14285
+	machh.d r0,pc:b,pc:b
mgl@1371
 14286
+	machh.d r14,r12:t,r12:t
mgl@1371
 14287
+	machh.d r8,r5:t,r5:t
mgl@1371
 14288
+	machh.d r6,r4:b,r4:b
mgl@1371
 14289
+	machh.d r2,lr:t,lr:t
mgl@1371
 14290
+	machh.d r10,r0:b,r8:b
mgl@1371
 14291
+	machh.d r14,r4:b,r5:t
mgl@1371
 14292
+	machh.d r8,r0:b,r4:t
mgl@1371
 14293
+	.text
mgl@1371
 14294
+	.global macsathh_w
mgl@1371
 14295
+macsathh_w:
mgl@1371
 14296
+	macsathh.w pc,pc:b,pc:b
mgl@1371
 14297
+	macsathh.w r12,r12:t,r12:t
mgl@1371
 14298
+	macsathh.w r5,r5:t,r5:t
mgl@1371
 14299
+	macsathh.w r4,r4:b,r4:b
mgl@1371
 14300
+	macsathh.w lr,lr:t,lr:t
mgl@1371
 14301
+	macsathh.w r7,r7:t,pc:t
mgl@1371
 14302
+	macsathh.w r4,r2:t,r4:b
mgl@1371
 14303
+	macsathh.w r4,r8:t,r3:t
mgl@1371
 14304
+	.text
mgl@1371
 14305
+	.global mulhh_w
mgl@1371
 14306
+mulhh_w:
mgl@1371
 14307
+	mulhh.w pc,pc:b,pc:b
mgl@1371
 14308
+	mulhh.w r12,r12:t,r12:t
mgl@1371
 14309
+	mulhh.w r5,r5:t,r5:t
mgl@1371
 14310
+	mulhh.w r4,r4:b,r4:b
mgl@1371
 14311
+	mulhh.w lr,lr:t,lr:t
mgl@1371
 14312
+	mulhh.w r7,r4:t,r9:b
mgl@1371
 14313
+	mulhh.w pc,r3:t,r7:t
mgl@1371
 14314
+	mulhh.w pc,r4:b,r9:t
mgl@1371
 14315
+	.text
mgl@1371
 14316
+	.global mulsathh_h
mgl@1371
 14317
+mulsathh_h:
mgl@1371
 14318
+	mulsathh.h pc,pc:b,pc:b
mgl@1371
 14319
+	mulsathh.h r12,r12:t,r12:t
mgl@1371
 14320
+	mulsathh.h r5,r5:t,r5:t
mgl@1371
 14321
+	mulsathh.h r4,r4:b,r4:b
mgl@1371
 14322
+	mulsathh.h lr,lr:t,lr:t
mgl@1371
 14323
+	mulsathh.h r3,r1:b,sp:b
mgl@1371
 14324
+	mulsathh.h r11,lr:t,r11:b
mgl@1371
 14325
+	mulsathh.h r8,r8:b,r11:t
mgl@1371
 14326
+	.text
mgl@1371
 14327
+	.global mulsathh_w
mgl@1371
 14328
+mulsathh_w:
mgl@1371
 14329
+	mulsathh.w pc,pc:b,pc:b
mgl@1371
 14330
+	mulsathh.w r12,r12:t,r12:t
mgl@1371
 14331
+	mulsathh.w r5,r5:t,r5:t
mgl@1371
 14332
+	mulsathh.w r4,r4:b,r4:b
mgl@1371
 14333
+	mulsathh.w lr,lr:t,lr:t
mgl@1371
 14334
+	mulsathh.w lr,r11:t,r6:b
mgl@1371
 14335
+	mulsathh.w r6,r6:b,r7:t
mgl@1371
 14336
+	mulsathh.w r10,r2:b,r3:b
mgl@1371
 14337
+	.text
mgl@1371
 14338
+	.global mulsatrndhh_h
mgl@1371
 14339
+mulsatrndhh_h:
mgl@1371
 14340
+	mulsatrndhh.h pc,pc:b,pc:b
mgl@1371
 14341
+	mulsatrndhh.h r12,r12:t,r12:t
mgl@1371
 14342
+	mulsatrndhh.h r5,r5:t,r5:t
mgl@1371
 14343
+	mulsatrndhh.h r4,r4:b,r4:b
mgl@1371
 14344
+	mulsatrndhh.h lr,lr:t,lr:t
mgl@1371
 14345
+	mulsatrndhh.h r11,r6:b,r9:b
mgl@1371
 14346
+	mulsatrndhh.h r11,r3:b,r8:t
mgl@1371
 14347
+	mulsatrndhh.h r5,sp:t,r7:t
mgl@1371
 14348
+	.text
mgl@1371
 14349
+	.global mulsatrndwh_w
mgl@1371
 14350
+mulsatrndwh_w:
mgl@1371
 14351
+	mulsatrndwh.w pc,pc,pc:b
mgl@1371
 14352
+	mulsatrndwh.w r12,r12,r12:t
mgl@1371
 14353
+	mulsatrndwh.w r5,r5,r5:t
mgl@1371
 14354
+	mulsatrndwh.w r4,r4,r4:b
mgl@1371
 14355
+	mulsatrndwh.w lr,lr,lr:t
mgl@1371
 14356
+	mulsatrndwh.w r5,r12,r0:b
mgl@1371
 14357
+	mulsatrndwh.w r7,r10,pc:b
mgl@1371
 14358
+	mulsatrndwh.w r10,r8,r5:t
mgl@1371
 14359
+	.text
mgl@1371
 14360
+	.global macwh_d
mgl@1371
 14361
+macwh_d:
mgl@1371
 14362
+	macwh.d r0,pc,pc:b
mgl@1371
 14363
+	macwh.d r14,r12,r12:t
mgl@1371
 14364
+	macwh.d r8,r5,r5:t
mgl@1371
 14365
+	macwh.d r6,r4,r4:b
mgl@1371
 14366
+	macwh.d r2,lr,lr:t
mgl@1371
 14367
+	macwh.d r4,r10,r12:t
mgl@1371
 14368
+	macwh.d r4,r7,sp:b
mgl@1371
 14369
+	macwh.d r14,r9,r11:b
mgl@1371
 14370
+	.text
mgl@1371
 14371
+	.global mulwh_d
mgl@1371
 14372
+mulwh_d:
mgl@1371
 14373
+	mulwh.d r0,pc,pc:b
mgl@1371
 14374
+	mulwh.d r14,r12,r12:t
mgl@1371
 14375
+	mulwh.d r8,r5,r5:t
mgl@1371
 14376
+	mulwh.d r6,r4,r4:b
mgl@1371
 14377
+	mulwh.d r2,lr,lr:t
mgl@1371
 14378
+	mulwh.d r12,r5,r1:b
mgl@1371
 14379
+	mulwh.d r0,r1,r3:t
mgl@1371
 14380
+	mulwh.d r0,r9,r2:b
mgl@1371
 14381
+	.text
mgl@1371
 14382
+	.global mulsatwh_w
mgl@1371
 14383
+mulsatwh_w:
mgl@1371
 14384
+	mulsatwh.w pc,pc,pc:b
mgl@1371
 14385
+	mulsatwh.w r12,r12,r12:t
mgl@1371
 14386
+	mulsatwh.w r5,r5,r5:t
mgl@1371
 14387
+	mulsatwh.w r4,r4,r4:b
mgl@1371
 14388
+	mulsatwh.w lr,lr,lr:t
mgl@1371
 14389
+	mulsatwh.w r11,pc,r10:t
mgl@1371
 14390
+	mulsatwh.w sp,r12,r9:t
mgl@1371
 14391
+	mulsatwh.w r0,r3,r2:t
mgl@1371
 14392
+	.text
mgl@1371
 14393
+	.global ldw7
mgl@1371
 14394
+ldw7:
mgl@1371
 14395
+	ld.w pc,pc[pc:b<<2]
mgl@1371
 14396
+	ld.w r12,r12[r12:t<<2]
mgl@1371
 14397
+	ld.w r5,r5[r5:u<<2]
mgl@1371
 14398
+	ld.w r4,r4[r4:l<<2]
mgl@1371
 14399
+	ld.w lr,lr[lr:l<<2]
mgl@1371
 14400
+	ld.w r9,r10[r6:l<<2]
mgl@1371
 14401
+	ld.w r2,r10[r10:b<<2]
mgl@1371
 14402
+	ld.w r11,r5[pc:b<<2]
mgl@1371
 14403
+	.text
mgl@1371
 14404
+	.global satadd_w
mgl@1371
 14405
+satadd_w:
mgl@1371
 14406
+	satadd.w pc,pc,pc
mgl@1371
 14407
+	satadd.w r12,r12,r12
mgl@1371
 14408
+	satadd.w r5,r5,r5
mgl@1371
 14409
+	satadd.w r4,r4,r4
mgl@1371
 14410
+	satadd.w lr,lr,lr
mgl@1371
 14411
+	satadd.w r4,r8,r11
mgl@1371
 14412
+	satadd.w r3,r12,r6
mgl@1371
 14413
+	satadd.w r3,lr,r9
mgl@1371
 14414
+	.text
mgl@1371
 14415
+	.global satsub_w1
mgl@1371
 14416
+satsub_w1:
mgl@1371
 14417
+	satsub.w pc,pc,pc
mgl@1371
 14418
+	satsub.w r12,r12,r12
mgl@1371
 14419
+	satsub.w r5,r5,r5
mgl@1371
 14420
+	satsub.w r4,r4,r4
mgl@1371
 14421
+	satsub.w lr,lr,lr
mgl@1371
 14422
+	satsub.w r8,sp,r0
mgl@1371
 14423
+	satsub.w r9,r8,r4
mgl@1371
 14424
+	satsub.w pc,lr,r2
mgl@1371
 14425
+	.text
mgl@1371
 14426
+	.global satadd_h
mgl@1371
 14427
+satadd_h:
mgl@1371
 14428
+	satadd.h pc,pc,pc
mgl@1371
 14429
+	satadd.h r12,r12,r12
mgl@1371
 14430
+	satadd.h r5,r5,r5
mgl@1371
 14431
+	satadd.h r4,r4,r4
mgl@1371
 14432
+	satadd.h lr,lr,lr
mgl@1371
 14433
+	satadd.h r7,r3,r9
mgl@1371
 14434
+	satadd.h r1,r0,r2
mgl@1371
 14435
+	satadd.h r1,r4,lr
mgl@1371
 14436
+	.text
mgl@1371
 14437
+	.global satsub_h
mgl@1371
 14438
+satsub_h:
mgl@1371
 14439
+	satsub.h pc,pc,pc
mgl@1371
 14440
+	satsub.h r12,r12,r12
mgl@1371
 14441
+	satsub.h r5,r5,r5
mgl@1371
 14442
+	satsub.h r4,r4,r4
mgl@1371
 14443
+	satsub.h lr,lr,lr
mgl@1371
 14444
+	satsub.h lr,lr,r3
mgl@1371
 14445
+	satsub.h r11,r6,r5
mgl@1371
 14446
+	satsub.h r3,sp,r0
mgl@1371
 14447
+	.text
mgl@1371
 14448
+	.global mul3
mgl@1371
 14449
+mul3:
mgl@1371
 14450
+	mul pc,pc,0
mgl@1371
 14451
+	mul r12,r12,-1
mgl@1371
 14452
+	mul r5,r5,-128
mgl@1371
 14453
+	mul r4,r4,127
mgl@1371
 14454
+	mul lr,lr,1
mgl@1371
 14455
+	mul r12,r2,-7
mgl@1371
 14456
+	mul r1,pc,95
mgl@1371
 14457
+	mul r4,r6,19
mgl@1371
 14458
+	.text
mgl@1371
 14459
+	.global rsub2
mgl@1371
 14460
+rsub2:
mgl@1371
 14461
+	rsub pc,pc,0
mgl@1371
 14462
+	rsub r12,r12,-1
mgl@1371
 14463
+	rsub r5,r5,-128
mgl@1371
 14464
+	rsub r4,r4,127
mgl@1371
 14465
+	rsub lr,lr,1
mgl@1371
 14466
+	rsub r9,lr,96
mgl@1371
 14467
+	rsub r11,r1,56
mgl@1371
 14468
+	rsub r0,r7,-87
mgl@1371
 14469
+	.text
mgl@1371
 14470
+	.global clz
mgl@1371
 14471
+clz:
mgl@1371
 14472
+	clz pc,pc
mgl@1371
 14473
+	clz r12,r12
mgl@1371
 14474
+	clz r5,r5
mgl@1371
 14475
+	clz r4,r4
mgl@1371
 14476
+	clz lr,lr
mgl@1371
 14477
+	clz r2,r3
mgl@1371
 14478
+	clz r5,r11
mgl@1371
 14479
+	clz pc,r3
mgl@1371
 14480
+	.text
mgl@1371
 14481
+	.global cpc1
mgl@1371
 14482
+cpc1:
mgl@1371
 14483
+	cpc pc,pc
mgl@1371
 14484
+	cpc r12,r12
mgl@1371
 14485
+	cpc r5,r5
mgl@1371
 14486
+	cpc r4,r4
mgl@1371
 14487
+	cpc lr,lr
mgl@1371
 14488
+	cpc pc,r4
mgl@1371
 14489
+	cpc r5,r9
mgl@1371
 14490
+	cpc r6,r7
mgl@1371
 14491
+	.text
mgl@1371
 14492
+	.global asr3
mgl@1371
 14493
+asr3:
mgl@1371
 14494
+	asr pc,pc,0
mgl@1371
 14495
+	asr r12,r12,31
mgl@1371
 14496
+	asr r5,r5,16
mgl@1371
 14497
+	asr r4,r4,15
mgl@1371
 14498
+	asr lr,lr,1
mgl@1371
 14499
+	asr r4,r11,19
mgl@1371
 14500
+	asr sp,pc,26
mgl@1371
 14501
+	asr r11,sp,8
mgl@1371
 14502
+	.text
mgl@1371
 14503
+	.global lsl3
mgl@1371
 14504
+lsl3:
mgl@1371
 14505
+	lsl pc,pc,0
mgl@1371
 14506
+	lsl r12,r12,31
mgl@1371
 14507
+	lsl r5,r5,16
mgl@1371
 14508
+	lsl r4,r4,15
mgl@1371
 14509
+	lsl lr,lr,1
mgl@1371
 14510
+	lsl r8,r10,17
mgl@1371
 14511
+	lsl r2,lr,3
mgl@1371
 14512
+	lsl lr,r11,14
mgl@1371
 14513
+	.text
mgl@1371
 14514
+	.global lsr3
mgl@1371
 14515
+lsr3:
mgl@1371
 14516
+	lsr pc,pc,0
mgl@1371
 14517
+	lsr r12,r12,31
mgl@1371
 14518
+	lsr r5,r5,16
mgl@1371
 14519
+	lsr r4,r4,15
mgl@1371
 14520
+	lsr lr,lr,1
mgl@1371
 14521
+	lsr r4,r3,31
mgl@1371
 14522
+	lsr pc,r9,14
mgl@1371
 14523
+	lsr r3,r0,6
mgl@1371
 14524
+/*	.text
mgl@1371
 14525
+	.global extract_b
mgl@1371
 14526
+extract_b:
mgl@1371
 14527
+	extract.b pc,pc:b
mgl@1371
 14528
+	extract.b r12,r12:t
mgl@1371
 14529
+	extract.b r5,r5:u
mgl@1371
 14530
+	extract.b r4,r4:l
mgl@1371
 14531
+	extract.b lr,lr:l
mgl@1371
 14532
+	extract.b r2,r5:l
mgl@1371
 14533
+	extract.b r12,r3:l
mgl@1371
 14534
+	extract.b sp,r3:l
mgl@1371
 14535
+	.text
mgl@1371
 14536
+	.global insert_b
mgl@1371
 14537
+insert_b:
mgl@1371
 14538
+	insert.b pc:b,pc
mgl@1371
 14539
+	insert.b r12:t,r12
mgl@1371
 14540
+	insert.b r5:u,r5
mgl@1371
 14541
+	insert.b r4:l,r4
mgl@1371
 14542
+	insert.b lr:l,lr
mgl@1371
 14543
+	insert.b r12:u,r3
mgl@1371
 14544
+	insert.b r10:l,lr
mgl@1371
 14545
+	insert.b r11:l,r12
mgl@1371
 14546
+	.text
mgl@1371
 14547
+	.global extract_h
mgl@1371
 14548
+extract_h:
mgl@1371
 14549
+	extract.h pc,pc:b
mgl@1371
 14550
+	extract.h r12,r12:t
mgl@1371
 14551
+	extract.h r5,r5:t
mgl@1371
 14552
+	extract.h r4,r4:b
mgl@1371
 14553
+	extract.h lr,lr:t
mgl@1371
 14554
+	extract.h r11,lr:b
mgl@1371
 14555
+	extract.h r10,r0:b
mgl@1371
 14556
+	extract.h r11,r12:b
mgl@1371
 14557
+	.text
mgl@1371
 14558
+	.global insert_h
mgl@1371
 14559
+insert_h:
mgl@1371
 14560
+	insert.h pc:b,pc
mgl@1371
 14561
+	insert.h r12:t,r12
mgl@1371
 14562
+	insert.h r5:t,r5
mgl@1371
 14563
+	insert.h r4:b,r4
mgl@1371
 14564
+	insert.h lr:t,lr
mgl@1371
 14565
+	insert.h r12:t,r11
mgl@1371
 14566
+	insert.h r7:b,r6
mgl@1371
 14567
+	insert.h r1:t,r11 */
mgl@1371
 14568
+	.text
mgl@1371
 14569
+	.global movc1
mgl@1371
 14570
+movc1:
mgl@1371
 14571
+	moveq pc,pc
mgl@1371
 14572
+	moval r12,r12
mgl@1371
 14573
+	movls r5,r5
mgl@1371
 14574
+	movpl r4,r4
mgl@1371
 14575
+	movne lr,lr
mgl@1371
 14576
+	movne pc,r11
mgl@1371
 14577
+	movmi r10,r2
mgl@1371
 14578
+	movls r8,r12
mgl@1371
 14579
+	.text
mgl@1371
 14580
+	.global padd_h
mgl@1371
 14581
+padd_h:
mgl@1371
 14582
+	padd.h pc,pc,pc
mgl@1371
 14583
+	padd.h r12,r12,r12
mgl@1371
 14584
+	padd.h r5,r5,r5
mgl@1371
 14585
+	padd.h r4,r4,r4
mgl@1371
 14586
+	padd.h lr,lr,lr
mgl@1371
 14587
+	padd.h r8,r2,r7
mgl@1371
 14588
+	padd.h r0,r0,r3
mgl@1371
 14589
+	padd.h sp,r11,r6
mgl@1371
 14590
+	.text
mgl@1371
 14591
+	.global psub_h
mgl@1371
 14592
+psub_h:
mgl@1371
 14593
+	psub.h pc,pc,pc
mgl@1371
 14594
+	psub.h r12,r12,r12
mgl@1371
 14595
+	psub.h r5,r5,r5
mgl@1371
 14596
+	psub.h r4,r4,r4
mgl@1371
 14597
+	psub.h lr,lr,lr
mgl@1371
 14598
+	psub.h lr,r6,r8
mgl@1371
 14599
+	psub.h r0,r1,sp
mgl@1371
 14600
+	psub.h pc,pc,sp
mgl@1371
 14601
+	.text
mgl@1371
 14602
+	.global paddx_h
mgl@1371
 14603
+paddx_h:
mgl@1371
 14604
+	paddx.h pc,pc,pc
mgl@1371
 14605
+	paddx.h r12,r12,r12
mgl@1371
 14606
+	paddx.h r5,r5,r5
mgl@1371
 14607
+	paddx.h r4,r4,r4
mgl@1371
 14608
+	paddx.h lr,lr,lr
mgl@1371
 14609
+	paddx.h pc,pc,r1
mgl@1371
 14610
+	paddx.h r10,r4,r5
mgl@1371
 14611
+	paddx.h r5,pc,r2
mgl@1371
 14612
+	.text
mgl@1371
 14613
+	.global psubx_h
mgl@1371
 14614
+psubx_h:
mgl@1371
 14615
+	psubx.h pc,pc,pc
mgl@1371
 14616
+	psubx.h r12,r12,r12
mgl@1371
 14617
+	psubx.h r5,r5,r5
mgl@1371
 14618
+	psubx.h r4,r4,r4
mgl@1371
 14619
+	psubx.h lr,lr,lr
mgl@1371
 14620
+	psubx.h r5,r12,r5
mgl@1371
 14621
+	psubx.h r3,r8,r3
mgl@1371
 14622
+	psubx.h r5,r2,r3
mgl@1371
 14623
+	.text
mgl@1371
 14624
+	.global padds_sh
mgl@1371
 14625
+padds_sh:
mgl@1371
 14626
+	padds.sh pc,pc,pc
mgl@1371
 14627
+	padds.sh r12,r12,r12
mgl@1371
 14628
+	padds.sh r5,r5,r5
mgl@1371
 14629
+	padds.sh r4,r4,r4
mgl@1371
 14630
+	padds.sh lr,lr,lr
mgl@1371
 14631
+	padds.sh r9,lr,r2
mgl@1371
 14632
+	padds.sh r6,r8,r1
mgl@1371
 14633
+	padds.sh r6,r4,r10
mgl@1371
 14634
+	.text
mgl@1371
 14635
+	.global psubs_sh
mgl@1371
 14636
+psubs_sh:
mgl@1371
 14637
+	psubs.sh pc,pc,pc
mgl@1371
 14638
+	psubs.sh r12,r12,r12
mgl@1371
 14639
+	psubs.sh r5,r5,r5
mgl@1371
 14640
+	psubs.sh r4,r4,r4
mgl@1371
 14641
+	psubs.sh lr,lr,lr
mgl@1371
 14642
+	psubs.sh r6,lr,r11
mgl@1371
 14643
+	psubs.sh r2,r12,r4
mgl@1371
 14644
+	psubs.sh r0,r9,r0
mgl@1371
 14645
+	.text
mgl@1371
 14646
+	.global paddxs_sh
mgl@1371
 14647
+paddxs_sh:
mgl@1371
 14648
+	paddxs.sh pc,pc,pc
mgl@1371
 14649
+	paddxs.sh r12,r12,r12
mgl@1371
 14650
+	paddxs.sh r5,r5,r5
mgl@1371
 14651
+	paddxs.sh r4,r4,r4
mgl@1371
 14652
+	paddxs.sh lr,lr,lr
mgl@1371
 14653
+	paddxs.sh r0,r3,r9
mgl@1371
 14654
+	paddxs.sh pc,r10,r11
mgl@1371
 14655
+	paddxs.sh pc,r10,pc
mgl@1371
 14656
+	.text
mgl@1371
 14657
+	.global psubxs_sh
mgl@1371
 14658
+psubxs_sh:
mgl@1371
 14659
+	psubxs.sh pc,pc,pc
mgl@1371
 14660
+	psubxs.sh r12,r12,r12
mgl@1371
 14661
+	psubxs.sh r5,r5,r5
mgl@1371
 14662
+	psubxs.sh r4,r4,r4
mgl@1371
 14663
+	psubxs.sh lr,lr,lr
mgl@1371
 14664
+	psubxs.sh r7,r4,r4
mgl@1371
 14665
+	psubxs.sh r7,r8,r3
mgl@1371
 14666
+	psubxs.sh pc,r6,r5
mgl@1371
 14667
+	.text
mgl@1371
 14668
+	.global padds_uh
mgl@1371
 14669
+padds_uh:
mgl@1371
 14670
+	padds.uh pc,pc,pc
mgl@1371
 14671
+	padds.uh r12,r12,r12
mgl@1371
 14672
+	padds.uh r5,r5,r5
mgl@1371
 14673
+	padds.uh r4,r4,r4
mgl@1371
 14674
+	padds.uh lr,lr,lr
mgl@1371
 14675
+	padds.uh r12,r11,r7
mgl@1371
 14676
+	padds.uh r7,r8,lr
mgl@1371
 14677
+	padds.uh r6,r9,r7
mgl@1371
 14678
+	.text
mgl@1371
 14679
+	.global psubs_uh
mgl@1371
 14680
+psubs_uh:
mgl@1371
 14681
+	psubs.uh pc,pc,pc
mgl@1371
 14682
+	psubs.uh r12,r12,r12
mgl@1371
 14683
+	psubs.uh r5,r5,r5
mgl@1371
 14684
+	psubs.uh r4,r4,r4
mgl@1371
 14685
+	psubs.uh lr,lr,lr
mgl@1371
 14686
+	psubs.uh lr,r10,r6
mgl@1371
 14687
+	psubs.uh sp,r2,pc
mgl@1371
 14688
+	psubs.uh r2,r9,r2
mgl@1371
 14689
+	.text
mgl@1371
 14690
+	.global paddxs_uh
mgl@1371
 14691
+paddxs_uh:
mgl@1371
 14692
+	paddxs.uh pc,pc,pc
mgl@1371
 14693
+	paddxs.uh r12,r12,r12
mgl@1371
 14694
+	paddxs.uh r5,r5,r5
mgl@1371
 14695
+	paddxs.uh r4,r4,r4
mgl@1371
 14696
+	paddxs.uh lr,lr,lr
mgl@1371
 14697
+	paddxs.uh r7,r9,r5
mgl@1371
 14698
+	paddxs.uh r9,r1,r4
mgl@1371
 14699
+	paddxs.uh r5,r2,r3
mgl@1371
 14700
+	.text
mgl@1371
 14701
+	.global psubxs_uh
mgl@1371
 14702
+psubxs_uh:
mgl@1371
 14703
+	psubxs.uh pc,pc,pc
mgl@1371
 14704
+	psubxs.uh r12,r12,r12
mgl@1371
 14705
+	psubxs.uh r5,r5,r5
mgl@1371
 14706
+	psubxs.uh r4,r4,r4
mgl@1371
 14707
+	psubxs.uh lr,lr,lr
mgl@1371
 14708
+	psubxs.uh sp,r5,sp
mgl@1371
 14709
+	psubxs.uh sp,r6,r6
mgl@1371
 14710
+	psubxs.uh r3,r11,r8
mgl@1371
 14711
+	.text
mgl@1371
 14712
+	.global paddh_sh
mgl@1371
 14713
+paddh_sh:
mgl@1371
 14714
+	paddh.sh pc,pc,pc
mgl@1371
 14715
+	paddh.sh r12,r12,r12
mgl@1371
 14716
+	paddh.sh r5,r5,r5
mgl@1371
 14717
+	paddh.sh r4,r4,r4
mgl@1371
 14718
+	paddh.sh lr,lr,lr
mgl@1371
 14719
+	paddh.sh r12,sp,r3
mgl@1371
 14720
+	paddh.sh pc,r5,r3
mgl@1371
 14721
+	paddh.sh r8,r8,sp
mgl@1371
 14722
+	.text
mgl@1371
 14723
+	.global psubh_sh
mgl@1371
 14724
+psubh_sh:
mgl@1371
 14725
+	psubh.sh pc,pc,pc
mgl@1371
 14726
+	psubh.sh r12,r12,r12
mgl@1371
 14727
+	psubh.sh r5,r5,r5
mgl@1371
 14728
+	psubh.sh r4,r4,r4
mgl@1371
 14729
+	psubh.sh lr,lr,lr
mgl@1371
 14730
+	psubh.sh r1,r5,r8
mgl@1371
 14731
+	psubh.sh r7,r3,r6
mgl@1371
 14732
+	psubh.sh r4,r3,r3
mgl@1371
 14733
+	.text
mgl@1371
 14734
+	.global paddxh_sh
mgl@1371
 14735
+paddxh_sh:
mgl@1371
 14736
+	paddxh.sh pc,pc,pc
mgl@1371
 14737
+	paddxh.sh r12,r12,r12
mgl@1371
 14738
+	paddxh.sh r5,r5,r5
mgl@1371
 14739
+	paddxh.sh r4,r4,r4
mgl@1371
 14740
+	paddxh.sh lr,lr,lr
mgl@1371
 14741
+	paddxh.sh r6,r0,r4
mgl@1371
 14742
+	paddxh.sh r9,r8,r9
mgl@1371
 14743
+	paddxh.sh r3,r0,sp
mgl@1371
 14744
+	.text
mgl@1371
 14745
+	.global psubxh_sh
mgl@1371
 14746
+psubxh_sh:
mgl@1371
 14747
+	psubxh.sh pc,pc,pc
mgl@1371
 14748
+	psubxh.sh r12,r12,r12
mgl@1371
 14749
+	psubxh.sh r5,r5,r5
mgl@1371
 14750
+	psubxh.sh r4,r4,r4
mgl@1371
 14751
+	psubxh.sh lr,lr,lr
mgl@1371
 14752
+	psubxh.sh r4,pc,r12
mgl@1371
 14753
+	psubxh.sh r8,r4,r6
mgl@1371
 14754
+	psubxh.sh r12,r9,r4
mgl@1371
 14755
+	.text
mgl@1371
 14756
+	.global paddsub_h
mgl@1371
 14757
+paddsub_h:
mgl@1371
 14758
+	paddsub.h pc,pc:b,pc:b
mgl@1371
 14759
+	paddsub.h r12,r12:t,r12:t
mgl@1371
 14760
+	paddsub.h r5,r5:t,r5:t
mgl@1371
 14761
+	paddsub.h r4,r4:b,r4:b
mgl@1371
 14762
+	paddsub.h lr,lr:t,lr:t
mgl@1371
 14763
+	paddsub.h r5,r2:t,lr:b
mgl@1371
 14764
+	paddsub.h r7,r1:b,r8:b
mgl@1371
 14765
+	paddsub.h r6,r10:t,r5:t
mgl@1371
 14766
+	.text
mgl@1371
 14767
+	.global psubadd_h
mgl@1371
 14768
+psubadd_h:
mgl@1371
 14769
+	psubadd.h pc,pc:b,pc:b
mgl@1371
 14770
+	psubadd.h r12,r12:t,r12:t
mgl@1371
 14771
+	psubadd.h r5,r5:t,r5:t
mgl@1371
 14772
+	psubadd.h r4,r4:b,r4:b
mgl@1371
 14773
+	psubadd.h lr,lr:t,lr:t
mgl@1371
 14774
+	psubadd.h r9,r11:t,r8:t
mgl@1371
 14775
+	psubadd.h r10,r7:t,lr:t
mgl@1371
 14776
+	psubadd.h r6,pc:t,pc:b
mgl@1371
 14777
+	.text
mgl@1371
 14778
+	.global paddsubs_sh
mgl@1371
 14779
+paddsubs_sh:
mgl@1371
 14780
+	paddsubs.sh pc,pc:b,pc:b
mgl@1371
 14781
+	paddsubs.sh r12,r12:t,r12:t
mgl@1371
 14782
+	paddsubs.sh r5,r5:t,r5:t
mgl@1371
 14783
+	paddsubs.sh r4,r4:b,r4:b
mgl@1371
 14784
+	paddsubs.sh lr,lr:t,lr:t
mgl@1371
 14785
+	paddsubs.sh r0,lr:t,r0:b
mgl@1371
 14786
+	paddsubs.sh r9,r2:t,r4:t
mgl@1371
 14787
+	paddsubs.sh r12,r9:t,sp:t
mgl@1371
 14788
+	.text
mgl@1371
 14789
+	.global psubadds_sh
mgl@1371
 14790
+psubadds_sh:
mgl@1371
 14791
+	psubadds.sh pc,pc:b,pc:b
mgl@1371
 14792
+	psubadds.sh r12,r12:t,r12:t
mgl@1371
 14793
+	psubadds.sh r5,r5:t,r5:t
mgl@1371
 14794
+	psubadds.sh r4,r4:b,r4:b
mgl@1371
 14795
+	psubadds.sh lr,lr:t,lr:t
mgl@1371
 14796
+	psubadds.sh pc,lr:b,r1:t
mgl@1371
 14797
+	psubadds.sh r11,r3:b,r12:b
mgl@1371
 14798
+	psubadds.sh r10,r2:t,r8:t
mgl@1371
 14799
+	.text
mgl@1371
 14800
+	.global paddsubs_uh
mgl@1371
 14801
+paddsubs_uh:
mgl@1371
 14802
+	paddsubs.uh pc,pc:b,pc:b
mgl@1371
 14803
+	paddsubs.uh r12,r12:t,r12:t
mgl@1371
 14804
+	paddsubs.uh r5,r5:t,r5:t
mgl@1371
 14805
+	paddsubs.uh r4,r4:b,r4:b
mgl@1371
 14806
+	paddsubs.uh lr,lr:t,lr:t
mgl@1371
 14807
+	paddsubs.uh r9,r2:b,r3:b
mgl@1371
 14808
+	paddsubs.uh sp,sp:b,r7:t
mgl@1371
 14809
+	paddsubs.uh lr,r0:b,r10:t
mgl@1371
 14810
+	.text
mgl@1371
 14811
+	.global psubadds_uh
mgl@1371
 14812
+psubadds_uh:
mgl@1371
 14813
+	psubadds.uh pc,pc:b,pc:b
mgl@1371
 14814
+	psubadds.uh r12,r12:t,r12:t
mgl@1371
 14815
+	psubadds.uh r5,r5:t,r5:t
mgl@1371
 14816
+	psubadds.uh r4,r4:b,r4:b
mgl@1371
 14817
+	psubadds.uh lr,lr:t,lr:t
mgl@1371
 14818
+	psubadds.uh r12,r9:t,pc:t
mgl@1371
 14819
+	psubadds.uh r8,r6:b,r8:b
mgl@1371
 14820
+	psubadds.uh r8,r8:b,r4:b
mgl@1371
 14821
+	.text
mgl@1371
 14822
+	.global paddsubh_sh
mgl@1371
 14823
+paddsubh_sh:
mgl@1371
 14824
+	paddsubh.sh pc,pc:b,pc:b
mgl@1371
 14825
+	paddsubh.sh r12,r12:t,r12:t
mgl@1371
 14826
+	paddsubh.sh r5,r5:t,r5:t
mgl@1371
 14827
+	paddsubh.sh r4,r4:b,r4:b
mgl@1371
 14828
+	paddsubh.sh lr,lr:t,lr:t
mgl@1371
 14829
+	paddsubh.sh r8,r9:t,r9:b
mgl@1371
 14830
+	paddsubh.sh r0,sp:t,r1:t
mgl@1371
 14831
+	paddsubh.sh r3,r1:b,r0:t
mgl@1371
 14832
+	.text
mgl@1371
 14833
+	.global psubaddh_sh
mgl@1371
 14834
+psubaddh_sh:
mgl@1371
 14835
+	psubaddh.sh pc,pc:b,pc:b
mgl@1371
 14836
+	psubaddh.sh r12,r12:t,r12:t
mgl@1371
 14837
+	psubaddh.sh r5,r5:t,r5:t
mgl@1371
 14838
+	psubaddh.sh r4,r4:b,r4:b
mgl@1371
 14839
+	psubaddh.sh lr,lr:t,lr:t
mgl@1371
 14840
+	psubaddh.sh r7,r3:t,r10:b
mgl@1371
 14841
+	psubaddh.sh r7,r2:t,r1:t
mgl@1371
 14842
+	psubaddh.sh r11,r3:b,r6:b
mgl@1371
 14843
+	.text
mgl@1371
 14844
+	.global padd_b
mgl@1371
 14845
+padd_b:
mgl@1371
 14846
+	padd.b pc,pc,pc
mgl@1371
 14847
+	padd.b r12,r12,r12
mgl@1371
 14848
+	padd.b r5,r5,r5
mgl@1371
 14849
+	padd.b r4,r4,r4
mgl@1371
 14850
+	padd.b lr,lr,lr
mgl@1371
 14851
+	padd.b r2,r6,pc
mgl@1371
 14852
+	padd.b r8,r9,r12
mgl@1371
 14853
+	padd.b r5,r12,r3
mgl@1371
 14854
+	.text
mgl@1371
 14855
+	.global psub_b
mgl@1371
 14856
+psub_b:
mgl@1371
 14857
+	psub.b pc,pc,pc
mgl@1371
 14858
+	psub.b r12,r12,r12
mgl@1371
 14859
+	psub.b r5,r5,r5
mgl@1371
 14860
+	psub.b r4,r4,r4
mgl@1371
 14861
+	psub.b lr,lr,lr
mgl@1371
 14862
+	psub.b r0,r12,pc
mgl@1371
 14863
+	psub.b r7,sp,r10
mgl@1371
 14864
+	psub.b r5,sp,r12
mgl@1371
 14865
+	.text
mgl@1371
 14866
+	.global padds_sb
mgl@1371
 14867
+padds_sb:
mgl@1371
 14868
+	padds.sb pc,pc,pc
mgl@1371
 14869
+	padds.sb r12,r12,r12
mgl@1371
 14870
+	padds.sb r5,r5,r5
mgl@1371
 14871
+	padds.sb r4,r4,r4
mgl@1371
 14872
+	padds.sb lr,lr,lr
mgl@1371
 14873
+	padds.sb sp,r11,r4
mgl@1371
 14874
+	padds.sb r11,r10,r11
mgl@1371
 14875
+	padds.sb r5,r12,r6
mgl@1371
 14876
+	.text
mgl@1371
 14877
+	.global psubs_sb
mgl@1371
 14878
+psubs_sb:
mgl@1371
 14879
+	psubs.sb pc,pc,pc
mgl@1371
 14880
+	psubs.sb r12,r12,r12
mgl@1371
 14881
+	psubs.sb r5,r5,r5
mgl@1371
 14882
+	psubs.sb r4,r4,r4
mgl@1371
 14883
+	psubs.sb lr,lr,lr
mgl@1371
 14884
+	psubs.sb r7,r6,r8
mgl@1371
 14885
+	psubs.sb r12,r10,r9
mgl@1371
 14886
+	psubs.sb pc,r11,r0
mgl@1371
 14887
+	.text
mgl@1371
 14888
+	.global padds_ub
mgl@1371
 14889
+padds_ub:
mgl@1371
 14890
+	padds.ub pc,pc,pc
mgl@1371
 14891
+	padds.ub r12,r12,r12
mgl@1371
 14892
+	padds.ub r5,r5,r5
mgl@1371
 14893
+	padds.ub r4,r4,r4
mgl@1371
 14894
+	padds.ub lr,lr,lr
mgl@1371
 14895
+	padds.ub r3,r2,r11
mgl@1371
 14896
+	padds.ub r10,r8,r1
mgl@1371
 14897
+	padds.ub r11,r8,r10
mgl@1371
 14898
+	.text
mgl@1371
 14899
+	.global psubs_ub
mgl@1371
 14900
+psubs_ub:
mgl@1371
 14901
+	psubs.ub pc,pc,pc
mgl@1371
 14902
+	psubs.ub r12,r12,r12
mgl@1371
 14903
+	psubs.ub r5,r5,r5
mgl@1371
 14904
+	psubs.ub r4,r4,r4
mgl@1371
 14905
+	psubs.ub lr,lr,lr
mgl@1371
 14906
+	psubs.ub r0,r2,r7
mgl@1371
 14907
+	psubs.ub lr,r5,r3
mgl@1371
 14908
+	psubs.ub r6,r7,r9
mgl@1371
 14909
+	.text
mgl@1371
 14910
+	.global paddh_ub
mgl@1371
 14911
+paddh_ub:
mgl@1371
 14912
+	paddh.ub pc,pc,pc
mgl@1371
 14913
+	paddh.ub r12,r12,r12
mgl@1371
 14914
+	paddh.ub r5,r5,r5
mgl@1371
 14915
+	paddh.ub r4,r4,r4
mgl@1371
 14916
+	paddh.ub lr,lr,lr
mgl@1371
 14917
+	paddh.ub lr,r1,r0
mgl@1371
 14918
+	paddh.ub r2,r7,r7
mgl@1371
 14919
+	paddh.ub r2,r1,r2
mgl@1371
 14920
+	.text
mgl@1371
 14921
+	.global psubh_ub
mgl@1371
 14922
+psubh_ub:
mgl@1371
 14923
+	psubh.ub pc,pc,pc
mgl@1371
 14924
+	psubh.ub r12,r12,r12
mgl@1371
 14925
+	psubh.ub r5,r5,r5
mgl@1371
 14926
+	psubh.ub r4,r4,r4
mgl@1371
 14927
+	psubh.ub lr,lr,lr
mgl@1371
 14928
+	psubh.ub r0,r1,r6
mgl@1371
 14929
+	psubh.ub r4,lr,r10
mgl@1371
 14930
+	psubh.ub r9,r8,r1
mgl@1371
 14931
+	.text
mgl@1371
 14932
+	.global pmax_ub
mgl@1371
 14933
+pmax_ub:
mgl@1371
 14934
+	pmax.ub pc,pc,pc
mgl@1371
 14935
+	pmax.ub r12,r12,r12
mgl@1371
 14936
+	pmax.ub r5,r5,r5
mgl@1371
 14937
+	pmax.ub r4,r4,r4
mgl@1371
 14938
+	pmax.ub lr,lr,lr
mgl@1371
 14939
+	pmax.ub pc,r2,r11
mgl@1371
 14940
+	pmax.ub r12,r1,r1
mgl@1371
 14941
+	pmax.ub r5,r2,r0
mgl@1371
 14942
+	.text
mgl@1371
 14943
+	.global pmax_sh
mgl@1371
 14944
+pmax_sh:
mgl@1371
 14945
+	pmax.sh pc,pc,pc
mgl@1371
 14946
+	pmax.sh r12,r12,r12
mgl@1371
 14947
+	pmax.sh r5,r5,r5
mgl@1371
 14948
+	pmax.sh r4,r4,r4
mgl@1371
 14949
+	pmax.sh lr,lr,lr
mgl@1371
 14950
+	pmax.sh lr,r6,r12
mgl@1371
 14951
+	pmax.sh r2,pc,r5
mgl@1371
 14952
+	pmax.sh pc,r2,r7
mgl@1371
 14953
+	.text
mgl@1371
 14954
+	.global pmin_ub
mgl@1371
 14955
+pmin_ub:
mgl@1371
 14956
+	pmin.ub pc,pc,pc
mgl@1371
 14957
+	pmin.ub r12,r12,r12
mgl@1371
 14958
+	pmin.ub r5,r5,r5
mgl@1371
 14959
+	pmin.ub r4,r4,r4
mgl@1371
 14960
+	pmin.ub lr,lr,lr
mgl@1371
 14961
+	pmin.ub r8,r1,r5
mgl@1371
 14962
+	pmin.ub r1,r8,r3
mgl@1371
 14963
+	pmin.ub r0,r2,r7
mgl@1371
 14964
+	.text
mgl@1371
 14965
+	.global pmin_sh
mgl@1371
 14966
+pmin_sh:
mgl@1371
 14967
+	pmin.sh pc,pc,pc
mgl@1371
 14968
+	pmin.sh r12,r12,r12
mgl@1371
 14969
+	pmin.sh r5,r5,r5
mgl@1371
 14970
+	pmin.sh r4,r4,r4
mgl@1371
 14971
+	pmin.sh lr,lr,lr
mgl@1371
 14972
+	pmin.sh r8,r4,r10
mgl@1371
 14973
+	pmin.sh lr,r10,r12
mgl@1371
 14974
+	pmin.sh r2,r6,r2
mgl@1371
 14975
+	.text
mgl@1371
 14976
+	.global pavg_ub
mgl@1371
 14977
+pavg_ub:
mgl@1371
 14978
+	pavg.ub pc,pc,pc
mgl@1371
 14979
+	pavg.ub r12,r12,r12
mgl@1371
 14980
+	pavg.ub r5,r5,r5
mgl@1371
 14981
+	pavg.ub r4,r4,r4
mgl@1371
 14982
+	pavg.ub lr,lr,lr
mgl@1371
 14983
+	pavg.ub r0,r1,r6
mgl@1371
 14984
+	pavg.ub r8,r3,r6
mgl@1371
 14985
+	pavg.ub pc,r12,r10
mgl@1371
 14986
+	.text
mgl@1371
 14987
+	.global pavg_sh
mgl@1371
 14988
+pavg_sh:
mgl@1371
 14989
+	pavg.sh pc,pc,pc
mgl@1371
 14990
+	pavg.sh r12,r12,r12
mgl@1371
 14991
+	pavg.sh r5,r5,r5
mgl@1371
 14992
+	pavg.sh r4,r4,r4
mgl@1371
 14993
+	pavg.sh lr,lr,lr
mgl@1371
 14994
+	pavg.sh r9,pc,sp
mgl@1371
 14995
+	pavg.sh pc,sp,r3
mgl@1371
 14996
+	pavg.sh r6,r1,r9
mgl@1371
 14997
+	.text
mgl@1371
 14998
+	.global pabs_sb
mgl@1371
 14999
+pabs_sb:
mgl@1371
 15000
+	pabs.sb pc,pc
mgl@1371
 15001
+	pabs.sb r12,r12
mgl@1371
 15002
+	pabs.sb r5,r5
mgl@1371
 15003
+	pabs.sb r4,r4
mgl@1371
 15004
+	pabs.sb lr,lr
mgl@1371
 15005
+	pabs.sb r11,r6
mgl@1371
 15006
+	pabs.sb lr,r9
mgl@1371
 15007
+	pabs.sb sp,r7
mgl@1371
 15008
+	.text
mgl@1371
 15009
+	.global pabs_sh
mgl@1371
 15010
+pabs_sh:
mgl@1371
 15011
+	pabs.sh pc,pc
mgl@1371
 15012
+	pabs.sh r12,r12
mgl@1371
 15013
+	pabs.sh r5,r5
mgl@1371
 15014
+	pabs.sh r4,r4
mgl@1371
 15015
+	pabs.sh lr,lr
mgl@1371
 15016
+	pabs.sh pc,r3
mgl@1371
 15017
+	pabs.sh r5,r7
mgl@1371
 15018
+	pabs.sh r4,r0
mgl@1371
 15019
+	.text
mgl@1371
 15020
+	.global psad
mgl@1371
 15021
+psad:
mgl@1371
 15022
+	psad pc,pc,pc
mgl@1371
 15023
+	psad r12,r12,r12
mgl@1371
 15024
+	psad r5,r5,r5
mgl@1371
 15025
+	psad r4,r4,r4
mgl@1371
 15026
+	psad lr,lr,lr
mgl@1371
 15027
+	psad r9,r11,r11
mgl@1371
 15028
+	psad lr,r4,sp
mgl@1371
 15029
+	psad lr,r4,r5
mgl@1371
 15030
+	.text
mgl@1371
 15031
+	.global pasr_b
mgl@1371
 15032
+pasr_b:
mgl@1371
 15033
+	pasr.b pc,pc,0
mgl@1371
 15034
+	pasr.b r12,r12,7
mgl@1371
 15035
+	pasr.b r5,r5,4
mgl@1371
 15036
+	pasr.b r4,r4,3
mgl@1371
 15037
+	pasr.b lr,lr,1
mgl@1371
 15038
+	pasr.b pc,r7,1
mgl@1371
 15039
+	pasr.b sp,lr,6
mgl@1371
 15040
+	pasr.b sp,r3,2
mgl@1371
 15041
+	.text
mgl@1371
 15042
+	.global plsl_b
mgl@1371
 15043
+plsl_b:
mgl@1371
 15044
+	plsl.b pc,pc,0
mgl@1371
 15045
+	plsl.b r12,r12,7
mgl@1371
 15046
+	plsl.b r5,r5,4
mgl@1371
 15047
+	plsl.b r4,r4,3
mgl@1371
 15048
+	plsl.b lr,lr,1
mgl@1371
 15049
+	plsl.b r2,r11,4
mgl@1371
 15050
+	plsl.b r8,r5,7
mgl@1371
 15051
+	plsl.b pc,r0,2
mgl@1371
 15052
+	.text
mgl@1371
 15053
+	.global plsr_b
mgl@1371
 15054
+plsr_b:
mgl@1371
 15055
+	plsr.b pc,pc,0
mgl@1371
 15056
+	plsr.b r12,r12,7
mgl@1371
 15057
+	plsr.b r5,r5,4
mgl@1371
 15058
+	plsr.b r4,r4,3
mgl@1371
 15059
+	plsr.b lr,lr,1
mgl@1371
 15060
+	plsr.b r12,r1,2
mgl@1371
 15061
+	plsr.b r6,pc,7
mgl@1371
 15062
+	plsr.b r12,r11,2
mgl@1371
 15063
+	.text
mgl@1371
 15064
+	.global pasr_h
mgl@1371
 15065
+pasr_h:
mgl@1371
 15066
+	pasr.h pc,pc,0
mgl@1371
 15067
+	pasr.h r12,r12,15
mgl@1371
 15068
+	pasr.h r5,r5,8
mgl@1371
 15069
+	pasr.h r4,r4,7
mgl@1371
 15070
+	pasr.h lr,lr,1
mgl@1371
 15071
+	pasr.h r0,r11,10
mgl@1371
 15072
+	pasr.h r4,r6,8
mgl@1371
 15073
+	pasr.h r6,r2,4
mgl@1371
 15074
+	.text
mgl@1371
 15075
+	.global plsl_h
mgl@1371
 15076
+plsl_h:
mgl@1371
 15077
+	plsl.h pc,pc,0
mgl@1371
 15078
+	plsl.h r12,r12,15
mgl@1371
 15079
+	plsl.h r5,r5,8
mgl@1371
 15080
+	plsl.h r4,r4,7
mgl@1371
 15081
+	plsl.h lr,lr,1
mgl@1371
 15082
+	plsl.h r5,r10,9
mgl@1371
 15083
+	plsl.h sp,lr,8
mgl@1371
 15084
+	plsl.h r0,lr,7
mgl@1371
 15085
+	.text
mgl@1371
 15086
+	.global plsr_h
mgl@1371
 15087
+plsr_h:
mgl@1371
 15088
+	plsr.h pc,pc,0
mgl@1371
 15089
+	plsr.h r12,r12,15
mgl@1371
 15090
+	plsr.h r5,r5,8
mgl@1371
 15091
+	plsr.h r4,r4,7
mgl@1371
 15092
+	plsr.h lr,lr,1
mgl@1371
 15093
+	plsr.h r11,r0,15
mgl@1371
 15094
+	plsr.h lr,r3,3
mgl@1371
 15095
+	plsr.h r8,lr,10
mgl@1371
 15096
+	.text
mgl@1371
 15097
+	.global packw_sh
mgl@1371
 15098
+packw_sh:
mgl@1371
 15099
+	packw.sh pc,pc,pc
mgl@1371
 15100
+	packw.sh r12,r12,r12
mgl@1371
 15101
+	packw.sh r5,r5,r5
mgl@1371
 15102
+	packw.sh r4,r4,r4
mgl@1371
 15103
+	packw.sh lr,lr,lr
mgl@1371
 15104
+	packw.sh sp,r11,r10
mgl@1371
 15105
+	packw.sh r8,r2,r12
mgl@1371
 15106
+	packw.sh r8,r1,r5
mgl@1371
 15107
+	.text
mgl@1371
 15108
+	.global punpckub_h
mgl@1371
 15109
+punpckub_h:
mgl@1371
 15110
+	punpckub.h pc,pc:b
mgl@1371
 15111
+	punpckub.h r12,r12:t
mgl@1371
 15112
+	punpckub.h r5,r5:t
mgl@1371
 15113
+	punpckub.h r4,r4:b
mgl@1371
 15114
+	punpckub.h lr,lr:t
mgl@1371
 15115
+	punpckub.h r6,r1:t
mgl@1371
 15116
+	punpckub.h lr,r5:b
mgl@1371
 15117
+	punpckub.h lr,r2:t
mgl@1371
 15118
+	.text
mgl@1371
 15119
+	.global punpcksb_h
mgl@1371
 15120
+punpcksb_h:
mgl@1371
 15121
+	punpcksb.h pc,pc:b
mgl@1371
 15122
+	punpcksb.h r12,r12:t
mgl@1371
 15123
+	punpcksb.h r5,r5:t
mgl@1371
 15124
+	punpcksb.h r4,r4:b
mgl@1371
 15125
+	punpcksb.h lr,lr:t
mgl@1371
 15126
+	punpcksb.h r4,r7:t
mgl@1371
 15127
+	punpcksb.h r6,lr:b
mgl@1371
 15128
+	punpcksb.h r12,r12:t
mgl@1371
 15129
+	.text
mgl@1371
 15130
+	.global packsh_ub
mgl@1371
 15131
+packsh_ub:
mgl@1371
 15132
+	packsh.ub pc,pc,pc
mgl@1371
 15133
+	packsh.ub r12,r12,r12
mgl@1371
 15134
+	packsh.ub r5,r5,r5
mgl@1371
 15135
+	packsh.ub r4,r4,r4
mgl@1371
 15136
+	packsh.ub lr,lr,lr
mgl@1371
 15137
+	packsh.ub r3,r6,r3
mgl@1371
 15138
+	packsh.ub r8,r0,r3
mgl@1371
 15139
+	packsh.ub r9,r3,lr
mgl@1371
 15140
+	.text
mgl@1371
 15141
+	.global packsh_sb
mgl@1371
 15142
+packsh_sb:
mgl@1371
 15143
+	packsh.sb pc,pc,pc
mgl@1371
 15144
+	packsh.sb r12,r12,r12
mgl@1371
 15145
+	packsh.sb r5,r5,r5
mgl@1371
 15146
+	packsh.sb r4,r4,r4
mgl@1371
 15147
+	packsh.sb lr,lr,lr
mgl@1371
 15148
+	packsh.sb r6,r8,r1
mgl@1371
 15149
+	packsh.sb lr,r9,r8
mgl@1371
 15150
+	packsh.sb sp,r6,r6
mgl@1371
 15151
+	.text
mgl@1371
 15152
+	.global andl
mgl@1371
 15153
+andl:
mgl@1371
 15154
+	andl pc,0
mgl@1371
 15155
+	andl r12,65535
mgl@1371
 15156
+	andl r5,32768
mgl@1371
 15157
+	andl r4,32767
mgl@1371
 15158
+	andl lr,1
mgl@1371
 15159
+	andl pc,23128
mgl@1371
 15160
+	andl r8,47262
mgl@1371
 15161
+	andl r7,13719
mgl@1371
 15162
+	.text
mgl@1371
 15163
+	.global andl_coh
mgl@1371
 15164
+andl_coh:
mgl@1371
 15165
+	andl pc,0,COH
mgl@1371
 15166
+	andl r12,65535,COH
mgl@1371
 15167
+	andl r5,32768,COH
mgl@1371
 15168
+	andl r4,32767,COH
mgl@1371
 15169
+	andl lr,1,COH
mgl@1371
 15170
+	andl r6,22753,COH
mgl@1371
 15171
+	andl r0,40653,COH
mgl@1371
 15172
+	andl r4,48580,COH
mgl@1371
 15173
+	.text
mgl@1371
 15174
+	.global andh
mgl@1371
 15175
+andh:
mgl@1371
 15176
+	andh pc,0
mgl@1371
 15177
+	andh r12,65535
mgl@1371
 15178
+	andh r5,32768
mgl@1371
 15179
+	andh r4,32767
mgl@1371
 15180
+	andh lr,1
mgl@1371
 15181
+	andh r12,52312
mgl@1371
 15182
+	andh r3,8675
mgl@1371
 15183
+	andh r2,42987
mgl@1371
 15184
+	.text
mgl@1371
 15185
+	.global andh_coh
mgl@1371
 15186
+andh_coh:
mgl@1371
 15187
+	andh pc,0,COH
mgl@1371
 15188
+	andh r12,65535,COH
mgl@1371
 15189
+	andh r5,32768,COH
mgl@1371
 15190
+	andh r4,32767,COH
mgl@1371
 15191
+	andh lr,1,COH
mgl@1371
 15192
+	andh r11,34317,COH
mgl@1371
 15193
+	andh r8,52982,COH
mgl@1371
 15194
+	andh r10,23683,COH
mgl@1371
 15195
+	.text
mgl@1371
 15196
+	.global orl
mgl@1371
 15197
+orl:
mgl@1371
 15198
+	orl pc,0
mgl@1371
 15199
+	orl r12,65535
mgl@1371
 15200
+	orl r5,32768
mgl@1371
 15201
+	orl r4,32767
mgl@1371
 15202
+	orl lr,1
mgl@1371
 15203
+	orl sp,16766
mgl@1371
 15204
+	orl r0,21181
mgl@1371
 15205
+	orl pc,44103
mgl@1371
 15206
+	.text
mgl@1371
 15207
+	.global orh
mgl@1371
 15208
+orh:
mgl@1371
 15209
+	orh pc,0
mgl@1371
 15210
+	orh r12,65535
mgl@1371
 15211
+	orh r5,32768
mgl@1371
 15212
+	orh r4,32767
mgl@1371
 15213
+	orh lr,1
mgl@1371
 15214
+	orh r8,28285
mgl@1371
 15215
+	orh r12,30492
mgl@1371
 15216
+	orh r1,59930
mgl@1371
 15217
+	.text
mgl@1371
 15218
+	.global eorl
mgl@1371
 15219
+eorl:
mgl@1371
 15220
+	eorl pc,0
mgl@1371
 15221
+	eorl r12,65535
mgl@1371
 15222
+	eorl r5,32768
mgl@1371
 15223
+	eorl r4,32767
mgl@1371
 15224
+	eorl lr,1
mgl@1371
 15225
+	eorl r4,51129
mgl@1371
 15226
+	eorl r6,64477
mgl@1371
 15227
+	eorl r1,20913
mgl@1371
 15228
+	.text
mgl@1371
 15229
+	.global eorh
mgl@1371
 15230
+eorh:
mgl@1371
 15231
+	eorh pc,0
mgl@1371
 15232
+	eorh r12,65535
mgl@1371
 15233
+	eorh r5,32768
mgl@1371
 15234
+	eorh r4,32767
mgl@1371
 15235
+	eorh lr,1
mgl@1371
 15236
+	eorh r0,11732
mgl@1371
 15237
+	eorh r10,38069
mgl@1371
 15238
+	eorh r9,57130
mgl@1371
 15239
+	.text
mgl@1371
 15240
+	.global mcall
mgl@1371
 15241
+mcall:
mgl@1371
 15242
+	mcall pc[0]
mgl@1371
 15243
+	mcall r12[-4]
mgl@1371
 15244
+	mcall r5[-131072]
mgl@1371
 15245
+	mcall r4[131068]
mgl@1371
 15246
+	mcall lr[4]
mgl@1371
 15247
+	mcall sp[61180]
mgl@1371
 15248
+	mcall r4[-35000]
mgl@1371
 15249
+	mcall r0[9924]
mgl@1371
 15250
+	.text
mgl@1371
 15251
+	.global pref
mgl@1371
 15252
+pref:
mgl@1371
 15253
+	pref pc[0]
mgl@1371
 15254
+	pref r12[-1]
mgl@1371
 15255
+	pref r5[-32768]
mgl@1371
 15256
+	pref r4[32767]
mgl@1371
 15257
+	pref lr[1]
mgl@1371
 15258
+	pref r7[7748]
mgl@1371
 15259
+	pref r7[-7699]
mgl@1371
 15260
+	pref r2[-25892]
mgl@1371
 15261
+	.text
mgl@1371
 15262
+	.global cache
mgl@1371
 15263
+cache:
mgl@1371
 15264
+	cache pc[0],0
mgl@1371
 15265
+	cache r12[-1],31
mgl@1371
 15266
+	cache r5[-1024],16
mgl@1371
 15267
+	cache r4[1023],15
mgl@1371
 15268
+	cache lr[1],1
mgl@1371
 15269
+	cache r3[-964],17
mgl@1371
 15270
+	cache r4[-375],22
mgl@1371
 15271
+	cache r3[-888],17
mgl@1371
 15272
+	.text
mgl@1371
 15273
+	.global sub4
mgl@1371
 15274
+sub4:
mgl@1371
 15275
+	sub pc,0
mgl@1371
 15276
+	sub r12,-1
mgl@1371
 15277
+	sub r5,-1048576
mgl@1371
 15278
+	sub r4,1048575
mgl@1371
 15279
+	sub lr,1
mgl@1371
 15280
+	sub r2,-619156
mgl@1371
 15281
+	sub lr,461517
mgl@1371
 15282
+	sub r8,-185051
mgl@1371
 15283
+	.text
mgl@1371
 15284
+	.global cp3
mgl@1371
 15285
+cp3:
mgl@1371
 15286
+	cp pc,0
mgl@1371
 15287
+	cp r12,-1
mgl@1371
 15288
+	cp r5,-1048576
mgl@1371
 15289
+	cp r4,1048575
mgl@1371
 15290
+	cp lr,1
mgl@1371
 15291
+	cp r1,124078
mgl@1371
 15292
+	cp r0,-378909
mgl@1371
 15293
+	cp r4,-243180
mgl@1371
 15294
+	.text
mgl@1371
 15295
+	.global mov2
mgl@1371
 15296
+mov2:
mgl@1371
 15297
+	mov pc,0
mgl@1371
 15298
+	mov r12,-1
mgl@1371
 15299
+	mov r5,-1048576
mgl@1371
 15300
+	mov r4,1048575
mgl@1371
 15301
+	mov lr,1
mgl@1371
 15302
+	mov r5,-317021
mgl@1371
 15303
+	mov sp,-749164
mgl@1371
 15304
+	mov r5,940179
mgl@1371
 15305
+	.text
mgl@1371
 15306
+	.global brc2
mgl@1371
 15307
+brc2:
mgl@1371
 15308
+	breq 0
mgl@1371
 15309
+	bral -2
mgl@1371
 15310
+	brls -2097152
mgl@1371
 15311
+	brpl 2097150
mgl@1371
 15312
+	brne 2
mgl@1371
 15313
+	brhi -1796966
mgl@1371
 15314
+	brqs 1321368
mgl@1371
 15315
+	brls -577434
mgl@1371
 15316
+	.text
mgl@1371
 15317
+	.global rcall2
mgl@1371
 15318
+rcall2:
mgl@1371
 15319
+	rcall 0
mgl@1371
 15320
+	rcall -2
mgl@1371
 15321
+	rcall -2097152
mgl@1371
 15322
+	rcall 2097150
mgl@1371
 15323
+	rcall 2
mgl@1371
 15324
+	rcall 496820
mgl@1371
 15325
+	rcall 1085092
mgl@1371
 15326
+	rcall -1058
mgl@1371
 15327
+	.text
mgl@1371
 15328
+	.global sub5
mgl@1371
 15329
+sub5:
mgl@1371
 15330
+	sub pc,pc,0
mgl@1371
 15331
+	sub r12,r12,-1
mgl@1371
 15332
+	sub r5,r5,-32768
mgl@1371
 15333
+	sub r4,r4,32767
mgl@1371
 15334
+	sub lr,lr,1
mgl@1371
 15335
+	sub pc,pc,-12744
mgl@1371
 15336
+	sub r7,r7,-27365
mgl@1371
 15337
+	sub r2,r9,-17358
mgl@1371
 15338
+	.text
mgl@1371
 15339
+	.global satsub_w2
mgl@1371
 15340
+satsub_w2:
mgl@1371
 15341
+	satsub.w pc,pc,0
mgl@1371
 15342
+	satsub.w r12,r12,-1
mgl@1371
 15343
+	satsub.w r5,r5,-32768
mgl@1371
 15344
+	satsub.w r4,r4,32767
mgl@1371
 15345
+	satsub.w lr,lr,1
mgl@1371
 15346
+	satsub.w r2,lr,-2007
mgl@1371
 15347
+	satsub.w r7,r12,-784
mgl@1371
 15348
+	satsub.w r4,r7,23180
mgl@1371
 15349
+	.text
mgl@1371
 15350
+	.global ld_d4
mgl@1371
 15351
+ld_d4:
mgl@1371
 15352
+	ld.d r0,pc[0]
mgl@1371
 15353
+	ld.d r14,r12[-1]
mgl@1371
 15354
+	ld.d r8,r5[-32768]
mgl@1371
 15355
+	ld.d r6,r4[32767]
mgl@1371
 15356
+	ld.d r2,lr[1]
mgl@1371
 15357
+	ld.d r14,r11[14784]
mgl@1371
 15358
+	ld.d r6,r9[-18905]
mgl@1371
 15359
+	ld.d r2,r3[-6355]
mgl@1371
 15360
+	.text
mgl@1371
 15361
+	.global ld_w4
mgl@1371
 15362
+ld_w4:
mgl@1371
 15363
+	ld.w pc,pc[0]
mgl@1371
 15364
+	ld.w r12,r12[-1]
mgl@1371
 15365
+	ld.w r5,r5[-32768]
mgl@1371
 15366
+	ld.w r4,r4[32767]
mgl@1371
 15367
+	ld.w lr,lr[1]
mgl@1371
 15368
+	ld.w r0,r12[-22133]
mgl@1371
 15369
+	ld.w sp,pc[-20521]
mgl@1371
 15370
+	/* ld.w r3,r5[29035] */
mgl@1371
 15371
+	nop
mgl@1371
 15372
+	.text
mgl@1371
 15373
+	.global ld_sh4
mgl@1371
 15374
+ld_sh4:
mgl@1371
 15375
+	ld.sh pc,pc[0]
mgl@1371
 15376
+	ld.sh r12,r12[-1]
mgl@1371
 15377
+	ld.sh r5,r5[-32768]
mgl@1371
 15378
+	ld.sh r4,r4[32767]
mgl@1371
 15379
+	ld.sh lr,lr[1]
mgl@1371
 15380
+	ld.sh r6,r10[30930]
mgl@1371
 15381
+	ld.sh r6,r10[21973]
mgl@1371
 15382
+	/* ld.sh r11,r10[-2058] */
mgl@1371
 15383
+	nop
mgl@1371
 15384
+	.text
mgl@1371
 15385
+	.global ld_uh4
mgl@1371
 15386
+ld_uh4:
mgl@1371
 15387
+	ld.uh pc,pc[0]
mgl@1371
 15388
+	ld.uh r12,r12[-1]
mgl@1371
 15389
+	ld.uh r5,r5[-32768]
mgl@1371
 15390
+	ld.uh r4,r4[32767]
mgl@1371
 15391
+	ld.uh lr,lr[1]
mgl@1371
 15392
+	ld.uh r1,r9[-13354]
mgl@1371
 15393
+	ld.uh lr,r11[21337]
mgl@1371
 15394
+	/* ld.uh r2,lr[-25370] */
mgl@1371
 15395
+	nop
mgl@1371
 15396
+	.text
mgl@1371
 15397
+	.global ld_sb1
mgl@1371
 15398
+ld_sb1:
mgl@1371
 15399
+	ld.sb pc,pc[0]
mgl@1371
 15400
+	ld.sb r12,r12[-1]
mgl@1371
 15401
+	ld.sb r5,r5[-32768]
mgl@1371
 15402
+	ld.sb r4,r4[32767]
mgl@1371
 15403
+	ld.sb lr,lr[1]
mgl@1371
 15404
+	ld.sb r7,sp[-28663]
mgl@1371
 15405
+	ld.sb r2,r1[-5879]
mgl@1371
 15406
+	ld.sb r12,r3[18734]
mgl@1371
 15407
+	.text
mgl@1371
 15408
+	.global ld_ub4
mgl@1371
 15409
+ld_ub4:
mgl@1371
 15410
+	ld.ub pc,pc[0]
mgl@1371
 15411
+	ld.ub r12,r12[-1]
mgl@1371
 15412
+	ld.ub r5,r5[-32768]
mgl@1371
 15413
+	ld.ub r4,r4[32767]
mgl@1371
 15414
+	ld.ub lr,lr[1]
mgl@1371
 15415
+	ld.ub pc,r4[8277]
mgl@1371
 15416
+	ld.ub r5,r12[19172]
mgl@1371
 15417
+	ld.ub r10,lr[26347]
mgl@1371
 15418
+	.text
mgl@1371
 15419
+	.global st_d4
mgl@1371
 15420
+st_d4:
mgl@1371
 15421
+	st.d pc[0],r0
mgl@1371
 15422
+	st.d r12[-1],r14
mgl@1371
 15423
+	st.d r5[-32768],r8
mgl@1371
 15424
+	st.d r4[32767],r6
mgl@1371
 15425
+	st.d lr[1],r2
mgl@1371
 15426
+	st.d r5[13200],r10
mgl@1371
 15427
+	st.d r5[9352],r10
mgl@1371
 15428
+	st.d r5[32373],r4
mgl@1371
 15429
+	.text
mgl@1371
 15430
+	.global st_w4
mgl@1371
 15431
+st_w4:
mgl@1371
 15432
+	st.w pc[0],pc
mgl@1371
 15433
+	st.w r12[-1],r12
mgl@1371
 15434
+	st.w r5[-32768],r5
mgl@1371
 15435
+	st.w r4[32767],r4
mgl@1371
 15436
+	st.w lr[1],lr
mgl@1371
 15437
+	st.w sp[6136],r7
mgl@1371
 15438
+	st.w r6[27087],r12
mgl@1371
 15439
+	/* st.w r3[20143],r7 */
mgl@1371
 15440
+	nop
mgl@1371
 15441
+	.text
mgl@1371
 15442
+	.global st_h4
mgl@1371
 15443
+st_h4:
mgl@1371
 15444
+	st.h pc[0],pc
mgl@1371
 15445
+	st.h r12[-1],r12
mgl@1371
 15446
+	st.h r5[-32768],r5
mgl@1371
 15447
+	st.h r4[32767],r4
mgl@1371
 15448
+	st.h lr[1],lr
mgl@1371
 15449
+	st.h r4[-9962],r7
mgl@1371
 15450
+	st.h r9[-16250],r3
mgl@1371
 15451
+	/* st.h r8[-28810],r7 */
mgl@1371
 15452
+	nop
mgl@1371
 15453
+	.text
mgl@1371
 15454
+	.global st_b4
mgl@1371
 15455
+st_b4:
mgl@1371
 15456
+	st.b pc[0],pc
mgl@1371
 15457
+	st.b r12[-1],r12
mgl@1371
 15458
+	st.b r5[-32768],r5
mgl@1371
 15459
+	st.b r4[32767],r4
mgl@1371
 15460
+	st.b lr[1],lr
mgl@1371
 15461
+	st.b r12[30102],r6
mgl@1371
 15462
+	st.b r5[28977],r1
mgl@1371
 15463
+	st.b r0[5470],r1
mgl@1371
 15464
+	.text
mgl@1371
 15465
+	.global mfsr
mgl@1371
 15466
+mfsr:
mgl@1371
 15467
+	mfsr pc,0
mgl@1371
 15468
+	mfsr r12,1020
mgl@1371
 15469
+	mfsr r5,512
mgl@1371
 15470
+	mfsr r4,508
mgl@1371
 15471
+	mfsr lr,4
mgl@1371
 15472
+	mfsr r2,696
mgl@1371
 15473
+	mfsr r4,260
mgl@1371
 15474
+	mfsr r10,1016
mgl@1371
 15475
+	.text
mgl@1371
 15476
+	.global mtsr
mgl@1371
 15477
+mtsr:
mgl@1371
 15478
+	mtsr 0,pc
mgl@1371
 15479
+	mtsr 1020,r12
mgl@1371
 15480
+	mtsr 512,r5
mgl@1371
 15481
+	mtsr 508,r4
mgl@1371
 15482
+	mtsr 4,lr
mgl@1371
 15483
+	mtsr 224,r10
mgl@1371
 15484
+	mtsr 836,r12
mgl@1371
 15485
+	mtsr 304,r9
mgl@1371
 15486
+	.text
mgl@1371
 15487
+	.global mfdr
mgl@1371
 15488
+mfdr:
mgl@1371
 15489
+	mfdr pc,0
mgl@1371
 15490
+	mfdr r12,1020
mgl@1371
 15491
+	mfdr r5,512
mgl@1371
 15492
+	mfdr r4,508
mgl@1371
 15493
+	mfdr lr,4
mgl@1371
 15494
+	mfdr r6,932
mgl@1371
 15495
+	mfdr r5,36
mgl@1371
 15496
+	mfdr r9,300
mgl@1371
 15497
+	.text
mgl@1371
 15498
+	.global mtdr
mgl@1371
 15499
+mtdr:
mgl@1371
 15500
+	mtdr 0,pc
mgl@1371
 15501
+	mtdr 1020,r12
mgl@1371
 15502
+	mtdr 512,r5
mgl@1371
 15503
+	mtdr 508,r4
mgl@1371
 15504
+	mtdr 4,lr
mgl@1371
 15505
+	mtdr 180,r8
mgl@1371
 15506
+	mtdr 720,r10
mgl@1371
 15507
+	mtdr 408,lr
mgl@1371
 15508
+	.text
mgl@1371
 15509
+	.global sleep
mgl@1371
 15510
+sleep:
mgl@1371
 15511
+	sleep 0
mgl@1371
 15512
+	sleep 255
mgl@1371
 15513
+	sleep 128
mgl@1371
 15514
+	sleep 127
mgl@1371
 15515
+	sleep 1
mgl@1371
 15516
+	sleep 254
mgl@1371
 15517
+	sleep 15
mgl@1371
 15518
+	sleep 43
mgl@1371
 15519
+	.text
mgl@1371
 15520
+	.global sync
mgl@1371
 15521
+sync:
mgl@1371
 15522
+	sync 0
mgl@1371
 15523
+	sync 255
mgl@1371
 15524
+	sync 128
mgl@1371
 15525
+	sync 127
mgl@1371
 15526
+	sync 1
mgl@1371
 15527
+	sync 166
mgl@1371
 15528
+	sync 230
mgl@1371
 15529
+	sync 180
mgl@1371
 15530
+	.text
mgl@1371
 15531
+	.global bld
mgl@1371
 15532
+bld:
mgl@1371
 15533
+	bld pc,0
mgl@1371
 15534
+	bld r12,31
mgl@1371
 15535
+	bld r5,16
mgl@1371
 15536
+	bld r4,15
mgl@1371
 15537
+	bld lr,1
mgl@1371
 15538
+	bld r9,15
mgl@1371
 15539
+	bld r0,4
mgl@1371
 15540
+	bld lr,26
mgl@1371
 15541
+	.text
mgl@1371
 15542
+	.global bst
mgl@1371
 15543
+bst:
mgl@1371
 15544
+	bst pc,0
mgl@1371
 15545
+	bst r12,31
mgl@1371
 15546
+	bst r5,16
mgl@1371
 15547
+	bst r4,15
mgl@1371
 15548
+	bst lr,1
mgl@1371
 15549
+	bst r10,28
mgl@1371
 15550
+	bst r0,3
mgl@1371
 15551
+	bst sp,2
mgl@1371
 15552
+	.text
mgl@1371
 15553
+	.global sats
mgl@1371
 15554
+sats:
mgl@1371
 15555
+	sats pc>>0,0
mgl@1371
 15556
+	sats r12>>31,31
mgl@1371
 15557
+	sats r5>>16,16
mgl@1371
 15558
+	sats r4>>15,15
mgl@1371
 15559
+	sats lr>>1,1
mgl@1371
 15560
+	sats r10>>3,19
mgl@1371
 15561
+	sats r10>>2,26
mgl@1371
 15562
+	sats r1>>20,1
mgl@1371
 15563
+	.text
mgl@1371
 15564
+	.global satu
mgl@1371
 15565
+satu:
mgl@1371
 15566
+	satu pc>>0,0
mgl@1371
 15567
+	satu r12>>31,31
mgl@1371
 15568
+	satu r5>>16,16
mgl@1371
 15569
+	satu r4>>15,15
mgl@1371
 15570
+	satu lr>>1,1
mgl@1371
 15571
+	satu pc>>5,7
mgl@1371
 15572
+	satu r7>>5,5
mgl@1371
 15573
+	satu r2>>26,19
mgl@1371
 15574
+	.text
mgl@1371
 15575
+	.global satrnds
mgl@1371
 15576
+satrnds:
mgl@1371
 15577
+	satrnds pc>>0,0
mgl@1371
 15578
+	satrnds r12>>31,31
mgl@1371
 15579
+	satrnds r5>>16,16
mgl@1371
 15580
+	satrnds r4>>15,15
mgl@1371
 15581
+	satrnds lr>>1,1
mgl@1371
 15582
+	satrnds r0>>21,19
mgl@1371
 15583
+	satrnds sp>>0,2
mgl@1371
 15584
+	satrnds r7>>6,29
mgl@1371
 15585
+	.text
mgl@1371
 15586
+	.global satrndu
mgl@1371
 15587
+satrndu:
mgl@1371
 15588
+	satrndu pc>>0,0
mgl@1371
 15589
+	satrndu r12>>31,31
mgl@1371
 15590
+	satrndu r5>>16,16
mgl@1371
 15591
+	satrndu r4>>15,15
mgl@1371
 15592
+	satrndu lr>>1,1
mgl@1371
 15593
+	satrndu r12>>0,26
mgl@1371
 15594
+	satrndu r4>>21,3
mgl@1371
 15595
+	satrndu r10>>3,16
mgl@1371
 15596
+	.text
mgl@1371
 15597
+	.global subfc
mgl@1371
 15598
+subfc:
mgl@1371
 15599
+	subfeq pc,0
mgl@1371
 15600
+	subfal r12,-1
mgl@1371
 15601
+	subfls r5,-128
mgl@1371
 15602
+	subfpl r4,127
mgl@1371
 15603
+	subfne lr,1
mgl@1371
 15604
+	subfls r10,8
mgl@1371
 15605
+	subfvc r11,99
mgl@1371
 15606
+	subfvs r2,73
mgl@1371
 15607
+	.text
mgl@1371
 15608
+	.global subc
mgl@1371
 15609
+subc:
mgl@1371
 15610
+	subeq pc,0
mgl@1371
 15611
+	subal r12,-1
mgl@1371
 15612
+	subls r5,-128
mgl@1371
 15613
+	subpl r4,127
mgl@1371
 15614
+	subne lr,1
mgl@1371
 15615
+	subls r12,118
mgl@1371
 15616
+	subvc lr,-12
mgl@1371
 15617
+	submi r4,-13
mgl@1371
 15618
+	.text
mgl@1371
 15619
+	.global movc2
mgl@1371
 15620
+movc2:
mgl@1371
 15621
+	moveq pc,0
mgl@1371
 15622
+	moval r12,-1
mgl@1371
 15623
+	movls r5,-128
mgl@1371
 15624
+	movpl r4,127
mgl@1371
 15625
+	movne lr,1
mgl@1371
 15626
+	movlt r3,-122
mgl@1371
 15627
+	movvc r8,2
mgl@1371
 15628
+	movne r7,-111
mgl@1371
 15629
+	.text
mgl@1371
 15630
+	.global cp_b
mgl@1371
 15631
+cp_b:
mgl@1371
 15632
+	cp.b pc,r0
mgl@1371
 15633
+	cp.b r0,pc
mgl@1371
 15634
+	cp.b r7,r8
mgl@1371
 15635
+	cp.b r8,r7
mgl@1371
 15636
+	.text
mgl@1371
 15637
+	.global cp_h
mgl@1371
 15638
+cp_h:
mgl@1371
 15639
+	cp.h pc,r0
mgl@1371
 15640
+	cp.h r0,pc
mgl@1371
 15641
+	cp.h r7,r8
mgl@1371
 15642
+	cp.h r8,r7
mgl@1371
 15643
+	.text
mgl@1371
 15644
+	.global ldm
mgl@1371
 15645
+ldm:
mgl@1371
 15646
+	ldm pc,r1-r6
mgl@1371
 15647
+	ldm r12,r0-r15
mgl@1371
 15648
+	ldm r5,r15
mgl@1371
 15649
+	ldm r4,r0-r14
mgl@1371
 15650
+	ldm lr,r0
mgl@1371
 15651
+	ldm r9,r1,r5,r14
mgl@1371
 15652
+	ldm r11,r2-r3,r5-r8,r15
mgl@1371
 15653
+	ldm r6,r0,r3,r9,r13,r15
mgl@1371
 15654
+	.text
mgl@1371
 15655
+	.global ldm_pu
mgl@1371
 15656
+ldm_pu:
mgl@1371
 15657
+	ldm pc++,r6-r9
mgl@1371
 15658
+	ldm r12++,r0-r15
mgl@1371
 15659
+	ldm r5++,r15
mgl@1371
 15660
+	ldm r4++,r0-r14
mgl@1371
 15661
+	ldm lr++,r0
mgl@1371
 15662
+	ldm r12++,r3-r5,r8,r10,r12,r14-r15
mgl@1371
 15663
+	ldm r10++,r2,r4-r6,r14-r15
mgl@1371
 15664
+	ldm r6++,r1,r3-r4,r9-r14
mgl@1371
 15665
+	.text
mgl@1371
 15666
+	.global ldmts
mgl@1371
 15667
+ldmts:
mgl@1371
 15668
+	ldmts pc,r7-r8
mgl@1371
 15669
+	ldmts r12,r0-r15
mgl@1371
 15670
+	ldmts r5,r15
mgl@1371
 15671
+	ldmts r4,r0-r14
mgl@1371
 15672
+	ldmts lr,r0
mgl@1371
 15673
+	ldmts r0,r1-r2,r11-r12
mgl@1371
 15674
+	ldmts lr,r0-r2,r4,r7-r8,r13-r14
mgl@1371
 15675
+	ldmts r12,r0-r1,r3-r5,r9,r14-r15
mgl@1371
 15676
+	.text
mgl@1371
 15677
+	.global ldmts_pu
mgl@1371
 15678
+ldmts_pu:
mgl@1371
 15679
+	ldmts pc++,r9
mgl@1371
 15680
+	ldmts r12++,r0-r15
mgl@1371
 15681
+	ldmts r5++,r15
mgl@1371
 15682
+	ldmts r4++,r0-r14
mgl@1371
 15683
+	ldmts lr++,r0
mgl@1371
 15684
+	ldmts sp++,r0,r2-r5,r7,r9,r11
mgl@1371
 15685
+	ldmts r5++,r1-r3,r7,r10-r11
mgl@1371
 15686
+	ldmts r8++,r2-r4,r7-r8,r13,r15
mgl@1371
 15687
+	.text
mgl@1371
 15688
+	.global stm
mgl@1371
 15689
+stm:
mgl@1371
 15690
+	stm pc,r7
mgl@1371
 15691
+	stm r12,r0-r15
mgl@1371
 15692
+	stm r5,r15
mgl@1371
 15693
+	stm r4,r0-r14
mgl@1371
 15694
+	stm lr,r0
mgl@1371
 15695
+	stm sp,r2-r3,r5,r8,r11,r14
mgl@1371
 15696
+	stm r4,r0-r4,r6,r10-r11,r14
mgl@1371
 15697
+	stm r9,r1,r5,r9,r12-r15
mgl@1371
 15698
+	.text
mgl@1371
 15699
+	.global stm_pu
mgl@1371
 15700
+stm_pu:
mgl@1371
 15701
+	stm --pc,r4-r6
mgl@1371
 15702
+	stm --r12,r0-r15
mgl@1371
 15703
+	stm --r5,r15
mgl@1371
 15704
+	stm --r4,r0-r14
mgl@1371
 15705
+	stm --lr,r0
mgl@1371
 15706
+	stm --r11,r0,r4-r9,r11-r15
mgl@1371
 15707
+	stm --r11,r0,r3,r9-r10,r12,r14
mgl@1371
 15708
+	stm --r6,r2,r8-r9,r13-r14
mgl@1371
 15709
+	.text
mgl@1371
 15710
+	.global stmts
mgl@1371
 15711
+stmts:
mgl@1371
 15712
+	stmts pc,r8
mgl@1371
 15713
+	stmts r12,r0-r15
mgl@1371
 15714
+	stmts r5,r15
mgl@1371
 15715
+	stmts r4,r0-r14
mgl@1371
 15716
+	stmts lr,r0
mgl@1371
 15717
+	stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
mgl@1371
 15718
+	stmts r3,r0,r6-r8,r10-r12
mgl@1371
 15719
+	stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
mgl@1371
 15720
+	.text
mgl@1371
 15721
+	.global stmts_pu
mgl@1371
 15722
+stmts_pu:
mgl@1371
 15723
+	stmts --pc,r6-r8
mgl@1371
 15724
+	stmts --r12,r0-r15
mgl@1371
 15725
+	stmts --r5,r15
mgl@1371
 15726
+	stmts --r4,r0-r14
mgl@1371
 15727
+	stmts --lr,r0
mgl@1371
 15728
+	stmts --r2,r0,r3-r4,r9-r10,r12-r13
mgl@1371
 15729
+	stmts --r3,r0-r1,r14-r15
mgl@1371
 15730
+	stmts --r0,r0,r2-r6,r10,r14
mgl@1371
 15731
+	.text
mgl@1371
 15732
+	.global ldins_h
mgl@1371
 15733
+ldins_h:
mgl@1371
 15734
+	ldins.h pc:b,pc[0]
mgl@1371
 15735
+	ldins.h r12:t,r12[-2]
mgl@1371
 15736
+	ldins.h r5:t,r5[-4096]
mgl@1371
 15737
+	ldins.h r4:b,r4[4094]
mgl@1371
 15738
+	ldins.h lr:t,lr[2]
mgl@1371
 15739
+	ldins.h r0:t,lr[1930]
mgl@1371
 15740
+	ldins.h r3:b,r7[-534]
mgl@1371
 15741
+	ldins.h r2:b,r12[-2252]
mgl@1371
 15742
+	.text
mgl@1371
 15743
+	.global ldins_b
mgl@1371
 15744
+ldins_b:
mgl@1371
 15745
+	ldins.b pc:b,pc[0]
mgl@1371
 15746
+	ldins.b r12:t,r12[-1]
mgl@1371
 15747
+	ldins.b r5:u,r5[-2048]
mgl@1371
 15748
+	ldins.b r4:l,r4[2047]
mgl@1371
 15749
+	ldins.b lr:l,lr[1]
mgl@1371
 15750
+	ldins.b r6:t,r4[-662]
mgl@1371
 15751
+	ldins.b r5:b,r1[-151]
mgl@1371
 15752
+	ldins.b r10:t,r11[-1923]
mgl@1371
 15753
+	.text
mgl@1371
 15754
+	.global ldswp_sh
mgl@1371
 15755
+ldswp_sh:
mgl@1371
 15756
+	ldswp.sh pc,pc[0]
mgl@1371
 15757
+	ldswp.sh r12,r12[-2]
mgl@1371
 15758
+	ldswp.sh r5,r5[-4096]
mgl@1371
 15759
+	ldswp.sh r4,r4[4094]
mgl@1371
 15760
+	ldswp.sh lr,lr[2]
mgl@1371
 15761
+	ldswp.sh r9,r10[3848]
mgl@1371
 15762
+	ldswp.sh r4,r12[-2040]
mgl@1371
 15763
+	ldswp.sh r10,r2[3088]
mgl@1371
 15764
+	.text
mgl@1371
 15765
+	.global ldswp_uh
mgl@1371
 15766
+ldswp_uh:
mgl@1371
 15767
+	ldswp.uh pc,pc[0]
mgl@1371
 15768
+	ldswp.uh r12,r12[-2]
mgl@1371
 15769
+	ldswp.uh r5,r5[-4096]
mgl@1371
 15770
+	ldswp.uh r4,r4[4094]
mgl@1371
 15771
+	ldswp.uh lr,lr[2]
mgl@1371
 15772
+	ldswp.uh r4,r9[3724]
mgl@1371
 15773
+	ldswp.uh lr,sp[-1672]
mgl@1371
 15774
+	ldswp.uh r8,r12[-3846]
mgl@1371
 15775
+	.text
mgl@1371
 15776
+	.global ldswp_w
mgl@1371
 15777
+ldswp_w:
mgl@1371
 15778
+	ldswp.w pc,pc[0]
mgl@1371
 15779
+	ldswp.w r12,r12[-4]
mgl@1371
 15780
+	ldswp.w r5,r5[-8192]
mgl@1371
 15781
+	ldswp.w r4,r4[8188]
mgl@1371
 15782
+	ldswp.w lr,lr[4]
mgl@1371
 15783
+	ldswp.w sp,r7[1860]
mgl@1371
 15784
+	ldswp.w pc,r5[-3324]
mgl@1371
 15785
+	ldswp.w r12,r10[-3296]
mgl@1371
 15786
+	.text
mgl@1371
 15787
+	.global stswp_h
mgl@1371
 15788
+stswp_h:
mgl@1371
 15789
+	stswp.h pc[0],pc
mgl@1371
 15790
+	stswp.h r12[-2],r12
mgl@1371
 15791
+	stswp.h r5[-4096],r5
mgl@1371
 15792
+	stswp.h r4[4094],r4
mgl@1371
 15793
+	stswp.h lr[2],lr
mgl@1371
 15794
+	stswp.h r7[64],r10
mgl@1371
 15795
+	stswp.h r10[3024],r2
mgl@1371
 15796
+	stswp.h r0[-2328],r10
mgl@1371
 15797
+	.text
mgl@1371
 15798
+	.global stswp_w
mgl@1371
 15799
+stswp_w:
mgl@1371
 15800
+	stswp.w pc[0],pc
mgl@1371
 15801
+	stswp.w r12[-4],r12
mgl@1371
 15802
+	stswp.w r5[-8192],r5
mgl@1371
 15803
+	stswp.w r4[8188],r4
mgl@1371
 15804
+	stswp.w lr[4],lr
mgl@1371
 15805
+	stswp.w pc[1156],r8
mgl@1371
 15806
+	stswp.w sp[7992],r10
mgl@1371
 15807
+	stswp.w r8[-1172],r5
mgl@1371
 15808
+	.text
mgl@1371
 15809
+	.global and2
mgl@1371
 15810
+and2:
mgl@1371
 15811
+	and pc,pc,pc<<0
mgl@1371
 15812
+	and r12,r12,r12<<31
mgl@1371
 15813
+	and r5,r5,r5<<16
mgl@1371
 15814
+	and r4,r4,r4<<15
mgl@1371
 15815
+	and lr,lr,lr<<1
mgl@1371
 15816
+	and r10,r2,r1<<1
mgl@1371
 15817
+	and r12,r8,r11<<27
mgl@1371
 15818
+	and r10,r7,r0<<3
mgl@1371
 15819
+	.text
mgl@1371
 15820
+	.global and3
mgl@1371
 15821
+and3:
mgl@1371
 15822
+	and pc,pc,pc>>0
mgl@1371
 15823
+	and r12,r12,r12>>31
mgl@1371
 15824
+	and r5,r5,r5>>16
mgl@1371
 15825
+	and r4,r4,r4>>15
mgl@1371
 15826
+	and lr,lr,lr>>1
mgl@1371
 15827
+	and r12,r8,r7>>17
mgl@1371
 15828
+	and pc,r4,r9>>20
mgl@1371
 15829
+	and r10,r9,r10>>12
mgl@1371
 15830
+	.text
mgl@1371
 15831
+	.global or2
mgl@1371
 15832
+or2:
mgl@1371
 15833
+	or pc,pc,pc<<0
mgl@1371
 15834
+	or r12,r12,r12<<31
mgl@1371
 15835
+	or r5,r5,r5<<16
mgl@1371
 15836
+	or r4,r4,r4<<15
mgl@1371
 15837
+	or lr,lr,lr<<1
mgl@1371
 15838
+	or r8,sp,r11<<29
mgl@1371
 15839
+	or pc,r9,r2<<28
mgl@1371
 15840
+	or r5,r1,r2<<3
mgl@1371
 15841
+	.text
mgl@1371
 15842
+	.global or3
mgl@1371
 15843
+or3:
mgl@1371
 15844
+	or pc,pc,pc>>0
mgl@1371
 15845
+	or r12,r12,r12>>31
mgl@1371
 15846
+	or r5,r5,r5>>16
mgl@1371
 15847
+	or r4,r4,r4>>15
mgl@1371
 15848
+	or lr,lr,lr>>1
mgl@1371
 15849
+	or r1,sp,sp>>2
mgl@1371
 15850
+	or r0,r1,r1>>29
mgl@1371
 15851
+	or r4,r12,r8>>8
mgl@1371
 15852
+	.text
mgl@1371
 15853
+	.global eor2
mgl@1371
 15854
+eor2:
mgl@1371
 15855
+	eor pc,pc,pc<<0
mgl@1371
 15856
+	eor r12,r12,r12<<31
mgl@1371
 15857
+	eor r5,r5,r5<<16
mgl@1371
 15858
+	eor r4,r4,r4<<15
mgl@1371
 15859
+	eor lr,lr,lr<<1
mgl@1371
 15860
+	eor r10,r9,r4<<11
mgl@1371
 15861
+	eor r4,r0,r1<<31
mgl@1371
 15862
+	eor r6,r2,r12<<13
mgl@1371
 15863
+	.text
mgl@1371
 15864
+	.global eor3
mgl@1371
 15865
+eor3:
mgl@1371
 15866
+	eor pc,pc,pc>>0
mgl@1371
 15867
+	eor r12,r12,r12>>31
mgl@1371
 15868
+	eor r5,r5,r5>>16
mgl@1371
 15869
+	eor r4,r4,r4>>15
mgl@1371
 15870
+	eor lr,lr,lr>>1
mgl@1371
 15871
+	eor r5,r5,r5>>22
mgl@1371
 15872
+	eor r10,r1,lr>>3
mgl@1371
 15873
+	eor r7,lr,sp>>26
mgl@1371
 15874
+	.text
mgl@1371
 15875
+	.global sthh_w2
mgl@1371
 15876
+sthh_w2:
mgl@1371
 15877
+	sthh.w pc[pc<<0],pc:b,pc:b
mgl@1371
 15878
+	sthh.w r12[r12<<3],r12:t,r12:t
mgl@1371
 15879
+	sthh.w r5[r5<<2],r5:t,r5:t
mgl@1371
 15880
+	sthh.w r4[r4<<1],r4:b,r4:b
mgl@1371
 15881
+	sthh.w lr[lr<<1],lr:t,lr:t
mgl@1371
 15882
+	sthh.w sp[r6<<3],r1:t,r12:t
mgl@1371
 15883
+	sthh.w r6[r6<<0],r9:t,r9:t
mgl@1371
 15884
+	sthh.w r10[r3<<0],r0:b,r11:t
mgl@1371
 15885
+	.text
mgl@1371
 15886
+	.global sthh_w1
mgl@1371
 15887
+sthh_w1:
mgl@1371
 15888
+	sthh.w pc[0],pc:b,pc:b
mgl@1371
 15889
+	sthh.w r12[1020],r12:t,r12:t
mgl@1371
 15890
+	sthh.w r5[512],r5:t,r5:t
mgl@1371
 15891
+	sthh.w r4[508],r4:b,r4:b
mgl@1371
 15892
+	sthh.w lr[4],lr:t,lr:t
mgl@1371
 15893
+	sthh.w r4[404],r9:t,r0:b
mgl@1371
 15894
+	sthh.w r8[348],r2:t,r10:b
mgl@1371
 15895
+	sthh.w sp[172],r9:b,r2:b
mgl@1371
 15896
+	.text
mgl@1371
 15897
+	.global cop
mgl@1371
 15898
+cop:
mgl@1371
 15899
+	cop cp0,cr0,cr0,cr0,0
mgl@1371
 15900
+	cop cp7,cr15,cr15,cr15,0x7f
mgl@1371
 15901
+	cop cp3,cr5,cr5,cr5,0x31
mgl@1371
 15902
+	cop cp2,cr4,cr4,cr4,0x30
mgl@1371
 15903
+	cop cp5,cr8,cr3,cr7,0x5a
mgl@1371
 15904
+	.text
mgl@1371
 15905
+	.global ldc_w1
mgl@1371
 15906
+ldc_w1:
mgl@1371
 15907
+	ldc.w cp0,cr0,r0[0]
mgl@1371
 15908
+	ldc.w cp7,cr15,pc[255<<2]
mgl@1371
 15909
+	ldc.w cp3,cr5,r5[128<<2]
mgl@1371
 15910
+	ldc.w cp2,cr4,r4[127<<2]
mgl@1371
 15911
+	ldc.w cp4,cr9,r13[36<<2]
mgl@1371
 15912
+	.text
mgl@1371
 15913
+	.global ldc_w2
mgl@1371
 15914
+ldc_w2:
mgl@1371
 15915
+	ldc.w cp0,cr0,--r0
mgl@1371
 15916
+	ldc.w cp7,cr15,--pc
mgl@1371
 15917
+	ldc.w cp3,cr5,--r5
mgl@1371
 15918
+	ldc.w cp2,cr4,--r4
mgl@1371
 15919
+	ldc.w cp4,cr9,--r13
mgl@1371
 15920
+	.text
mgl@1371
 15921
+	.global ldc_w3
mgl@1371
 15922
+ldc_w3:
mgl@1371
 15923
+	ldc.w cp0,cr0,r0[r0]
mgl@1371
 15924
+	ldc.w cp7,cr15,pc[pc<<3]
mgl@1371
 15925
+	ldc.w cp3,cr5,r5[r4<<2]
mgl@1371
 15926
+	ldc.w cp2,cr4,r4[r3<<1]
mgl@1371
 15927
+	ldc.w cp4,cr9,r13[r12<<0]
mgl@1371
 15928
+	.text
mgl@1371
 15929
+	.global ldc_d1
mgl@1371
 15930
+ldc_d1:
mgl@1371
 15931
+	ldc.d cp0,cr0,r0[0]
mgl@1371
 15932
+	ldc.d cp7,cr14,pc[255<<2]
mgl@1371
 15933
+	ldc.d cp3,cr6,r5[128<<2]
mgl@1371
 15934
+	ldc.d cp2,cr4,r4[127<<2]
mgl@1371
 15935
+	ldc.d cp4,cr8,r13[36<<2]
mgl@1371
 15936
+	.text
mgl@1371
 15937
+	.global ldc_d2
mgl@1371
 15938
+ldc_d2:
mgl@1371
 15939
+	ldc.d cp0,cr0,--r0
mgl@1371
 15940
+	ldc.d cp7,cr14,--pc
mgl@1371
 15941
+	ldc.d cp3,cr6,--r5
mgl@1371
 15942
+	ldc.d cp2,cr4,--r4
mgl@1371
 15943
+	ldc.d cp4,cr8,--r13
mgl@1371
 15944
+	.text
mgl@1371
 15945
+	.global ldc_d3
mgl@1371
 15946
+ldc_d3:
mgl@1371
 15947
+	ldc.d cp0,cr0,r0[r0]
mgl@1371
 15948
+	ldc.d cp7,cr14,pc[pc<<3]
mgl@1371
 15949
+	ldc.d cp3,cr6,r5[r4<<2]
mgl@1371
 15950
+	ldc.d cp2,cr4,r4[r3<<1]
mgl@1371
 15951
+	ldc.d cp4,cr8,r13[r12<<0]
mgl@1371
 15952
+	.text
mgl@1371
 15953
+	.global stc_w1
mgl@1371
 15954
+stc_w1:
mgl@1371
 15955
+	stc.w cp0,r0[0],cr0
mgl@1371
 15956
+	stc.w cp7,pc[255<<2],cr15
mgl@1371
 15957
+	stc.w cp3,r5[128<<2],cr5
mgl@1371
 15958
+	stc.w cp2,r4[127<<2],cr4
mgl@1371
 15959
+	stc.w cp4,r13[36<<2],cr9
mgl@1371
 15960
+	.text
mgl@1371
 15961
+	.global stc_w2
mgl@1371
 15962
+stc_w2:
mgl@1371
 15963
+	stc.w cp0,r0++,cr0
mgl@1371
 15964
+	stc.w cp7,pc++,cr15
mgl@1371
 15965
+	stc.w cp3,r5++,cr5
mgl@1371
 15966
+	stc.w cp2,r4++,cr4
mgl@1371
 15967
+	stc.w cp4,r13++,cr9
mgl@1371
 15968
+	.text
mgl@1371
 15969
+	.global stc_w3
mgl@1371
 15970
+stc_w3:
mgl@1371
 15971
+	stc.w cp0,r0[r0],cr0
mgl@1371
 15972
+	stc.w cp7,pc[pc<<3],cr15
mgl@1371
 15973
+	stc.w cp3,r5[r4<<2],cr5
mgl@1371
 15974
+	stc.w cp2,r4[r3<<1],cr4
mgl@1371
 15975
+	stc.w cp4,r13[r12<<0],cr9
mgl@1371
 15976
+	.text
mgl@1371
 15977
+	.global stc_d1
mgl@1371
 15978
+stc_d1:
mgl@1371
 15979
+	stc.d cp0,r0[0],cr0
mgl@1371
 15980
+	stc.d cp7,pc[255<<2],cr14
mgl@1371
 15981
+	stc.d cp3,r5[128<<2],cr6
mgl@1371
 15982
+	stc.d cp2,r4[127<<2],cr4
mgl@1371
 15983
+	stc.d cp4,r13[36<<2],cr8
mgl@1371
 15984
+	.text
mgl@1371
 15985
+	.global stc_d2
mgl@1371
 15986
+stc_d2:
mgl@1371
 15987
+	stc.d cp0,r0++,cr0
mgl@1371
 15988
+	stc.d cp7,pc++,cr14
mgl@1371
 15989
+	stc.d cp3,r5++,cr6
mgl@1371
 15990
+	stc.d cp2,r4++,cr4
mgl@1371
 15991
+	stc.d cp4,r13++,cr8
mgl@1371
 15992
+	.text
mgl@1371
 15993
+	.global stc_d3
mgl@1371
 15994
+stc_d3:
mgl@1371
 15995
+	stc.d cp0,r0[r0],cr0
mgl@1371
 15996
+	stc.d cp7,pc[pc<<3],cr14
mgl@1371
 15997
+	stc.d cp3,r5[r4<<2],cr6
mgl@1371
 15998
+	stc.d cp2,r4[r3<<1],cr4
mgl@1371
 15999
+	stc.d cp4,r13[r12<<0],cr8
mgl@1371
 16000
+	.text
mgl@1371
 16001
+	.global ldc0_w
mgl@1371
 16002
+ldc0_w:
mgl@1371
 16003
+	ldc0.w cr0,r0[0]
mgl@1371
 16004
+	ldc0.w cr15,pc[4095<<2]
mgl@1371
 16005
+	ldc0.w cr5,r5[2048<<2]
mgl@1371
 16006
+	ldc0.w cr4,r4[2047<<2]
mgl@1371
 16007
+	ldc0.w cr9,r13[147<<2]
mgl@1371
 16008
+	.text
mgl@1371
 16009
+	.global ldc0_d
mgl@1371
 16010
+ldc0_d:
mgl@1371
 16011
+	ldc0.d cr0,r0[0]
mgl@1371
 16012
+	ldc0.d cr14,pc[4095<<2]
mgl@1371
 16013
+	ldc0.d cr6,r5[2048<<2]
mgl@1371
 16014
+	ldc0.d cr4,r4[2047<<2]
mgl@1371
 16015
+	ldc0.d cr8,r13[147<<2]
mgl@1371
 16016
+	.text
mgl@1371
 16017
+	.global stc0_w
mgl@1371
 16018
+stc0_w:
mgl@1371
 16019
+	stc0.w r0[0],cr0
mgl@1371
 16020
+	stc0.w pc[4095<<2],cr15
mgl@1371
 16021
+	stc0.w r5[2048<<2],cr5
mgl@1371
 16022
+	stc0.w r4[2047<<2],cr4
mgl@1371
 16023
+	stc0.w r13[147<<2],cr9
mgl@1371
 16024
+	.text
mgl@1371
 16025
+	.global stc0_d
mgl@1371
 16026
+stc0_d:
mgl@1371
 16027
+	stc0.d r0[0],cr0
mgl@1371
 16028
+	stc0.d pc[4095<<2],cr14
mgl@1371
 16029
+	stc0.d r5[2048<<2],cr6
mgl@1371
 16030
+	stc0.d r4[2047<<2],cr4
mgl@1371
 16031
+	stc0.d r13[147<<2],cr8
mgl@1371
 16032
+	.text
mgl@1371
 16033
+	.global memc
mgl@1371
 16034
+memc:
mgl@1371
 16035
+	memc 0, 0
mgl@1371
 16036
+	memc -4, 31
mgl@1371
 16037
+	memc -65536, 16
mgl@1371
 16038
+	memc 65532, 15
mgl@1371
 16039
+	.text
mgl@1371
 16040
+	.global mems
mgl@1371
 16041
+mems:
mgl@1371
 16042
+	mems 0, 0
mgl@1371
 16043
+	mems -4, 31
mgl@1371
 16044
+	mems -65536, 16
mgl@1371
 16045
+	mems 65532, 15
mgl@1371
 16046
+	.text
mgl@1371
 16047
+	.global memt
mgl@1371
 16048
+memt:
mgl@1371
 16049
+	memt 0, 0
mgl@1371
 16050
+	memt -4, 31
mgl@1371
 16051
+	memt -65536, 16
mgl@1371
 16052
+	memt 65532, 15
mgl@1371
 16053
+
mgl@1371
 16054
+	.text
mgl@1371
 16055
+	.global stcond
mgl@1371
 16056
+stcond:
mgl@1371
 16057
+	stcond r0[0], r0
mgl@1371
 16058
+	stcond pc[-1], pc
mgl@1371
 16059
+	stcond r8[-32768], r7
mgl@1371
 16060
+	stcond r7[32767], r8
mgl@1371
 16061
+	stcond r5[0x1234], r10
mgl@1371
 16062
+
mgl@1371
 16063
+ldcm_w:
mgl@1371
 16064
+	ldcm.w cp0,pc,cr0-cr7
mgl@1371
 16065
+	ldcm.w cp7,r0,cr0
mgl@1371
 16066
+	ldcm.w cp4,r4++,cr0-cr6
mgl@1371
 16067
+	ldcm.w cp3,r7,cr7
mgl@1371
 16068
+	ldcm.w cp1,r12++,cr1,cr4-cr6
mgl@1371
 16069
+	ldcm.w cp0,pc,cr8-cr15
mgl@1371
 16070
+	ldcm.w cp7,r0,cr8
mgl@1371
 16071
+	ldcm.w cp4,r4++,cr8-cr14
mgl@1371
 16072
+	ldcm.w cp3,r7,cr15
mgl@1371
 16073
+	ldcm.w cp1,r12++,cr9,cr12-cr14
mgl@1371
 16074
+
mgl@1371
 16075
+ldcm_d:
mgl@1371
 16076
+	ldcm.d cp0,pc,cr0-cr15
mgl@1371
 16077
+	ldcm.d cp7,r0,cr0,cr1
mgl@1371
 16078
+	ldcm.d cp4,r4++,cr0-cr13
mgl@1371
 16079
+	ldcm.d cp3,r7,cr14-cr15
mgl@1371
 16080
+	ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
mgl@1371
 16081
+
mgl@1371
 16082
+stcm_w:
mgl@1371
 16083
+	stcm.w cp0,pc,cr0-cr7
mgl@1371
 16084
+	stcm.w cp7,r0,cr0
mgl@1371
 16085
+	stcm.w cp4,--r4,cr0-cr6
mgl@1371
 16086
+	stcm.w cp3,r7,cr7
mgl@1371
 16087
+	stcm.w cp1,--r12,cr1,cr4-cr6
mgl@1371
 16088
+	stcm.w cp0,pc,cr8-cr15
mgl@1371
 16089
+	stcm.w cp7,r0,cr8
mgl@1371
 16090
+	stcm.w cp4,--r4,cr8-cr14
mgl@1371
 16091
+	stcm.w cp3,r7,cr15
mgl@1371
 16092
+	stcm.w cp1,--r12,cr9,cr12-cr14
mgl@1371
 16093
+
mgl@1371
 16094
+stcm_d:
mgl@1371
 16095
+	stcm.d cp0,pc,cr0-cr15
mgl@1371
 16096
+	stcm.d cp7,r0,cr0,cr1
mgl@1371
 16097
+	stcm.d cp4,--r4,cr0-cr13
mgl@1371
 16098
+	stcm.d cp3,r7,cr14-cr15
mgl@1371
 16099
+	stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
mgl@1371
 16100
+
mgl@1371
 16101
+mvcr_w:
mgl@1371
 16102
+	mvcr.w cp7,pc,cr15
mgl@1371
 16103
+	mvcr.w cp0,r0,cr0
mgl@1371
 16104
+	mvcr.w cp0,pc,cr15
mgl@1371
 16105
+	mvcr.w cp7,r0,cr15
mgl@1371
 16106
+	mvcr.w cp7,pc,cr0
mgl@1371
 16107
+	mvcr.w cp4,r7,cr8
mgl@1371
 16108
+	mvcr.w cp3,r8,cr7
mgl@1371
 16109
+
mgl@1371
 16110
+mvcr_d:
mgl@1371
 16111
+	mvcr.d cp7,lr,cr14
mgl@1371
 16112
+	mvcr.d cp0,r0,cr0
mgl@1371
 16113
+	mvcr.d cp0,lr,cr14
mgl@1371
 16114
+	mvcr.d cp7,r0,cr14
mgl@1371
 16115
+	mvcr.d cp7,lr,cr0
mgl@1371
 16116
+	mvcr.d cp4,r6,cr8
mgl@1371
 16117
+	mvcr.d cp3,r8,cr6
mgl@1371
 16118
+
mgl@1371
 16119
+mvrc_w:
mgl@1371
 16120
+	mvrc.w cp7,cr15,pc
mgl@1371
 16121
+	mvrc.w cp0,cr0,r0
mgl@1371
 16122
+	mvrc.w cp0,cr15,pc
mgl@1371
 16123
+	mvrc.w cp7,cr15,r0
mgl@1371
 16124
+	mvrc.w cp7,cr0,pc
mgl@1371
 16125
+	mvrc.w cp4,cr8,r7
mgl@1371
 16126
+	mvrc.w cp3,cr7,r8
mgl@1371
 16127
+
mgl@1371
 16128
+mvrc_d:
mgl@1371
 16129
+	mvrc.d cp7,cr14,lr
mgl@1371
 16130
+	mvrc.d cp0,cr0,r0
mgl@1371
 16131
+	mvrc.d cp0,cr14,lr
mgl@1371
 16132
+	mvrc.d cp7,cr14,r0
mgl@1371
 16133
+	mvrc.d cp7,cr0,lr
mgl@1371
 16134
+	mvrc.d cp4,cr8,r6
mgl@1371
 16135
+	mvrc.d cp3,cr6,r8
mgl@1371
 16136
+
mgl@1371
 16137
+bfexts:
mgl@1371
 16138
+	bfexts pc,pc,31,31
mgl@1371
 16139
+	bfexts r0,r0,0,0
mgl@1371
 16140
+	bfexts r0,pc,31,31
mgl@1371
 16141
+	bfexts pc,r0,31,31
mgl@1371
 16142
+	bfexts pc,pc,0,31
mgl@1371
 16143
+	bfexts pc,pc,31,0
mgl@1371
 16144
+	bfexts r7,r8,15,16
mgl@1371
 16145
+	bfexts r8,r7,16,15
mgl@1371
 16146
+
mgl@1371
 16147
+bfextu:
mgl@1371
 16148
+	bfextu pc,pc,31,31
mgl@1371
 16149
+	bfextu r0,r0,0,0
mgl@1371
 16150
+	bfextu r0,pc,31,31
mgl@1371
 16151
+	bfextu pc,r0,31,31
mgl@1371
 16152
+	bfextu pc,pc,0,31
mgl@1371
 16153
+	bfextu pc,pc,31,0
mgl@1371
 16154
+	bfextu r7,r8,15,16
mgl@1371
 16155
+	bfextu r8,r7,16,15
mgl@1371
 16156
+
mgl@1371
 16157
+bfins:
mgl@1371
 16158
+	bfins pc,pc,31,31
mgl@1371
 16159
+	bfins r0,r0,0,0
mgl@1371
 16160
+	bfins r0,pc,31,31
mgl@1371
 16161
+	bfins pc,r0,31,31
mgl@1371
 16162
+	bfins pc,pc,0,31
mgl@1371
 16163
+	bfins pc,pc,31,0
mgl@1371
 16164
+	bfins r7,r8,15,16
mgl@1371
 16165
+	bfins r8,r7,16,15
mgl@1371
 16166
+
mgl@1371
 16167
+rsubc:
mgl@1371
 16168
+	rsubeq pc,0
mgl@1371
 16169
+	rsubal r12,-1
mgl@1371
 16170
+	rsubls r5,-128
mgl@1371
 16171
+	rsubpl r4,127
mgl@1371
 16172
+	rsubne lr,1
mgl@1371
 16173
+	rsubls r12,118
mgl@1371
 16174
+	rsubvc lr,-12
mgl@1371
 16175
+	rsubmi r4,-13
mgl@1371
 16176
+
mgl@1371
 16177
+addc:
mgl@1371
 16178
+	addeq pc,pc,pc
mgl@1371
 16179
+	addal r12,r12,r12
mgl@1371
 16180
+	addls r5,r5,r5
mgl@1371
 16181
+	addpl r4,r4,r4
mgl@1371
 16182
+	addne lr,lr,lr
mgl@1371
 16183
+	addls r10,r2,r1
mgl@1371
 16184
+	addvc r12,r8,r11
mgl@1371
 16185
+	addmi r10,r7,r0   
mgl@1371
 16186
+
mgl@1371
 16187
+subc2:
mgl@1371
 16188
+	subeq pc,pc,pc
mgl@1371
 16189
+	subal r12,r12,r12
mgl@1371
 16190
+	subls r5,r5,r5
mgl@1371
 16191
+	subpl r4,r4,r4
mgl@1371
 16192
+	subne lr,lr,lr
mgl@1371
 16193
+	subls r10,r2,r1
mgl@1371
 16194
+	subvc r12,r8,r11
mgl@1371
 16195
+	submi r10,r7,r0   
mgl@1371
 16196
+
mgl@1371
 16197
+andc:
mgl@1371
 16198
+	andeq pc,pc,pc
mgl@1371
 16199
+	andal r12,r12,r12
mgl@1371
 16200
+	andls r5,r5,r5
mgl@1371
 16201
+	andpl r4,r4,r4
mgl@1371
 16202
+	andne lr,lr,lr
mgl@1371
 16203
+	andls r10,r2,r1
mgl@1371
 16204
+	andvc r12,r8,r11
mgl@1371
 16205
+	andmi r10,r7,r0   
mgl@1371
 16206
+
mgl@1371
 16207
+orc:
mgl@1371
 16208
+	oreq pc,pc,pc
mgl@1371
 16209
+	oral r12,r12,r12
mgl@1371
 16210
+	orls r5,r5,r5
mgl@1371
 16211
+	orpl r4,r4,r4
mgl@1371
 16212
+	orne lr,lr,lr
mgl@1371
 16213
+	orls r10,r2,r1
mgl@1371
 16214
+	orvc r12,r8,r11
mgl@1371
 16215
+	ormi r10,r7,r0   
mgl@1371
 16216
+
mgl@1371
 16217
+eorc:
mgl@1371
 16218
+	eoreq pc,pc,pc
mgl@1371
 16219
+	eoral r12,r12,r12
mgl@1371
 16220
+	eorls r5,r5,r5
mgl@1371
 16221
+	eorpl r4,r4,r4
mgl@1371
 16222
+	eorne lr,lr,lr
mgl@1371
 16223
+	eorls r10,r2,r1
mgl@1371
 16224
+	eorvc r12,r8,r11
mgl@1371
 16225
+	eormi r10,r7,r0   
mgl@1371
 16226
+
mgl@1371
 16227
+ldcond:
mgl@1371
 16228
+	ld.weq  pc,pc[2044]
mgl@1371
 16229
+	ld.shal r12,r12[1022]
mgl@1371
 16230
+	ld.uhls r5,r5[0]
mgl@1371
 16231
+	ld.ubpl r4,r4[511]
mgl@1371
 16232
+	ld.sbne lr,lr[0]
mgl@1371
 16233
+	ld.wls  r10,r2[0]
mgl@1371
 16234
+	ld.shvc r12,r8[0x3fe]
mgl@1371
 16235
+	ld.ubmi r10,r7[1]
mgl@1371
 16236
+  
mgl@1371
 16237
+stcond2:
mgl@1371
 16238
+	st.weq pc[2044],pc
mgl@1371
 16239
+	st.hal r12[1022],r12
mgl@1371
 16240
+	st.hls r5[0],r5
mgl@1371
 16241
+	st.bpl r4[511],r4
mgl@1371
 16242
+	st.bne lr[0],lr
mgl@1371
 16243
+	st.wls r2[0],r10
mgl@1371
 16244
+	st.hvc r8[0x3fe],r12
mgl@1371
 16245
+	st.bmi r7[1],r10
mgl@1371
 16246
+	
mgl@1371
 16247
+movh:	
mgl@1371
 16248
+	movh	pc, 65535
mgl@1371
 16249
+	movh	r0, 0
mgl@1371
 16250
+	movh	r5, 1
mgl@1371
 16251
+	movh	r12, 32767
mgl@1371
 16252
+	
mgl@1371
 16253
+		
mgl@1371
 16254
--- /dev/null
mgl@1371
 16255
+++ b/gas/testsuite/gas/avr32/avr32.exp
mgl@1371
 16256
@@ -0,0 +1,23 @@
mgl@1371
 16257
+# AVR32 assembler testsuite. -*- Tcl -*-
mgl@1371
 16258
+
mgl@1371
 16259
+if [istarget avr32-*-*] {
mgl@1371
 16260
+    run_dump_test "hwrd-lwrd"
mgl@1371
 16261
+    run_dump_test "pcrel"
mgl@1371
 16262
+    run_dump_test "aliases"
mgl@1371
 16263
+    run_dump_test "dwarf2"
mgl@1371
 16264
+    run_dump_test "pic_reloc"
mgl@1371
 16265
+    run_dump_test "fpinsn"
mgl@1371
 16266
+    run_dump_test "pico"
mgl@1371
 16267
+    run_dump_test "lda_pic"
mgl@1371
 16268
+    run_dump_test "lda_pic_linkrelax"
mgl@1371
 16269
+    run_dump_test "lda_nopic"
mgl@1371
 16270
+    run_dump_test "lda_nopic_linkrelax"
mgl@1371
 16271
+    run_dump_test "call_pic"
mgl@1371
 16272
+    run_dump_test "call_pic_linkrelax"
mgl@1371
 16273
+    run_dump_test "call_nopic"
mgl@1371
 16274
+    run_dump_test "call_nopic_linkrelax"
mgl@1371
 16275
+    run_dump_test "jmptable"
mgl@1371
 16276
+    run_dump_test "jmptable_linkrelax"
mgl@1371
 16277
+    run_dump_test "symdiff"
mgl@1371
 16278
+    run_dump_test "symdiff_linkrelax"
mgl@1371
 16279
+}
mgl@1371
 16280
--- /dev/null
mgl@1371
 16281
+++ b/gas/testsuite/gas/avr32/call_nopic.d
mgl@1371
 16282
@@ -0,0 +1,36 @@
mgl@1371
 16283
+#source: call.s
mgl@1371
 16284
+#as:
mgl@1371
 16285
+#objdump: -dr
mgl@1371
 16286
+#name: call_nopic
mgl@1371
 16287
+
mgl@1371
 16288
+.*: +file format .*
mgl@1371
 16289
+
mgl@1371
 16290
+Disassembly of section \.text:
mgl@1371
 16291
+
mgl@1371
 16292
+00000000 <call_test>:
mgl@1371
 16293
+       0:	d7 03       	nop
mgl@1371
 16294
+
mgl@1371
 16295
+00000002 <toofar_negative>:
mgl@1371
 16296
+	\.\.\.
mgl@1371
 16297
+  1ffffe:	00 00       	add r0,r0
mgl@1371
 16298
+  200000:	f0 a0 00 00 	rcall 0 <call_test>
mgl@1371
 16299
+  200004:	f0 1f 00 0c 	mcall 200034 <toofar_negative\+0x200032>
mgl@1371
 16300
+  200008:	f0 1f 00 0c 	mcall 200038 <toofar_negative\+0x200036>
mgl@1371
 16301
+  20000c:	f0 1f 00 0c 	mcall 20003c <toofar_negative\+0x20003a>
mgl@1371
 16302
+  200010:	f0 1f 00 0c 	mcall 200040 <toofar_negative\+0x20003e>
mgl@1371
 16303
+	\.\.\.
mgl@1371
 16304
+  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
mgl@1371
 16305
+	\.\.\.
mgl@1371
 16306
+			200034: R_AVR32_32_CPENT	\.text\+0x2
mgl@1371
 16307
+			200038: R_AVR32_32_CPENT	\.text\.init
mgl@1371
 16308
+			20003c: R_AVR32_32_CPENT	undefined
mgl@1371
 16309
+			200040: R_AVR32_32_CPENT	\.text\+0x40002c
mgl@1371
 16310
+
mgl@1371
 16311
+0040002c <toofar_positive>:
mgl@1371
 16312
+  40002c:	d7 03       	nop
mgl@1371
 16313
+0040002e <far_positive>:
mgl@1371
 16314
+  40002e:	d7 03       	nop
mgl@1371
 16315
+Disassembly of section \.text\.init:
mgl@1371
 16316
+
mgl@1371
 16317
+00000000 <different_section>:
mgl@1371
 16318
+   0:	e2 c0 00 00 	sub r0,r1,0
mgl@1371
 16319
--- /dev/null
mgl@1371
 16320
+++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
mgl@1371
 16321
@@ -0,0 +1,43 @@
mgl@1371
 16322
+#source: call.s
mgl@1371
 16323
+#as: --linkrelax
mgl@1371
 16324
+#objdump: -dr
mgl@1371
 16325
+#name: call_nopic_linkrelax
mgl@1371
 16326
+
mgl@1371
 16327
+.*: +file format .*
mgl@1371
 16328
+
mgl@1371
 16329
+Disassembly of section \.text:
mgl@1371
 16330
+
mgl@1371
 16331
+00000000 <call_test>:
mgl@1371
 16332
+       0:	d7 03       	nop
mgl@1371
 16333
+
mgl@1371
 16334
+00000002 <toofar_negative>:
mgl@1371
 16335
+	\.\.\.
mgl@1371
 16336
+  1ffffe:	00 00       	add r0,r0
mgl@1371
 16337
+  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
mgl@1371
 16338
+			200000: R_AVR32_22H_PCREL	\.text
mgl@1371
 16339
+  200004:	f0 1f 00 00 	mcall 200004 <toofar_negative\+0x200002>
mgl@1371
 16340
+			200004: R_AVR32_CPCALL	\.text\+0x200034
mgl@1371
 16341
+  200008:	f0 1f 00 00 	mcall 200008 <toofar_negative\+0x200006>
mgl@1371
 16342
+			200008: R_AVR32_CPCALL	\.text\+0x200038
mgl@1371
 16343
+  20000c:	f0 1f 00 00 	mcall 20000c <toofar_negative\+0x20000a>
mgl@1371
 16344
+			20000c: R_AVR32_CPCALL	\.text\+0x20003c
mgl@1371
 16345
+  200010:	f0 1f 00 00 	mcall 200010 <toofar_negative\+0x20000e>
mgl@1371
 16346
+			200010: R_AVR32_CPCALL	\.text\+0x200040
mgl@1371
 16347
+	\.\.\.
mgl@1371
 16348
+  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
mgl@1371
 16349
+			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
mgl@1371
 16350
+	\.\.\.
mgl@1371
 16351
+			200034: R_AVR32_ALIGN	\*ABS\*\+0x2
mgl@1371
 16352
+			200034: R_AVR32_32_CPENT	\.text\+0x2
mgl@1371
 16353
+			200038: R_AVR32_32_CPENT	\.text\.init
mgl@1371
 16354
+			20003c: R_AVR32_32_CPENT	undefined
mgl@1371
 16355
+			200040: R_AVR32_32_CPENT	\.text\+0x40002c
mgl@1371
 16356
+
mgl@1371
 16357
+0040002c <toofar_positive>:
mgl@1371
 16358
+  40002c:	d7 03       	nop
mgl@1371
 16359
+0040002e <far_positive>:
mgl@1371
 16360
+  40002e:	d7 03       	nop
mgl@1371
 16361
+Disassembly of section \.text\.init:
mgl@1371
 16362
+
mgl@1371
 16363
+00000000 <different_section>:
mgl@1371
 16364
+   0:	e2 c0 00 00 	sub r0,r1,0
mgl@1371
 16365
--- /dev/null
mgl@1371
 16366
+++ b/gas/testsuite/gas/avr32/call_pic.d
mgl@1371
 16367
@@ -0,0 +1,36 @@
mgl@1371
 16368
+#source: call.s
mgl@1371
 16369
+#as: --pic
mgl@1371
 16370
+#objdump: -dr
mgl@1371
 16371
+#name: call_pic
mgl@1371
 16372
+
mgl@1371
 16373
+.*: +file format .*
mgl@1371
 16374
+
mgl@1371
 16375
+Disassembly of section \.text:
mgl@1371
 16376
+
mgl@1371
 16377
+00000000 <call_test>:
mgl@1371
 16378
+       0:	d7 03       	nop
mgl@1371
 16379
+
mgl@1371
 16380
+00000002 <toofar_negative>:
mgl@1371
 16381
+	\.\.\.
mgl@1371
 16382
+  1ffffe:	00 00       	add r0,r0
mgl@1371
 16383
+  200000:	f0 a0 00 00 	rcall 0 <call_test>
mgl@1371
 16384
+  200004:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 16385
+			200004: R_AVR32_GOT18SW	toofar_negative
mgl@1371
 16386
+  200008:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 16387
+			200008: R_AVR32_GOT18SW	different_section
mgl@1371
 16388
+  20000c:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 16389
+			20000c: R_AVR32_GOT18SW	undefined
mgl@1371
 16390
+  200010:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 16391
+			200010: R_AVR32_GOT18SW	toofar_positive
mgl@1371
 16392
+	\.\.\.
mgl@1371
 16393
+  200030:	ee b0 ff ff 	rcall 40002e <far_positive>
mgl@1371
 16394
+	\.\.\.
mgl@1371
 16395
+
mgl@1371
 16396
+0040002c <toofar_positive>:
mgl@1371
 16397
+  40002c:	d7 03       	nop
mgl@1371
 16398
+0040002e <far_positive>:
mgl@1371
 16399
+  40002e:	d7 03       	nop
mgl@1371
 16400
+Disassembly of section \.text\.init:
mgl@1371
 16401
+
mgl@1371
 16402
+00000000 <different_section>:
mgl@1371
 16403
+   0:	e2 c0 00 00 	sub r0,r1,0
mgl@1371
 16404
--- /dev/null
mgl@1371
 16405
+++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
mgl@1371
 16406
@@ -0,0 +1,47 @@
mgl@1371
 16407
+#source: call.s
mgl@1371
 16408
+#as: --pic --linkrelax
mgl@1371
 16409
+#objdump: -dr
mgl@1371
 16410
+#name: call_pic_linkrelax
mgl@1371
 16411
+
mgl@1371
 16412
+.*: +file format .*
mgl@1371
 16413
+
mgl@1371
 16414
+Disassembly of section \.text:
mgl@1371
 16415
+
mgl@1371
 16416
+00000000 <call_test>:
mgl@1371
 16417
+       0:	d7 03       	nop
mgl@1371
 16418
+
mgl@1371
 16419
+00000002 <toofar_negative>:
mgl@1371
 16420
+	\.\.\.
mgl@1371
 16421
+  1ffffe:	00 00       	add r0,r0
mgl@1371
 16422
+  200000:	e0 a0 00 00 	rcall 200000 <toofar_negative\+0x1ffffe>
mgl@1371
 16423
+			200000: R_AVR32_22H_PCREL	\.text
mgl@1371
 16424
+  200004:	e0 6e 00 00 	mov lr,0
mgl@1371
 16425
+			200004: R_AVR32_GOTCALL	toofar_negative
mgl@1371
 16426
+  200008:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
mgl@1371
 16427
+  20000c:	5d 1e       	icall lr
mgl@1371
 16428
+  20000e:	e0 6e 00 00 	mov lr,0
mgl@1371
 16429
+			20000e: R_AVR32_GOTCALL	different_section
mgl@1371
 16430
+  200012:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
mgl@1371
 16431
+  200016:	5d 1e       	icall lr
mgl@1371
 16432
+  200018:	e0 6e 00 00 	mov lr,0
mgl@1371
 16433
+			200018: R_AVR32_GOTCALL	undefined
mgl@1371
 16434
+  20001c:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
mgl@1371
 16435
+  200020:	5d 1e       	icall lr
mgl@1371
 16436
+  200022:	e0 6e 00 00 	mov lr,0
mgl@1371
 16437
+			200022: R_AVR32_GOTCALL	toofar_positive
mgl@1371
 16438
+  200026:	ec 0e 03 2e 	ld\.w lr,r6\[lr<<0x2\]
mgl@1371
 16439
+  20002a:	5d 1e       	icall lr
mgl@1371
 16440
+  20002c:	00 00       	add r0,r0
mgl@1371
 16441
+  20002e:	00 00       	add r0,r0
mgl@1371
 16442
+  200030:	e0 a0 00 00 	rcall 200030 <toofar_negative\+0x20002e>
mgl@1371
 16443
+			200030: R_AVR32_22H_PCREL	\.text\+0x40002e
mgl@1371
 16444
+	\.\.\.
mgl@1371
 16445
+
mgl@1371
 16446
+0040002c <toofar_positive>:
mgl@1371
 16447
+  40002c:	d7 03       	nop
mgl@1371
 16448
+0040002e <far_positive>:
mgl@1371
 16449
+  40002e:	d7 03       	nop
mgl@1371
 16450
+Disassembly of section \.text\.init:
mgl@1371
 16451
+
mgl@1371
 16452
+00000000 <different_section>:
mgl@1371
 16453
+   0:	e2 c0 00 00 	sub r0,r1,0
mgl@1371
 16454
--- /dev/null
mgl@1371
 16455
+++ b/gas/testsuite/gas/avr32/call.s
mgl@1371
 16456
@@ -0,0 +1,30 @@
mgl@1371
 16457
+
mgl@1371
 16458
+	.text
mgl@1371
 16459
+	.global call_test
mgl@1371
 16460
+call_test:
mgl@1371
 16461
+far_negative:
mgl@1371
 16462
+	nop
mgl@1371
 16463
+toofar_negative:
mgl@1371
 16464
+
mgl@1371
 16465
+	.org	0x200000
mgl@1371
 16466
+
mgl@1371
 16467
+	call	far_negative
mgl@1371
 16468
+	call	toofar_negative
mgl@1371
 16469
+	call	different_section
mgl@1371
 16470
+	call	undefined
mgl@1371
 16471
+	call	toofar_positive
mgl@1371
 16472
+	.org	0x200030
mgl@1371
 16473
+	call	far_positive
mgl@1371
 16474
+
mgl@1371
 16475
+	.cpool
mgl@1371
 16476
+
mgl@1371
 16477
+	.org	0x40002c
mgl@1371
 16478
+
mgl@1371
 16479
+toofar_positive:
mgl@1371
 16480
+	nop
mgl@1371
 16481
+far_positive:
mgl@1371
 16482
+	nop
mgl@1371
 16483
+
mgl@1371
 16484
+	.section .text.init,"ax",@progbits
mgl@1371
 16485
+different_section:
mgl@1371
 16486
+	sub	r0, r1, 0
mgl@1371
 16487
--- /dev/null
mgl@1371
 16488
+++ b/gas/testsuite/gas/avr32/dwarf2.d
mgl@1371
 16489
@@ -0,0 +1,42 @@
mgl@1371
 16490
+#readelf: -wl
mgl@1371
 16491
+#name: dwarf2
mgl@1371
 16492
+#source: dwarf2.s
mgl@1371
 16493
+
mgl@1371
 16494
+Dump of debug contents of section \.debug_line:
mgl@1371
 16495
+
mgl@1371
 16496
+  Length:                      53
mgl@1371
 16497
+  DWARF Version:               2
mgl@1371
 16498
+  Prologue Length:             26
mgl@1371
 16499
+  Minimum Instruction Length:  1
mgl@1371
 16500
+  Initial value of 'is_stmt':  1
mgl@1371
 16501
+  Line Base:                   -5
mgl@1371
 16502
+  Line Range:                  14
mgl@1371
 16503
+  Opcode Base:                 10
mgl@1371
 16504
+  \(Pointer size:               4\)
mgl@1371
 16505
+
mgl@1371
 16506
+ Opcodes:
mgl@1371
 16507
+  Opcode 1 has 0 args
mgl@1371
 16508
+  Opcode 2 has 1 args
mgl@1371
 16509
+  Opcode 3 has 1 args
mgl@1371
 16510
+  Opcode 4 has 1 args
mgl@1371
 16511
+  Opcode 5 has 1 args
mgl@1371
 16512
+  Opcode 6 has 0 args
mgl@1371
 16513
+  Opcode 7 has 0 args
mgl@1371
 16514
+  Opcode 8 has 0 args
mgl@1371
 16515
+  Opcode 9 has 1 args
mgl@1371
 16516
+
mgl@1371
 16517
+ The Directory Table is empty\.
mgl@1371
 16518
+
mgl@1371
 16519
+ The File Name Table:
mgl@1371
 16520
+  Entry	Dir	Time	Size	Name
mgl@1371
 16521
+  1	0	0	0	main\.c
mgl@1371
 16522
+
mgl@1371
 16523
+ Line Number Statements:
mgl@1371
 16524
+  Extended opcode 2: set Address to 0x0
mgl@1371
 16525
+  Advance Line by 87 to 88
mgl@1371
 16526
+  Copy
mgl@1371
 16527
+  Advance Line by 23 to 111
mgl@1371
 16528
+  Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
mgl@1371
 16529
+  Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
mgl@1371
 16530
+  Advance PC by 530 to 220
mgl@1371
 16531
+  Extended opcode 1: End of Sequence
mgl@1371
 16532
--- /dev/null
mgl@1371
 16533
+++ b/gas/testsuite/gas/avr32/dwarf2.s
mgl@1371
 16534
@@ -0,0 +1,67 @@
mgl@1371
 16535
+# Source file used to test DWARF2 information for AVR32.
mgl@1371
 16536
+
mgl@1371
 16537
+	.file	"main.c"
mgl@1371
 16538
+
mgl@1371
 16539
+	.section .debug_abbrev,"",@progbits
mgl@1371
 16540
+.Ldebug_abbrev0:
mgl@1371
 16541
+	.section .debug_info,"",@progbits
mgl@1371
 16542
+.Ldebug_info0:
mgl@1371
 16543
+	.section .debug_line,"",@progbits
mgl@1371
 16544
+.Ldebug_line0:
mgl@1371
 16545
+
mgl@1371
 16546
+	.text
mgl@1371
 16547
+	.align	1
mgl@1371
 16548
+	.globl	main
mgl@1371
 16549
+	.type	main, @function
mgl@1371
 16550
+.Ltext0:
mgl@1371
 16551
+main:
mgl@1371
 16552
+	.file 1 "main.c"
mgl@1371
 16553
+	.loc 1 88 0
mgl@1371
 16554
+	pushm	r0-r7,lr
mgl@1371
 16555
+	sub	sp, 4
mgl@1371
 16556
+	.loc 1 111 0
mgl@1371
 16557
+	lddpc	r12, .LC1
mgl@1371
 16558
+	lddpc	r7, .LC1
mgl@1371
 16559
+	icall	r7
mgl@1371
 16560
+	.loc 1 112 0
mgl@1371
 16561
+	lddpc	r6, .LC4
mgl@1371
 16562
+
mgl@1371
 16563
+	.align	2
mgl@1371
 16564
+.LC4:	.int	0
mgl@1371
 16565
+
mgl@1371
 16566
+	.fill	256, 2, 0
mgl@1371
 16567
+
mgl@1371
 16568
+	.align	2
mgl@1371
 16569
+.LC1:
mgl@1371
 16570
+	.int	0
mgl@1371
 16571
+.LC2:
mgl@1371
 16572
+	.int	0
mgl@1371
 16573
+.LC3:
mgl@1371
 16574
+	.int	0
mgl@1371
 16575
+	.size	main, . - main
mgl@1371
 16576
+
mgl@1371
 16577
+.Letext0:
mgl@1371
 16578
+
mgl@1371
 16579
+	.section .debug_info
mgl@1371
 16580
+	.int	.Ledebug_info0 - .Ldebug_info0	// size
mgl@1371
 16581
+	.short	2				// version
mgl@1371
 16582
+	.int	.Ldebug_abbrev0			// abbrev offset
mgl@1371
 16583
+	.byte	4				// bytes per addr
mgl@1371
 16584
+
mgl@1371
 16585
+	.uleb128 1				// abbrev 1
mgl@1371
 16586
+	.int	.Ldebug_line0			// DW_AT_stmt_list
mgl@1371
 16587
+	.int	.Letext0			// DW_AT_high_pc
mgl@1371
 16588
+	.int	.Ltext0				// DW_AT_low_pc
mgl@1371
 16589
+
mgl@1371
 16590
+.Ledebug_info0:
mgl@1371
 16591
+
mgl@1371
 16592
+	.section .debug_abbrev
mgl@1371
 16593
+	.uleb128 0x01
mgl@1371
 16594
+	.uleb128 0x11		// DW_TAG_compile_unit
mgl@1371
 16595
+	.byte	0		// DW_CHILDREN_no
mgl@1371
 16596
+	.uleb128 0x10, 0x6	// DW_AT_stmt_list
mgl@1371
 16597
+	.uleb128 0x12, 0x1	// DW_AT_high_pc
mgl@1371
 16598
+	.uleb128 0x11, 0x1	// DW_AT_low_pc
mgl@1371
 16599
+	.uleb128 0, 0
mgl@1371
 16600
+
mgl@1371
 16601
+	.byte	0
mgl@1371
 16602
--- /dev/null
mgl@1371
 16603
+++ b/gas/testsuite/gas/avr32/fpinsn.d
mgl@1371
 16604
@@ -0,0 +1,271 @@
mgl@1371
 16605
+#as:
mgl@1371
 16606
+#objdump: -dr
mgl@1371
 16607
+#name: fpinsn
mgl@1371
 16608
+
mgl@1371
 16609
+.*: +file format .*
mgl@1371
 16610
+
mgl@1371
 16611
+Disassembly of section \.text:
mgl@1371
 16612
+
mgl@1371
 16613
+[0-9a-f]* <fadd_s>:
mgl@1371
 16614
+ *[0-9a-f]*:	e1 a2 0f ff 	cop cp0,cr15,cr15,cr15,0x4
mgl@1371
 16615
+ *[0-9a-f]*:	e1 a2 00 00 	cop cp0,cr0,cr0,cr0,0x4
mgl@1371
 16616
+ *[0-9a-f]*:	e1 a2 00 ff 	cop cp0,cr0,cr15,cr15,0x4
mgl@1371
 16617
+ *[0-9a-f]*:	e1 a2 0f 0f 	cop cp0,cr15,cr0,cr15,0x4
mgl@1371
 16618
+ *[0-9a-f]*:	e1 a2 0f f0 	cop cp0,cr15,cr15,cr0,0x4
mgl@1371
 16619
+ *[0-9a-f]*:	e1 a2 07 88 	cop cp0,cr7,cr8,cr8,0x4
mgl@1371
 16620
+ *[0-9a-f]*:	e1 a2 08 78 	cop cp0,cr8,cr7,cr8,0x4
mgl@1371
 16621
+ *[0-9a-f]*:	e1 a2 08 87 	cop cp0,cr8,cr8,cr7,0x4
mgl@1371
 16622
+
mgl@1371
 16623
+[0-9a-f]* <fsub_s>:
mgl@1371
 16624
+ *[0-9a-f]*:	e1 a2 1f ff 	cop cp0,cr15,cr15,cr15,0x5
mgl@1371
 16625
+ *[0-9a-f]*:	e1 a2 10 00 	cop cp0,cr0,cr0,cr0,0x5
mgl@1371
 16626
+ *[0-9a-f]*:	e1 a2 10 ff 	cop cp0,cr0,cr15,cr15,0x5
mgl@1371
 16627
+ *[0-9a-f]*:	e1 a2 1f 0f 	cop cp0,cr15,cr0,cr15,0x5
mgl@1371
 16628
+ *[0-9a-f]*:	e1 a2 1f f0 	cop cp0,cr15,cr15,cr0,0x5
mgl@1371
 16629
+ *[0-9a-f]*:	e1 a2 17 88 	cop cp0,cr7,cr8,cr8,0x5
mgl@1371
 16630
+ *[0-9a-f]*:	e1 a2 18 78 	cop cp0,cr8,cr7,cr8,0x5
mgl@1371
 16631
+ *[0-9a-f]*:	e1 a2 18 87 	cop cp0,cr8,cr8,cr7,0x5
mgl@1371
 16632
+
mgl@1371
 16633
+[0-9a-f]* <fmac_s>:
mgl@1371
 16634
+ *[0-9a-f]*:	e1 a0 0f ff 	cop cp0,cr15,cr15,cr15,0x0
mgl@1371
 16635
+ *[0-9a-f]*:	e1 a0 00 00 	cop cp0,cr0,cr0,cr0,0x0
mgl@1371
 16636
+ *[0-9a-f]*:	e1 a0 00 ff 	cop cp0,cr0,cr15,cr15,0x0
mgl@1371
 16637
+ *[0-9a-f]*:	e1 a0 0f 0f 	cop cp0,cr15,cr0,cr15,0x0
mgl@1371
 16638
+ *[0-9a-f]*:	e1 a0 0f f0 	cop cp0,cr15,cr15,cr0,0x0
mgl@1371
 16639
+ *[0-9a-f]*:	e1 a0 07 88 	cop cp0,cr7,cr8,cr8,0x0
mgl@1371
 16640
+ *[0-9a-f]*:	e1 a0 08 78 	cop cp0,cr8,cr7,cr8,0x0
mgl@1371
 16641
+ *[0-9a-f]*:	e1 a0 08 87 	cop cp0,cr8,cr8,cr7,0x0
mgl@1371
 16642
+
mgl@1371
 16643
+[0-9a-f]* <fnmac_s>:
mgl@1371
 16644
+ *[0-9a-f]*:	e1 a0 1f ff 	cop cp0,cr15,cr15,cr15,0x1
mgl@1371
 16645
+ *[0-9a-f]*:	e1 a0 10 00 	cop cp0,cr0,cr0,cr0,0x1
mgl@1371
 16646
+ *[0-9a-f]*:	e1 a0 10 ff 	cop cp0,cr0,cr15,cr15,0x1
mgl@1371
 16647
+ *[0-9a-f]*:	e1 a0 1f 0f 	cop cp0,cr15,cr0,cr15,0x1
mgl@1371
 16648
+ *[0-9a-f]*:	e1 a0 1f f0 	cop cp0,cr15,cr15,cr0,0x1
mgl@1371
 16649
+ *[0-9a-f]*:	e1 a0 17 88 	cop cp0,cr7,cr8,cr8,0x1
mgl@1371
 16650
+ *[0-9a-f]*:	e1 a0 18 78 	cop cp0,cr8,cr7,cr8,0x1
mgl@1371
 16651
+ *[0-9a-f]*:	e1 a0 18 87 	cop cp0,cr8,cr8,cr7,0x1
mgl@1371
 16652
+
mgl@1371
 16653
+[0-9a-f]* <fmsc_s>:
mgl@1371
 16654
+ *[0-9a-f]*:	e1 a1 0f ff 	cop cp0,cr15,cr15,cr15,0x2
mgl@1371
 16655
+ *[0-9a-f]*:	e1 a1 00 00 	cop cp0,cr0,cr0,cr0,0x2
mgl@1371
 16656
+ *[0-9a-f]*:	e1 a1 00 ff 	cop cp0,cr0,cr15,cr15,0x2
mgl@1371
 16657
+ *[0-9a-f]*:	e1 a1 0f 0f 	cop cp0,cr15,cr0,cr15,0x2
mgl@1371
 16658
+ *[0-9a-f]*:	e1 a1 0f f0 	cop cp0,cr15,cr15,cr0,0x2
mgl@1371
 16659
+ *[0-9a-f]*:	e1 a1 07 88 	cop cp0,cr7,cr8,cr8,0x2
mgl@1371
 16660
+ *[0-9a-f]*:	e1 a1 08 78 	cop cp0,cr8,cr7,cr8,0x2
mgl@1371
 16661
+ *[0-9a-f]*:	e1 a1 08 87 	cop cp0,cr8,cr8,cr7,0x2
mgl@1371
 16662
+
mgl@1371
 16663
+[0-9a-f]* <fnmsc_s>:
mgl@1371
 16664
+ *[0-9a-f]*:	e1 a1 1f ff 	cop cp0,cr15,cr15,cr15,0x3
mgl@1371
 16665
+ *[0-9a-f]*:	e1 a1 10 00 	cop cp0,cr0,cr0,cr0,0x3
mgl@1371
 16666
+ *[0-9a-f]*:	e1 a1 10 ff 	cop cp0,cr0,cr15,cr15,0x3
mgl@1371
 16667
+ *[0-9a-f]*:	e1 a1 1f 0f 	cop cp0,cr15,cr0,cr15,0x3
mgl@1371
 16668
+ *[0-9a-f]*:	e1 a1 1f f0 	cop cp0,cr15,cr15,cr0,0x3
mgl@1371
 16669
+ *[0-9a-f]*:	e1 a1 17 88 	cop cp0,cr7,cr8,cr8,0x3
mgl@1371
 16670
+ *[0-9a-f]*:	e1 a1 18 78 	cop cp0,cr8,cr7,cr8,0x3
mgl@1371
 16671
+ *[0-9a-f]*:	e1 a1 18 87 	cop cp0,cr8,cr8,cr7,0x3
mgl@1371
 16672
+
mgl@1371
 16673
+[0-9a-f]* <fmul_s>:
mgl@1371
 16674
+ *[0-9a-f]*:	e1 a3 0f ff 	cop cp0,cr15,cr15,cr15,0x6
mgl@1371
 16675
+ *[0-9a-f]*:	e1 a3 00 00 	cop cp0,cr0,cr0,cr0,0x6
mgl@1371
 16676
+ *[0-9a-f]*:	e1 a3 00 ff 	cop cp0,cr0,cr15,cr15,0x6
mgl@1371
 16677
+ *[0-9a-f]*:	e1 a3 0f 0f 	cop cp0,cr15,cr0,cr15,0x6
mgl@1371
 16678
+ *[0-9a-f]*:	e1 a3 0f f0 	cop cp0,cr15,cr15,cr0,0x6
mgl@1371
 16679
+ *[0-9a-f]*:	e1 a3 07 88 	cop cp0,cr7,cr8,cr8,0x6
mgl@1371
 16680
+ *[0-9a-f]*:	e1 a3 08 78 	cop cp0,cr8,cr7,cr8,0x6
mgl@1371
 16681
+ *[0-9a-f]*:	e1 a3 08 87 	cop cp0,cr8,cr8,cr7,0x6
mgl@1371
 16682
+
mgl@1371
 16683
+[0-9a-f]* <fnmul_s>:
mgl@1371
 16684
+ *[0-9a-f]*:	e1 a3 1f ff 	cop cp0,cr15,cr15,cr15,0x7
mgl@1371
 16685
+ *[0-9a-f]*:	e1 a3 10 00 	cop cp0,cr0,cr0,cr0,0x7
mgl@1371
 16686
+ *[0-9a-f]*:	e1 a3 10 ff 	cop cp0,cr0,cr15,cr15,0x7
mgl@1371
 16687
+ *[0-9a-f]*:	e1 a3 1f 0f 	cop cp0,cr15,cr0,cr15,0x7
mgl@1371
 16688
+ *[0-9a-f]*:	e1 a3 1f f0 	cop cp0,cr15,cr15,cr0,0x7
mgl@1371
 16689
+ *[0-9a-f]*:	e1 a3 17 88 	cop cp0,cr7,cr8,cr8,0x7
mgl@1371
 16690
+ *[0-9a-f]*:	e1 a3 18 78 	cop cp0,cr8,cr7,cr8,0x7
mgl@1371
 16691
+ *[0-9a-f]*:	e1 a3 18 87 	cop cp0,cr8,cr8,cr7,0x7
mgl@1371
 16692
+
mgl@1371
 16693
+[0-9a-f]* <fneg_s>:
mgl@1371
 16694
+ *[0-9a-f]*:	e1 a4 0f f0 	cop cp0,cr15,cr15,cr0,0x8
mgl@1371
 16695
+ *[0-9a-f]*:	e1 a4 00 00 	cop cp0,cr0,cr0,cr0,0x8
mgl@1371
 16696
+ *[0-9a-f]*:	e1 a4 00 f0 	cop cp0,cr0,cr15,cr0,0x8
mgl@1371
 16697
+ *[0-9a-f]*:	e1 a4 0f 00 	cop cp0,cr15,cr0,cr0,0x8
mgl@1371
 16698
+ *[0-9a-f]*:	e1 a4 07 80 	cop cp0,cr7,cr8,cr0,0x8
mgl@1371
 16699
+ *[0-9a-f]*:	e1 a4 08 70 	cop cp0,cr8,cr7,cr0,0x8
mgl@1371
 16700
+
mgl@1371
 16701
+[0-9a-f]* <fabs_s>:
mgl@1371
 16702
+ *[0-9a-f]*:	e1 a4 1f f0 	cop cp0,cr15,cr15,cr0,0x9
mgl@1371
 16703
+ *[0-9a-f]*:	e1 a4 10 00 	cop cp0,cr0,cr0,cr0,0x9
mgl@1371
 16704
+ *[0-9a-f]*:	e1 a4 10 f0 	cop cp0,cr0,cr15,cr0,0x9
mgl@1371
 16705
+ *[0-9a-f]*:	e1 a4 1f 00 	cop cp0,cr15,cr0,cr0,0x9
mgl@1371
 16706
+ *[0-9a-f]*:	e1 a4 17 80 	cop cp0,cr7,cr8,cr0,0x9
mgl@1371
 16707
+ *[0-9a-f]*:	e1 a4 18 70 	cop cp0,cr8,cr7,cr0,0x9
mgl@1371
 16708
+
mgl@1371
 16709
+[0-9a-f]* <fcmp_s>:
mgl@1371
 16710
+ *[0-9a-f]*:	e1 a6 10 ff 	cop cp0,cr0,cr15,cr15,0xd
mgl@1371
 16711
+ *[0-9a-f]*:	e1 a6 10 00 	cop cp0,cr0,cr0,cr0,0xd
mgl@1371
 16712
+ *[0-9a-f]*:	e1 a6 10 0f 	cop cp0,cr0,cr0,cr15,0xd
mgl@1371
 16713
+ *[0-9a-f]*:	e1 a6 10 f0 	cop cp0,cr0,cr15,cr0,0xd
mgl@1371
 16714
+ *[0-9a-f]*:	e1 a6 10 78 	cop cp0,cr0,cr7,cr8,0xd
mgl@1371
 16715
+ *[0-9a-f]*:	e1 a6 10 87 	cop cp0,cr0,cr8,cr7,0xd
mgl@1371
 16716
+
mgl@1371
 16717
+[0-9a-f]* <fadd_d>:
mgl@1371
 16718
+ *[0-9a-f]*:	e5 a2 0e ee 	cop cp0,cr14,cr14,cr14,0x44
mgl@1371
 16719
+ *[0-9a-f]*:	e5 a2 00 00 	cop cp0,cr0,cr0,cr0,0x44
mgl@1371
 16720
+ *[0-9a-f]*:	e5 a2 00 ee 	cop cp0,cr0,cr14,cr14,0x44
mgl@1371
 16721
+ *[0-9a-f]*:	e5 a2 0e 0e 	cop cp0,cr14,cr0,cr14,0x44
mgl@1371
 16722
+ *[0-9a-f]*:	e5 a2 0e e0 	cop cp0,cr14,cr14,cr0,0x44
mgl@1371
 16723
+ *[0-9a-f]*:	e5 a2 06 88 	cop cp0,cr6,cr8,cr8,0x44
mgl@1371
 16724
+ *[0-9a-f]*:	e5 a2 08 68 	cop cp0,cr8,cr6,cr8,0x44
mgl@1371
 16725
+ *[0-9a-f]*:	e5 a2 08 86 	cop cp0,cr8,cr8,cr6,0x44
mgl@1371
 16726
+
mgl@1371
 16727
+[0-9a-f]* <fsub_d>:
mgl@1371
 16728
+ *[0-9a-f]*:	e5 a2 1e ee 	cop cp0,cr14,cr14,cr14,0x45
mgl@1371
 16729
+ *[0-9a-f]*:	e5 a2 10 00 	cop cp0,cr0,cr0,cr0,0x45
mgl@1371
 16730
+ *[0-9a-f]*:	e5 a2 10 ee 	cop cp0,cr0,cr14,cr14,0x45
mgl@1371
 16731
+ *[0-9a-f]*:	e5 a2 1e 0e 	cop cp0,cr14,cr0,cr14,0x45
mgl@1371
 16732
+ *[0-9a-f]*:	e5 a2 1e e0 	cop cp0,cr14,cr14,cr0,0x45
mgl@1371
 16733
+ *[0-9a-f]*:	e5 a2 16 88 	cop cp0,cr6,cr8,cr8,0x45
mgl@1371
 16734
+ *[0-9a-f]*:	e5 a2 18 68 	cop cp0,cr8,cr6,cr8,0x45
mgl@1371
 16735
+ *[0-9a-f]*:	e5 a2 18 86 	cop cp0,cr8,cr8,cr6,0x45
mgl@1371
 16736
+
mgl@1371
 16737
+[0-9a-f]* <fmac_d>:
mgl@1371
 16738
+ *[0-9a-f]*:	e5 a0 0e ee 	cop cp0,cr14,cr14,cr14,0x40
mgl@1371
 16739
+ *[0-9a-f]*:	e5 a0 00 00 	cop cp0,cr0,cr0,cr0,0x40
mgl@1371
 16740
+ *[0-9a-f]*:	e5 a0 00 ee 	cop cp0,cr0,cr14,cr14,0x40
mgl@1371
 16741
+ *[0-9a-f]*:	e5 a0 0e 0e 	cop cp0,cr14,cr0,cr14,0x40
mgl@1371
 16742
+ *[0-9a-f]*:	e5 a0 0e e0 	cop cp0,cr14,cr14,cr0,0x40
mgl@1371
 16743
+ *[0-9a-f]*:	e5 a0 06 88 	cop cp0,cr6,cr8,cr8,0x40
mgl@1371
 16744
+ *[0-9a-f]*:	e5 a0 08 68 	cop cp0,cr8,cr6,cr8,0x40
mgl@1371
 16745
+ *[0-9a-f]*:	e5 a0 08 86 	cop cp0,cr8,cr8,cr6,0x40
mgl@1371
 16746
+
mgl@1371
 16747
+[0-9a-f]* <fnmac_d>:
mgl@1371
 16748
+ *[0-9a-f]*:	e5 a0 1e ee 	cop cp0,cr14,cr14,cr14,0x41
mgl@1371
 16749
+ *[0-9a-f]*:	e5 a0 10 00 	cop cp0,cr0,cr0,cr0,0x41
mgl@1371
 16750
+ *[0-9a-f]*:	e5 a0 10 ee 	cop cp0,cr0,cr14,cr14,0x41
mgl@1371
 16751
+ *[0-9a-f]*:	e5 a0 1e 0e 	cop cp0,cr14,cr0,cr14,0x41
mgl@1371
 16752
+ *[0-9a-f]*:	e5 a0 1e e0 	cop cp0,cr14,cr14,cr0,0x41
mgl@1371
 16753
+ *[0-9a-f]*:	e5 a0 16 88 	cop cp0,cr6,cr8,cr8,0x41
mgl@1371
 16754
+ *[0-9a-f]*:	e5 a0 18 68 	cop cp0,cr8,cr6,cr8,0x41
mgl@1371
 16755
+ *[0-9a-f]*:	e5 a0 18 86 	cop cp0,cr8,cr8,cr6,0x41
mgl@1371
 16756
+
mgl@1371
 16757
+[0-9a-f]* <fmsc_d>:
mgl@1371
 16758
+ *[0-9a-f]*:	e5 a1 0e ee 	cop cp0,cr14,cr14,cr14,0x42
mgl@1371
 16759
+ *[0-9a-f]*:	e5 a1 00 00 	cop cp0,cr0,cr0,cr0,0x42
mgl@1371
 16760
+ *[0-9a-f]*:	e5 a1 00 ee 	cop cp0,cr0,cr14,cr14,0x42
mgl@1371
 16761
+ *[0-9a-f]*:	e5 a1 0e 0e 	cop cp0,cr14,cr0,cr14,0x42
mgl@1371
 16762
+ *[0-9a-f]*:	e5 a1 0e e0 	cop cp0,cr14,cr14,cr0,0x42
mgl@1371
 16763
+ *[0-9a-f]*:	e5 a1 06 88 	cop cp0,cr6,cr8,cr8,0x42
mgl@1371
 16764
+ *[0-9a-f]*:	e5 a1 08 68 	cop cp0,cr8,cr6,cr8,0x42
mgl@1371
 16765
+ *[0-9a-f]*:	e5 a1 08 86 	cop cp0,cr8,cr8,cr6,0x42
mgl@1371
 16766
+
mgl@1371
 16767
+[0-9a-f]* <fnmsc_d>:
mgl@1371
 16768
+ *[0-9a-f]*:	e5 a1 1e ee 	cop cp0,cr14,cr14,cr14,0x43
mgl@1371
 16769
+ *[0-9a-f]*:	e5 a1 10 00 	cop cp0,cr0,cr0,cr0,0x43
mgl@1371
 16770
+ *[0-9a-f]*:	e5 a1 10 ee 	cop cp0,cr0,cr14,cr14,0x43
mgl@1371
 16771
+ *[0-9a-f]*:	e5 a1 1e 0e 	cop cp0,cr14,cr0,cr14,0x43
mgl@1371
 16772
+ *[0-9a-f]*:	e5 a1 1e e0 	cop cp0,cr14,cr14,cr0,0x43
mgl@1371
 16773
+ *[0-9a-f]*:	e5 a1 16 88 	cop cp0,cr6,cr8,cr8,0x43
mgl@1371
 16774
+ *[0-9a-f]*:	e5 a1 18 68 	cop cp0,cr8,cr6,cr8,0x43
mgl@1371
 16775
+ *[0-9a-f]*:	e5 a1 18 86 	cop cp0,cr8,cr8,cr6,0x43
mgl@1371
 16776
+
mgl@1371
 16777
+[0-9a-f]* <fmul_d>:
mgl@1371
 16778
+ *[0-9a-f]*:	e5 a3 0e ee 	cop cp0,cr14,cr14,cr14,0x46
mgl@1371
 16779
+ *[0-9a-f]*:	e5 a3 00 00 	cop cp0,cr0,cr0,cr0,0x46
mgl@1371
 16780
+ *[0-9a-f]*:	e5 a3 00 ee 	cop cp0,cr0,cr14,cr14,0x46
mgl@1371
 16781
+ *[0-9a-f]*:	e5 a3 0e 0e 	cop cp0,cr14,cr0,cr14,0x46
mgl@1371
 16782
+ *[0-9a-f]*:	e5 a3 0e e0 	cop cp0,cr14,cr14,cr0,0x46
mgl@1371
 16783
+ *[0-9a-f]*:	e5 a3 06 88 	cop cp0,cr6,cr8,cr8,0x46
mgl@1371
 16784
+ *[0-9a-f]*:	e5 a3 08 68 	cop cp0,cr8,cr6,cr8,0x46
mgl@1371
 16785
+ *[0-9a-f]*:	e5 a3 08 86 	cop cp0,cr8,cr8,cr6,0x46
mgl@1371
 16786
+
mgl@1371
 16787
+[0-9a-f]* <fnmul_d>:
mgl@1371
 16788
+ *[0-9a-f]*:	e5 a3 1e ee 	cop cp0,cr14,cr14,cr14,0x47
mgl@1371
 16789
+ *[0-9a-f]*:	e5 a3 10 00 	cop cp0,cr0,cr0,cr0,0x47
mgl@1371
 16790
+ *[0-9a-f]*:	e5 a3 10 ee 	cop cp0,cr0,cr14,cr14,0x47
mgl@1371
 16791
+ *[0-9a-f]*:	e5 a3 1e 0e 	cop cp0,cr14,cr0,cr14,0x47
mgl@1371
 16792
+ *[0-9a-f]*:	e5 a3 1e e0 	cop cp0,cr14,cr14,cr0,0x47
mgl@1371
 16793
+ *[0-9a-f]*:	e5 a3 16 88 	cop cp0,cr6,cr8,cr8,0x47
mgl@1371
 16794
+ *[0-9a-f]*:	e5 a3 18 68 	cop cp0,cr8,cr6,cr8,0x47
mgl@1371
 16795
+ *[0-9a-f]*:	e5 a3 18 86 	cop cp0,cr8,cr8,cr6,0x47
mgl@1371
 16796
+
mgl@1371
 16797
+[0-9a-f]* <fneg_d>:
mgl@1371
 16798
+ *[0-9a-f]*:	e5 a4 0e e0 	cop cp0,cr14,cr14,cr0,0x48
mgl@1371
 16799
+ *[0-9a-f]*:	e5 a4 00 00 	cop cp0,cr0,cr0,cr0,0x48
mgl@1371
 16800
+ *[0-9a-f]*:	e5 a4 00 e0 	cop cp0,cr0,cr14,cr0,0x48
mgl@1371
 16801
+ *[0-9a-f]*:	e5 a4 0e 00 	cop cp0,cr14,cr0,cr0,0x48
mgl@1371
 16802
+ *[0-9a-f]*:	e5 a4 06 80 	cop cp0,cr6,cr8,cr0,0x48
mgl@1371
 16803
+ *[0-9a-f]*:	e5 a4 08 60 	cop cp0,cr8,cr6,cr0,0x48
mgl@1371
 16804
+
mgl@1371
 16805
+[0-9a-f]* <fabs_d>:
mgl@1371
 16806
+ *[0-9a-f]*:	e5 a4 1e e0 	cop cp0,cr14,cr14,cr0,0x49
mgl@1371
 16807
+ *[0-9a-f]*:	e5 a4 10 00 	cop cp0,cr0,cr0,cr0,0x49
mgl@1371
 16808
+ *[0-9a-f]*:	e5 a4 10 e0 	cop cp0,cr0,cr14,cr0,0x49
mgl@1371
 16809
+ *[0-9a-f]*:	e5 a4 1e 00 	cop cp0,cr14,cr0,cr0,0x49
mgl@1371
 16810
+ *[0-9a-f]*:	e5 a4 16 80 	cop cp0,cr6,cr8,cr0,0x49
mgl@1371
 16811
+ *[0-9a-f]*:	e5 a4 18 60 	cop cp0,cr8,cr6,cr0,0x49
mgl@1371
 16812
+
mgl@1371
 16813
+[0-9a-f]* <fcmp_d>:
mgl@1371
 16814
+ *[0-9a-f]*:	e5 a6 10 ee 	cop cp0,cr0,cr14,cr14,0x4d
mgl@1371
 16815
+ *[0-9a-f]*:	e5 a6 10 00 	cop cp0,cr0,cr0,cr0,0x4d
mgl@1371
 16816
+ *[0-9a-f]*:	e5 a6 10 0e 	cop cp0,cr0,cr0,cr14,0x4d
mgl@1371
 16817
+ *[0-9a-f]*:	e5 a6 10 e0 	cop cp0,cr0,cr14,cr0,0x4d
mgl@1371
 16818
+ *[0-9a-f]*:	e5 a6 10 68 	cop cp0,cr0,cr6,cr8,0x4d
mgl@1371
 16819
+ *[0-9a-f]*:	e5 a6 10 86 	cop cp0,cr0,cr8,cr6,0x4d
mgl@1371
 16820
+
mgl@1371
 16821
+[0-9a-f]* <fmov_s>:
mgl@1371
 16822
+ *[0-9a-f]*:	e1 a5 0f f0 	cop cp0,cr15,cr15,cr0,0xa
mgl@1371
 16823
+ *[0-9a-f]*:	e1 a5 00 00 	cop cp0,cr0,cr0,cr0,0xa
mgl@1371
 16824
+ *[0-9a-f]*:	e1 a5 0f 00 	cop cp0,cr15,cr0,cr0,0xa
mgl@1371
 16825
+ *[0-9a-f]*:	e1 a5 00 f0 	cop cp0,cr0,cr15,cr0,0xa
mgl@1371
 16826
+ *[0-9a-f]*:	e1 a5 08 70 	cop cp0,cr8,cr7,cr0,0xa
mgl@1371
 16827
+ *[0-9a-f]*:	e1 a5 07 80 	cop cp0,cr7,cr8,cr0,0xa
mgl@1371
 16828
+ *[0-9a-f]*:	ef af 0f 00 	mvcr.w cp0,pc,cr15
mgl@1371
 16829
+ *[0-9a-f]*:	ef a0 00 00 	mvcr.w cp0,r0,cr0
mgl@1371
 16830
+ *[0-9a-f]*:	ef af 00 00 	mvcr.w cp0,pc,cr0
mgl@1371
 16831
+ *[0-9a-f]*:	ef a0 0f 00 	mvcr.w cp0,r0,cr15
mgl@1371
 16832
+ *[0-9a-f]*:	ef a8 07 00 	mvcr.w cp0,r8,cr7
mgl@1371
 16833
+ *[0-9a-f]*:	ef a7 08 00 	mvcr.w cp0,r7,cr8
mgl@1371
 16834
+ *[0-9a-f]*:	ef af 0f 20 	mvrc.w cp0,cr15,pc
mgl@1371
 16835
+ *[0-9a-f]*:	ef a0 00 20 	mvrc.w cp0,cr0,r0
mgl@1371
 16836
+ *[0-9a-f]*:	ef a0 0f 20 	mvrc.w cp0,cr15,r0
mgl@1371
 16837
+ *[0-9a-f]*:	ef af 00 20 	mvrc.w cp0,cr0,pc
mgl@1371
 16838
+ *[0-9a-f]*:	ef a7 08 20 	mvrc.w cp0,cr8,r7
mgl@1371
 16839
+ *[0-9a-f]*:	ef a8 07 20 	mvrc.w cp0,cr7,r8
mgl@1371
 16840
+
mgl@1371
 16841
+[0-9a-f]* <fmov_d>:
mgl@1371
 16842
+ *[0-9a-f]*:	e5 a5 0e e0 	cop cp0,cr14,cr14,cr0,0x4a
mgl@1371
 16843
+ *[0-9a-f]*:	e5 a5 00 00 	cop cp0,cr0,cr0,cr0,0x4a
mgl@1371
 16844
+ *[0-9a-f]*:	e5 a5 0e 00 	cop cp0,cr14,cr0,cr0,0x4a
mgl@1371
 16845
+ *[0-9a-f]*:	e5 a5 00 e0 	cop cp0,cr0,cr14,cr0,0x4a
mgl@1371
 16846
+ *[0-9a-f]*:	e5 a5 08 60 	cop cp0,cr8,cr6,cr0,0x4a
mgl@1371
 16847
+ *[0-9a-f]*:	e5 a5 06 80 	cop cp0,cr6,cr8,cr0,0x4a
mgl@1371
 16848
+ *[0-9a-f]*:	ef ae 0e 10 	mvcr.d cp0,lr,cr14
mgl@1371
 16849
+ *[0-9a-f]*:	ef a0 00 10 	mvcr.d cp0,r0,cr0
mgl@1371
 16850
+ *[0-9a-f]*:	ef ae 00 10 	mvcr.d cp0,lr,cr0
mgl@1371
 16851
+ *[0-9a-f]*:	ef a0 0e 10 	mvcr.d cp0,r0,cr14
mgl@1371
 16852
+ *[0-9a-f]*:	ef a8 06 10 	mvcr.d cp0,r8,cr6
mgl@1371
 16853
+ *[0-9a-f]*:	ef a6 08 10 	mvcr.d cp0,r6,cr8
mgl@1371
 16854
+ *[0-9a-f]*:	ef ae 0e 30 	mvrc.d cp0,cr14,lr
mgl@1371
 16855
+ *[0-9a-f]*:	ef a0 00 30 	mvrc.d cp0,cr0,r0
mgl@1371
 16856
+ *[0-9a-f]*:	ef a0 0e 30 	mvrc.d cp0,cr14,r0
mgl@1371
 16857
+ *[0-9a-f]*:	ef ae 00 30 	mvrc.d cp0,cr0,lr
mgl@1371
 16858
+ *[0-9a-f]*:	ef a6 08 30 	mvrc.d cp0,cr8,r6
mgl@1371
 16859
+ *[0-9a-f]*:	ef a8 06 30 	mvrc.d cp0,cr6,r8
mgl@1371
 16860
+
mgl@1371
 16861
+[0-9a-f]* <fcasts_d>:
mgl@1371
 16862
+ *[0-9a-f]*:	e1 a7 1f e0 	cop cp0,cr15,cr14,cr0,0xf
mgl@1371
 16863
+ *[0-9a-f]*:	e1 a7 10 00 	cop cp0,cr0,cr0,cr0,0xf
mgl@1371
 16864
+ *[0-9a-f]*:	e1 a7 1f 00 	cop cp0,cr15,cr0,cr0,0xf
mgl@1371
 16865
+ *[0-9a-f]*:	e1 a7 10 e0 	cop cp0,cr0,cr14,cr0,0xf
mgl@1371
 16866
+ *[0-9a-f]*:	e1 a7 18 60 	cop cp0,cr8,cr6,cr0,0xf
mgl@1371
 16867
+ *[0-9a-f]*:	e1 a7 17 80 	cop cp0,cr7,cr8,cr0,0xf
mgl@1371
 16868
+
mgl@1371
 16869
+[0-9a-f]* <fcastd_s>:
mgl@1371
 16870
+ *[0-9a-f]*:	e1 a8 0e f0 	cop cp0,cr14,cr15,cr0,0x10
mgl@1371
 16871
+ *[0-9a-f]*:	e1 a8 00 00 	cop cp0,cr0,cr0,cr0,0x10
mgl@1371
 16872
+ *[0-9a-f]*:	e1 a8 0e 00 	cop cp0,cr14,cr0,cr0,0x10
mgl@1371
 16873
+ *[0-9a-f]*:	e1 a8 00 f0 	cop cp0,cr0,cr15,cr0,0x10
mgl@1371
 16874
+ *[0-9a-f]*:	e1 a8 08 70 	cop cp0,cr8,cr7,cr0,0x10
mgl@1371
 16875
+ *[0-9a-f]*:	e1 a8 06 80 	cop cp0,cr6,cr8,cr0,0x10
mgl@1371
 16876
--- /dev/null
mgl@1371
 16877
+++ b/gas/testsuite/gas/avr32/fpinsn.s
mgl@1371
 16878
@@ -0,0 +1,266 @@
mgl@1371
 16879
+
mgl@1371
 16880
+	.text
mgl@1371
 16881
+	.global	fadd_s
mgl@1371
 16882
+fadd_s:
mgl@1371
 16883
+	fadd.s fr15, fr15, fr15
mgl@1371
 16884
+	fadd.s fr0, fr0, fr0
mgl@1371
 16885
+	fadd.s fr0, fr15, fr15
mgl@1371
 16886
+	fadd.s fr15, fr0, fr15
mgl@1371
 16887
+	fadd.s fr15, fr15, fr0
mgl@1371
 16888
+	fadd.s fr7, fr8, fr8
mgl@1371
 16889
+	fadd.s fr8, fr7, fr8
mgl@1371
 16890
+	fadd.s fr8, fr8, fr7
mgl@1371
 16891
+	.global	fsub_s
mgl@1371
 16892
+fsub_s:
mgl@1371
 16893
+	fsub.s fr15, fr15, fr15
mgl@1371
 16894
+	fsub.s fr0, fr0, fr0
mgl@1371
 16895
+	fsub.s fr0, fr15, fr15
mgl@1371
 16896
+	fsub.s fr15, fr0, fr15
mgl@1371
 16897
+	fsub.s fr15, fr15, fr0
mgl@1371
 16898
+	fsub.s fr7, fr8, fr8
mgl@1371
 16899
+	fsub.s fr8, fr7, fr8
mgl@1371
 16900
+	fsub.s fr8, fr8, fr7
mgl@1371
 16901
+	.global	fmac_s
mgl@1371
 16902
+fmac_s:
mgl@1371
 16903
+	fmac.s fr15, fr15, fr15
mgl@1371
 16904
+	fmac.s fr0, fr0, fr0
mgl@1371
 16905
+	fmac.s fr0, fr15, fr15
mgl@1371
 16906
+	fmac.s fr15, fr0, fr15
mgl@1371
 16907
+	fmac.s fr15, fr15, fr0
mgl@1371
 16908
+	fmac.s fr7, fr8, fr8
mgl@1371
 16909
+	fmac.s fr8, fr7, fr8
mgl@1371
 16910
+	fmac.s fr8, fr8, fr7
mgl@1371
 16911
+	.global	fnmac_s
mgl@1371
 16912
+fnmac_s:
mgl@1371
 16913
+	fnmac.s fr15, fr15, fr15
mgl@1371
 16914
+	fnmac.s fr0, fr0, fr0
mgl@1371
 16915
+	fnmac.s fr0, fr15, fr15
mgl@1371
 16916
+	fnmac.s fr15, fr0, fr15
mgl@1371
 16917
+	fnmac.s fr15, fr15, fr0
mgl@1371
 16918
+	fnmac.s fr7, fr8, fr8
mgl@1371
 16919
+	fnmac.s fr8, fr7, fr8
mgl@1371
 16920
+	fnmac.s fr8, fr8, fr7
mgl@1371
 16921
+	.global	fmsc_s
mgl@1371
 16922
+fmsc_s:
mgl@1371
 16923
+	fmsc.s fr15, fr15, fr15
mgl@1371
 16924
+	fmsc.s fr0, fr0, fr0
mgl@1371
 16925
+	fmsc.s fr0, fr15, fr15
mgl@1371
 16926
+	fmsc.s fr15, fr0, fr15
mgl@1371
 16927
+	fmsc.s fr15, fr15, fr0
mgl@1371
 16928
+	fmsc.s fr7, fr8, fr8
mgl@1371
 16929
+	fmsc.s fr8, fr7, fr8
mgl@1371
 16930
+	fmsc.s fr8, fr8, fr7
mgl@1371
 16931
+	.global	fnmsc_s
mgl@1371
 16932
+fnmsc_s:
mgl@1371
 16933
+	fnmsc.s fr15, fr15, fr15
mgl@1371
 16934
+	fnmsc.s fr0, fr0, fr0
mgl@1371
 16935
+	fnmsc.s fr0, fr15, fr15
mgl@1371
 16936
+	fnmsc.s fr15, fr0, fr15
mgl@1371
 16937
+	fnmsc.s fr15, fr15, fr0
mgl@1371
 16938
+	fnmsc.s fr7, fr8, fr8
mgl@1371
 16939
+	fnmsc.s fr8, fr7, fr8
mgl@1371
 16940
+	fnmsc.s fr8, fr8, fr7
mgl@1371
 16941
+	.global	fmul_s
mgl@1371
 16942
+fmul_s:
mgl@1371
 16943
+	fmul.s fr15, fr15, fr15
mgl@1371
 16944
+	fmul.s fr0, fr0, fr0
mgl@1371
 16945
+	fmul.s fr0, fr15, fr15
mgl@1371
 16946
+	fmul.s fr15, fr0, fr15
mgl@1371
 16947
+	fmul.s fr15, fr15, fr0
mgl@1371
 16948
+	fmul.s fr7, fr8, fr8
mgl@1371
 16949
+	fmul.s fr8, fr7, fr8
mgl@1371
 16950
+	fmul.s fr8, fr8, fr7
mgl@1371
 16951
+	.global	fnmul_s
mgl@1371
 16952
+fnmul_s:
mgl@1371
 16953
+	fnmul.s fr15, fr15, fr15
mgl@1371
 16954
+	fnmul.s fr0, fr0, fr0
mgl@1371
 16955
+	fnmul.s fr0, fr15, fr15
mgl@1371
 16956
+	fnmul.s fr15, fr0, fr15
mgl@1371
 16957
+	fnmul.s fr15, fr15, fr0
mgl@1371
 16958
+	fnmul.s fr7, fr8, fr8
mgl@1371
 16959
+	fnmul.s fr8, fr7, fr8
mgl@1371
 16960
+	fnmul.s fr8, fr8, fr7
mgl@1371
 16961
+	.global	fneg_s
mgl@1371
 16962
+fneg_s:
mgl@1371
 16963
+	fneg.s fr15, fr15
mgl@1371
 16964
+	fneg.s fr0, fr0
mgl@1371
 16965
+	fneg.s fr0, fr15
mgl@1371
 16966
+	fneg.s fr15, fr0
mgl@1371
 16967
+	fneg.s fr7, fr8
mgl@1371
 16968
+	fneg.s fr8, fr7
mgl@1371
 16969
+	.global	fabs_s
mgl@1371
 16970
+fabs_s:
mgl@1371
 16971
+	fabs.s fr15, fr15
mgl@1371
 16972
+	fabs.s fr0, fr0
mgl@1371
 16973
+	fabs.s fr0, fr15
mgl@1371
 16974
+	fabs.s fr15, fr0
mgl@1371
 16975
+	fabs.s fr7, fr8
mgl@1371
 16976
+	fabs.s fr8, fr7
mgl@1371
 16977
+	.global	fcmp_s
mgl@1371
 16978
+fcmp_s:
mgl@1371
 16979
+	fcmp.s fr15, fr15
mgl@1371
 16980
+	fcmp.s fr0, fr0
mgl@1371
 16981
+	fcmp.s fr0, fr15
mgl@1371
 16982
+	fcmp.s fr15, fr0
mgl@1371
 16983
+	fcmp.s fr7, fr8
mgl@1371
 16984
+	fcmp.s fr8, fr7
mgl@1371
 16985
+	.global	fadd_d
mgl@1371
 16986
+fadd_d:
mgl@1371
 16987
+	fadd.d fr14, fr14, fr14
mgl@1371
 16988
+	fadd.d fr0, fr0, fr0
mgl@1371
 16989
+	fadd.d fr0, fr14, fr14
mgl@1371
 16990
+	fadd.d fr14, fr0, fr14
mgl@1371
 16991
+	fadd.d fr14, fr14, fr0
mgl@1371
 16992
+	fadd.d fr6, fr8, fr8
mgl@1371
 16993
+	fadd.d fr8, fr6, fr8
mgl@1371
 16994
+	fadd.d fr8, fr8, fr6
mgl@1371
 16995
+	.global	fsub_d
mgl@1371
 16996
+fsub_d:
mgl@1371
 16997
+	fsub.d fr14, fr14, fr14
mgl@1371
 16998
+	fsub.d fr0, fr0, fr0
mgl@1371
 16999
+	fsub.d fr0, fr14, fr14
mgl@1371
 17000
+	fsub.d fr14, fr0, fr14
mgl@1371
 17001
+	fsub.d fr14, fr14, fr0
mgl@1371
 17002
+	fsub.d fr6, fr8, fr8
mgl@1371
 17003
+	fsub.d fr8, fr6, fr8
mgl@1371
 17004
+	fsub.d fr8, fr8, fr6
mgl@1371
 17005
+	.global	fmac_d
mgl@1371
 17006
+fmac_d:
mgl@1371
 17007
+	fmac.d fr14, fr14, fr14
mgl@1371
 17008
+	fmac.d fr0, fr0, fr0
mgl@1371
 17009
+	fmac.d fr0, fr14, fr14
mgl@1371
 17010
+	fmac.d fr14, fr0, fr14
mgl@1371
 17011
+	fmac.d fr14, fr14, fr0
mgl@1371
 17012
+	fmac.d fr6, fr8, fr8
mgl@1371
 17013
+	fmac.d fr8, fr6, fr8
mgl@1371
 17014
+	fmac.d fr8, fr8, fr6
mgl@1371
 17015
+	.global	fnmac_d
mgl@1371
 17016
+fnmac_d:
mgl@1371
 17017
+	fnmac.d fr14, fr14, fr14
mgl@1371
 17018
+	fnmac.d fr0, fr0, fr0
mgl@1371
 17019
+	fnmac.d fr0, fr14, fr14
mgl@1371
 17020
+	fnmac.d fr14, fr0, fr14
mgl@1371
 17021
+	fnmac.d fr14, fr14, fr0
mgl@1371
 17022
+	fnmac.d fr6, fr8, fr8
mgl@1371
 17023
+	fnmac.d fr8, fr6, fr8
mgl@1371
 17024
+	fnmac.d fr8, fr8, fr6
mgl@1371
 17025
+	.global	fmsc_d
mgl@1371
 17026
+fmsc_d:
mgl@1371
 17027
+	fmsc.d fr14, fr14, fr14
mgl@1371
 17028
+	fmsc.d fr0, fr0, fr0
mgl@1371
 17029
+	fmsc.d fr0, fr14, fr14
mgl@1371
 17030
+	fmsc.d fr14, fr0, fr14
mgl@1371
 17031
+	fmsc.d fr14, fr14, fr0
mgl@1371
 17032
+	fmsc.d fr6, fr8, fr8
mgl@1371
 17033
+	fmsc.d fr8, fr6, fr8
mgl@1371
 17034
+	fmsc.d fr8, fr8, fr6
mgl@1371
 17035
+	.global	fnmsc_d
mgl@1371
 17036
+fnmsc_d:
mgl@1371
 17037
+	fnmsc.d fr14, fr14, fr14
mgl@1371
 17038
+	fnmsc.d fr0, fr0, fr0
mgl@1371
 17039
+	fnmsc.d fr0, fr14, fr14
mgl@1371
 17040
+	fnmsc.d fr14, fr0, fr14
mgl@1371
 17041
+	fnmsc.d fr14, fr14, fr0
mgl@1371
 17042
+	fnmsc.d fr6, fr8, fr8
mgl@1371
 17043
+	fnmsc.d fr8, fr6, fr8
mgl@1371
 17044
+	fnmsc.d fr8, fr8, fr6
mgl@1371
 17045
+	.global	fmul_d
mgl@1371
 17046
+fmul_d:
mgl@1371
 17047
+	fmul.d fr14, fr14, fr14
mgl@1371
 17048
+	fmul.d fr0, fr0, fr0
mgl@1371
 17049
+	fmul.d fr0, fr14, fr14
mgl@1371
 17050
+	fmul.d fr14, fr0, fr14
mgl@1371
 17051
+	fmul.d fr14, fr14, fr0
mgl@1371
 17052
+	fmul.d fr6, fr8, fr8
mgl@1371
 17053
+	fmul.d fr8, fr6, fr8
mgl@1371
 17054
+	fmul.d fr8, fr8, fr6
mgl@1371
 17055
+	.global	fnmul_d
mgl@1371
 17056
+fnmul_d:
mgl@1371
 17057
+	fnmul.d fr14, fr14, fr14
mgl@1371
 17058
+	fnmul.d fr0, fr0, fr0
mgl@1371
 17059
+	fnmul.d fr0, fr14, fr14
mgl@1371
 17060
+	fnmul.d fr14, fr0, fr14
mgl@1371
 17061
+	fnmul.d fr14, fr14, fr0
mgl@1371
 17062
+	fnmul.d fr6, fr8, fr8
mgl@1371
 17063
+	fnmul.d fr8, fr6, fr8
mgl@1371
 17064
+	fnmul.d fr8, fr8, fr6
mgl@1371
 17065
+	.global	fneg_d
mgl@1371
 17066
+fneg_d:
mgl@1371
 17067
+	fneg.d fr14, fr14
mgl@1371
 17068
+	fneg.d fr0, fr0
mgl@1371
 17069
+	fneg.d fr0, fr14
mgl@1371
 17070
+	fneg.d fr14, fr0
mgl@1371
 17071
+	fneg.d fr6, fr8
mgl@1371
 17072
+	fneg.d fr8, fr6
mgl@1371
 17073
+	.global	fabs_d
mgl@1371
 17074
+fabs_d:
mgl@1371
 17075
+	fabs.d fr14, fr14
mgl@1371
 17076
+	fabs.d fr0, fr0
mgl@1371
 17077
+	fabs.d fr0, fr14
mgl@1371
 17078
+	fabs.d fr14, fr0
mgl@1371
 17079
+	fabs.d fr6, fr8
mgl@1371
 17080
+	fabs.d fr8, fr6
mgl@1371
 17081
+	.global	fcmp_d
mgl@1371
 17082
+fcmp_d:
mgl@1371
 17083
+	fcmp.d fr14, fr14
mgl@1371
 17084
+	fcmp.d fr0, fr0
mgl@1371
 17085
+	fcmp.d fr0, fr14
mgl@1371
 17086
+	fcmp.d fr14, fr0
mgl@1371
 17087
+	fcmp.d fr6, fr8
mgl@1371
 17088
+	fcmp.d fr8, fr6
mgl@1371
 17089
+	.global fmov_s
mgl@1371
 17090
+fmov_s:
mgl@1371
 17091
+	fmov.s fr15, fr15
mgl@1371
 17092
+	fmov.s fr0, fr0
mgl@1371
 17093
+	fmov.s fr15, fr0
mgl@1371
 17094
+	fmov.s fr0, fr15
mgl@1371
 17095
+	fmov.s fr8, fr7
mgl@1371
 17096
+	fmov.s fr7, fr8
mgl@1371
 17097
+	fmov.s pc, fr15
mgl@1371
 17098
+	fmov.s r0, fr0
mgl@1371
 17099
+	fmov.s pc, fr0
mgl@1371
 17100
+	fmov.s r0, fr15
mgl@1371
 17101
+	fmov.s r8, fr7
mgl@1371
 17102
+	fmov.s r7, fr8
mgl@1371
 17103
+	fmov.s fr15, pc
mgl@1371
 17104
+	fmov.s fr0, r0
mgl@1371
 17105
+	fmov.s fr15, r0
mgl@1371
 17106
+	fmov.s fr0, pc
mgl@1371
 17107
+	fmov.s fr8, r7
mgl@1371
 17108
+	fmov.s fr7, r8
mgl@1371
 17109
+	.global fmov_d
mgl@1371
 17110
+fmov_d:
mgl@1371
 17111
+	fmov.d fr14, fr14
mgl@1371
 17112
+	fmov.d fr0, fr0
mgl@1371
 17113
+	fmov.d fr14, fr0
mgl@1371
 17114
+	fmov.d fr0, fr14
mgl@1371
 17115
+	fmov.d fr8, fr6
mgl@1371
 17116
+	fmov.d fr6, fr8
mgl@1371
 17117
+	fmov.d lr, fr14
mgl@1371
 17118
+	fmov.d r0, fr0
mgl@1371
 17119
+	fmov.d lr, fr0
mgl@1371
 17120
+	fmov.d r0, fr14
mgl@1371
 17121
+	fmov.d r8, fr6
mgl@1371
 17122
+	fmov.d r6, fr8
mgl@1371
 17123
+	fmov.d fr14, lr
mgl@1371
 17124
+	fmov.d fr0, r0
mgl@1371
 17125
+	fmov.d fr14, r0
mgl@1371
 17126
+	fmov.d fr0, lr
mgl@1371
 17127
+	fmov.d fr8, r6
mgl@1371
 17128
+	fmov.d fr6, r8
mgl@1371
 17129
+	.global fcasts_d
mgl@1371
 17130
+fcasts_d:
mgl@1371
 17131
+	fcasts.d fr15, fr14
mgl@1371
 17132
+	fcasts.d fr0, fr0
mgl@1371
 17133
+	fcasts.d fr15, fr0
mgl@1371
 17134
+	fcasts.d fr0, fr14
mgl@1371
 17135
+	fcasts.d fr8, fr6
mgl@1371
 17136
+	fcasts.d fr7, fr8
mgl@1371
 17137
+	.global fcastd_s
mgl@1371
 17138
+fcastd_s:
mgl@1371
 17139
+	fcastd.s fr14, fr15
mgl@1371
 17140
+	fcastd.s fr0, fr0
mgl@1371
 17141
+	fcastd.s fr14, fr0
mgl@1371
 17142
+	fcastd.s fr0, fr15
mgl@1371
 17143
+	fcastd.s fr8, fr7
mgl@1371
 17144
+	fcastd.s fr6, fr8
mgl@1371
 17145
--- /dev/null
mgl@1371
 17146
+++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
mgl@1371
 17147
@@ -0,0 +1,47 @@
mgl@1371
 17148
+#as:
mgl@1371
 17149
+#objdump: -dr
mgl@1371
 17150
+#name: hwrd-lwrd
mgl@1371
 17151
+
mgl@1371
 17152
+.*: +file format .*
mgl@1371
 17153
+
mgl@1371
 17154
+Disassembly of section \.text:
mgl@1371
 17155
+
mgl@1371
 17156
+00000000 <test_hwrd>:
mgl@1371
 17157
+   0:	e0 60 87 65 	mov r0,34661
mgl@1371
 17158
+   4:	e0 60 12 34 	mov r0,4660
mgl@1371
 17159
+   8:	e0 60 00 00 	mov r0,0
mgl@1371
 17160
+			8: R_AVR32_HI16	\.text\+0x60
mgl@1371
 17161
+   c:	e0 60 00 00 	mov r0,0
mgl@1371
 17162
+			c: R_AVR32_HI16	extsym1
mgl@1371
 17163
+  10:	ea 10 87 65 	orh r0,0x8765
mgl@1371
 17164
+  14:	ea 10 12 34 	orh r0,0x1234
mgl@1371
 17165
+  18:	ea 10 00 00 	orh r0,0x0
mgl@1371
 17166
+			18: R_AVR32_HI16	\.text\+0x60
mgl@1371
 17167
+  1c:	ea 10 00 00 	orh r0,0x0
mgl@1371
 17168
+			1c: R_AVR32_HI16	extsym1
mgl@1371
 17169
+  20:	e4 10 87 65 	andh r0,0x8765
mgl@1371
 17170
+  24:	e4 10 12 34 	andh r0,0x1234
mgl@1371
 17171
+  28:	e4 10 00 00 	andh r0,0x0
mgl@1371
 17172
+			28: R_AVR32_HI16	\.text\+0x60
mgl@1371
 17173
+  2c:	e4 10 00 00 	andh r0,0x0
mgl@1371
 17174
+			2c: R_AVR32_HI16	extsym1
mgl@1371
 17175
+
mgl@1371
 17176
+00000030 <test_lwrd>:
mgl@1371
 17177
+  30:	e0 60 43 21 	mov r0,17185
mgl@1371
 17178
+  34:	e0 60 56 78 	mov r0,22136
mgl@1371
 17179
+  38:	e0 60 00 00 	mov r0,0
mgl@1371
 17180
+			38: R_AVR32_LO16	\.text\+0x60
mgl@1371
 17181
+  3c:	e0 60 00 00 	mov r0,0
mgl@1371
 17182
+			3c: R_AVR32_LO16	extsym1
mgl@1371
 17183
+  40:	e8 10 43 21 	orl r0,0x4321
mgl@1371
 17184
+  44:	e8 10 56 78 	orl r0,0x5678
mgl@1371
 17185
+  48:	e8 10 00 00 	orl r0,0x0
mgl@1371
 17186
+			48: R_AVR32_LO16	\.text\+0x60
mgl@1371
 17187
+  4c:	e8 10 00 00 	orl r0,0x0
mgl@1371
 17188
+			4c: R_AVR32_LO16	extsym1
mgl@1371
 17189
+  50:	e0 10 43 21 	andl r0,0x4321
mgl@1371
 17190
+  54:	e0 10 56 78 	andl r0,0x5678
mgl@1371
 17191
+  58:	e0 10 00 00 	andl r0,0x0
mgl@1371
 17192
+			58: R_AVR32_LO16	\.text\+0x60
mgl@1371
 17193
+  5c:	e0 10 00 00 	andl r0,0x0
mgl@1371
 17194
+			5c: R_AVR32_LO16	extsym1
mgl@1371
 17195
--- /dev/null
mgl@1371
 17196
+++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
mgl@1371
 17197
@@ -0,0 +1,39 @@
mgl@1371
 17198
+
mgl@1371
 17199
+        .equ    sym1, 0x12345678
mgl@1371
 17200
+
mgl@1371
 17201
+        .text
mgl@1371
 17202
+        .global test_hwrd
mgl@1371
 17203
+test_hwrd:
mgl@1371
 17204
+        mov     r0, hi(0x87654321)
mgl@1371
 17205
+        mov     r0, hi(sym1)
mgl@1371
 17206
+        mov     r0, hi(sym2)
mgl@1371
 17207
+        mov     r0, hi(extsym1)
mgl@1371
 17208
+
mgl@1371
 17209
+        orh	r0, hi(0x87654321)
mgl@1371
 17210
+        orh	r0, hi(sym1)
mgl@1371
 17211
+        orh	r0, hi(sym2)
mgl@1371
 17212
+        orh	r0, hi(extsym1)
mgl@1371
 17213
+
mgl@1371
 17214
+        andh	r0, hi(0x87654321)
mgl@1371
 17215
+        andh	r0, hi(sym1)
mgl@1371
 17216
+        andh	r0, hi(sym2)
mgl@1371
 17217
+        andh	r0, hi(extsym1)
mgl@1371
 17218
+
mgl@1371
 17219
+        .global test_lwrd
mgl@1371
 17220
+test_lwrd:
mgl@1371
 17221
+        mov     r0, lo(0x87654321)
mgl@1371
 17222
+        mov     r0, lo(sym1)
mgl@1371
 17223
+        mov     r0, lo(sym2)
mgl@1371
 17224
+        mov     r0, lo(extsym1)
mgl@1371
 17225
+
mgl@1371
 17226
+        orl	r0, lo(0x87654321)
mgl@1371
 17227
+        orl	r0, lo(sym1)
mgl@1371
 17228
+        orl	r0, lo(sym2)
mgl@1371
 17229
+        orl	r0, lo(extsym1)
mgl@1371
 17230
+
mgl@1371
 17231
+        andl	r0, lo(0x87654321)
mgl@1371
 17232
+        andl	r0, lo(sym1)
mgl@1371
 17233
+        andl	r0, lo(sym2)
mgl@1371
 17234
+        andl	r0, lo(extsym1)
mgl@1371
 17235
+
mgl@1371
 17236
+sym2:
mgl@1371
 17237
--- /dev/null
mgl@1371
 17238
+++ b/gas/testsuite/gas/avr32/jmptable.d
mgl@1371
 17239
@@ -0,0 +1,20 @@
mgl@1371
 17240
+#source: jmptable.s
mgl@1371
 17241
+#as:
mgl@1371
 17242
+#objdump: -dr
mgl@1371
 17243
+#name: jmptable
mgl@1371
 17244
+
mgl@1371
 17245
+.*: +file format .*
mgl@1371
 17246
+
mgl@1371
 17247
+Disassembly of section \.text:
mgl@1371
 17248
+
mgl@1371
 17249
+00000000 <jmptable_test>:
mgl@1371
 17250
+   0:	fe c8 ff f4 	sub r8,pc,-12
mgl@1371
 17251
+   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
mgl@1371
 17252
+   8:	d7 03       	nop
mgl@1371
 17253
+   a:	00 00       	add r0,r0
mgl@1371
 17254
+   c:	c0 38       	rjmp 12 <jmptable_test\+0x12>
mgl@1371
 17255
+   e:	c0 38       	rjmp 14 <jmptable_test\+0x14>
mgl@1371
 17256
+  10:	c0 38       	rjmp 16 <jmptable_test\+0x16>
mgl@1371
 17257
+  12:	d7 03       	nop
mgl@1371
 17258
+  14:	d7 03       	nop
mgl@1371
 17259
+  16:	d7 03       	nop
mgl@1371
 17260
--- /dev/null
mgl@1371
 17261
+++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
mgl@1371
 17262
@@ -0,0 +1,25 @@
mgl@1371
 17263
+#source: jmptable.s
mgl@1371
 17264
+#as: --linkrelax
mgl@1371
 17265
+#objdump: -dr
mgl@1371
 17266
+#name: jmptable_linkrelax
mgl@1371
 17267
+
mgl@1371
 17268
+.*: +file format .*
mgl@1371
 17269
+
mgl@1371
 17270
+Disassembly of section \.text:
mgl@1371
 17271
+
mgl@1371
 17272
+00000000 <jmptable_test>:
mgl@1371
 17273
+   0:	fe c8 00 00 	sub r8,pc,0
mgl@1371
 17274
+			0: R_AVR32_16N_PCREL	\.text\+0xc
mgl@1371
 17275
+   4:	f0 00 00 2f 	add pc,r8,r0<<0x2
mgl@1371
 17276
+   8:	d7 03       	nop
mgl@1371
 17277
+   a:	00 00       	add r0,r0
mgl@1371
 17278
+			a: R_AVR32_ALIGN	\*ABS\*\+0x2
mgl@1371
 17279
+   c:	c0 08       	rjmp c <jmptable_test\+0xc>
mgl@1371
 17280
+			c: R_AVR32_11H_PCREL	\.text\+0x12
mgl@1371
 17281
+   e:	c0 08       	rjmp e <jmptable_test\+0xe>
mgl@1371
 17282
+			e: R_AVR32_11H_PCREL	\.text\+0x14
mgl@1371
 17283
+  10:	c0 08       	rjmp 10 <jmptable_test\+0x10>
mgl@1371
 17284
+			10: R_AVR32_11H_PCREL	\.text\+0x16
mgl@1371
 17285
+  12:	d7 03       	nop
mgl@1371
 17286
+  14:	d7 03       	nop
mgl@1371
 17287
+  16:	d7 03       	nop
mgl@1371
 17288
--- /dev/null
mgl@1371
 17289
+++ b/gas/testsuite/gas/avr32/jmptable.s
mgl@1371
 17290
@@ -0,0 +1,14 @@
mgl@1371
 17291
+
mgl@1371
 17292
+	.text
mgl@1371
 17293
+	.global	jmptable_test
mgl@1371
 17294
+jmptable_test:
mgl@1371
 17295
+	sub	r8, pc, -(.L1 - .)
mgl@1371
 17296
+	add	pc, r8, r0 << 2
mgl@1371
 17297
+	nop
mgl@1371
 17298
+	.align	2
mgl@1371
 17299
+.L1:	rjmp	1f
mgl@1371
 17300
+	rjmp	2f
mgl@1371
 17301
+	rjmp	3f
mgl@1371
 17302
+1:	nop
mgl@1371
 17303
+2:	nop
mgl@1371
 17304
+3:	nop
mgl@1371
 17305
--- /dev/null
mgl@1371
 17306
+++ b/gas/testsuite/gas/avr32/lda_nopic.d
mgl@1371
 17307
@@ -0,0 +1,32 @@
mgl@1371
 17308
+#source: lda.s
mgl@1371
 17309
+#as:
mgl@1371
 17310
+#objdump: -dr
mgl@1371
 17311
+#name: lda_nopic
mgl@1371
 17312
+
mgl@1371
 17313
+.*: +file format .*
mgl@1371
 17314
+
mgl@1371
 17315
+Disassembly of section \.text:
mgl@1371
 17316
+
mgl@1371
 17317
+00000000 <lda_test>:
mgl@1371
 17318
+       0:	f2 c8 00 00 	sub r8,r9,0
mgl@1371
 17319
+
mgl@1371
 17320
+00000004 <far_negative>:
mgl@1371
 17321
+       4:	f6 ca 00 00 	sub r10,r11,0
mgl@1371
 17322
+	...
mgl@1371
 17323
+    8000:	fe c0 7f fc 	sub r0,pc,32764
mgl@1371
 17324
+    8004:	48 31       	lddpc r1,8010 <far_negative\+0x800c>
mgl@1371
 17325
+    8006:	48 42       	lddpc r2,8014 <far_negative\+0x8010>
mgl@1371
 17326
+    8008:	48 43       	lddpc r3,8018 <far_negative\+0x8014>
mgl@1371
 17327
+    800a:	48 54       	lddpc r4,801c <far_negative\+0x8018>
mgl@1371
 17328
+    800c:	fe c5 80 04 	sub r5,pc,-32764
mgl@1371
 17329
+	...
mgl@1371
 17330
+			8010: R_AVR32_32_CPENT	\.text
mgl@1371
 17331
+			8014: R_AVR32_32_CPENT	\.data
mgl@1371
 17332
+			8018: R_AVR32_32_CPENT	undefined
mgl@1371
 17333
+			801c: R_AVR32_32_CPENT	\.text\+0x1001c
mgl@1371
 17334
+
mgl@1371
 17335
+00010008 <far_positive>:
mgl@1371
 17336
+   10008:	fa cc 00 00 	sub r12,sp,0
mgl@1371
 17337
+	...
mgl@1371
 17338
+0001001c <toofar_positive>:
mgl@1371
 17339
+   1001c:	fe ce 00 00 	sub lr,pc,0
mgl@1371
 17340
--- /dev/null
mgl@1371
 17341
+++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
mgl@1371
 17342
@@ -0,0 +1,41 @@
mgl@1371
 17343
+#source: lda.s
mgl@1371
 17344
+#as: --linkrelax
mgl@1371
 17345
+#objdump: -dr
mgl@1371
 17346
+#name: lda_nopic_linkrelax
mgl@1371
 17347
+
mgl@1371
 17348
+.*: +file format .*
mgl@1371
 17349
+
mgl@1371
 17350
+Disassembly of section \.text:
mgl@1371
 17351
+
mgl@1371
 17352
+00000000 <lda_test>:
mgl@1371
 17353
+       0:	f2 c8 00 00 	sub r8,r9,0
mgl@1371
 17354
+
mgl@1371
 17355
+00000004 <far_negative>:
mgl@1371
 17356
+       4:	f6 ca 00 00 	sub r10,r11,0
mgl@1371
 17357
+	\.\.\.
mgl@1371
 17358
+    8000:	48 00       	lddpc r0,8000 <far_negative\+0x7ffc>
mgl@1371
 17359
+			8000: R_AVR32_9W_CP	\.text\+0x800c
mgl@1371
 17360
+    8002:	48 01       	lddpc r1,8000 <far_negative\+0x7ffc>
mgl@1371
 17361
+			8002: R_AVR32_9W_CP	\.text\+0x8010
mgl@1371
 17362
+    8004:	48 02       	lddpc r2,8004 <far_negative\+0x8000>
mgl@1371
 17363
+			8004: R_AVR32_9W_CP	\.text\+0x8014
mgl@1371
 17364
+    8006:	48 03       	lddpc r3,8004 <far_negative\+0x8000>
mgl@1371
 17365
+			8006: R_AVR32_9W_CP	\.text\+0x8018
mgl@1371
 17366
+    8008:	48 04       	lddpc r4,8008 <far_negative\+0x8004>
mgl@1371
 17367
+			8008: R_AVR32_9W_CP	\.text\+0x801c
mgl@1371
 17368
+    800a:	48 05       	lddpc r5,8008 <far_negative\+0x8004>
mgl@1371
 17369
+			800a: R_AVR32_9W_CP	\.text\+0x8020
mgl@1371
 17370
+	\.\.\.
mgl@1371
 17371
+			800c: R_AVR32_ALIGN	\*ABS\*\+0x2
mgl@1371
 17372
+			800c: R_AVR32_32_CPENT	\.text\+0x4
mgl@1371
 17373
+			8010: R_AVR32_32_CPENT	\.text
mgl@1371
 17374
+			8014: R_AVR32_32_CPENT	\.data
mgl@1371
 17375
+			8018: R_AVR32_32_CPENT	undefined
mgl@1371
 17376
+			801c: R_AVR32_32_CPENT	\.text\+0x10020
mgl@1371
 17377
+			8020: R_AVR32_32_CPENT	\.text\+0x1000c
mgl@1371
 17378
+
mgl@1371
 17379
+0001000c <far_positive>:
mgl@1371
 17380
+   1000c:	fa cc 00 00 	sub r12,sp,0
mgl@1371
 17381
+	\.\.\.
mgl@1371
 17382
+00010020 <toofar_positive>:
mgl@1371
 17383
+   10020:	fe ce 00 00 	sub lr,pc,0
mgl@1371
 17384
--- /dev/null
mgl@1371
 17385
+++ b/gas/testsuite/gas/avr32/lda_pic.d
mgl@1371
 17386
@@ -0,0 +1,32 @@
mgl@1371
 17387
+#source: lda.s
mgl@1371
 17388
+#as: --pic
mgl@1371
 17389
+#objdump: -dr
mgl@1371
 17390
+#name: lda_pic
mgl@1371
 17391
+
mgl@1371
 17392
+.*: +file format .*
mgl@1371
 17393
+
mgl@1371
 17394
+Disassembly of section \.text:
mgl@1371
 17395
+
mgl@1371
 17396
+00000000 <lda_test>:
mgl@1371
 17397
+       0:	f2 c8 00 00 	sub r8,r9,0
mgl@1371
 17398
+
mgl@1371
 17399
+00000004 <far_negative>:
mgl@1371
 17400
+       4:	f6 ca 00 00 	sub r10,r11,0
mgl@1371
 17401
+	...
mgl@1371
 17402
+    8000:	fe c0 7f fc 	sub r0,pc,32764
mgl@1371
 17403
+    8004:	ec f1 00 00 	ld.w r1,r6\[0\]
mgl@1371
 17404
+			8004: R_AVR32_GOT16S	toofar_negative
mgl@1371
 17405
+    8008:	ec f2 00 00 	ld.w r2,r6\[0\]
mgl@1371
 17406
+			8008: R_AVR32_GOT16S	different_section
mgl@1371
 17407
+    800c:	ec f3 00 00 	ld.w r3,r6\[0\]
mgl@1371
 17408
+			800c: R_AVR32_GOT16S	undefined
mgl@1371
 17409
+    8010:	ec f4 00 00 	ld.w r4,r6\[0\]
mgl@1371
 17410
+			8010: R_AVR32_GOT16S	toofar_positive
mgl@1371
 17411
+    8014:	fe c5 80 14 	sub r5,pc,-32748
mgl@1371
 17412
+	...
mgl@1371
 17413
+
mgl@1371
 17414
+00010000 <far_positive>:
mgl@1371
 17415
+   10000:	fa cc 00 00 	sub r12,sp,0
mgl@1371
 17416
+	...
mgl@1371
 17417
+00010014 <toofar_positive>:
mgl@1371
 17418
+   10014:	fe ce 00 00 	sub lr,pc,0
mgl@1371
 17419
--- /dev/null
mgl@1371
 17420
+++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
mgl@1371
 17421
@@ -0,0 +1,40 @@
mgl@1371
 17422
+#source: lda.s
mgl@1371
 17423
+#as: --pic --linkrelax
mgl@1371
 17424
+#objdump: -dr
mgl@1371
 17425
+#name: lda_pic_linkrelax
mgl@1371
 17426
+
mgl@1371
 17427
+.*: +file format .*
mgl@1371
 17428
+
mgl@1371
 17429
+Disassembly of section \.text:
mgl@1371
 17430
+
mgl@1371
 17431
+00000000 <lda_test>:
mgl@1371
 17432
+       0:	f2 c8 00 00 	sub r8,r9,0
mgl@1371
 17433
+
mgl@1371
 17434
+00000004 <far_negative>:
mgl@1371
 17435
+       4:	f6 ca 00 00 	sub r10,r11,0
mgl@1371
 17436
+	...
mgl@1371
 17437
+    8000:	e0 60 00 00 	mov r0,0
mgl@1371
 17438
+			8000: R_AVR32_LDA_GOT	far_negative
mgl@1371
 17439
+    8004:	ec 00 03 20 	ld\.w r0,r6\[r0<<0x2\]
mgl@1371
 17440
+    8008:	e0 61 00 00 	mov r1,0
mgl@1371
 17441
+			8008: R_AVR32_LDA_GOT	toofar_negative
mgl@1371
 17442
+    800c:	ec 01 03 21 	ld\.w r1,r6\[r1<<0x2\]
mgl@1371
 17443
+    8010:	e0 62 00 00 	mov r2,0
mgl@1371
 17444
+			8010: R_AVR32_LDA_GOT	different_section
mgl@1371
 17445
+    8014:	ec 02 03 22 	ld\.w r2,r6\[r2<<0x2\]
mgl@1371
 17446
+    8018:	e0 63 00 00 	mov r3,0
mgl@1371
 17447
+			8018: R_AVR32_LDA_GOT	undefined
mgl@1371
 17448
+    801c:	ec 03 03 23 	ld\.w r3,r6\[r3<<0x2\]
mgl@1371
 17449
+    8020:	e0 64 00 00 	mov r4,0
mgl@1371
 17450
+			8020: R_AVR32_LDA_GOT	toofar_positive
mgl@1371
 17451
+    8024:	ec 04 03 24 	ld\.w r4,r6\[r4<<0x2\]
mgl@1371
 17452
+    8028:	e0 65 00 00 	mov r5,0
mgl@1371
 17453
+			8028: R_AVR32_LDA_GOT	far_positive
mgl@1371
 17454
+    802c:	ec 05 03 25 	ld\.w r5,r6\[r5<<0x2\]
mgl@1371
 17455
+	...
mgl@1371
 17456
+
mgl@1371
 17457
+00010018 <far_positive>:
mgl@1371
 17458
+   10018:	fa cc 00 00 	sub r12,sp,0
mgl@1371
 17459
+	...
mgl@1371
 17460
+0001002c <toofar_positive>:
mgl@1371
 17461
+   1002c:	fe ce 00 00 	sub lr,pc,0
mgl@1371
 17462
--- /dev/null
mgl@1371
 17463
+++ b/gas/testsuite/gas/avr32/lda.s
mgl@1371
 17464
@@ -0,0 +1,30 @@
mgl@1371
 17465
+
mgl@1371
 17466
+	.text
mgl@1371
 17467
+	.global lda_test
mgl@1371
 17468
+lda_test:
mgl@1371
 17469
+toofar_negative:
mgl@1371
 17470
+	sub	r8, r9, 0
mgl@1371
 17471
+far_negative:
mgl@1371
 17472
+	sub	r10, r11, 0
mgl@1371
 17473
+
mgl@1371
 17474
+	.fill	32760, 1, 0x00
mgl@1371
 17475
+
mgl@1371
 17476
+	lda.w	r0, far_negative
mgl@1371
 17477
+	lda.w	r1, toofar_negative
mgl@1371
 17478
+	lda.w	r2, different_section
mgl@1371
 17479
+	lda.w	r3, undefined
mgl@1371
 17480
+	lda.w	r4, toofar_positive
mgl@1371
 17481
+	lda.w	r5, far_positive
mgl@1371
 17482
+
mgl@1371
 17483
+	.cpool
mgl@1371
 17484
+
mgl@1371
 17485
+	.fill	32744, 1, 0x00
mgl@1371
 17486
+far_positive:
mgl@1371
 17487
+	sub	r12, sp, 0
mgl@1371
 17488
+	.fill	16, 1, 0x00
mgl@1371
 17489
+toofar_positive:
mgl@1371
 17490
+	sub	lr, pc, 0
mgl@1371
 17491
+
mgl@1371
 17492
+	.data
mgl@1371
 17493
+different_section:
mgl@1371
 17494
+	.long	0x12345678
mgl@1371
 17495
--- /dev/null
mgl@1371
 17496
+++ b/gas/testsuite/gas/avr32/pcrel.d
mgl@1371
 17497
@@ -0,0 +1,64 @@
mgl@1371
 17498
+#as:
mgl@1371
 17499
+#objdump: -dr
mgl@1371
 17500
+#name: pcrel
mgl@1371
 17501
+
mgl@1371
 17502
+.*: +file format .*
mgl@1371
 17503
+
mgl@1371
 17504
+Disassembly of section \.text:
mgl@1371
 17505
+
mgl@1371
 17506
+00000000 <test_rjmp>:
mgl@1371
 17507
+   0:	d7 03       	nop
mgl@1371
 17508
+   2:	c0 28       	rjmp 6 <test_rjmp\+0x6>
mgl@1371
 17509
+   4:	d7 03       	nop
mgl@1371
 17510
+   6:	e0 8f 00 00 	bral 6 <test_rjmp\+0x6>
mgl@1371
 17511
+			6: R_AVR32_22H_PCREL	extsym10
mgl@1371
 17512
+
mgl@1371
 17513
+0000000a <test_rcall>:
mgl@1371
 17514
+   a:	d7 03       	nop
mgl@1371
 17515
+0000000c <test_rcall2>:
mgl@1371
 17516
+   c:	c0 2c       	rcall 10 <test_rcall2\+0x4>
mgl@1371
 17517
+   e:	d7 03       	nop
mgl@1371
 17518
+  10:	e0 a0 00 00 	rcall 10 <test_rcall2\+0x4>
mgl@1371
 17519
+			10: R_AVR32_22H_PCREL	extsym21
mgl@1371
 17520
+
mgl@1371
 17521
+00000014 <test_branch>:
mgl@1371
 17522
+  14:	c0 31       	brne 1a <test_branch\+0x6>
mgl@1371
 17523
+  16:	e0 8f 00 00 	bral 16 <test_branch\+0x2>
mgl@1371
 17524
+			16: R_AVR32_22H_PCREL	test_branch
mgl@1371
 17525
+  1a:	e0 80 00 00 	breq 1a <test_branch\+0x6>
mgl@1371
 17526
+			1a: R_AVR32_22H_PCREL	extsym21
mgl@1371
 17527
+
mgl@1371
 17528
+0000001e <test_lddpc>:
mgl@1371
 17529
+  1e:	48 30       	lddpc r0,28 <sym1>
mgl@1371
 17530
+  20:	48 20       	lddpc r0,28 <sym1>
mgl@1371
 17531
+  22:	fe f0 00 00 	ld.w r0,pc\[0\]
mgl@1371
 17532
+			22: R_AVR32_16B_PCREL	extsym16
mgl@1371
 17533
+	\.\.\.
mgl@1371
 17534
+
mgl@1371
 17535
+00000028 <sym1>:
mgl@1371
 17536
+  28:	d7 03       	nop
mgl@1371
 17537
+  2a:	d7 03       	nop
mgl@1371
 17538
+
mgl@1371
 17539
+0000002c <test_local>:
mgl@1371
 17540
+  2c:	48 20       	lddpc r0,34 <test_local\+0x8>
mgl@1371
 17541
+  2e:	48 30       	lddpc r0,38 <test_local\+0xc>
mgl@1371
 17542
+  30:	48 20       	lddpc r0,38 <test_local\+0xc>
mgl@1371
 17543
+  32:	00 00       	add r0,r0
mgl@1371
 17544
+  34:	d7 03       	nop
mgl@1371
 17545
+  36:	d7 03       	nop
mgl@1371
 17546
+  38:	d7 03       	nop
mgl@1371
 17547
+  3a:	d7 03       	nop
mgl@1371
 17548
+
mgl@1371
 17549
+Disassembly of section \.text\.init:
mgl@1371
 17550
+
mgl@1371
 17551
+00000000 <test_inter_section>:
mgl@1371
 17552
+   0:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
mgl@1371
 17553
+			0: R_AVR32_22H_PCREL	test_rcall
mgl@1371
 17554
+   4:	d7 03       	nop
mgl@1371
 17555
+   6:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
mgl@1371
 17556
+			6: R_AVR32_22H_PCREL	test_rcall
mgl@1371
 17557
+   a:	e0 a0 .. .. 	rcall [0-9a-z]+ <.*>
mgl@1371
 17558
+			a: R_AVR32_22H_PCREL	\.text\+0xc
mgl@1371
 17559
+   e:	d7 03       	nop
mgl@1371
 17560
+  10:	e0 a0 .. .. 	rcall [0-9a-f]+ <.*>
mgl@1371
 17561
+			10: R_AVR32_22H_PCREL	\.text\+0xc
mgl@1371
 17562
--- /dev/null
mgl@1371
 17563
+++ b/gas/testsuite/gas/avr32/pcrel.s
mgl@1371
 17564
@@ -0,0 +1,57 @@
mgl@1371
 17565
+
mgl@1371
 17566
+        .text
mgl@1371
 17567
+        .global test_rjmp
mgl@1371
 17568
+test_rjmp:
mgl@1371
 17569
+        nop
mgl@1371
 17570
+        rjmp    0f
mgl@1371
 17571
+        nop
mgl@1371
 17572
+0:      rjmp    extsym10
mgl@1371
 17573
+
mgl@1371
 17574
+        .global test_rcall
mgl@1371
 17575
+test_rcall:
mgl@1371
 17576
+        nop
mgl@1371
 17577
+test_rcall2:
mgl@1371
 17578
+        rcall   0f
mgl@1371
 17579
+        nop
mgl@1371
 17580
+0:      rcall   extsym21
mgl@1371
 17581
+
mgl@1371
 17582
+        .global test_branch
mgl@1371
 17583
+test_branch:
mgl@1371
 17584
+        brne    0f
mgl@1371
 17585
+	/* This will generate a reloc since test_branch is global */
mgl@1371
 17586
+        bral    test_branch
mgl@1371
 17587
+0:	breq    extsym21
mgl@1371
 17588
+
mgl@1371
 17589
+        .global test_lddpc
mgl@1371
 17590
+test_lddpc:
mgl@1371
 17591
+        lddpc   r0,sym1
mgl@1371
 17592
+        lddpc   r0,sym1
mgl@1371
 17593
+        lddpc   r0,extsym16
mgl@1371
 17594
+
mgl@1371
 17595
+        .align	2
mgl@1371
 17596
+sym1:   nop
mgl@1371
 17597
+        nop
mgl@1371
 17598
+
mgl@1371
 17599
+	.global	test_local
mgl@1371
 17600
+test_local:
mgl@1371
 17601
+	lddpc	r0, .LC1
mgl@1371
 17602
+	lddpc	r0, .LC2
mgl@1371
 17603
+	lddpc	r0, .LC1 + 0x4
mgl@1371
 17604
+
mgl@1371
 17605
+	.align	2
mgl@1371
 17606
+.LC1:
mgl@1371
 17607
+	nop
mgl@1371
 17608
+	nop
mgl@1371
 17609
+.LC2:
mgl@1371
 17610
+	nop
mgl@1371
 17611
+	nop
mgl@1371
 17612
+
mgl@1371
 17613
+	.section .text.init,"ax"
mgl@1371
 17614
+	.global test_inter_section
mgl@1371
 17615
+test_inter_section:
mgl@1371
 17616
+	rcall	test_rcall
mgl@1371
 17617
+	nop
mgl@1371
 17618
+	rcall	test_rcall
mgl@1371
 17619
+	rcall	test_rcall2
mgl@1371
 17620
+	nop
mgl@1371
 17621
+	rcall	test_rcall2
mgl@1371
 17622
--- /dev/null
mgl@1371
 17623
+++ b/gas/testsuite/gas/avr32/pico.d
mgl@1371
 17624
@@ -0,0 +1,149 @@
mgl@1371
 17625
+#as:
mgl@1371
 17626
+#objdump: -dr
mgl@1371
 17627
+#name: pico
mgl@1371
 17628
+
mgl@1371
 17629
+.*: +file format .*
mgl@1371
 17630
+
mgl@1371
 17631
+Disassembly of section \.text:
mgl@1371
 17632
+
mgl@1371
 17633
+[0-9a-f]* <picosvmac>:
mgl@1371
 17634
+ *[0-9a-f]*:	e1 a6 20 00 	cop cp1,cr0,cr0,cr0,0xc
mgl@1371
 17635
+ *[0-9a-f]*:	e1 a7 2b bb 	cop cp1,cr11,cr11,cr11,0xe
mgl@1371
 17636
+ *[0-9a-f]*:	e1 a6 3a 05 	cop cp1,cr10,cr0,cr5,0xd
mgl@1371
 17637
+ *[0-9a-f]*:	e1 a7 36 90 	cop cp1,cr6,cr9,cr0,0xf
mgl@1371
 17638
+
mgl@1371
 17639
+[0-9a-f]* <picosvmul>:
mgl@1371
 17640
+ *[0-9a-f]*:	e1 a4 20 00 	cop cp1,cr0,cr0,cr0,0x8
mgl@1371
 17641
+ *[0-9a-f]*:	e1 a5 2b bb 	cop cp1,cr11,cr11,cr11,0xa
mgl@1371
 17642
+ *[0-9a-f]*:	e1 a4 3a 05 	cop cp1,cr10,cr0,cr5,0x9
mgl@1371
 17643
+ *[0-9a-f]*:	e1 a5 36 90 	cop cp1,cr6,cr9,cr0,0xb
mgl@1371
 17644
+
mgl@1371
 17645
+[0-9a-f]* <picovmac>:
mgl@1371
 17646
+ *[0-9a-f]*:	e1 a2 20 00 	cop cp1,cr0,cr0,cr0,0x4
mgl@1371
 17647
+ *[0-9a-f]*:	e1 a3 2b bb 	cop cp1,cr11,cr11,cr11,0x6
mgl@1371
 17648
+ *[0-9a-f]*:	e1 a2 3a 05 	cop cp1,cr10,cr0,cr5,0x5
mgl@1371
 17649
+ *[0-9a-f]*:	e1 a3 36 90 	cop cp1,cr6,cr9,cr0,0x7
mgl@1371
 17650
+
mgl@1371
 17651
+[0-9a-f]* <picovmul>:
mgl@1371
 17652
+ *[0-9a-f]*:	e1 a0 20 00 	cop cp1,cr0,cr0,cr0,0x0
mgl@1371
 17653
+ *[0-9a-f]*:	e1 a1 2b bb 	cop cp1,cr11,cr11,cr11,0x2
mgl@1371
 17654
+ *[0-9a-f]*:	e1 a0 3a 05 	cop cp1,cr10,cr0,cr5,0x1
mgl@1371
 17655
+ *[0-9a-f]*:	e1 a1 36 90 	cop cp1,cr6,cr9,cr0,0x3
mgl@1371
 17656
+
mgl@1371
 17657
+[0-9a-f]* <picold_d>:
mgl@1371
 17658
+ *[0-9a-f]*:	e9 af 3e ff 	ldc\.d cp1,cr14,pc\[0x3fc\]
mgl@1371
 17659
+ *[0-9a-f]*:	e9 a0 30 ff 	ldc\.d cp1,cr0,r0\[0x3fc\]
mgl@1371
 17660
+ *[0-9a-f]*:	e9 a0 30 00 	ldc\.d cp1,cr0,r0\[0x0\]
mgl@1371
 17661
+ *[0-9a-f]*:	ef a8 26 50 	ldc\.d cp1,cr6,--r8
mgl@1371
 17662
+ *[0-9a-f]*:	ef a7 28 50 	ldc\.d cp1,cr8,--r7
mgl@1371
 17663
+ *[0-9a-f]*:	ef aa 32 65 	ldc\.d cp1,cr2,r10\[r5<<0x2\]
mgl@1371
 17664
+ *[0-9a-f]*:	ef a3 3c 46 	ldc\.d cp1,cr12,r3\[r6\]
mgl@1371
 17665
+
mgl@1371
 17666
+[0-9a-f]* <picold_w>:
mgl@1371
 17667
+ *[0-9a-f]*:	e9 af 2f ff 	ldc\.w cp1,cr15,pc\[0x3fc\]
mgl@1371
 17668
+ *[0-9a-f]*:	e9 a0 20 ff 	ldc\.w cp1,cr0,r0\[0x3fc\]
mgl@1371
 17669
+ *[0-9a-f]*:	e9 a0 20 00 	ldc\.w cp1,cr0,r0\[0x0\]
mgl@1371
 17670
+ *[0-9a-f]*:	ef a8 27 40 	ldc\.w cp1,cr7,--r8
mgl@1371
 17671
+ *[0-9a-f]*:	ef a7 28 40 	ldc\.w cp1,cr8,--r7
mgl@1371
 17672
+ *[0-9a-f]*:	ef aa 31 25 	ldc\.w cp1,cr1,r10\[r5<<0x2\]
mgl@1371
 17673
+ *[0-9a-f]*:	ef a3 3d 06 	ldc\.w cp1,cr13,r3\[r6\]
mgl@1371
 17674
+
mgl@1371
 17675
+[0-9a-f]* <picoldm_d>:
mgl@1371
 17676
+ *[0-9a-f]*:	ed af 24 ff 	ldcm\.d cp1,pc,cr0-cr15
mgl@1371
 17677
+ *[0-9a-f]*:	ed a0 24 01 	ldcm\.d cp1,r0,cr0-cr1
mgl@1371
 17678
+ *[0-9a-f]*:	ed a7 24 80 	ldcm\.d cp1,r7,cr14-cr15
mgl@1371
 17679
+ *[0-9a-f]*:	ed a8 24 7f 	ldcm\.d cp1,r8,cr0-cr13
mgl@1371
 17680
+
mgl@1371
 17681
+[0-9a-f]* <picoldm_d_pu>:
mgl@1371
 17682
+ *[0-9a-f]*:	ed af 34 ff 	ldcm\.d cp1,pc\+\+,cr0-cr15
mgl@1371
 17683
+ *[0-9a-f]*:	ed a0 34 01 	ldcm\.d cp1,r0\+\+,cr0-cr1
mgl@1371
 17684
+ *[0-9a-f]*:	ed a7 34 80 	ldcm\.d cp1,r7\+\+,cr14-cr15
mgl@1371
 17685
+ *[0-9a-f]*:	ed a8 34 7f 	ldcm\.d cp1,r8\+\+,cr0-cr13
mgl@1371
 17686
+
mgl@1371
 17687
+[0-9a-f]* <picoldm_w>:
mgl@1371
 17688
+ *[0-9a-f]*:	ed af 20 ff 	ldcm\.w cp1,pc,cr0-cr7
mgl@1371
 17689
+ *[0-9a-f]*:	ed a0 20 01 	ldcm\.w cp1,r0,cr0
mgl@1371
 17690
+ *[0-9a-f]*:	ed a7 20 80 	ldcm\.w cp1,r7,cr7
mgl@1371
 17691
+ *[0-9a-f]*:	ed a8 20 7f 	ldcm\.w cp1,r8,cr0-cr6
mgl@1371
 17692
+ *[0-9a-f]*:	ed af 21 ff 	ldcm\.w cp1,pc,cr8-cr15
mgl@1371
 17693
+ *[0-9a-f]*:	ed a0 21 01 	ldcm\.w cp1,r0,cr8
mgl@1371
 17694
+ *[0-9a-f]*:	ed a7 21 80 	ldcm\.w cp1,r7,cr15
mgl@1371
 17695
+ *[0-9a-f]*:	ed a8 21 7f 	ldcm\.w cp1,r8,cr8-cr14
mgl@1371
 17696
+
mgl@1371
 17697
+[0-9a-f]* <picoldm_w_pu>:
mgl@1371
 17698
+ *[0-9a-f]*:	ed af 30 ff 	ldcm\.w cp1,pc\+\+,cr0-cr7
mgl@1371
 17699
+ *[0-9a-f]*:	ed a0 30 01 	ldcm\.w cp1,r0\+\+,cr0
mgl@1371
 17700
+ *[0-9a-f]*:	ed a7 30 80 	ldcm\.w cp1,r7\+\+,cr7
mgl@1371
 17701
+ *[0-9a-f]*:	ed a8 30 7f 	ldcm\.w cp1,r8\+\+,cr0-cr6
mgl@1371
 17702
+ *[0-9a-f]*:	ed af 31 ff 	ldcm\.w cp1,pc\+\+,cr8-cr15
mgl@1371
 17703
+ *[0-9a-f]*:	ed a0 31 01 	ldcm\.w cp1,r0\+\+,cr8
mgl@1371
 17704
+ *[0-9a-f]*:	ed a7 31 80 	ldcm\.w cp1,r7\+\+,cr15
mgl@1371
 17705
+ *[0-9a-f]*:	ed a8 31 7f 	ldcm\.w cp1,r8\+\+,cr8-cr14
mgl@1371
 17706
+
mgl@1371
 17707
+[0-9a-f]* <picomv_d>:
mgl@1371
 17708
+ *[0-9a-f]*:	ef ae 2e 30 	mvrc\.d cp1,cr14,lr
mgl@1371
 17709
+ *[0-9a-f]*:	ef a0 20 30 	mvrc\.d cp1,cr0,r0
mgl@1371
 17710
+ *[0-9a-f]*:	ef a8 26 30 	mvrc\.d cp1,cr6,r8
mgl@1371
 17711
+ *[0-9a-f]*:	ef a6 28 30 	mvrc\.d cp1,cr8,r6
mgl@1371
 17712
+ *[0-9a-f]*:	ef ae 2e 10 	mvcr\.d cp1,lr,cr14
mgl@1371
 17713
+ *[0-9a-f]*:	ef a0 20 10 	mvcr\.d cp1,r0,cr0
mgl@1371
 17714
+ *[0-9a-f]*:	ef a8 26 10 	mvcr\.d cp1,r8,cr6
mgl@1371
 17715
+ *[0-9a-f]*:	ef a6 28 10 	mvcr\.d cp1,r6,cr8
mgl@1371
 17716
+
mgl@1371
 17717
+[0-9a-f]* <picomv_w>:
mgl@1371
 17718
+ *[0-9a-f]*:	ef af 2f 20 	mvrc\.w cp1,cr15,pc
mgl@1371
 17719
+ *[0-9a-f]*:	ef a0 20 20 	mvrc\.w cp1,cr0,r0
mgl@1371
 17720
+ *[0-9a-f]*:	ef a8 27 20 	mvrc\.w cp1,cr7,r8
mgl@1371
 17721
+ *[0-9a-f]*:	ef a7 28 20 	mvrc\.w cp1,cr8,r7
mgl@1371
 17722
+ *[0-9a-f]*:	ef af 2f 00 	mvcr\.w cp1,pc,cr15
mgl@1371
 17723
+ *[0-9a-f]*:	ef a0 20 00 	mvcr\.w cp1,r0,cr0
mgl@1371
 17724
+ *[0-9a-f]*:	ef a8 27 00 	mvcr\.w cp1,r8,cr7
mgl@1371
 17725
+ *[0-9a-f]*:	ef a7 28 00 	mvcr\.w cp1,r7,cr8
mgl@1371
 17726
+
mgl@1371
 17727
+[0-9a-f]* <picost_d>:
mgl@1371
 17728
+ *[0-9a-f]*:	eb af 3e ff 	stc\.d cp1,pc\[0x3fc\],cr14
mgl@1371
 17729
+ *[0-9a-f]*:	eb a0 30 00 	stc\.d cp1,r0\[0x0\],cr0
mgl@1371
 17730
+ *[0-9a-f]*:	ef a8 26 70 	stc\.d cp1,r8\+\+,cr6
mgl@1371
 17731
+ *[0-9a-f]*:	ef a7 28 70 	stc\.d cp1,r7\+\+,cr8
mgl@1371
 17732
+ *[0-9a-f]*:	ef aa 32 e5 	stc\.d cp1,r10\[r5<<0x2\],cr2
mgl@1371
 17733
+ *[0-9a-f]*:	ef a3 3c c6 	stc\.d cp1,r3\[r6\],cr12
mgl@1371
 17734
+
mgl@1371
 17735
+[0-9a-f]* <picost_w>:
mgl@1371
 17736
+ *[0-9a-f]*:	eb af 2f ff 	stc\.w cp1,pc\[0x3fc\],cr15
mgl@1371
 17737
+ *[0-9a-f]*:	eb a0 20 00 	stc\.w cp1,r0\[0x0\],cr0
mgl@1371
 17738
+ *[0-9a-f]*:	ef a8 27 60 	stc\.w cp1,r8\+\+,cr7
mgl@1371
 17739
+ *[0-9a-f]*:	ef a7 28 60 	stc\.w cp1,r7\+\+,cr8
mgl@1371
 17740
+ *[0-9a-f]*:	ef aa 31 a5 	stc\.w cp1,r10\[r5<<0x2\],cr1
mgl@1371
 17741
+ *[0-9a-f]*:	ef a3 3d 86 	stc\.w cp1,r3\[r6\],cr13
mgl@1371
 17742
+
mgl@1371
 17743
+[0-9a-f]* <picostm_d>:
mgl@1371
 17744
+ *[0-9a-f]*:	ed af 25 ff 	stcm\.d cp1,pc,cr0-cr15
mgl@1371
 17745
+ *[0-9a-f]*:	ed a0 25 01 	stcm\.d cp1,r0,cr0-cr1
mgl@1371
 17746
+ *[0-9a-f]*:	ed a7 25 80 	stcm\.d cp1,r7,cr14-cr15
mgl@1371
 17747
+ *[0-9a-f]*:	ed a8 25 7f 	stcm\.d cp1,r8,cr0-cr13
mgl@1371
 17748
+
mgl@1371
 17749
+[0-9a-f]* <picostm_d_pu>:
mgl@1371
 17750
+ *[0-9a-f]*:	ed af 35 ff 	stcm\.d cp1,--pc,cr0-cr15
mgl@1371
 17751
+ *[0-9a-f]*:	ed a0 35 01 	stcm\.d cp1,--r0,cr0-cr1
mgl@1371
 17752
+ *[0-9a-f]*:	ed a7 35 80 	stcm\.d cp1,--r7,cr14-cr15
mgl@1371
 17753
+ *[0-9a-f]*:	ed a8 35 7f 	stcm\.d cp1,--r8,cr0-cr13
mgl@1371
 17754
+
mgl@1371
 17755
+[0-9a-f]* <picostm_w>:
mgl@1371
 17756
+ *[0-9a-f]*:	ed af 22 ff 	stcm\.w cp1,pc,cr0-cr7
mgl@1371
 17757
+ *[0-9a-f]*:	ed a0 22 01 	stcm\.w cp1,r0,cr0
mgl@1371
 17758
+ *[0-9a-f]*:	ed a7 22 80 	stcm\.w cp1,r7,cr7
mgl@1371
 17759
+ *[0-9a-f]*:	ed a8 22 7f 	stcm\.w cp1,r8,cr0-cr6
mgl@1371
 17760
+ *[0-9a-f]*:	ed af 23 ff 	stcm\.w cp1,pc,cr8-cr15
mgl@1371
 17761
+ *[0-9a-f]*:	ed a0 23 01 	stcm\.w cp1,r0,cr8
mgl@1371
 17762
+ *[0-9a-f]*:	ed a7 23 80 	stcm\.w cp1,r7,cr15
mgl@1371
 17763
+ *[0-9a-f]*:	ed a8 23 7f 	stcm\.w cp1,r8,cr8-cr14
mgl@1371
 17764
+
mgl@1371
 17765
+[0-9a-f]* <picostm_w_pu>:
mgl@1371
 17766
+ *[0-9a-f]*:	ed af 32 ff 	stcm\.w cp1,--pc,cr0-cr7
mgl@1371
 17767
+ *[0-9a-f]*:	ed a0 32 01 	stcm\.w cp1,--r0,cr0
mgl@1371
 17768
+ *[0-9a-f]*:	ed a7 32 80 	stcm\.w cp1,--r7,cr7
mgl@1371
 17769
+ *[0-9a-f]*:	ed a8 32 7f 	stcm\.w cp1,--r8,cr0-cr6
mgl@1371
 17770
+ *[0-9a-f]*:	ed af 33 ff 	stcm\.w cp1,--pc,cr8-cr15
mgl@1371
 17771
+ *[0-9a-f]*:	ed a0 33 01 	stcm\.w cp1,--r0,cr8
mgl@1371
 17772
+ *[0-9a-f]*:	ed a7 33 80 	stcm\.w cp1,--r7,cr15
mgl@1371
 17773
+ *[0-9a-f]*:	ed a8 33 7f 	stcm\.w cp1,--r8,cr8-cr14
mgl@1371
 17774
--- /dev/null
mgl@1371
 17775
+++ b/gas/testsuite/gas/avr32/pico.s
mgl@1371
 17776
@@ -0,0 +1,144 @@
mgl@1371
 17777
+
mgl@1371
 17778
+	.text
mgl@1371
 17779
+	.global	picosvmac
mgl@1371
 17780
+picosvmac:
mgl@1371
 17781
+	picosvmac	out0, in0, in0, in0
mgl@1371
 17782
+	picosvmac	out2, in11, in11, in11
mgl@1371
 17783
+	picosvmac	out1, in10, in0, in5
mgl@1371
 17784
+	picosvmac	out3, in6, in9, in0
mgl@1371
 17785
+	.global picosvmul
mgl@1371
 17786
+picosvmul:
mgl@1371
 17787
+	picosvmul	out0, in0, in0, in0
mgl@1371
 17788
+	picosvmul	out2, in11, in11, in11
mgl@1371
 17789
+	picosvmul	out1, in10, in0, in5
mgl@1371
 17790
+	picosvmul	out3, in6, in9, in0
mgl@1371
 17791
+	.global picovmac
mgl@1371
 17792
+picovmac:
mgl@1371
 17793
+	picovmac	out0, in0, in0, in0
mgl@1371
 17794
+	picovmac	out2, in11, in11, in11
mgl@1371
 17795
+	picovmac	out1, in10, in0, in5
mgl@1371
 17796
+	picovmac	out3, in6, in9, in0
mgl@1371
 17797
+	.global picovmul
mgl@1371
 17798
+picovmul:
mgl@1371
 17799
+	picovmul	out0, in0, in0, in0
mgl@1371
 17800
+	picovmul	out2, in11, in11, in11
mgl@1371
 17801
+	picovmul	out1, in10, in0, in5
mgl@1371
 17802
+	picovmul	out3, in6, in9, in0
mgl@1371
 17803
+	.global	picold_d
mgl@1371
 17804
+picold_d:
mgl@1371
 17805
+	picold.d	vmu2_out, pc[1020]
mgl@1371
 17806
+	picold.d	inpix2, r0[1020]
mgl@1371
 17807
+	picold.d	inpix2, r0[0]
mgl@1371
 17808
+	picold.d	coeff0_a, --r8
mgl@1371
 17809
+	picold.d	coeff1_a, --r7
mgl@1371
 17810
+	picold.d	inpix0, r10[r5 << 2]
mgl@1371
 17811
+	picold.d	vmu0_out, r3[r6 << 0]
mgl@1371
 17812
+	.global	picold_w
mgl@1371
 17813
+picold_w:	
mgl@1371
 17814
+	picold.w	config, pc[1020]
mgl@1371
 17815
+	picold.w	inpix2, r0[1020]
mgl@1371
 17816
+	picold.w	inpix2, r0[0]
mgl@1371
 17817
+	picold.w	coeff0_b, --r8
mgl@1371
 17818
+	picold.w	coeff1_a, --r7
mgl@1371
 17819
+	picold.w	inpix1, r10[r5 << 2]
mgl@1371
 17820
+	picold.w	vmu1_out, r3[r6 << 0]
mgl@1371
 17821
+	.global	picoldm_d
mgl@1371
 17822
+picoldm_d:
mgl@1371
 17823
+	picoldm.d	pc, inpix2-config
mgl@1371
 17824
+	picoldm.d	r0, inpix2, inpix1
mgl@1371
 17825
+	picoldm.d	r7, vmu2_out, config
mgl@1371
 17826
+	picoldm.d	r8, inpix2-vmu1_out
mgl@1371
 17827
+	.global	picoldm_d_pu
mgl@1371
 17828
+picoldm_d_pu:
mgl@1371
 17829
+	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
mgl@1371
 17830
+	picoldm.d	r0++, inpix2, inpix1
mgl@1371
 17831
+	picoldm.d	r7++, vmu2_out, config
mgl@1371
 17832
+	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
mgl@1371
 17833
+	.global	picoldm_w
mgl@1371
 17834
+picoldm_w:
mgl@1371
 17835
+	picoldm.w	pc, inpix2-coeff0_b
mgl@1371
 17836
+	picoldm.w	r0, inpix2
mgl@1371
 17837
+	picoldm.w	r7, coeff0_b
mgl@1371
 17838
+	picoldm.w	r8, inpix2-coeff0_a
mgl@1371
 17839
+	picoldm.w	pc, coeff1_a-config
mgl@1371
 17840
+	picoldm.w	r0, coeff1_a
mgl@1371
 17841
+	picoldm.w	r7, config
mgl@1371
 17842
+	picoldm.w	r8, coeff1_a-vmu2_out
mgl@1371
 17843
+	.global	picoldm_w_pu
mgl@1371
 17844
+picoldm_w_pu:
mgl@1371
 17845
+	picoldm.w	pc++, inpix2-coeff0_b
mgl@1371
 17846
+	picoldm.w	r0++, inpix2
mgl@1371
 17847
+	picoldm.w	r7++, coeff0_b
mgl@1371
 17848
+	picoldm.w	r8++, inpix2-coeff0_a
mgl@1371
 17849
+	picoldm.w	pc++, coeff1_a-config
mgl@1371
 17850
+	picoldm.w	r0++, coeff1_a
mgl@1371
 17851
+	picoldm.w	r7++, config
mgl@1371
 17852
+	picoldm.w	r8++, coeff1_a-vmu2_out
mgl@1371
 17853
+	.global	picomv_d
mgl@1371
 17854
+picomv_d:
mgl@1371
 17855
+	picomv.d	vmu2_out, lr
mgl@1371
 17856
+	picomv.d	inpix2, r0
mgl@1371
 17857
+	picomv.d	coeff0_a, r8
mgl@1371
 17858
+	picomv.d	coeff1_a, r6
mgl@1371
 17859
+	picomv.d	pc, vmu2_out
mgl@1371
 17860
+	picomv.d	r0, inpix2
mgl@1371
 17861
+	picomv.d	r8, coeff0_a
mgl@1371
 17862
+	picomv.d	r6, coeff1_a
mgl@1371
 17863
+	.global	picomv_w
mgl@1371
 17864
+picomv_w:
mgl@1371
 17865
+	picomv.w	config, pc
mgl@1371
 17866
+	picomv.w	inpix2, r0
mgl@1371
 17867
+	picomv.w	coeff0_b, r8
mgl@1371
 17868
+	picomv.w	coeff1_a, r7
mgl@1371
 17869
+	picomv.w	pc, config
mgl@1371
 17870
+	picomv.w	r0, inpix2
mgl@1371
 17871
+	picomv.w	r8, coeff0_b
mgl@1371
 17872
+	picomv.w	r7, coeff1_a
mgl@1371
 17873
+	.global	picost_d
mgl@1371
 17874
+picost_d:
mgl@1371
 17875
+	picost.d	pc[1020], vmu2_out
mgl@1371
 17876
+	picost.d	r0[0], inpix2
mgl@1371
 17877
+	picost.d	r8++, coeff0_a
mgl@1371
 17878
+	picost.d	r7++, coeff1_a
mgl@1371
 17879
+	picost.d	r10[r5 << 2], inpix0
mgl@1371
 17880
+	picost.d	r3[r6 << 0], vmu0_out
mgl@1371
 17881
+	.global	picost_w
mgl@1371
 17882
+picost_w:	
mgl@1371
 17883
+	picost.w	pc[1020], config
mgl@1371
 17884
+	picost.w	r0[0], inpix2
mgl@1371
 17885
+	picost.w	r8++, coeff0_b
mgl@1371
 17886
+	picost.w	r7++, coeff1_a
mgl@1371
 17887
+	picost.w	r10[r5 << 2], inpix1
mgl@1371
 17888
+	picost.w	r3[r6 << 0], vmu1_out
mgl@1371
 17889
+	.global	picostm_d
mgl@1371
 17890
+picostm_d:
mgl@1371
 17891
+	picostm.d	pc, inpix2-config
mgl@1371
 17892
+	picostm.d	r0, inpix2, inpix1
mgl@1371
 17893
+	picostm.d	r7, vmu2_out, config
mgl@1371
 17894
+	picostm.d	r8, inpix2-vmu1_out
mgl@1371
 17895
+	.global	picostm_d_pu
mgl@1371
 17896
+picostm_d_pu:
mgl@1371
 17897
+	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
mgl@1371
 17898
+	picostm.d	--r0, inpix2, inpix1
mgl@1371
 17899
+	picostm.d	--r7, vmu2_out, config
mgl@1371
 17900
+	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
mgl@1371
 17901
+	.global	picostm_w
mgl@1371
 17902
+picostm_w:
mgl@1371
 17903
+	picostm.w	pc, inpix2-coeff0_b
mgl@1371
 17904
+	picostm.w	r0, inpix2
mgl@1371
 17905
+	picostm.w	r7, coeff0_b
mgl@1371
 17906
+	picostm.w	r8, inpix2-coeff0_a
mgl@1371
 17907
+	picostm.w	pc, coeff1_a-config
mgl@1371
 17908
+	picostm.w	r0, coeff1_a
mgl@1371
 17909
+	picostm.w	r7, config
mgl@1371
 17910
+	picostm.w	r8, coeff1_a-vmu2_out
mgl@1371
 17911
+	.global	picostm_w_pu
mgl@1371
 17912
+picostm_w_pu:
mgl@1371
 17913
+	picostm.w	--pc, inpix2-coeff0_b
mgl@1371
 17914
+	picostm.w	--r0, inpix2
mgl@1371
 17915
+	picostm.w	--r7, coeff0_b
mgl@1371
 17916
+	picostm.w	--r8, inpix2-coeff0_a
mgl@1371
 17917
+	picostm.w	--pc, coeff1_a-config
mgl@1371
 17918
+	picostm.w	--r0, coeff1_a
mgl@1371
 17919
+	picostm.w	--r7, config
mgl@1371
 17920
+	picostm.w	--r8, coeff1_a-vmu2_out
mgl@1371
 17921
--- /dev/null
mgl@1371
 17922
+++ b/gas/testsuite/gas/avr32/pic_reloc.d
mgl@1371
 17923
@@ -0,0 +1,27 @@
mgl@1371
 17924
+#as:
mgl@1371
 17925
+#objdump: -dr
mgl@1371
 17926
+#name: pic_reloc
mgl@1371
 17927
+
mgl@1371
 17928
+.*: +file format .*
mgl@1371
 17929
+
mgl@1371
 17930
+Disassembly of section \.text:
mgl@1371
 17931
+
mgl@1371
 17932
+00000000 <mcall_got>:
mgl@1371
 17933
+   0:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 17934
+			0: R_AVR32_GOT18SW	extfunc
mgl@1371
 17935
+   4:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 17936
+			4: R_AVR32_GOT18SW	\.L1
mgl@1371
 17937
+   8:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 17938
+			8: R_AVR32_GOT18SW	\.L2
mgl@1371
 17939
+   c:	f0 16 00 00 	mcall r6\[0\]
mgl@1371
 17940
+			c: R_AVR32_GOT18SW	mcall_got
mgl@1371
 17941
+
mgl@1371
 17942
+00000010 <ldw_got>:
mgl@1371
 17943
+  10:	ec f0 00 00 	ld.w r0,r6\[0\]
mgl@1371
 17944
+			10: R_AVR32_GOT16S	extvar
mgl@1371
 17945
+  14:	ec f0 00 00 	ld.w r0,r6\[0\]
mgl@1371
 17946
+			14: R_AVR32_GOT16S	\.L3
mgl@1371
 17947
+  18:	ec f0 00 00 	ld.w r0,r6\[0\]
mgl@1371
 17948
+			18: R_AVR32_GOT16S	\.L4
mgl@1371
 17949
+  1c:	ec f0 00 00 	ld.w r0,r6\[0\]
mgl@1371
 17950
+			1c: R_AVR32_GOT16S	ldw_got
mgl@1371
 17951
--- /dev/null
mgl@1371
 17952
+++ b/gas/testsuite/gas/avr32/pic_reloc.s
mgl@1371
 17953
@@ -0,0 +1,18 @@
mgl@1371
 17954
+
mgl@1371
 17955
+	.text
mgl@1371
 17956
+	.global	mcall_got
mgl@1371
 17957
+mcall_got:
mgl@1371
 17958
+.L1:
mgl@1371
 17959
+	mcall	r6[extfunc@got]
mgl@1371
 17960
+	mcall	r6[.L1@got]
mgl@1371
 17961
+	mcall	r6[.L2@got]
mgl@1371
 17962
+	mcall	r6[mcall_got@got]
mgl@1371
 17963
+.L2:
mgl@1371
 17964
+
mgl@1371
 17965
+	.global	ldw_got
mgl@1371
 17966
+ldw_got:
mgl@1371
 17967
+.L3:	ld.w	r0,r6[extvar@got]
mgl@1371
 17968
+	ld.w	r0,r6[.L3@got]
mgl@1371
 17969
+	ld.w	r0,r6[.L4@got]
mgl@1371
 17970
+	ld.w	r0,r6[ldw_got@got]
mgl@1371
 17971
+.L4:
mgl@1371
 17972
--- /dev/null
mgl@1371
 17973
+++ b/gas/testsuite/gas/avr32/symdiff.d
mgl@1371
 17974
@@ -0,0 +1,24 @@
mgl@1371
 17975
+#source: symdiff.s
mgl@1371
 17976
+#as:
mgl@1371
 17977
+#objdump: -dr
mgl@1371
 17978
+#name: symdiff
mgl@1371
 17979
+
mgl@1371
 17980
+.*: +file format .*
mgl@1371
 17981
+
mgl@1371
 17982
+Disassembly of section \.text:
mgl@1371
 17983
+
mgl@1371
 17984
+00000000 <diff32>:
mgl@1371
 17985
+   0:	00 00       	add r0,r0
mgl@1371
 17986
+   2:	00 04       	add r4,r0
mgl@1371
 17987
+
mgl@1371
 17988
+00000004 <diff16>:
mgl@1371
 17989
+   4:	00 04       	add r4,r0
mgl@1371
 17990
+
mgl@1371
 17991
+00000006 <diff8>:
mgl@1371
 17992
+   6:	04 00       	add r0,r2
mgl@1371
 17993
+
mgl@1371
 17994
+00000008 <symdiff_test>:
mgl@1371
 17995
+   8:	d7 03       	nop
mgl@1371
 17996
+   a:	d7 03       	nop
mgl@1371
 17997
+   c:	d7 03       	nop
mgl@1371
 17998
+   e:	d7 03       	nop
mgl@1371
 17999
--- /dev/null
mgl@1371
 18000
+++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
mgl@1371
 18001
@@ -0,0 +1,28 @@
mgl@1371
 18002
+#source: symdiff.s
mgl@1371
 18003
+#as: --linkrelax
mgl@1371
 18004
+#objdump: -dr
mgl@1371
 18005
+#name: symdiff_linkrelax
mgl@1371
 18006
+
mgl@1371
 18007
+.*: +file format .*
mgl@1371
 18008
+
mgl@1371
 18009
+Disassembly of section \.text:
mgl@1371
 18010
+
mgl@1371
 18011
+00000000 <diff32>:
mgl@1371
 18012
+   0:	00 00       	add r0,r0
mgl@1371
 18013
+			0: R_AVR32_DIFF32	\.text\+0xa
mgl@1371
 18014
+   2:	00 04       	add r4,r0
mgl@1371
 18015
+
mgl@1371
 18016
+00000004 <diff16>:
mgl@1371
 18017
+   4:	00 04       	add r4,r0
mgl@1371
 18018
+			4: R_AVR32_DIFF16	\.text\+0xa
mgl@1371
 18019
+
mgl@1371
 18020
+00000006 <diff8>:
mgl@1371
 18021
+   6:	04 00       	add r0,r2
mgl@1371
 18022
+			6: R_AVR32_DIFF8	\.text\+0xa
mgl@1371
 18023
+			7: R_AVR32_ALIGN	\*ABS\*\+0x1
mgl@1371
 18024
+
mgl@1371
 18025
+00000008 <symdiff_test>:
mgl@1371
 18026
+   8:	d7 03       	nop
mgl@1371
 18027
+   a:	d7 03       	nop
mgl@1371
 18028
+   c:	d7 03       	nop
mgl@1371
 18029
+   e:	d7 03       	nop
mgl@1371
 18030
--- /dev/null
mgl@1371
 18031
+++ b/gas/testsuite/gas/avr32/symdiff.s
mgl@1371
 18032
@@ -0,0 +1,19 @@
mgl@1371
 18033
+
mgl@1371
 18034
+	.text
mgl@1371
 18035
+	.global	diff32
mgl@1371
 18036
+diff32:
mgl@1371
 18037
+	.long	.L2 - .L1
mgl@1371
 18038
+	.global	diff16
mgl@1371
 18039
+diff16:
mgl@1371
 18040
+	.short	.L2 - .L1
mgl@1371
 18041
+	.global	diff8
mgl@1371
 18042
+diff8:
mgl@1371
 18043
+	.byte	.L2 - .L1
mgl@1371
 18044
+
mgl@1371
 18045
+	.global	symdiff_test
mgl@1371
 18046
+	.align	1
mgl@1371
 18047
+symdiff_test:
mgl@1371
 18048
+	nop
mgl@1371
 18049
+.L1:	nop
mgl@1371
 18050
+	nop
mgl@1371
 18051
+.L2:	nop
mgl@1371
 18052
--- a/gas/write.c
mgl@1371
 18053
+++ b/gas/write.c
mgl@1371
 18054
@@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP, 
mgl@1371
 18055
 
mgl@1371
 18056
 #endif /* defined (TC_GENERIC_RELAX_TABLE)  */
mgl@1371
 18057
 
mgl@1371
 18058
+#ifdef TC_RELAX_ALIGN
mgl@1371
 18059
+#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
mgl@1371
 18060
+#else
mgl@1371
 18061
+#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
mgl@1371
 18062
 /* Relax_align. Advance location counter to next address that has 'alignment'
mgl@1371
 18063
    lowest order bits all 0s, return size of adjustment made.  */
mgl@1371
 18064
 static relax_addressT
mgl@1371
 18065
@@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
mgl@1371
 18066
 #endif
mgl@1371
 18067
   return (new_address - address);
mgl@1371
 18068
 }
mgl@1371
 18069
+#endif
mgl@1371
 18070
 
mgl@1371
 18071
 /* Now we have a segment, not a crowd of sub-segments, we can make
mgl@1371
 18072
    fr_address values.
mgl@1371
 18073
@@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
mgl@1371
 18074
 	case rs_align_code:
mgl@1371
 18075
 	case rs_align_test:
mgl@1371
 18076
 	  {
mgl@1371
 18077
-	    addressT offset = relax_align (address, (int) fragP->fr_offset);
mgl@1371
 18078
+	    addressT offset = RELAX_ALIGN(segment, fragP, address);
mgl@1371
 18079
 
mgl@1371
 18080
 	    if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
mgl@1371
 18081
 	      offset = 0;
mgl@1371
 18082
@@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
mgl@1371
 18083
 		{
mgl@1371
 18084
 		  addressT oldoff, newoff;
mgl@1371
 18085
 
mgl@1371
 18086
-		  oldoff = relax_align (was_address + fragP->fr_fix,
mgl@1371
 18087
-					(int) offset);
mgl@1371
 18088
-		  newoff = relax_align (address + fragP->fr_fix,
mgl@1371
 18089
-					(int) offset);
mgl@1371
 18090
+		  oldoff = RELAX_ALIGN (segment, fragP,
mgl@1371
 18091
+					was_address + fragP->fr_fix);
mgl@1371
 18092
+		  newoff = RELAX_ALIGN (segment, fragP,
mgl@1371
 18093
+					address + fragP->fr_fix);
mgl@1371
 18094
 
mgl@1371
 18095
 		  if (fragP->fr_subtype != 0)
mgl@1371
 18096
 		    {
mgl@1371
 18097
--- a/include/dis-asm.h
mgl@1371
 18098
+++ b/include/dis-asm.h
mgl@1371
 18099
@@ -204,13 +204,14 @@ typedef struct disassemble_info
mgl@1371
 18100
 
mgl@1371
 18101
 } disassemble_info;
mgl@1371
 18102
 
mgl@1371
 18103
-
mgl@1371
 18104
+
mgl@1371
 18105
 /* Standard disassemblers.  Disassemble one instruction at the given
mgl@1371
 18106
    target address.  Return number of octets processed.  */
mgl@1371
 18107
 typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
mgl@1371
 18108
 
mgl@1371
 18109
 extern int print_insn_alpha		(bfd_vma, disassemble_info *);
mgl@1371
 18110
 extern int print_insn_avr		(bfd_vma, disassemble_info *);
mgl@1371
 18111
+extern int print_insn_avr32		(bfd_vma, disassemble_info *);
mgl@1371
 18112
 extern int print_insn_bfin		(bfd_vma, disassemble_info *);
mgl@1371
 18113
 extern int print_insn_big_arm		(bfd_vma, disassemble_info *);
mgl@1371
 18114
 extern int print_insn_big_mips		(bfd_vma, disassemble_info *);
mgl@1371
 18115
@@ -242,7 +243,7 @@ extern int print_insn_little_arm	(bfd_vm
mgl@1371
 18116
 extern int print_insn_little_mips	(bfd_vma, disassemble_info *);
mgl@1371
 18117
 extern int print_insn_little_or32	(bfd_vma, disassemble_info *);
mgl@1371
 18118
 extern int print_insn_little_powerpc	(bfd_vma, disassemble_info *);
mgl@1371
 18119
-extern int print_insn_little_score      (bfd_vma, disassemble_info *); 
mgl@1371
 18120
+extern int print_insn_little_score      (bfd_vma, disassemble_info *);
mgl@1371
 18121
 extern int print_insn_m32c	        (bfd_vma, disassemble_info *);
mgl@1371
 18122
 extern int print_insn_m32r		(bfd_vma, disassemble_info *);
mgl@1371
 18123
 extern int print_insn_m68hc11		(bfd_vma, disassemble_info *);
mgl@1371
 18124
@@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
mgl@1371
 18125
 extern void print_mips_disassembler_options (FILE *);
mgl@1371
 18126
 extern void print_ppc_disassembler_options (FILE *);
mgl@1371
 18127
 extern void print_arm_disassembler_options (FILE *);
mgl@1371
 18128
+extern void print_avr32_disassembler_options (FILE *);
mgl@1371
 18129
 extern void parse_arm_disassembler_option (char *);
mgl@1371
 18130
+extern void parse_avr32_disassembler_option (char *);
mgl@1371
 18131
 extern int  get_arm_regname_num_options (void);
mgl@1371
 18132
 extern int  set_arm_regname_option (int);
mgl@1371
 18133
 extern int  get_arm_regnames (int, const char **, const char **, const char *const **);
mgl@1371
 18134
@@ -306,7 +309,7 @@ extern void disassemble_init_for_target 
mgl@1371
 18135
 /* Document any target specific options available from the disassembler.  */
mgl@1371
 18136
 extern void disassembler_usage (FILE *);
mgl@1371
 18137
 
mgl@1371
 18138
-
mgl@1371
 18139
+
mgl@1371
 18140
 /* This block of definitions is for particular callers who read instructions
mgl@1371
 18141
    into a buffer before calling the instruction decoder.  */
mgl@1371
 18142
 
mgl@1371
 18143
--- /dev/null
mgl@1371
 18144
+++ b/include/elf/avr32.h
mgl@1371
 18145
@@ -0,0 +1,98 @@
mgl@1371
 18146
+/* AVR32 ELF support for BFD.
mgl@1371
 18147
+   Copyright 2003-2006 Atmel Corporation.
mgl@1371
 18148
+
mgl@1371
 18149
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 18150
+
mgl@1371
 18151
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
 18152
+
mgl@1371
 18153
+   This program is free software; you can redistribute it and/or
mgl@1371
 18154
+   modify it under the terms of the GNU General Public License as
mgl@1371
 18155
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 18156
+   License, or (at your option) any later version.
mgl@1371
 18157
+
mgl@1371
 18158
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 18159
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 18160
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 18161
+   General Public License for more details.
mgl@1371
 18162
+
mgl@1371
 18163
+   You should have received a copy of the GNU General Public License
mgl@1371
 18164
+   along with this program; if not, write to the Free Software
mgl@1371
 18165
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 18166
+   02111-1307, USA.  */
mgl@1371
 18167
+
mgl@1371
 18168
+#include "elf/reloc-macros.h"
mgl@1371
 18169
+
mgl@1371
 18170
+/* CPU-specific flags for the ELF header e_flags field */
mgl@1371
 18171
+#define EF_AVR32_LINKRELAX		0x01
mgl@1371
 18172
+#define EF_AVR32_PIC			0x02
mgl@1371
 18173
+
mgl@1371
 18174
+START_RELOC_NUMBERS (elf_avr32_reloc_type)
mgl@1371
 18175
+    RELOC_NUMBER (R_AVR32_NONE,			0)
mgl@1371
 18176
+
mgl@1371
 18177
+    /* Data Relocations */
mgl@1371
 18178
+    RELOC_NUMBER (R_AVR32_32,			1)
mgl@1371
 18179
+    RELOC_NUMBER (R_AVR32_16,			2)
mgl@1371
 18180
+    RELOC_NUMBER (R_AVR32_8,			3)
mgl@1371
 18181
+    RELOC_NUMBER (R_AVR32_32_PCREL,		4)
mgl@1371
 18182
+    RELOC_NUMBER (R_AVR32_16_PCREL,		5)
mgl@1371
 18183
+    RELOC_NUMBER (R_AVR32_8_PCREL,		6)
mgl@1371
 18184
+    RELOC_NUMBER (R_AVR32_DIFF32,		7)
mgl@1371
 18185
+    RELOC_NUMBER (R_AVR32_DIFF16,		8)
mgl@1371
 18186
+    RELOC_NUMBER (R_AVR32_DIFF8,		9)
mgl@1371
 18187
+    RELOC_NUMBER (R_AVR32_GOT32,		10)
mgl@1371
 18188
+    RELOC_NUMBER (R_AVR32_GOT16,		11)
mgl@1371
 18189
+    RELOC_NUMBER (R_AVR32_GOT8,			12)
mgl@1371
 18190
+
mgl@1371
 18191
+    /* Normal Code Relocations */
mgl@1371
 18192
+    RELOC_NUMBER (R_AVR32_21S,			13)
mgl@1371
 18193
+    RELOC_NUMBER (R_AVR32_16U,			14)
mgl@1371
 18194
+    RELOC_NUMBER (R_AVR32_16S,			15)
mgl@1371
 18195
+    RELOC_NUMBER (R_AVR32_8S,			16)
mgl@1371
 18196
+    RELOC_NUMBER (R_AVR32_8S_EXT,		17)
mgl@1371
 18197
+
mgl@1371
 18198
+    /* PC-Relative Code Relocations */
mgl@1371
 18199
+    RELOC_NUMBER (R_AVR32_22H_PCREL,		18)
mgl@1371
 18200
+    RELOC_NUMBER (R_AVR32_18W_PCREL,		19)
mgl@1371
 18201
+    RELOC_NUMBER (R_AVR32_16B_PCREL,		20)
mgl@1371
 18202
+    RELOC_NUMBER (R_AVR32_16N_PCREL,		21)
mgl@1371
 18203
+    RELOC_NUMBER (R_AVR32_14UW_PCREL,		22)
mgl@1371
 18204
+    RELOC_NUMBER (R_AVR32_11H_PCREL,		23)
mgl@1371
 18205
+    RELOC_NUMBER (R_AVR32_10UW_PCREL,		24)
mgl@1371
 18206
+    RELOC_NUMBER (R_AVR32_9H_PCREL,		25)
mgl@1371
 18207
+    RELOC_NUMBER (R_AVR32_9UW_PCREL,		26)
mgl@1371
 18208
+
mgl@1371
 18209
+    /* Special Code Relocations */
mgl@1371
 18210
+    RELOC_NUMBER (R_AVR32_HI16,			27)
mgl@1371
 18211
+    RELOC_NUMBER (R_AVR32_LO16,			28)
mgl@1371
 18212
+
mgl@1371
 18213
+    /* PIC Relocations */
mgl@1371
 18214
+    RELOC_NUMBER (R_AVR32_GOTPC,		29)
mgl@1371
 18215
+    RELOC_NUMBER (R_AVR32_GOTCALL,		30)
mgl@1371
 18216
+    RELOC_NUMBER (R_AVR32_LDA_GOT,		31)
mgl@1371
 18217
+    RELOC_NUMBER (R_AVR32_GOT21S,		32)
mgl@1371
 18218
+    RELOC_NUMBER (R_AVR32_GOT18SW,		33)
mgl@1371
 18219
+    RELOC_NUMBER (R_AVR32_GOT16S,		34)
mgl@1371
 18220
+    RELOC_NUMBER (R_AVR32_GOT7UW,		35)
mgl@1371
 18221
+
mgl@1371
 18222
+    /* Constant Pool Relocations */
mgl@1371
 18223
+    RELOC_NUMBER (R_AVR32_32_CPENT,		36)
mgl@1371
 18224
+    RELOC_NUMBER (R_AVR32_CPCALL,		37)
mgl@1371
 18225
+    RELOC_NUMBER (R_AVR32_16_CP,		38)
mgl@1371
 18226
+    RELOC_NUMBER (R_AVR32_9W_CP,		39)
mgl@1371
 18227
+
mgl@1371
 18228
+    /* Dynamic Relocations */
mgl@1371
 18229
+    RELOC_NUMBER (R_AVR32_RELATIVE,		40)
mgl@1371
 18230
+    RELOC_NUMBER (R_AVR32_GLOB_DAT,		41)
mgl@1371
 18231
+    RELOC_NUMBER (R_AVR32_JMP_SLOT,		42)
mgl@1371
 18232
+
mgl@1371
 18233
+    /* Linkrelax Information */
mgl@1371
 18234
+    RELOC_NUMBER (R_AVR32_ALIGN,		43)
mgl@1371
 18235
+
mgl@1371
 18236
+    RELOC_NUMBER (R_AVR32_15S,		        44)
mgl@1371
 18237
+
mgl@1371
 18238
+END_RELOC_NUMBERS (R_AVR32_max)
mgl@1371
 18239
+
mgl@1371
 18240
+/* Processor specific dynamic array tags.  */
mgl@1371
 18241
+
mgl@1371
 18242
+/* The total size in bytes of the Global Offset Table */
mgl@1371
 18243
+#define DT_AVR32_GOTSZ			0x70000001
mgl@1371
 18244
--- a/include/elf/common.h
mgl@1371
 18245
+++ b/include/elf/common.h
mgl@1371
 18246
@@ -259,6 +259,9 @@
mgl@1371
 18247
 /* V850 backend magic number.  Written in the absense of an ABI.  */
mgl@1371
 18248
 #define EM_CYGNUS_V850		0x9080
mgl@1371
 18249
 
mgl@1371
 18250
+/* AVR32 magic number, picked by IAR Systems. */
mgl@1371
 18251
+#define EM_AVR32		0x18ad
mgl@1371
 18252
+
mgl@1371
 18253
 /* old S/390 backend magic number. Written in the absence of an ABI.  */
mgl@1371
 18254
 #define EM_S390_OLD		0xa390
mgl@1371
 18255
 
mgl@1371
 18256
--- a/ld/configdoc.texi
mgl@1371
 18257
+++ b/ld/configdoc.texi
mgl@1371
 18258
@@ -7,6 +7,7 @@
mgl@1371
 18259
 @set H8300
mgl@1371
 18260
 @set HPPA
mgl@1371
 18261
 @set I960
mgl@1371
 18262
+@set AVR32
mgl@1371
 18263
 @set M68HC11
mgl@1371
 18264
 @set MMIX
mgl@1371
 18265
 @set MSP430
mgl@1371
 18266
--- a/ld/configure.tgt
mgl@1371
 18267
+++ b/ld/configure.tgt
mgl@1371
 18268
@@ -109,6 +109,9 @@ xscale-*-elf)		targ_emul=armelf
mgl@1371
 18269
 avr-*-*)		targ_emul=avr2
mgl@1371
 18270
 			targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
mgl@1371
 18271
 			;;
mgl@1371
 18272
+avr32-*-none)       targ_emul=avr32elf_ap7000
mgl@1371
 18273
+            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" ;;
mgl@1371
 18274
+avr32-*-linux*)     targ_emul=avr32linux ;;
mgl@1371
 18275
 bfin-*-elf)		targ_emul=elf32bfin;
mgl@1371
 18276
 			targ_extra_emuls="elf32bfinfd"
mgl@1371
 18277
 			targ_extra_libpath=$targ_extra_emuls
mgl@1371
 18278
--- /dev/null
mgl@1371
 18279
+++ b/ld/emulparams/avr32elf.sh
mgl@1371
 18280
@@ -0,0 +1,163 @@
mgl@1371
 18281
+# This script is called from ld/genscript.sh 
mgl@1371
 18282
+# There is a difference on how 'bash' and POSIX handles 
mgl@1371
 18283
+# the  '.' (source) command in a script.
mgl@1371
 18284
+# genscript.sh calls this script with argument ${EMULATION_NAME}
mgl@1371
 18285
+# but that will fail on POSIX compilant shells like 'sh' or 'dash'
mgl@1371
 18286
+# therefor I use the variable directly instead of $1 
mgl@1371
 18287
+EMULATION=${EMULATION_NAME}
mgl@1371
 18288
+SCRIPT_NAME=elf_xip
mgl@1371
 18289
+TEMPLATE_NAME=elf32
mgl@1371
 18290
+EXTRA_EM_FILE=avr32elf
mgl@1371
 18291
+OUTPUT_FORMAT="elf32-avr32"
mgl@1371
 18292
+ARCH=avr32
mgl@1371
 18293
+MAXPAGESIZE=4096
mgl@1371
 18294
+ENTRY=_start
mgl@1371
 18295
+EMBEDDED=yes
mgl@1371
 18296
+NO_SMALL_DATA=yes
mgl@1371
 18297
+NOP=0xd703d703
mgl@1371
 18298
+
mgl@1371
 18299
+DATA_SEGMENT_ALIGN=8
mgl@1371
 18300
+BSS_ALIGNMENT=8
mgl@1371
 18301
+
mgl@1371
 18302
+RO_LMA_REGION="FLASH"
mgl@1371
 18303
+RO_VMA_REGION="FLASH"
mgl@1371
 18304
+RW_LMA_REGION="FLASH"
mgl@1371
 18305
+RW_VMA_REGION="CPUSRAM"
mgl@1371
 18306
+
mgl@1371
 18307
+STACK_SIZE=0x1000
mgl@1371
 18308
+STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
mgl@1371
 18309
+
mgl@1371
 18310
+DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
mgl@1371
 18311
+  . = ${STACK_ADDR};
mgl@1371
 18312
+  __heap_end__ = .;"
mgl@1371
 18313
+
mgl@1371
 18314
+case "$EMULATION" in
mgl@1371
 18315
+avr32elf_ap*)
mgl@1371
 18316
+    MACHINE=ap
mgl@1371
 18317
+    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH
mgl@1371
 18318
+    . = . & 0x9fffffff;"
mgl@1371
 18319
+    TEXT_START_ADDR=0xa0000000
mgl@1371
 18320
+    case "$EMULATION" in
mgl@1371
 18321
+	    avr32elf_ap700[0-2])
mgl@1371
 18322
+	       MEMORY="MEMORY
mgl@1371
 18323
+  {
mgl@1371
 18324
+	FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
mgl@1371
 18325
+	CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
mgl@1371
 18326
+  }"
mgl@1371
 18327
+        ;;
mgl@1371
 18328
+    avr32elf_ap7200)
mgl@1371
 18329
+        MEMORY="MEMORY
mgl@1371
 18330
+  {
mgl@1371
 18331
+    FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
mgl@1371
 18332
+    CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
mgl@1371
 18333
+  }"
mgl@1371
 18334
+        ;;
mgl@1371
 18335
+    esac
mgl@1371
 18336
+    ;;
mgl@1371
 18337
+
mgl@1371
 18338
+avr32elf_uc3*)
mgl@1371
 18339
+    MACHINE=uc
mgl@1371
 18340
+    INITIAL_READONLY_SECTIONS=".reset : {  *(.reset) } >FLASH AT>FLASH"
mgl@1371
 18341
+    TEXT_START_ADDR=0x80000000
mgl@1371
 18342
+    OTHER_SECTIONS=".userpage :  {	*(.userpage .userpage.*)  } >USERPAGE AT>USERPAGE
mgl@1371
 18343
+  	.factorypage :  {	*(.factorypage .factorypage.*)  } >FACTORYPAGE AT>FACTORYPAGE"
mgl@1371
 18344
+
mgl@1371
 18345
+    case "$EMULATION" in
mgl@1371
 18346
+    avr32elf_uc3a[01]512*)
mgl@1371
 18347
+       MEMORY="MEMORY
mgl@1371
 18348
+  {
mgl@1371
 18349
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
mgl@1371
 18350
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
mgl@1371
 18351
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18352
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18353
+  }"
mgl@1371
 18354
+        ;;
mgl@1371
 18355
+
mgl@1371
 18356
+    avr32elf_uc3a[01]256)
mgl@1371
 18357
+        MEMORY="MEMORY
mgl@1371
 18358
+  {
mgl@1371
 18359
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
mgl@1371
 18360
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
mgl@1371
 18361
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18362
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18363
+  }"
mgl@1371
 18364
+        ;;
mgl@1371
 18365
+
mgl@1371
 18366
+    avr32elf_uc3b[01]256*)
mgl@1371
 18367
+        MEMORY="MEMORY
mgl@1371
 18368
+  {
mgl@1371
 18369
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
mgl@1371
 18370
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
mgl@1371
 18371
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18372
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18373
+  }"
mgl@1371
 18374
+        ;;
mgl@1371
 18375
+
mgl@1371
 18376
+    avr32elf_uc3[ab][01]128)
mgl@1371
 18377
+        MEMORY="MEMORY
mgl@1371
 18378
+  {
mgl@1371
 18379
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
mgl@1371
 18380
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
mgl@1371
 18381
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18382
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18383
+  }"
mgl@1371
 18384
+        ;;
mgl@1371
 18385
+
mgl@1371
 18386
+    avr32elf_uc3b[01]64)
mgl@1371
 18387
+        MEMORY="MEMORY
mgl@1371
 18388
+  {
mgl@1371
 18389
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
mgl@1371
 18390
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
mgl@1371
 18391
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18392
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18393
+  }"
mgl@1371
 18394
+        ;;
mgl@1371
 18395
+
mgl@1371
 18396
+    avr32elf_uc3a3256*)
mgl@1371
 18397
+        MEMORY="MEMORY
mgl@1371
 18398
+  {
mgl@1371
 18399
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
mgl@1371
 18400
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
mgl@1371
 18401
+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
mgl@1371
 18402
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18403
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18404
+  }"
mgl@1371
 18405
+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
mgl@1371
 18406
+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
mgl@1371
 18407
+"
mgl@1371
 18408
+  		
mgl@1371
 18409
+        ;;
mgl@1371
 18410
+
mgl@1371
 18411
+    avr32elf_uc3a3128*)
mgl@1371
 18412
+        MEMORY="MEMORY
mgl@1371
 18413
+  {
mgl@1371
 18414
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
mgl@1371
 18415
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
mgl@1371
 18416
+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
mgl@1371
 18417
+    USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18418
+    FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18419
+  }"
mgl@1371
 18420
+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
mgl@1371
 18421
+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
mgl@1371
 18422
+"
mgl@1371
 18423
+        ;;
mgl@1371
 18424
+
mgl@1371
 18425
+    avr32elf_uc3a364*)
mgl@1371
 18426
+        MEMORY="MEMORY
mgl@1371
 18427
+  {
mgl@1371
 18428
+    FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
mgl@1371
 18429
+    CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
mgl@1371
 18430
+    HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
mgl@1371
 18431
+	USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
mgl@1371
 18432
+	FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
mgl@1371
 18433
+  }"
mgl@1371
 18434
+  		OTHER_SECTIONS ="${OTHER_SECTIONS}
mgl@1371
 18435
+  	.hsbsram       : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
mgl@1371
 18436
+"
mgl@1371
 18437
+        ;;
mgl@1371
 18438
+
mgl@1371
 18439
+
mgl@1371
 18440
+    esac
mgl@1371
 18441
+    ;;
mgl@1371
 18442
+
mgl@1371
 18443
+esac
mgl@1371
 18444
--- /dev/null
mgl@1371
 18445
+++ b/ld/emulparams/avr32linux.sh
mgl@1371
 18446
@@ -0,0 +1,14 @@
mgl@1371
 18447
+ARCH=avr32
mgl@1371
 18448
+SCRIPT_NAME=elf
mgl@1371
 18449
+TEMPLATE_NAME=elf32
mgl@1371
 18450
+EXTRA_EM_FILE=avr32elf
mgl@1371
 18451
+OUTPUT_FORMAT="elf32-avr32"
mgl@1371
 18452
+GENERATE_SHLIB_SCRIPT=yes
mgl@1371
 18453
+MAXPAGESIZE=0x1000
mgl@1371
 18454
+TEXT_START_ADDR=0x00001000
mgl@1371
 18455
+NOP=0xd703d703
mgl@1371
 18456
+
mgl@1371
 18457
+# This appears to place the GOT before the data section, which is
mgl@1371
 18458
+# essential for uClinux.  We don't use those .s* sections on AVR32
mgl@1371
 18459
+# anyway, so it shouldn't hurt for regular Linux either...
mgl@1371
 18460
+NO_SMALL_DATA=yes
mgl@1371
 18461
--- /dev/null
mgl@1371
 18462
+++ b/ld/emultempl/avr32elf.em
mgl@1371
 18463
@@ -0,0 +1,133 @@
mgl@1371
 18464
+# This shell script emits a C file. -*- C -*-
mgl@1371
 18465
+#   Copyright (C) 2007 Atmel Corporation
mgl@1371
 18466
+#
mgl@1371
 18467
+# This file is part of GLD, the Gnu Linker.
mgl@1371
 18468
+#
mgl@1371
 18469
+# This program is free software; you can redistribute it and/or modify
mgl@1371
 18470
+# it under the terms of the GNU General Public License as published by
mgl@1371
 18471
+# the Free Software Foundation; either version 2 of the License, or
mgl@1371
 18472
+# (at your option) any later version.
mgl@1371
 18473
+#
mgl@1371
 18474
+# This program is distributed in the hope that it will be useful,
mgl@1371
 18475
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 18476
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 18477
+# GNU General Public License for more details.
mgl@1371
 18478
+#
mgl@1371
 18479
+# You should have received a copy of the GNU General Public License
mgl@1371
 18480
+# along with this program; if not, write to the Free Software
mgl@1371
 18481
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
mgl@1371
 18482
+#
mgl@1371
 18483
+
mgl@1371
 18484
+# This file is sourced from elf32.em, and defines extra avr32-elf
mgl@1371
 18485
+# specific routines.
mgl@1371
 18486
+#
mgl@1371
 18487
+
mgl@1371
 18488
+# Generate linker script for writable rodata
mgl@1371
 18489
+LD_FLAG=rodata-writable
mgl@1371
 18490
+DATA_ALIGNMENT=${DATA_ALIGNMENT_}
mgl@1371
 18491
+RELOCATING=" "
mgl@1371
 18492
+WRITABLE_RODATA=" "
mgl@1371
 18493
+( echo "/* Linker script for writable rodata */"
mgl@1371
 18494
+  . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
mgl@1371
 18495
+  . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
mgl@1371
 18496
+) | sed -e '/^ *$/d;s/[ 	]*$//' > ldscripts/${EMULATION_NAME}.xwr
mgl@1371
 18497
+
mgl@1371
 18498
+
mgl@1371
 18499
+cat >> e${EMULATION_NAME}.c <<EOF
mgl@1371
 18500
+
mgl@1371
 18501
+#include "libbfd.h"
mgl@1371
 18502
+#include "elf32-avr32.h"
mgl@1371
 18503
+
mgl@1371
 18504
+/* Whether to allow direct references (sub or mov) to SEC_DATA and
mgl@1371
 18505
+   !SEC_CONTENTS sections when optimizing.  Not enabled by default
mgl@1371
 18506
+   since it might cause link errors.  */
mgl@1371
 18507
+static int direct_data_refs = 0;
mgl@1371
 18508
+
mgl@1371
 18509
+static void avr32_elf_after_open (void)
mgl@1371
 18510
+{
mgl@1371
 18511
+  bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
mgl@1371
 18512
+  gld${EMULATION_NAME}_after_open ();
mgl@1371
 18513
+}
mgl@1371
 18514
+
mgl@1371
 18515
+static int rodata_writable = 0;
mgl@1371
 18516
+
mgl@1371
 18517
+static char * gld${EMULATION_NAME}_get_script (int *isfile);
mgl@1371
 18518
+
mgl@1371
 18519
+static char * avr32_elf_get_script (int *isfile)
mgl@1371
 18520
+{
mgl@1371
 18521
+  if ( rodata_writable )
mgl@1371
 18522
+    {
mgl@1371
 18523
+EOF
mgl@1371
 18524
+if test -n "$COMPILE_IN"
mgl@1371
 18525
+then
mgl@1371
 18526
+# Scripts compiled in.
mgl@1371
 18527
+
mgl@1371
 18528
+# sed commands to quote an ld script as a C string.
mgl@1371
 18529
+sc="-f stringify.sed"
mgl@1371
 18530
+
mgl@1371
 18531
+cat >>e${EMULATION_NAME}.c <<EOF
mgl@1371
 18532
+      *isfile = 0;
mgl@1371
 18533
+      return
mgl@1371
 18534
+EOF
mgl@1371
 18535
+sed $sc ldscripts/${EMULATION_NAME}.xwr			>> e${EMULATION_NAME}.c
mgl@1371
 18536
+echo  ';'	                                        >> e${EMULATION_NAME}.c
mgl@1371
 18537
+else
mgl@1371
 18538
+# Scripts read from the filesystem.
mgl@1371
 18539
+
mgl@1371
 18540
+cat >>e${EMULATION_NAME}.c <<EOF
mgl@1371
 18541
+      *isfile = 1;
mgl@1371
 18542
+      return "ldscripts/${EMULATION_NAME}.xwr";
mgl@1371
 18543
+EOF
mgl@1371
 18544
+fi
mgl@1371
 18545
+
mgl@1371
 18546
+cat >>e${EMULATION_NAME}.c <<EOF
mgl@1371
 18547
+    }
mgl@1371
 18548
+  return gld${EMULATION_NAME}_get_script (isfile);
mgl@1371
 18549
+}
mgl@1371
 18550
+
mgl@1371
 18551
+
mgl@1371
 18552
+EOF
mgl@1371
 18553
+
mgl@1371
 18554
+# Define some shell vars to insert bits of code into the standard elf
mgl@1371
 18555
+# parse_args and list_options functions.
mgl@1371
 18556
+#
mgl@1371
 18557
+PARSE_AND_LIST_PROLOGUE='
mgl@1371
 18558
+#define OPTION_DIRECT_DATA		300
mgl@1371
 18559
+#define OPTION_NO_DIRECT_DATA		301
mgl@1371
 18560
+#define OPTION_RODATA_WRITABLE		302
mgl@1371
 18561
+#define OPTION_NO_RODATA_WRITABLE	303
mgl@1371
 18562
+'
mgl@1371
 18563
+
mgl@1371
 18564
+PARSE_AND_LIST_LONGOPTS='
mgl@1371
 18565
+  { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
mgl@1371
 18566
+  { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
mgl@1371
 18567
+  { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
mgl@1371
 18568
+  { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
mgl@1371
 18569
+'
mgl@1371
 18570
+
mgl@1371
 18571
+PARSE_AND_LIST_OPTIONS='
mgl@1371
 18572
+  fprintf (file, _("  --direct-data\t\tAllow direct data references when optimizing\n"));
mgl@1371
 18573
+  fprintf (file, _("  --no-direct-data\tDo not allow direct data references when optimizing\n"));
mgl@1371
 18574
+  fprintf (file, _("  --rodata-writable\tPut read-only data in writable data section\n"));
mgl@1371
 18575
+  fprintf (file, _("  --no-rodata-writable\tDo not put read-only data in writable data section\n"));
mgl@1371
 18576
+'
mgl@1371
 18577
+
mgl@1371
 18578
+PARSE_AND_LIST_ARGS_CASES='
mgl@1371
 18579
+    case OPTION_DIRECT_DATA:
mgl@1371
 18580
+      direct_data_refs = 1;
mgl@1371
 18581
+      break;
mgl@1371
 18582
+    case OPTION_NO_DIRECT_DATA:
mgl@1371
 18583
+      direct_data_refs = 0;
mgl@1371
 18584
+      break;
mgl@1371
 18585
+    case OPTION_RODATA_WRITABLE:
mgl@1371
 18586
+      rodata_writable = 1;
mgl@1371
 18587
+      break;
mgl@1371
 18588
+    case OPTION_NO_RODATA_WRITABLE:
mgl@1371
 18589
+      rodata_writable = 0;
mgl@1371
 18590
+      break;
mgl@1371
 18591
+'
mgl@1371
 18592
+
mgl@1371
 18593
+# Replace some of the standard ELF functions with our own versions.
mgl@1371
 18594
+#
mgl@1371
 18595
+LDEMUL_AFTER_OPEN=avr32_elf_after_open
mgl@1371
 18596
+LDEMUL_GET_SCRIPT=avr32_elf_get_script
mgl@1371
 18597
--- a/ld/ld.info
mgl@1371
 18598
+++ b/ld/ld.info
mgl@1371
 18599
@@ -4347,6 +4347,8 @@ not listed.
mgl@1371
 18600
 
mgl@1371
 18601
 * ARM::				`ld' and the ARM family
mgl@1371
 18602
 
mgl@1371
 18603
+* AVR32::                       `ld' and AVR32 processors
mgl@1371
 18604
+
mgl@1371
 18605
 * HPPA ELF32::                  `ld' and HPPA 32-bit ELF
mgl@1371
 18606
 
mgl@1371
 18607
 * MMIX::			`ld' and MMIX
mgl@1371
 18608
@@ -4487,7 +4489,7 @@ PIC.  This avoids problems on uClinux ta
mgl@1371
 18609
 used to generate relocatable binaries.
mgl@1371
 18610
 
mgl@1371
 18611
 
mgl@1371
 18612
-File: ld.info,  Node: ARM,  Next: HPPA ELF32,  Prev: i960,  Up: Machine Dependent
mgl@1371
 18613
+File: ld.info,  Node: ARM,  Next: AV32,  Prev: i960,  Up: Machine Dependent
mgl@1371
 18614
 
mgl@1371
 18615
 4.4 `ld' and the ARM family
mgl@1371
 18616
 ===========================
mgl@1371
 18617
@@ -4588,7 +4590,31 @@ enumeration values fitted into the small
mgl@1371
 18618
 diagnosed.
mgl@1371
 18619
 
mgl@1371
 18620
 
mgl@1371
 18621
-File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: ARM,  Up: Machine Dependent
mgl@1371
 18622
+File: ld.info,  Node: AVR32,  Next: HPPA ELF32,  Prev: ARM,  Up: Machine Dependent
mgl@1371
 18623
+
mgl@1371
 18624
+4.4 `ld' and AVR32 processors
mgl@1371
 18625
+=============================
mgl@1371
 18626
+
mgl@1371
 18627
+`--direct-data'
mgl@1371
 18628
+
mgl@1371
 18629
+`--no-direct-data'
mgl@1371
 18630
+     Taking the address of a symbol can often be done by using a direct
mgl@1371
 18631
+     `mov' or pc-relative `sub' instruction, which is faster than using
mgl@1371
 18632
+     a PC- or GOT-relative load, especially on the uC3 processors.
mgl@1371
 18633
+     However, this does not always work when dealing with symbols in
mgl@1371
 18634
+     the `.data' section so this optimization is disabled by default.
mgl@1371
 18635
+
mgl@1371
 18636
+     Specifying `--direct-data' will enable this optimization. Note
mgl@1371
 18637
+     that this may cause `relocation truncated to fit' errors for
mgl@1371
 18638
+     certain large programs. If this happens, the optimization can be
mgl@1371
 18639
+     turned off by specifying `--no-direct-data'.
mgl@1371
 18640
+
mgl@1371
 18641
+     All known issues with direct data optimizations are detected at
mgl@1371
 18642
+     link time, so if the linker doesn't complain, the result should
mgl@1371
 18643
+     run just fine.
mgl@1371
 18644
+
mgl@1371
 18645
+
mgl@1371
 18646
+File: ld.info,  Node: HPPA ELF32,  Next: MMIX,  Prev: AVR32,  Up: Machine Dependent
mgl@1371
 18647
 
mgl@1371
 18648
 4.5 `ld' and HPPA 32-bit ELF Support
mgl@1371
 18649
 ====================================
mgl@1371
 18650
@@ -6336,6 +6362,7 @@ LD Index
mgl@1371
 18651
 * --no-check-sections:                   Options.            (line  765)
mgl@1371
 18652
 * --no-define-common:                    Options.            (line  787)
mgl@1371
 18653
 * --no-demangle:                         Options.            (line  816)
mgl@1371
 18654
+* --no-direct-data:                      AVR32.              (line    6)
mgl@1371
 18655
 * --no-dotsyms:                          PowerPC64 ELF64.    (line   33)
mgl@1371
 18656
 * --no-enum-size-warning:                ARM.                (line   94)
mgl@1371
 18657
 * --no-gc-sections:                      Options.            (line  848)
mgl@1371
 18658
@@ -6534,6 +6561,7 @@ LD Index
mgl@1371
 18659
 * AT(LMA):                               Output Section LMA. (line    6)
mgl@1371
 18660
 * AT>LMA_REGION:                         Output Section LMA. (line    6)
mgl@1371
 18661
 * automatic data imports:                WIN32.              (line  170)
mgl@1371
 18662
+* AVR32 options:                         AVR32.              (line    6)
mgl@1371
 18663
 * back end:                              BFD.                (line    6)
mgl@1371
 18664
 * BASE (MRI):                            MRI.                (line   54)
mgl@1371
 18665
 * BE8:                                   ARM.                (line   23)
mgl@1371
 18666
@@ -7018,6 +7046,7 @@ Node: H8/300183897
mgl@1371
 18667
 Node: i960185522
mgl@1371
 18668
 Node: M68HC11/68HC12187207
mgl@1371
 18669
 Node: ARM188910
mgl@1371
 18670
+Node: AVR32182578
mgl@1371
 18671
 Node: HPPA ELF32193760
mgl@1371
 18672
 Node: MMIX195383
mgl@1371
 18673
 Node: MSP430196600
mgl@1371
 18674
--- a/ld/ld.texinfo
mgl@1371
 18675
+++ b/ld/ld.texinfo
mgl@1371
 18676
@@ -21,6 +21,7 @@
mgl@1371
 18677
 @set UsesEnvVars
mgl@1371
 18678
 @set GENERIC
mgl@1371
 18679
 @set ARM
mgl@1371
 18680
+@set AVR32
mgl@1371
 18681
 @set H8300
mgl@1371
 18682
 @set HPPA
mgl@1371
 18683
 @set I960
mgl@1371
 18684
@@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
mgl@1371
 18685
 @ifset ARM
mgl@1371
 18686
 * ARM::				ld and the ARM family
mgl@1371
 18687
 @end ifset
mgl@1371
 18688
+@ifset AVR32
mgl@1371
 18689
+* AVR32::                       ld and AVR32 processors
mgl@1371
 18690
+@end ifset
mgl@1371
 18691
 @ifset HPPA
mgl@1371
 18692
 * HPPA ELF32::                  ld and HPPA 32-bit ELF
mgl@1371
 18693
 @end ifset
mgl@1371
 18694
@@ -5248,6 +5252,9 @@ functionality are not listed.
mgl@1371
 18695
 @ifset ARM
mgl@1371
 18696
 * ARM::				@command{ld} and the ARM family
mgl@1371
 18697
 @end ifset
mgl@1371
 18698
+@ifset AVR32
mgl@1371
 18699
+* AVR32::                       @command{ld} and AVR32 processors
mgl@1371
 18700
+@end ifset
mgl@1371
 18701
 @ifset HPPA
mgl@1371
 18702
 * HPPA ELF32::                  @command{ld} and HPPA 32-bit ELF
mgl@1371
 18703
 @end ifset
mgl@1371
 18704
@@ -5589,6 +5596,52 @@ not be diagnosed.
mgl@1371
 18705
 @end ifclear
mgl@1371
 18706
 @end ifset
mgl@1371
 18707
 
mgl@1371
 18708
+@ifset AVR32
mgl@1371
 18709
+@ifclear GENERIC
mgl@1371
 18710
+@raisesections
mgl@1371
 18711
+@end ifclear
mgl@1371
 18712
+
mgl@1371
 18713
+@node AVR32
mgl@1371
 18714
+@section @command{ld} and AVR32 processors
mgl@1371
 18715
+@cindex AVR32 options
mgl@1371
 18716
+@table @option
mgl@1371
 18717
+@kindex --direct-data
mgl@1371
 18718
+@kindex --no-direct-data
mgl@1371
 18719
+@item --direct-data
mgl@1371
 18720
+@item --no-direct-data
mgl@1371
 18721
+Taking the address of a symbol can often be done by using a direct
mgl@1371
 18722
+@code{mov} or pc-relative @code{sub} instruction, which is faster than
mgl@1371
 18723
+using a PC- or GOT-relative load, especially on the uC3
mgl@1371
 18724
+processors. However, this does not always work when dealing with
mgl@1371
 18725
+symbols in the @code{.data} section so this optimization is disabled
mgl@1371
 18726
+by default.
mgl@1371
 18727
+
mgl@1371
 18728
+Specifying @option{--direct-data} will enable this optimization. Note
mgl@1371
 18729
+that this may cause @samp{relocation truncated to fit} errors for
mgl@1371
 18730
+certain large programs. If this happens, the optimization can be
mgl@1371
 18731
+turned off by specifying @option{--no-direct-data}.
mgl@1371
 18732
+
mgl@1371
 18733
+All known issues with direct data optimizations are detected at link
mgl@1371
 18734
+time, so if the linker doesn't complain, the result should run just
mgl@1371
 18735
+fine.
mgl@1371
 18736
+
mgl@1371
 18737
+@kindex --rodata-writable
mgl@1371
 18738
+@kindex --no-rodata-writable
mgl@1371
 18739
+@item --rodata-writable
mgl@1371
 18740
+@item --no-rodata-writable
mgl@1371
 18741
+Using the @option{--rodata-writable} options will cause the linker
mgl@1371
 18742
+to try and use a linker script where read-only data will be placed
mgl@1371
 18743
+in the same section as writable data. This can give great performance 
mgl@1371
 18744
+gain on cacheless processors where read-only data normally is placed in
mgl@1371
 18745
+flash, and writable data is placed in internal sram. This will however 
mgl@1371
 18746
+come at the expence of a larger memory footprint.
mgl@1371
 18747
+@end table
mgl@1371
 18748
+
mgl@1371
 18749
+@ifclear GENERIC
mgl@1371
 18750
+@lowersections
mgl@1371
 18751
+@end ifclear
mgl@1371
 18752
+@end ifset
mgl@1371
 18753
+
mgl@1371
 18754
 @ifset HPPA
mgl@1371
 18755
 @ifclear GENERIC
mgl@1371
 18756
 @raisesections
mgl@1371
 18757
--- a/ld/Makefile.am
mgl@1371
 18758
+++ b/ld/Makefile.am
mgl@1371
 18759
@@ -137,7 +137,34 @@ ALL_EMULATIONS = \
mgl@1371
 18760
 	eavr3.o \
mgl@1371
 18761
 	eavr4.o \
mgl@1371
 18762
 	eavr5.o \
mgl@1371
 18763
-	eavr6.o \
mgl@1371
 18764
+    eavr6.o \
mgl@1371
 18765
+	eavr32elf_ap7000.o \
mgl@1371
 18766
+	eavr32elf_ap7001.o \
mgl@1371
 18767
+	eavr32elf_ap7002.o \
mgl@1371
 18768
+	eavr32elf_ap7200.o \
mgl@1371
 18769
+	eavr32elf_uc3a0128.o \
mgl@1371
 18770
+	eavr32elf_uc3a0256.o \
mgl@1371
 18771
+	eavr32elf_uc3a0512.o \
mgl@1371
 18772
+	eavr32elf_uc3a0512es.o \
mgl@1371
 18773
+	eavr32elf_uc3a1128.o \
mgl@1371
 18774
+	eavr32elf_uc3a1256.o \
mgl@1371
 18775
+	eavr32elf_uc3a1512es.o \
mgl@1371
 18776
+	eavr32elf_uc3a1512.o \
mgl@1371
 18777
+	eavr32elf_uc3a364.o \
mgl@1371
 18778
+	eavr32elf_uc3a364s.o \
mgl@1371
 18779
+	eavr32elf_uc3a3128.o \
mgl@1371
 18780
+	eavr32elf_uc3a3128s.o \
mgl@1371
 18781
+	eavr32elf_uc3a3256.o \
mgl@1371
 18782
+	eavr32elf_uc3a3256s.o \
mgl@1371
 18783
+	eavr32elf_uc3b064.o \
mgl@1371
 18784
+	eavr32elf_uc3b0128.o \
mgl@1371
 18785
+	eavr32elf_uc3b0256es.o \
mgl@1371
 18786
+	eavr32elf_uc3b0256.o \
mgl@1371
 18787
+	eavr32elf_uc3b164.o \
mgl@1371
 18788
+	eavr32elf_uc3b1128.o \
mgl@1371
 18789
+	eavr32elf_uc3b1256es.o \
mgl@1371
 18790
+	eavr32elf_uc3b1256.o \
mgl@1371
 18791
+	eavr32linux.o \
mgl@1371
 18792
 	ecoff_i860.o \
mgl@1371
 18793
 	ecoff_sparc.o \
mgl@1371
 18794
 	eelf32_spu.o \
mgl@1371
 18795
@@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
mgl@1371
 18796
   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
mgl@1371
 18797
   ${GEN_DEPENDS}
mgl@1371
 18798
 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
mgl@1371
 18799
+eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18800
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18801
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18802
+	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
mgl@1371
 18803
+eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18804
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18805
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18806
+	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
mgl@1371
 18807
+eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18808
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18809
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18810
+	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
mgl@1371
 18811
+eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18812
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18813
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18814
+	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
mgl@1371
 18815
+eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18816
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18817
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18818
+	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
mgl@1371
 18819
+eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18820
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18821
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18822
+	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
mgl@1371
 18823
+eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18824
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18825
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18826
+	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
mgl@1371
 18827
+eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18828
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18829
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18830
+	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
mgl@1371
 18831
+eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18832
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18833
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18834
+	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
mgl@1371
 18835
+eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18836
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18837
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18838
+	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
mgl@1371
 18839
+eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18840
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18841
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18842
+	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
mgl@1371
 18843
+eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18844
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18845
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18846
+	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
mgl@1371
 18847
+eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18848
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18849
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18850
+	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
mgl@1371
 18851
+eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18852
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18853
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18854
+	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
mgl@1371
 18855
+eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18856
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18857
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18858
+	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
mgl@1371
 18859
+eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18860
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18861
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18862
+	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
mgl@1371
 18863
+eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18864
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18865
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18866
+	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
mgl@1371
 18867
+eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18868
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18869
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18870
+	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
mgl@1371
 18871
+eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18872
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18873
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18874
+	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
mgl@1371
 18875
+eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18876
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18877
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18878
+	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
mgl@1371
 18879
+eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18880
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18881
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18882
+	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
mgl@1371
 18883
+eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18884
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18885
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18886
+	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
mgl@1371
 18887
+eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18888
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18889
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18890
+	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
mgl@1371
 18891
+eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18892
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18893
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18894
+	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
mgl@1371
 18895
+eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18896
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18897
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18898
+	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
mgl@1371
 18899
+eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 18900
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18901
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 18902
+	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
mgl@1371
 18903
+eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
mgl@1371
 18904
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 18905
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
mgl@1371
 18906
+	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
mgl@1371
 18907
 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
mgl@1371
 18908
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
mgl@1371
 18909
 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
mgl@1371
 18910
@@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
mgl@1371
 18911
 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
mgl@1371
 18912
 	fi
mgl@1371
 18913
 
mgl@1371
 18914
-install-data-local:
mgl@1371
 18915
+# We want install to imply install-info as per GNU standards, despite the
mgl@1371
 18916
+# cygnus option.
mgl@1371
 18917
+install-data-local: install-info
mgl@1371
 18918
 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
mgl@1371
 18919
 	for f in ldscripts/*; do \
mgl@1371
 18920
 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
mgl@1371
 18921
--- /dev/null
mgl@1371
 18922
+++ b/ld/scripttempl/elf_xip.sc
mgl@1371
 18923
@@ -0,0 +1,456 @@
mgl@1371
 18924
+#
mgl@1371
 18925
+# Unusual variables checked by this code:
mgl@1371
 18926
+#	NOP - four byte opcode for no-op (defaults to 0)
mgl@1371
 18927
+#	NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
mgl@1371
 18928
+#		empty.
mgl@1371
 18929
+#	SMALL_DATA_CTOR - .ctors contains small data.
mgl@1371
 18930
+#	SMALL_DATA_DTOR - .dtors contains small data.
mgl@1371
 18931
+#	DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
mgl@1371
 18932
+#	INITIAL_READONLY_SECTIONS - at start of text segment
mgl@1371
 18933
+#	OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
mgl@1371
 18934
+#		(e.g., .PARISC.milli)
mgl@1371
 18935
+#	OTHER_TEXT_SECTIONS - these get put in .text when relocating
mgl@1371
 18936
+#	OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
mgl@1371
 18937
+#		(e.g., .PARISC.global)
mgl@1371
 18938
+#	OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
mgl@1371
 18939
+#		(e.g. PPC32 .fixup, .got[12])
mgl@1371
 18940
+#	OTHER_BSS_SECTIONS - other than .bss .sbss ...
mgl@1371
 18941
+#	OTHER_SECTIONS - at the end
mgl@1371
 18942
+#	EXECUTABLE_SYMBOLS - symbols that must be defined for an
mgl@1371
 18943
+#		executable (e.g., _DYNAMIC_LINK)
mgl@1371
 18944
+#       TEXT_START_ADDR - the first byte of the text segment, after any
mgl@1371
 18945
+#               headers.
mgl@1371
 18946
+#       TEXT_BASE_ADDRESS - the first byte of the text segment.
mgl@1371
 18947
+#	TEXT_START_SYMBOLS - symbols that appear at the start of the
mgl@1371
 18948
+#		.text section.
mgl@1371
 18949
+#	DATA_START_SYMBOLS - symbols that appear at the start of the
mgl@1371
 18950
+#		.data section.
mgl@1371
 18951
+#	OTHER_GOT_SYMBOLS - symbols defined just before .got.
mgl@1371
 18952
+#	OTHER_GOT_SECTIONS - sections just after .got.
mgl@1371
 18953
+#	OTHER_SDATA_SECTIONS - sections just after .sdata.
mgl@1371
 18954
+#	OTHER_BSS_SYMBOLS - symbols that appear at the start of the
mgl@1371
 18955
+#		.bss section besides __bss_start.
mgl@1371
 18956
+#	DATA_PLT - .plt should be in data segment, not text segment.
mgl@1371
 18957
+#	PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
mgl@1371
 18958
+#	BSS_PLT - .plt should be in bss segment
mgl@1371
 18959
+#	TEXT_DYNAMIC - .dynamic in text segment, not data segment.
mgl@1371
 18960
+#	EMBEDDED - whether this is for an embedded system.
mgl@1371
 18961
+#	SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
mgl@1371
 18962
+#		start address of shared library.
mgl@1371
 18963
+#	INPUT_FILES - INPUT command of files to always include
mgl@1371
 18964
+#	WRITABLE_RODATA - if set, the .rodata section should be writable
mgl@1371
 18965
+#	INIT_START, INIT_END -  statements just before and just after
mgl@1371
 18966
+# 	combination of .init sections.
mgl@1371
 18967
+#	FINI_START, FINI_END - statements just before and just after
mgl@1371
 18968
+# 	combination of .fini sections.
mgl@1371
 18969
+#	STACK_ADDR - start of a .stack section.
mgl@1371
 18970
+#	OTHER_END_SYMBOLS - symbols to place right at the end of the script.
mgl@1371
 18971
+#	SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
mgl@1371
 18972
+#		so that .got can be in the RELRO area.  It should be set to
mgl@1371
 18973
+#		the number of bytes in the beginning of .got.plt which can be
mgl@1371
 18974
+#		in the RELRO area as well.
mgl@1371
 18975
+#
mgl@1371
 18976
+# When adding sections, do note that the names of some sections are used
mgl@1371
 18977
+# when specifying the start address of the next.
mgl@1371
 18978
+#
mgl@1371
 18979
+
mgl@1371
 18980
+#  Many sections come in three flavours.  There is the 'real' section,
mgl@1371
 18981
+#  like ".data".  Then there are the per-procedure or per-variable
mgl@1371
 18982
+#  sections, generated by -ffunction-sections and -fdata-sections in GCC,
mgl@1371
 18983
+#  and useful for --gc-sections, which for a variable "foo" might be
mgl@1371
 18984
+#  ".data.foo".  Then there are the linkonce sections, for which the linker
mgl@1371
 18985
+#  eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
mgl@1371
 18986
+#  The exact correspondences are:
mgl@1371
 18987
+#
mgl@1371
 18988
+#  Section	Linkonce section
mgl@1371
 18989
+#  .text	.gnu.linkonce.t.foo
mgl@1371
 18990
+#  .rodata	.gnu.linkonce.r.foo
mgl@1371
 18991
+#  .data	.gnu.linkonce.d.foo
mgl@1371
 18992
+#  .bss		.gnu.linkonce.b.foo
mgl@1371
 18993
+#  .sdata	.gnu.linkonce.s.foo
mgl@1371
 18994
+#  .sbss	.gnu.linkonce.sb.foo
mgl@1371
 18995
+#  .sdata2	.gnu.linkonce.s2.foo
mgl@1371
 18996
+#  .sbss2	.gnu.linkonce.sb2.foo
mgl@1371
 18997
+#  .debug_info	.gnu.linkonce.wi.foo
mgl@1371
 18998
+#  .tdata	.gnu.linkonce.td.foo
mgl@1371
 18999
+#  .tbss	.gnu.linkonce.tb.foo
mgl@1371
 19000
+#
mgl@1371
 19001
+#  Each of these can also have corresponding .rel.* and .rela.* sections.
mgl@1371
 19002
+
mgl@1371
 19003
+test -z "$ENTRY" && ENTRY=_start
mgl@1371
 19004
+test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
mgl@1371
 19005
+test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
mgl@1371
 19006
+if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
mgl@1371
 19007
+test -z "${ELFSIZE}" && ELFSIZE=32
mgl@1371
 19008
+test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
mgl@1371
 19009
+test "$LD_FLAG" = "N" && DATA_ADDR=.
mgl@1371
 19010
+test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
mgl@1371
 19011
+test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
mgl@1371
 19012
+test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
mgl@1371
 19013
+if test -n "$RELOCATING"; then
mgl@1371
 19014
+  RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
mgl@1371
 19015
+  RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
mgl@1371
 19016
+else
mgl@1371
 19017
+  RO_REGION=""
mgl@1371
 19018
+  RW_REGION=""
mgl@1371
 19019
+fi
mgl@1371
 19020
+INTERP=".interp       ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
mgl@1371
 19021
+PLT=".plt          ${RELOCATING-0} : { *(.plt) }"
mgl@1371
 19022
+if test -z "$GOT"; then
mgl@1371
 19023
+  if test -z "$SEPARATE_GOTPLT"; then
mgl@1371
 19024
+    GOT=".got          ${RELOCATING-0} : { *(.got.plt) *(.got) }"
mgl@1371
 19025
+  else
mgl@1371
 19026
+    GOT=".got          ${RELOCATING-0} : { *(.got) }"
mgl@1371
 19027
+    GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
mgl@1371
 19028
+  .got.plt      ${RELOCATING-0} : { *(.got.plt) }"
mgl@1371
 19029
+  fi
mgl@1371
 19030
+fi
mgl@1371
 19031
+DALIGN=".dalign	: { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
mgl@1371
 19032
+BALIGN=".balign	: { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
mgl@1371
 19033
+DYNAMIC=".dynamic      ${RELOCATING-0} : { *(.dynamic) }"
mgl@1371
 19034
+RODATA=".rodata       ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
mgl@1371
 19035
+DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
mgl@1371
 19036
+STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
mgl@1371
 19037
+if test -z "${NO_SMALL_DATA}"; then
mgl@1371
 19038
+  SBSS=".sbss         ${RELOCATING-0} :
mgl@1371
 19039
+  {
mgl@1371
 19040
+    ${RELOCATING+PROVIDE (__sbss_start = .);}
mgl@1371
 19041
+    ${RELOCATING+PROVIDE (___sbss_start = .);}
mgl@1371
 19042
+    ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
mgl@1371
 19043
+    *(.dynsbss)
mgl@1371
 19044
+    *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
mgl@1371
 19045
+    *(.scommon)
mgl@1371
 19046
+    ${RELOCATING+PROVIDE (__sbss_end = .);}
mgl@1371
 19047
+    ${RELOCATING+PROVIDE (___sbss_end = .);}
mgl@1371
 19048
+  }${RW_REGION}"
mgl@1371
 19049
+  SBSS2=".sbss2        ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
mgl@1371
 19050
+  SDATA="/* We want the small data sections together, so single-instruction offsets
mgl@1371
 19051
+     can access them all, and initialized data all before uninitialized, so
mgl@1371
 19052
+     we can shorten the on-disk segment size.  */
mgl@1371
 19053
+  .sdata        ${RELOCATING-0} :
mgl@1371
 19054
+  {
mgl@1371
 19055
+    ${RELOCATING+${SDATA_START_SYMBOLS}}
mgl@1371
 19056
+    ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
mgl@1371
 19057
+    *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
mgl@1371
 19058
+  }${RW_REGION}"
mgl@1371
 19059
+  SDATA2=".sdata2       ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
mgl@1371
 19060
+  REL_SDATA=".rel.sdata    ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
mgl@1371
 19061
+  .rela.sdata   ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
mgl@1371
 19062
+  REL_SBSS=".rel.sbss     ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
mgl@1371
 19063
+  .rela.sbss    ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
mgl@1371
 19064
+  REL_SDATA2=".rel.sdata2   ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
mgl@1371
 19065
+  .rela.sdata2  ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
mgl@1371
 19066
+  REL_SBSS2=".rel.sbss2    ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
mgl@1371
 19067
+  .rela.sbss2   ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
mgl@1371
 19068
+else
mgl@1371
 19069
+  NO_SMALL_DATA=" "
mgl@1371
 19070
+fi
mgl@1371
 19071
+test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
mgl@1371
 19072
+CTOR=".ctors        ${CONSTRUCTING-0} :
mgl@1371
 19073
+  {
mgl@1371
 19074
+    ${CONSTRUCTING+${CTOR_START}}
mgl@1371
 19075
+    /* gcc uses crtbegin.o to find the start of
mgl@1371
 19076
+       the constructors, so we make sure it is
mgl@1371
 19077
+       first.  Because this is a wildcard, it
mgl@1371
 19078
+       doesn't matter if the user does not
mgl@1371
 19079
+       actually link against crtbegin.o; the
mgl@1371
 19080
+       linker won't look for a file to match a
mgl@1371
 19081
+       wildcard.  The wildcard also means that it
mgl@1371
 19082
+       doesn't matter which directory crtbegin.o
mgl@1371
 19083
+       is in.  */
mgl@1371
 19084
+
mgl@1371
 19085
+    KEEP (*crtbegin*.o(.ctors))
mgl@1371
 19086
+
mgl@1371
 19087
+    /* We don't want to include the .ctor section from
mgl@1371
 19088
+       from the crtend.o file until after the sorted ctors.
mgl@1371
 19089
+       The .ctor section from the crtend file contains the
mgl@1371
 19090
+       end of ctors marker and it must be last */
mgl@1371
 19091
+
mgl@1371
 19092
+    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
mgl@1371
 19093
+    KEEP (*(SORT(.ctors.*)))
mgl@1371
 19094
+    KEEP (*(.ctors))
mgl@1371
 19095
+    ${CONSTRUCTING+${CTOR_END}}
mgl@1371
 19096
+  }"
mgl@1371
 19097
+DTOR=".dtors        ${CONSTRUCTING-0} :
mgl@1371
 19098
+  {
mgl@1371
 19099
+    ${CONSTRUCTING+${DTOR_START}}
mgl@1371
 19100
+    KEEP (*crtbegin*.o(.dtors))
mgl@1371
 19101
+    KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
mgl@1371
 19102
+    KEEP (*(SORT(.dtors.*)))
mgl@1371
 19103
+    KEEP (*(.dtors))
mgl@1371
 19104
+    ${CONSTRUCTING+${DTOR_END}}
mgl@1371
 19105
+  }"
mgl@1371
 19106
+STACK=".stack        ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
mgl@1371
 19107
+  {
mgl@1371
 19108
+    ${RELOCATING+_stack = .;}
mgl@1371
 19109
+    *(.stack)
mgl@1371
 19110
+    ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
mgl@1371
 19111
+    ${RELOCATING+_estack = .;}
mgl@1371
 19112
+  }${RW_REGION}"
mgl@1371
 19113
+
mgl@1371
 19114
+# if this is for an embedded system, don't add SIZEOF_HEADERS.
mgl@1371
 19115
+if [ -z "$EMBEDDED" ]; then
mgl@1371
 19116
+   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
mgl@1371
 19117
+else
mgl@1371
 19118
+   test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
mgl@1371
 19119
+fi
mgl@1371
 19120
+
mgl@1371
 19121
+cat <<EOF
mgl@1371
 19122
+OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
mgl@1371
 19123
+	      "${LITTLE_OUTPUT_FORMAT}")
mgl@1371
 19124
+OUTPUT_ARCH(${OUTPUT_ARCH})
mgl@1371
 19125
+ENTRY(${ENTRY})
mgl@1371
 19126
+
mgl@1371
 19127
+${RELOCATING+${LIB_SEARCH_DIRS}}
mgl@1371
 19128
+${RELOCATING+/* Do we need any of these for elf?
mgl@1371
 19129
+   __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}}  */}
mgl@1371
 19130
+${RELOCATING+${EXECUTABLE_SYMBOLS}}
mgl@1371
 19131
+${RELOCATING+${INPUT_FILES}}
mgl@1371
 19132
+${RELOCATING- /* For some reason, the Solaris linker makes bad executables
mgl@1371
 19133
+  if gld -r is used and the intermediate file has sections starting
mgl@1371
 19134
+  at non-zero addresses.  Could be a Solaris ld bug, could be a GNU ld
mgl@1371
 19135
+  bug.  But for now assigning the zero vmas works.  */}
mgl@1371
 19136
+
mgl@1371
 19137
+${RELOCATING+${MEMORY}}
mgl@1371
 19138
+
mgl@1371
 19139
+SECTIONS
mgl@1371
 19140
+{
mgl@1371
 19141
+  /* Read-only sections, merged into text segment: */
mgl@1371
 19142
+  ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
mgl@1371
 19143
+  ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
mgl@1371
 19144
+  ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
mgl@1371
 19145
+  ${CREATE_SHLIB-${INTERP}}
mgl@1371
 19146
+  ${INITIAL_READONLY_SECTIONS}
mgl@1371
 19147
+  ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
mgl@1371
 19148
+  .hash         ${RELOCATING-0} : { *(.hash) }${RO_REGION}
mgl@1371
 19149
+  .dynsym       ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
mgl@1371
 19150
+  .dynstr       ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
mgl@1371
 19151
+  .gnu.version  ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
mgl@1371
 19152
+  .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
mgl@1371
 19153
+  .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
mgl@1371
 19154
+
mgl@1371
 19155
+EOF
mgl@1371
 19156
+if [ "x$COMBRELOC" = x ]; then
mgl@1371
 19157
+  COMBRELOCCAT=cat
mgl@1371
 19158
+else
mgl@1371
 19159
+  COMBRELOCCAT="cat > $COMBRELOC"
mgl@1371
 19160
+fi
mgl@1371
 19161
+eval $COMBRELOCCAT <<EOF
mgl@1371
 19162
+  .rel.init     ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
mgl@1371
 19163
+  .rela.init    ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
mgl@1371
 19164
+  .rel.text     ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
mgl@1371
 19165
+  .rela.text    ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
mgl@1371
 19166
+  .rel.fini     ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
mgl@1371
 19167
+  .rela.fini    ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
mgl@1371
 19168
+  .rel.rodata   ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
mgl@1371
 19169
+  .rela.rodata  ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
mgl@1371
 19170
+  ${OTHER_READONLY_RELOC_SECTIONS}
mgl@1371
 19171
+  .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
mgl@1371
 19172
+  .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
mgl@1371
 19173
+  .rel.data     ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
mgl@1371
 19174
+  .rela.data    ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
mgl@1371
 19175
+  .rel.tdata	${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
mgl@1371
 19176
+  .rela.tdata	${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
mgl@1371
 19177
+  .rel.tbss	${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
mgl@1371
 19178
+  .rela.tbss	${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
mgl@1371
 19179
+  .rel.ctors    ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
mgl@1371
 19180
+  .rela.ctors   ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
mgl@1371
 19181
+  .rel.dtors    ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
mgl@1371
 19182
+  .rela.dtors   ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
mgl@1371
 19183
+  .rel.got      ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
mgl@1371
 19184
+  .rela.got     ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
mgl@1371
 19185
+  ${OTHER_GOT_RELOC_SECTIONS}
mgl@1371
 19186
+  ${REL_SDATA}
mgl@1371
 19187
+  ${REL_SBSS}
mgl@1371
 19188
+  ${REL_SDATA2}
mgl@1371
 19189
+  ${REL_SBSS2}
mgl@1371
 19190
+  .rel.bss      ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
mgl@1371
 19191
+  .rela.bss     ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
mgl@1371
 19192
+EOF
mgl@1371
 19193
+if [ -n "$COMBRELOC" ]; then
mgl@1371
 19194
+cat <<EOF
mgl@1371
 19195
+  .rel.dyn      ${RELOCATING-0} :
mgl@1371
 19196
+    {
mgl@1371
 19197
+EOF
mgl@1371
 19198
+sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/      \1/' $COMBRELOC
mgl@1371
 19199
+cat <<EOF
mgl@1371
 19200
+    }${RO_REGION}
mgl@1371
 19201
+  .rela.dyn     ${RELOCATING-0} :
mgl@1371
 19202
+    {
mgl@1371
 19203
+EOF
mgl@1371
 19204
+sed -e '/^[ 	]*[{}][ 	]*$/d;/:[ 	]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/      \1/' $COMBRELOC
mgl@1371
 19205
+cat <<EOF
mgl@1371
 19206
+    }${RO_REGION}
mgl@1371
 19207
+EOF
mgl@1371
 19208
+fi
mgl@1371
 19209
+cat <<EOF
mgl@1371
 19210
+  .rel.plt      ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
mgl@1371
 19211
+  .rela.plt     ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
mgl@1371
 19212
+  ${OTHER_PLT_RELOC_SECTIONS}
mgl@1371
 19213
+
mgl@1371
 19214
+  .init         ${RELOCATING-0} :
mgl@1371
 19215
+  {
mgl@1371
 19216
+    ${RELOCATING+${INIT_START}}
mgl@1371
 19217
+    KEEP (*(.init))
mgl@1371
 19218
+    ${RELOCATING+${INIT_END}}
mgl@1371
 19219
+  }${RO_REGION} =${NOP-0}
mgl@1371
 19220
+
mgl@1371
 19221
+  ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
mgl@1371
 19222
+  .text         ${RELOCATING-0} :
mgl@1371
 19223
+  {
mgl@1371
 19224
+    ${RELOCATING+${TEXT_START_SYMBOLS}}
mgl@1371
 19225
+    *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
mgl@1371
 19226
+    KEEP (*(.text.*personality*))
mgl@1371
 19227
+    /* .gnu.warning sections are handled specially by elf32.em.  */
mgl@1371
 19228
+    *(.gnu.warning)
mgl@1371
 19229
+    ${RELOCATING+${OTHER_TEXT_SECTIONS}}
mgl@1371
 19230
+  }${RO_REGION} =${NOP-0}
mgl@1371
 19231
+  .fini         ${RELOCATING-0} :
mgl@1371
 19232
+  {
mgl@1371
 19233
+    ${RELOCATING+${FINI_START}}
mgl@1371
 19234
+    KEEP (*(.fini))
mgl@1371
 19235
+    ${RELOCATING+${FINI_END}}
mgl@1371
 19236
+  }${RO_REGION} =${NOP-0}
mgl@1371
 19237
+  ${RELOCATING+PROVIDE (__etext = .);}
mgl@1371
 19238
+  ${RELOCATING+PROVIDE (_etext = .);}
mgl@1371
 19239
+  ${RELOCATING+PROVIDE (etext = .);}
mgl@1371
 19240
+  ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
mgl@1371
 19241
+  .rodata1      ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
mgl@1371
 19242
+  ${CREATE_SHLIB-${SDATA2}}
mgl@1371
 19243
+  ${CREATE_SHLIB-${SBSS2}}
mgl@1371
 19244
+  ${OTHER_READONLY_SECTIONS}
mgl@1371
 19245
+  .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
mgl@1371
 19246
+  .eh_frame     ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
mgl@1371
 19247
+  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
mgl@1371
 19248
+
mgl@1371
 19249
+  ${RELOCATING+${DALIGN}}
mgl@1371
 19250
+  ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
mgl@1371
 19251
+  . = ORIGIN(${RW_VMA_REGION});
mgl@1371
 19252
+  /* Exception handling  */
mgl@1371
 19253
+  .eh_frame     ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
mgl@1371
 19254
+  .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
mgl@1371
 19255
+
mgl@1371
 19256
+  /* Thread Local Storage sections  */
mgl@1371
 19257
+  .tdata	${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
mgl@1371
 19258
+  .tbss		${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
mgl@1371
 19259
+
mgl@1371
 19260
+  /* Ensure the __preinit_array_start label is properly aligned.  We
mgl@1371
 19261
+     could instead move the label definition inside the section, but
mgl@1371
 19262
+     the linker would then create the section even if it turns out to
mgl@1371
 19263
+     be empty, which isn't pretty.  */
mgl@1371
 19264
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
mgl@1371
 19265
+  .preinit_array   ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
mgl@1371
 19266
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
mgl@1371
 19267
+
mgl@1371
 19268
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
mgl@1371
 19269
+  .init_array   ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
mgl@1371
 19270
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
mgl@1371
 19271
+
mgl@1371
 19272
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
mgl@1371
 19273
+  .fini_array   ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
mgl@1371
 19274
+  ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
mgl@1371
 19275
+
mgl@1371
 19276
+  ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
mgl@1371
 19277
+  ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
mgl@1371
 19278
+  .jcr          ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
mgl@1371
 19279
+
mgl@1371
 19280
+  ${RELOCATING+${DATARELRO}}
mgl@1371
 19281
+  ${OTHER_RELRO_SECTIONS}
mgl@1371
 19282
+  ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
mgl@1371
 19283
+  ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
mgl@1371
 19284
+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
mgl@1371
 19285
+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
mgl@1371
 19286
+  ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
mgl@1371
 19287
+  ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
mgl@1371
 19288
+
mgl@1371
 19289
+  ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
mgl@1371
 19290
+
mgl@1371
 19291
+  .data         ${RELOCATING-0} :
mgl@1371
 19292
+  {
mgl@1371
 19293
+    ${RELOCATING+${DATA_START_SYMBOLS}}
mgl@1371
 19294
+    *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
mgl@1371
 19295
+    KEEP (*(.gnu.linkonce.d.*personality*))
mgl@1371
 19296
+    ${CONSTRUCTING+SORT(CONSTRUCTORS)}
mgl@1371
 19297
+  }${RW_REGION}
mgl@1371
 19298
+  .data1        ${RELOCATING-0} : { *(.data1) }${RW_REGION}
mgl@1371
 19299
+  ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
mgl@1371
 19300
+  ${OTHER_READWRITE_SECTIONS}
mgl@1371
 19301
+  ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
mgl@1371
 19302
+  ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
mgl@1371
 19303
+  ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
mgl@1371
 19304
+  ${RELOCATING+${OTHER_GOT_SYMBOLS}}
mgl@1371
 19305
+  ${NO_SMALL_DATA-${GOT}${RW_REGION}}
mgl@1371
 19306
+  ${OTHER_GOT_SECTIONS}
mgl@1371
 19307
+  ${SDATA}
mgl@1371
 19308
+  ${OTHER_SDATA_SECTIONS}
mgl@1371
 19309
+  ${RELOCATING+${BALIGN}}
mgl@1371
 19310
+  ${RELOCATING+_edata = .;}
mgl@1371
 19311
+  ${RELOCATING+PROVIDE (edata = .);}
mgl@1371
 19312
+  ${RELOCATING+__bss_start = .;}
mgl@1371
 19313
+  ${RELOCATING+${OTHER_BSS_SYMBOLS}}
mgl@1371
 19314
+  ${SBSS}
mgl@1371
 19315
+  ${BSS_PLT+${PLT}${RW_REGION}}
mgl@1371
 19316
+  .bss          ${RELOCATING-0} :
mgl@1371
 19317
+  {
mgl@1371
 19318
+   *(.dynbss)
mgl@1371
 19319
+   *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
mgl@1371
 19320
+   *(COMMON)
mgl@1371
 19321
+   /* Align here to ensure that the .bss section occupies space up to
mgl@1371
 19322
+      _end.  Align after .bss to ensure correct alignment even if the
mgl@1371
 19323
+      .bss section disappears because there are no input sections.  */
mgl@1371
 19324
+   ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
mgl@1371
 19325
+  }${RW_REGION}
mgl@1371
 19326
+  ${OTHER_BSS_SECTIONS}
mgl@1371
 19327
+  ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
mgl@1371
 19328
+  ${RELOCATING+_end = .;}
mgl@1371
 19329
+  ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
mgl@1371
 19330
+  ${RELOCATING+PROVIDE (end = .);}
mgl@1371
 19331
+  ${RELOCATING+${DATA_SEGMENT_END}}
mgl@1371
 19332
+
mgl@1371
 19333
+  /* Stabs debugging sections.  */
mgl@1371
 19334
+  .stab          0 : { *(.stab) }
mgl@1371
 19335
+  .stabstr       0 : { *(.stabstr) }
mgl@1371
 19336
+  .stab.excl     0 : { *(.stab.excl) }
mgl@1371
 19337
+  .stab.exclstr  0 : { *(.stab.exclstr) }
mgl@1371
 19338
+  .stab.index    0 : { *(.stab.index) }
mgl@1371
 19339
+  .stab.indexstr 0 : { *(.stab.indexstr) }
mgl@1371
 19340
+
mgl@1371
 19341
+  .comment       0 : { *(.comment) }
mgl@1371
 19342
+
mgl@1371
 19343
+  /* DWARF debug sections.
mgl@1371
 19344
+     Symbols in the DWARF debugging sections are relative to the beginning
mgl@1371
 19345
+     of the section so we begin them at 0.  */
mgl@1371
 19346
+
mgl@1371
 19347
+  /* DWARF 1 */
mgl@1371
 19348
+  .debug          0 : { *(.debug) }
mgl@1371
 19349
+  .line           0 : { *(.line) }
mgl@1371
 19350
+
mgl@1371
 19351
+  /* GNU DWARF 1 extensions */
mgl@1371
 19352
+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
mgl@1371
 19353
+  .debug_sfnames  0 : { *(.debug_sfnames) }
mgl@1371
 19354
+
mgl@1371
 19355
+  /* DWARF 1.1 and DWARF 2 */
mgl@1371
 19356
+  .debug_aranges  0 : { *(.debug_aranges) }
mgl@1371
 19357
+  .debug_pubnames 0 : { *(.debug_pubnames) }
mgl@1371
 19358
+
mgl@1371
 19359
+  /* DWARF 2 */
mgl@1371
 19360
+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
mgl@1371
 19361
+  .debug_abbrev   0 : { *(.debug_abbrev) }
mgl@1371
 19362
+  .debug_line     0 : { *(.debug_line) }
mgl@1371
 19363
+  .debug_frame    0 : { *(.debug_frame) }
mgl@1371
 19364
+  .debug_str      0 : { *(.debug_str) }
mgl@1371
 19365
+  .debug_loc      0 : { *(.debug_loc) }
mgl@1371
 19366
+  .debug_macinfo  0 : { *(.debug_macinfo) }
mgl@1371
 19367
+
mgl@1371
 19368
+  /* SGI/MIPS DWARF 2 extensions */
mgl@1371
 19369
+  .debug_weaknames 0 : { *(.debug_weaknames) }
mgl@1371
 19370
+  .debug_funcnames 0 : { *(.debug_funcnames) }
mgl@1371
 19371
+  .debug_typenames 0 : { *(.debug_typenames) }
mgl@1371
 19372
+  .debug_varnames  0 : { *(.debug_varnames) }
mgl@1371
 19373
+
mgl@1371
 19374
+  ${STACK_ADDR+${STACK}}
mgl@1371
 19375
+  ${OTHER_SECTIONS}
mgl@1371
 19376
+  ${RELOCATING+${OTHER_END_SYMBOLS}}
mgl@1371
 19377
+  ${RELOCATING+${STACKNOTE}}
mgl@1371
 19378
+}
mgl@1371
 19379
+EOF
mgl@1371
 19380
--- /dev/null
mgl@1371
 19381
+++ b/ld/testsuite/ld-avr32/avr32.exp
mgl@1371
 19382
@@ -0,0 +1,25 @@
mgl@1371
 19383
+# Expect script for AVR32 ELF linker tests.
mgl@1371
 19384
+#   Copyright 2004-2006 Atmel Corporation.
mgl@1371
 19385
+#
mgl@1371
 19386
+# This file is free software; you can redistribute it and/or modify
mgl@1371
 19387
+# it under the terms of the GNU General Public License as published by
mgl@1371
 19388
+# the Free Software Foundation; either version 2 of the License, or
mgl@1371
 19389
+# (at your option) any later version.
mgl@1371
 19390
+#
mgl@1371
 19391
+# This program is distributed in the hope that it will be useful,
mgl@1371
 19392
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 19393
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 19394
+# GNU General Public License for more details.
mgl@1371
 19395
+#
mgl@1371
 19396
+# You should have received a copy of the GNU General Public License
mgl@1371
 19397
+# along with this program; if not, write to the Free Software
mgl@1371
 19398
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
mgl@1371
 19399
+#
mgl@1371
 19400
+# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
mgl@1371
 19401
+#
mgl@1371
 19402
+
mgl@1371
 19403
+if ![istarget avr32-*-*] {
mgl@1371
 19404
+    return
mgl@1371
 19405
+}
mgl@1371
 19406
+
mgl@1371
 19407
+run_dump_test "pcrel"
mgl@1371
 19408
--- /dev/null
mgl@1371
 19409
+++ b/ld/testsuite/ld-avr32/pcrel.d
mgl@1371
 19410
@@ -0,0 +1,74 @@
mgl@1371
 19411
+#name: AVR32 ELF PC-relative external relocs
mgl@1371
 19412
+#source: symbols.s
mgl@1371
 19413
+#source: ../../../gas/testsuite/gas/avr32/pcrel.s
mgl@1371
 19414
+#ld: -T $srcdir/$subdir/pcrel.ld
mgl@1371
 19415
+#objdump: -d
mgl@1371
 19416
+
mgl@1371
 19417
+.*:     file format elf.*avr32.*
mgl@1371
 19418
+
mgl@1371
 19419
+Disassembly of section .text:
mgl@1371
 19420
+
mgl@1371
 19421
+a0000000 <_start>:
mgl@1371
 19422
+a0000000:	d7 03       	nop
mgl@1371
 19423
+a0000002:	d7 03       	nop
mgl@1371
 19424
+
mgl@1371
 19425
+a0000004 <test_rjmp>:
mgl@1371
 19426
+a0000004:	d7 03       	nop
mgl@1371
 19427
+a0000006:	c0 28       	rjmp a000000a <test_rjmp\+0x6>
mgl@1371
 19428
+a0000008:	d7 03       	nop
mgl@1371
 19429
+a000000a:	e0 8f 01 fb 	bral a0000400 <extsym10>
mgl@1371
 19430
+
mgl@1371
 19431
+a000000e <test_rcall>:
mgl@1371
 19432
+a000000e:	d7 03       	nop
mgl@1371
 19433
+a0000010 <test_rcall2>:
mgl@1371
 19434
+a0000010:	c0 2c       	rcall a0000014 <test_rcall2\+0x4>
mgl@1371
 19435
+a0000012:	d7 03       	nop
mgl@1371
 19436
+a0000014:	ee b0 ff f6 	rcall a0200000 <extsym21>
mgl@1371
 19437
+
mgl@1371
 19438
+a0000018 <test_branch>:
mgl@1371
 19439
+a0000018:	c0 31       	brne a000001e <test_branch\+0x6>
mgl@1371
 19440
+a000001a:	fe 9f ff ff 	bral a0000018 <test_branch>
mgl@1371
 19441
+a000001e:	ee 90 ff f1 	breq a0200000 <extsym21>
mgl@1371
 19442
+
mgl@1371
 19443
+a0000022 <test_lddpc>:
mgl@1371
 19444
+a0000022:	48 30       	lddpc r0,a000002c <sym1>
mgl@1371
 19445
+a0000024:	48 20       	lddpc r0,a000002c <sym1>
mgl@1371
 19446
+a0000026:	fe f0 7f da 	ld.w r0,pc\[32730\]
mgl@1371
 19447
+	...
mgl@1371
 19448
+
mgl@1371
 19449
+a000002c <sym1>:
mgl@1371
 19450
+a000002c:	d7 03       	nop
mgl@1371
 19451
+a000002e:	d7 03       	nop
mgl@1371
 19452
+
mgl@1371
 19453
+a0000030 <test_local>:
mgl@1371
 19454
+a0000030:	48 20       	lddpc r0,a0000038 <test_local\+0x8>
mgl@1371
 19455
+a0000032:	48 30       	lddpc r0,a000003c <test_local\+0xc>
mgl@1371
 19456
+a0000034:	48 20       	lddpc r0,a000003c <test_local\+0xc>
mgl@1371
 19457
+a0000036:	00 00       	add r0,r0
mgl@1371
 19458
+a0000038:	d7 03       	nop
mgl@1371
 19459
+a000003a:	d7 03       	nop
mgl@1371
 19460
+a000003c:	d7 03       	nop
mgl@1371
 19461
+a000003e:	d7 03       	nop
mgl@1371
 19462
+
mgl@1371
 19463
+Disassembly of section \.text\.init:
mgl@1371
 19464
+a0000040 <test_inter_section>:
mgl@1371
 19465
+a0000040:	fe b0 ff e7 	rcall a000000e <test_rcall>
mgl@1371
 19466
+a0000044:	d7 03       	nop
mgl@1371
 19467
+a0000046:	fe b0 ff e4 	rcall a000000e <test_rcall>
mgl@1371
 19468
+a000004a:	fe b0 ff e3 	rcall a0000010 <test_rcall2>
mgl@1371
 19469
+a000004e:	d7 03       	nop
mgl@1371
 19470
+a0000050:	fe b0 ff e0 	rcall a0000010 <test_rcall2>
mgl@1371
 19471
+
mgl@1371
 19472
+Disassembly of section \.text\.pcrel10:
mgl@1371
 19473
+
mgl@1371
 19474
+a0000400 <extsym10>:
mgl@1371
 19475
+a0000400:	d7 03       	nop
mgl@1371
 19476
+
mgl@1371
 19477
+Disassembly of section \.text\.pcrel16:
mgl@1371
 19478
+
mgl@1371
 19479
+a0008000 <extsym16>:
mgl@1371
 19480
+a0008000:	d7 03       	nop
mgl@1371
 19481
+
mgl@1371
 19482
+Disassembly of section \.text\.pcrel21:
mgl@1371
 19483
+a0200000 <extsym21>:
mgl@1371
 19484
+a0200000:	d7 03       	nop
mgl@1371
 19485
--- /dev/null
mgl@1371
 19486
+++ b/ld/testsuite/ld-avr32/pcrel.ld
mgl@1371
 19487
@@ -0,0 +1,23 @@
mgl@1371
 19488
+ENTRY(_start)
mgl@1371
 19489
+SECTIONS
mgl@1371
 19490
+{
mgl@1371
 19491
+	.text 0xa0000000:
mgl@1371
 19492
+	{
mgl@1371
 19493
+		*(.text)
mgl@1371
 19494
+	}
mgl@1371
 19495
+
mgl@1371
 19496
+	.text.pcrel10 0xa0000400:
mgl@1371
 19497
+	{
mgl@1371
 19498
+		*(.text.pcrel10)
mgl@1371
 19499
+	}
mgl@1371
 19500
+
mgl@1371
 19501
+	.text.pcrel16 0xa0008000:
mgl@1371
 19502
+	{
mgl@1371
 19503
+		*(.text.pcrel16)
mgl@1371
 19504
+	}
mgl@1371
 19505
+
mgl@1371
 19506
+	.text.pcrel21 0xa0200000:
mgl@1371
 19507
+	{
mgl@1371
 19508
+		*(.text.pcrel21)
mgl@1371
 19509
+	}
mgl@1371
 19510
+}
mgl@1371
 19511
--- /dev/null
mgl@1371
 19512
+++ b/ld/testsuite/ld-avr32/symbols.s
mgl@1371
 19513
@@ -0,0 +1,20 @@
mgl@1371
 19514
+	.text
mgl@1371
 19515
+	.global _start
mgl@1371
 19516
+_start:
mgl@1371
 19517
+	nop
mgl@1371
 19518
+	nop
mgl@1371
 19519
+
mgl@1371
 19520
+	.section .text.pcrel10,"ax"
mgl@1371
 19521
+	.global extsym10
mgl@1371
 19522
+extsym10:
mgl@1371
 19523
+	nop
mgl@1371
 19524
+
mgl@1371
 19525
+	.section .text.pcrel16,"ax"
mgl@1371
 19526
+	.global extsym16
mgl@1371
 19527
+extsym16:
mgl@1371
 19528
+	nop
mgl@1371
 19529
+
mgl@1371
 19530
+	.section .text.pcrel21,"ax"
mgl@1371
 19531
+	.global extsym21
mgl@1371
 19532
+extsym21:
mgl@1371
 19533
+	nop
mgl@1371
 19534
--- /dev/null
mgl@1371
 19535
+++ b/opcodes/avr32-asm.c
mgl@1371
 19536
@@ -0,0 +1,264 @@
mgl@1371
 19537
+/* Assembler interface for AVR32.
mgl@1371
 19538
+   Copyright 2005, 2006 Atmel Corporation.
mgl@1371
 19539
+
mgl@1371
 19540
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 19541
+
mgl@1371
 19542
+   This file is part of libopcodes.
mgl@1371
 19543
+
mgl@1371
 19544
+   This program is free software; you can redistribute it and/or
mgl@1371
 19545
+   modify it under the terms of the GNU General Public License as
mgl@1371
 19546
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 19547
+   License, or (at your option) any later version.
mgl@1371
 19548
+
mgl@1371
 19549
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 19550
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 19551
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 19552
+   General Public License for more details.
mgl@1371
 19553
+
mgl@1371
 19554
+   You should have received a copy of the GNU General Public License
mgl@1371
 19555
+   along with this program; if not, write to the Free Software
mgl@1371
 19556
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 19557
+   02111-1307, USA.  */
mgl@1371
 19558
+
mgl@1371
 19559
+#include <string.h>
mgl@1371
 19560
+
mgl@1371
 19561
+#include "avr32-opc.h"
mgl@1371
 19562
+#include "avr32-asm.h"
mgl@1371
 19563
+
mgl@1371
 19564
+/* Structure for a register hash table entry.  */
mgl@1371
 19565
+struct reg_entry
mgl@1371
 19566
+{
mgl@1371
 19567
+  const char	*name;
mgl@1371
 19568
+  int		number;
mgl@1371
 19569
+};
mgl@1371
 19570
+
mgl@1371
 19571
+/* Integer Registers.  */
mgl@1371
 19572
+static const struct reg_entry reg_table[] =
mgl@1371
 19573
+  {
mgl@1371
 19574
+    /* Primary names (used by the disassembler) */
mgl@1371
 19575
+    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
mgl@1371
 19576
+    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
mgl@1371
 19577
+    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
mgl@1371
 19578
+    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
mgl@1371
 19579
+    /* Alternatives to sp, lr and pc.  */
mgl@1371
 19580
+    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
mgl@1371
 19581
+  };
mgl@1371
 19582
+#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
mgl@1371
 19583
+
mgl@1371
 19584
+/* Coprocessor Registers.  */
mgl@1371
 19585
+static const struct reg_entry cr_table[] =
mgl@1371
 19586
+  {
mgl@1371
 19587
+    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
mgl@1371
 19588
+    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
mgl@1371
 19589
+    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
mgl@1371
 19590
+    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
mgl@1371
 19591
+  };
mgl@1371
 19592
+#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
mgl@1371
 19593
+
mgl@1371
 19594
+/* Floating-point Registers.  */
mgl@1371
 19595
+static const struct reg_entry fr_table[] =
mgl@1371
 19596
+  {
mgl@1371
 19597
+    { "fr0",   0 }, { "fr1",   1 }, { "fr2",   2 }, { "fr3",   3 },
mgl@1371
 19598
+    { "fr4",   4 }, { "fr5",   5 }, { "fr6",   6 }, { "fr7",   7 },
mgl@1371
 19599
+    { "fr8",   8 }, { "fr9",   9 }, { "fr10", 10 }, { "fr11", 11 },
mgl@1371
 19600
+    { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
mgl@1371
 19601
+  };
mgl@1371
 19602
+#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
mgl@1371
 19603
+
mgl@1371
 19604
+/* PiCo Registers.  */
mgl@1371
 19605
+static const struct reg_entry pico_table[] =
mgl@1371
 19606
+  {
mgl@1371
 19607
+    { "inpix2",    0 }, { "inpix1",    1 }, { "inpix0",    2 },
mgl@1371
 19608
+    { "outpix2",   3 }, { "outpix1",   4 }, { "outpix0",   5 },
mgl@1371
 19609
+    { "coeff0_a",  6 }, { "coeff0_b",  7 }, { "coeff1_a",  8 },
mgl@1371
 19610
+    { "coeff1_b",  9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
mgl@1371
 19611
+    { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
mgl@1371
 19612
+    { "config",   15 },
mgl@1371
 19613
+  };
mgl@1371
 19614
+#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
mgl@1371
 19615
+
mgl@1371
 19616
+int
mgl@1371
 19617
+avr32_parse_intreg(const char *str)
mgl@1371
 19618
+{
mgl@1371
 19619
+  unsigned int i;
mgl@1371
 19620
+
mgl@1371
 19621
+  for (i = 0; i < AVR32_NR_INTREGS; i++)
mgl@1371
 19622
+    {
mgl@1371
 19623
+      if (strcasecmp(reg_table[i].name, str) == 0)
mgl@1371
 19624
+	return reg_table[i].number;
mgl@1371
 19625
+    }
mgl@1371
 19626
+
mgl@1371
 19627
+  return -1;
mgl@1371
 19628
+}
mgl@1371
 19629
+
mgl@1371
 19630
+int
mgl@1371
 19631
+avr32_parse_cpreg(const char *str)
mgl@1371
 19632
+{
mgl@1371
 19633
+  unsigned int i;
mgl@1371
 19634
+
mgl@1371
 19635
+  for (i = 0; i < AVR32_NR_CPREGS; i++)
mgl@1371
 19636
+    {
mgl@1371
 19637
+      if (strcasecmp(cr_table[i].name, str) == 0)
mgl@1371
 19638
+	return cr_table[i].number;
mgl@1371
 19639
+    }
mgl@1371
 19640
+
mgl@1371
 19641
+  return -1;
mgl@1371
 19642
+}
mgl@1371
 19643
+
mgl@1371
 19644
+int avr32_parse_fpreg(const char *str)
mgl@1371
 19645
+{
mgl@1371
 19646
+  unsigned int i;
mgl@1371
 19647
+
mgl@1371
 19648
+  for (i = 0; i < AVR32_NR_FPREGS; i++)
mgl@1371
 19649
+    {
mgl@1371
 19650
+      if (strcasecmp(fr_table[i].name, str) == 0)
mgl@1371
 19651
+	return fr_table[i].number;
mgl@1371
 19652
+    }
mgl@1371
 19653
+
mgl@1371
 19654
+  return -1;
mgl@1371
 19655
+}
mgl@1371
 19656
+
mgl@1371
 19657
+int avr32_parse_picoreg(const char *str)
mgl@1371
 19658
+{
mgl@1371
 19659
+  unsigned int i;
mgl@1371
 19660
+
mgl@1371
 19661
+  for (i = 0; i < AVR32_NR_PICOREGS; i++)
mgl@1371
 19662
+    {
mgl@1371
 19663
+      if (strcasecmp(pico_table[i].name, str) == 0)
mgl@1371
 19664
+	return pico_table[i].number;
mgl@1371
 19665
+    }
mgl@1371
 19666
+
mgl@1371
 19667
+  return -1;
mgl@1371
 19668
+}
mgl@1371
 19669
+
mgl@1371
 19670
+static unsigned long
mgl@1371
 19671
+parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
mgl@1371
 19672
+{
mgl@1371
 19673
+  int reg_from, reg_to;
mgl@1371
 19674
+  unsigned long result = 0;
mgl@1371
 19675
+  char *p1, *p2, c;
mgl@1371
 19676
+
mgl@1371
 19677
+  while (*str)
mgl@1371
 19678
+    {
mgl@1371
 19679
+      for (p1 = str; *p1; p1++)
mgl@1371
 19680
+	if (*p1 == ',' || *p1 == '-')
mgl@1371
 19681
+	  break;
mgl@1371
 19682
+
mgl@1371
 19683
+      c = *p1, *p1 = 0;
mgl@1371
 19684
+      reg_from = parse_reg(str);
mgl@1371
 19685
+      *p1 = c;
mgl@1371
 19686
+
mgl@1371
 19687
+      if (reg_from < 0)
mgl@1371
 19688
+	break;
mgl@1371
 19689
+
mgl@1371
 19690
+      if (*p1 == '-')
mgl@1371
 19691
+	{
mgl@1371
 19692
+	  for (p2 = ++p1; *p2; p2++)
mgl@1371
 19693
+	    if (*p2 == ',')
mgl@1371
 19694
+	      break;
mgl@1371
 19695
+
mgl@1371
 19696
+	  c = *p2, *p2 = 0;
mgl@1371
 19697
+	  /* printf("going to parse reg_to from `%s'\n", p1); */
mgl@1371
 19698
+	  reg_to = parse_reg(p1);
mgl@1371
 19699
+	  *p2 = c;
mgl@1371
 19700
+
mgl@1371
 19701
+	  if (reg_to < 0)
mgl@1371
 19702
+	    break;
mgl@1371
 19703
+
mgl@1371
 19704
+	  while (reg_from <= reg_to)
mgl@1371
 19705
+	    result |= (1 << reg_from++);
mgl@1371
 19706
+	  p1 = p2;
mgl@1371
 19707
+	}
mgl@1371
 19708
+      else
mgl@1371
 19709
+	result |= (1 << reg_from);
mgl@1371
 19710
+
mgl@1371
 19711
+      str = p1;
mgl@1371
 19712
+      if (*str) ++str;
mgl@1371
 19713
+    }
mgl@1371
 19714
+
mgl@1371
 19715
+  if (endptr)
mgl@1371
 19716
+    *endptr = str;
mgl@1371
 19717
+
mgl@1371
 19718
+  return result;
mgl@1371
 19719
+}
mgl@1371
 19720
+
mgl@1371
 19721
+unsigned long
mgl@1371
 19722
+avr32_parse_reglist(char *str, char **endptr)
mgl@1371
 19723
+{
mgl@1371
 19724
+  return parse_reglist(str, endptr, avr32_parse_intreg);
mgl@1371
 19725
+}
mgl@1371
 19726
+
mgl@1371
 19727
+unsigned long
mgl@1371
 19728
+avr32_parse_cpreglist(char *str, char **endptr)
mgl@1371
 19729
+{
mgl@1371
 19730
+  return parse_reglist(str, endptr, avr32_parse_cpreg);
mgl@1371
 19731
+}
mgl@1371
 19732
+
mgl@1371
 19733
+unsigned long
mgl@1371
 19734
+avr32_parse_pico_reglist(char *str, char **endptr)
mgl@1371
 19735
+{
mgl@1371
 19736
+  return parse_reglist(str, endptr, avr32_parse_picoreg);
mgl@1371
 19737
+}
mgl@1371
 19738
+
mgl@1371
 19739
+int
mgl@1371
 19740
+avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
mgl@1371
 19741
+{
mgl@1371
 19742
+  unsigned long result = 0;
mgl@1371
 19743
+
mgl@1371
 19744
+  /* printf("convert regmask16 0x%04lx\n", regmask16); */
mgl@1371
 19745
+
mgl@1371
 19746
+  if (regmask16 & 0xf)
mgl@1371
 19747
+    {
mgl@1371
 19748
+      if ((regmask16 & 0xf) == 0xf)
mgl@1371
 19749
+	result |= 1 << 0;
mgl@1371
 19750
+      else
mgl@1371
 19751
+	return -1;
mgl@1371
 19752
+    }
mgl@1371
 19753
+  if (regmask16 & 0xf0)
mgl@1371
 19754
+    {
mgl@1371
 19755
+      if ((regmask16 & 0xf0) == 0xf0)
mgl@1371
 19756
+	result |= 1 << 1;
mgl@1371
 19757
+      else
mgl@1371
 19758
+	return -1;
mgl@1371
 19759
+    }
mgl@1371
 19760
+  if (regmask16 & 0x300)
mgl@1371
 19761
+    {
mgl@1371
 19762
+      if ((regmask16 & 0x300) == 0x300)
mgl@1371
 19763
+	result |= 1 << 2;
mgl@1371
 19764
+      else
mgl@1371
 19765
+	return -1;
mgl@1371
 19766
+    }
mgl@1371
 19767
+  if (regmask16 & (1 << 13))
mgl@1371
 19768
+    return -1;
mgl@1371
 19769
+
mgl@1371
 19770
+  if (regmask16 & (1 << 10))
mgl@1371
 19771
+    result |= 1 << 3;
mgl@1371
 19772
+  if (regmask16 & (1 << 11))
mgl@1371
 19773
+    result |= 1 << 4;
mgl@1371
 19774
+  if (regmask16 & (1 << 12))
mgl@1371
 19775
+    result |= 1 << 5;
mgl@1371
 19776
+  if (regmask16 & (1 << 14))
mgl@1371
 19777
+    result |= 1 << 6;
mgl@1371
 19778
+  if (regmask16 & (1 << 15))
mgl@1371
 19779
+    result |= 1 << 7;
mgl@1371
 19780
+
mgl@1371
 19781
+  *regmask8 = result;
mgl@1371
 19782
+
mgl@1371
 19783
+  return 0;
mgl@1371
 19784
+}
mgl@1371
 19785
+
mgl@1371
 19786
+#if 0
mgl@1371
 19787
+struct reg_map
mgl@1371
 19788
+{
mgl@1371
 19789
+  const struct reg_entry	*names;
mgl@1371
 19790
+  int				nr_regs;
mgl@1371
 19791
+  struct hash_control		*htab;
mgl@1371
 19792
+  const char			*errmsg;
mgl@1371
 19793
+};
mgl@1371
 19794
+
mgl@1371
 19795
+struct reg_map all_reg_maps[] =
mgl@1371
 19796
+  {
mgl@1371
 19797
+    { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
mgl@1371
 19798
+    { cr_table,  AVR32_NR_CPREGS,  NULL, N_("coprocessor register expected") },
mgl@1371
 19799
+  };
mgl@1371
 19800
+#endif
mgl@1371
 19801
--- /dev/null
mgl@1371
 19802
+++ b/opcodes/avr32-asm.h
mgl@1371
 19803
@@ -0,0 +1,42 @@
mgl@1371
 19804
+/* Assembler interface for AVR32.
mgl@1371
 19805
+   Copyright 2005, 2006 Atmel Corporation.
mgl@1371
 19806
+
mgl@1371
 19807
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 19808
+
mgl@1371
 19809
+   This file is part of libopcodes.
mgl@1371
 19810
+
mgl@1371
 19811
+   This program is free software; you can redistribute it and/or
mgl@1371
 19812
+   modify it under the terms of the GNU General Public License as
mgl@1371
 19813
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 19814
+   License, or (at your option) any later version.
mgl@1371
 19815
+
mgl@1371
 19816
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 19817
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 19818
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 19819
+   General Public License for more details.
mgl@1371
 19820
+
mgl@1371
 19821
+   You should have received a copy of the GNU General Public License
mgl@1371
 19822
+   along with this program; if not, write to the Free Software
mgl@1371
 19823
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 19824
+   02111-1307, USA.  */
mgl@1371
 19825
+#ifndef __OPCODES_AVR32_ASM_H
mgl@1371
 19826
+#define __OPCODES_AVR32_ASM_H
mgl@1371
 19827
+
mgl@1371
 19828
+extern int
mgl@1371
 19829
+avr32_parse_intreg(const char *str);
mgl@1371
 19830
+extern int
mgl@1371
 19831
+avr32_parse_cpreg(const char *str);
mgl@1371
 19832
+extern int
mgl@1371
 19833
+avr32_parse_fpreg(const char *str);
mgl@1371
 19834
+extern int
mgl@1371
 19835
+avr32_parse_picoreg(const char *str);
mgl@1371
 19836
+extern unsigned long
mgl@1371
 19837
+avr32_parse_reglist(char *str, char **endptr);
mgl@1371
 19838
+extern unsigned long
mgl@1371
 19839
+avr32_parse_cpreglist(char *str, char **endptr);
mgl@1371
 19840
+extern unsigned long
mgl@1371
 19841
+avr32_parse_pico_reglist(char *str, char **endptr);
mgl@1371
 19842
+extern int
mgl@1371
 19843
+avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
mgl@1371
 19844
+
mgl@1371
 19845
+#endif /* __OPCODES_AVR32_ASM_H */
mgl@1371
 19846
--- /dev/null
mgl@1371
 19847
+++ b/opcodes/avr32-dis.c
mgl@1371
 19848
@@ -0,0 +1,891 @@
mgl@1371
 19849
+/* Print AVR32 instructions for GDB and objdump.
mgl@1371
 19850
+   Copyright 2005, 2006 Atmel Corporation.
mgl@1371
 19851
+
mgl@1371
 19852
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 19853
+
mgl@1371
 19854
+   This file is part of libopcodes.
mgl@1371
 19855
+
mgl@1371
 19856
+   This program is free software; you can redistribute it and/or
mgl@1371
 19857
+   modify it under the terms of the GNU General Public License as
mgl@1371
 19858
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 19859
+   License, or (at your option) any later version.
mgl@1371
 19860
+
mgl@1371
 19861
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 19862
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 19863
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 19864
+   General Public License for more details.
mgl@1371
 19865
+
mgl@1371
 19866
+   You should have received a copy of the GNU General Public License
mgl@1371
 19867
+   along with this program; if not, write to the Free Software
mgl@1371
 19868
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 19869
+   02111-1307, USA.  */
mgl@1371
 19870
+
mgl@1371
 19871
+#include "sysdep.h"
mgl@1371
 19872
+#include "dis-asm.h"
mgl@1371
 19873
+#include "avr32-opc.h"
mgl@1371
 19874
+#include "opintl.h"
mgl@1371
 19875
+#include "safe-ctype.h"
mgl@1371
 19876
+
mgl@1371
 19877
+/* TODO: Share this with -asm */
mgl@1371
 19878
+
mgl@1371
 19879
+/* Structure for a register hash table entry.  */
mgl@1371
 19880
+struct reg_entry
mgl@1371
 19881
+{
mgl@1371
 19882
+  const char	*name;
mgl@1371
 19883
+  int		number;
mgl@1371
 19884
+};
mgl@1371
 19885
+
mgl@1371
 19886
+#ifndef strneq
mgl@1371
 19887
+#define strneq(a,b,n)	(strncmp ((a), (b), (n)) == 0)
mgl@1371
 19888
+#endif
mgl@1371
 19889
+
mgl@1371
 19890
+
mgl@1371
 19891
+static const struct reg_entry reg_table[] =
mgl@1371
 19892
+  {
mgl@1371
 19893
+    /* Primary names (used by the disassembler) */
mgl@1371
 19894
+    { "r0",   0 }, { "r1",   1 }, { "r2",   2 }, { "r3",   3 },
mgl@1371
 19895
+    { "r4",   4 }, { "r5",   5 }, { "r6",   6 }, { "r7",   7 },
mgl@1371
 19896
+    { "r8",   8 }, { "r9",   9 }, { "r10", 10 }, { "r11", 11 },
mgl@1371
 19897
+    { "r12", 12 }, { "sp",  13 }, { "lr",  14 }, { "pc",  15 },
mgl@1371
 19898
+    /* Alternatives to sp, lr and pc.  */
mgl@1371
 19899
+    { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
mgl@1371
 19900
+  };
mgl@1371
 19901
+#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
mgl@1371
 19902
+
mgl@1371
 19903
+/* Coprocessor Registers.  */
mgl@1371
 19904
+static const struct reg_entry cr_table[] =
mgl@1371
 19905
+  {
mgl@1371
 19906
+    { "cr0",   0 }, { "cr1",   1 }, { "cr2",   2 }, { "cr3",   3 },
mgl@1371
 19907
+    { "cr4",   4 }, { "cr5",   5 }, { "cr6",   6 }, { "cr7",   7 },
mgl@1371
 19908
+    { "cr8",   8 }, { "cr9",   9 }, { "cr10", 10 }, { "cr11", 11 },
mgl@1371
 19909
+    { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
mgl@1371
 19910
+  };
mgl@1371
 19911
+#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
mgl@1371
 19912
+
mgl@1371
 19913
+static const char bparts[4] = { 'b', 'l', 'u', 't' };
mgl@1371
 19914
+static bfd_vma current_pc;
mgl@1371
 19915
+
mgl@1371
 19916
+struct avr32_field_value
mgl@1371
 19917
+{
mgl@1371
 19918
+  const struct avr32_ifield *ifield;
mgl@1371
 19919
+  unsigned long value;
mgl@1371
 19920
+};
mgl@1371
 19921
+
mgl@1371
 19922
+struct avr32_operand
mgl@1371
 19923
+{
mgl@1371
 19924
+  int id;
mgl@1371
 19925
+  int is_pcrel;
mgl@1371
 19926
+  int align_order;
mgl@1371
 19927
+  int (*print)(struct avr32_operand *op, struct disassemble_info *info,
mgl@1371
 19928
+	       struct avr32_field_value *ifields);
mgl@1371
 19929
+};
mgl@1371
 19930
+
mgl@1371
 19931
+static signed long
mgl@1371
 19932
+get_signed_value(const struct avr32_field_value *fv)
mgl@1371
 19933
+{
mgl@1371
 19934
+  signed long value = fv->value;
mgl@1371
 19935
+
mgl@1371
 19936
+  if (fv->value & (1 << (fv->ifield->bitsize - 1)))
mgl@1371
 19937
+    value |= (~0UL << fv->ifield->bitsize);
mgl@1371
 19938
+
mgl@1371
 19939
+  return value;
mgl@1371
 19940
+}
mgl@1371
 19941
+
mgl@1371
 19942
+static void
mgl@1371
 19943
+print_reglist_range(unsigned int first, unsigned int last,
mgl@1371
 19944
+		    const struct reg_entry *reg_names,
mgl@1371
 19945
+		    int need_comma,
mgl@1371
 19946
+		    struct disassemble_info *info)
mgl@1371
 19947
+{
mgl@1371
 19948
+  if (need_comma)
mgl@1371
 19949
+    info->fprintf_func(info->stream, ",");
mgl@1371
 19950
+
mgl@1371
 19951
+  if (first == last)
mgl@1371
 19952
+    info->fprintf_func(info->stream, "%s",
mgl@1371
 19953
+		       reg_names[first].name);
mgl@1371
 19954
+  else
mgl@1371
 19955
+    info->fprintf_func(info->stream, "%s-%s",
mgl@1371
 19956
+		       reg_names[first].name, reg_names[last].name);
mgl@1371
 19957
+}
mgl@1371
 19958
+
mgl@1371
 19959
+static int
mgl@1371
 19960
+print_intreg(struct avr32_operand *op,
mgl@1371
 19961
+	     struct disassemble_info *info,
mgl@1371
 19962
+	     struct avr32_field_value *ifields)
mgl@1371
 19963
+{
mgl@1371
 19964
+  unsigned long regid = ifields[0].value << op->align_order;
mgl@1371
 19965
+
mgl@1371
 19966
+  info->fprintf_func(info->stream, "%s",
mgl@1371
 19967
+		     reg_table[regid].name);
mgl@1371
 19968
+  return 1;
mgl@1371
 19969
+}
mgl@1371
 19970
+
mgl@1371
 19971
+static int
mgl@1371
 19972
+print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 19973
+		    struct disassemble_info *info,
mgl@1371
 19974
+		    struct avr32_field_value *ifields)
mgl@1371
 19975
+{
mgl@1371
 19976
+  info->fprintf_func(info->stream, "--%s",
mgl@1371
 19977
+		     reg_table[ifields[0].value].name);
mgl@1371
 19978
+  return 1;
mgl@1371
 19979
+}
mgl@1371
 19980
+
mgl@1371
 19981
+static int
mgl@1371
 19982
+print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 19983
+		     struct disassemble_info *info,
mgl@1371
 19984
+		     struct avr32_field_value *ifields)
mgl@1371
 19985
+{
mgl@1371
 19986
+  info->fprintf_func(info->stream, "%s++",
mgl@1371
 19987
+		     reg_table[ifields[0].value].name);
mgl@1371
 19988
+  return 1;
mgl@1371
 19989
+}
mgl@1371
 19990
+
mgl@1371
 19991
+static int
mgl@1371
 19992
+print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 19993
+		 struct disassemble_info *info,
mgl@1371
 19994
+		 struct avr32_field_value *ifields)
mgl@1371
 19995
+{
mgl@1371
 19996
+  const char *rp = reg_table[ifields[0].value].name;
mgl@1371
 19997
+  unsigned long sa = ifields[1].value;
mgl@1371
 19998
+
mgl@1371
 19999
+  if (sa)
mgl@1371
 20000
+    info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
mgl@1371
 20001
+  else
mgl@1371
 20002
+    info->fprintf_func(info->stream, "%s", rp);
mgl@1371
 20003
+
mgl@1371
 20004
+  return 2;
mgl@1371
 20005
+}
mgl@1371
 20006
+
mgl@1371
 20007
+static int
mgl@1371
 20008
+print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20009
+		 struct disassemble_info *info,
mgl@1371
 20010
+		 struct avr32_field_value *ifields)
mgl@1371
 20011
+{
mgl@1371
 20012
+  const char *rp = reg_table[ifields[0].value].name;
mgl@1371
 20013
+  unsigned long sa = ifields[1].value;
mgl@1371
 20014
+
mgl@1371
 20015
+  if (sa)
mgl@1371
 20016
+    info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
mgl@1371
 20017
+  else
mgl@1371
 20018
+    info->fprintf_func(info->stream, "%s", rp);
mgl@1371
 20019
+
mgl@1371
 20020
+  return 2;
mgl@1371
 20021
+}
mgl@1371
 20022
+
mgl@1371
 20023
+static int
mgl@1371
 20024
+print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20025
+		   struct disassemble_info *info,
mgl@1371
 20026
+		   struct avr32_field_value *ifields)
mgl@1371
 20027
+{
mgl@1371
 20028
+  info->fprintf_func(info->stream, "%s:%c",
mgl@1371
 20029
+		     reg_table[ifields[0].value].name,
mgl@1371
 20030
+		     bparts[ifields[1].value]);
mgl@1371
 20031
+  return 2;
mgl@1371
 20032
+}
mgl@1371
 20033
+
mgl@1371
 20034
+static int
mgl@1371
 20035
+print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20036
+		   struct disassemble_info *info,
mgl@1371
 20037
+		   struct avr32_field_value *ifields)
mgl@1371
 20038
+{
mgl@1371
 20039
+  info->fprintf_func(info->stream, "%s:%c",
mgl@1371
 20040
+		     reg_table[ifields[0].value].name,
mgl@1371
 20041
+		     ifields[1].value ? 't' : 'b');
mgl@1371
 20042
+  return 2;
mgl@1371
 20043
+}
mgl@1371
 20044
+
mgl@1371
 20045
+static int
mgl@1371
 20046
+print_intreg_sdisp(struct avr32_operand *op,
mgl@1371
 20047
+		  struct disassemble_info *info,
mgl@1371
 20048
+		  struct avr32_field_value *ifields)
mgl@1371
 20049
+{
mgl@1371
 20050
+  signed long disp;
mgl@1371
 20051
+
mgl@1371
 20052
+  disp = get_signed_value(&ifields[1]) << op->align_order;
mgl@1371
 20053
+
mgl@1371
 20054
+  info->fprintf_func(info->stream, "%s[%ld]",
mgl@1371
 20055
+		     reg_table[ifields[0].value].name, disp);
mgl@1371
 20056
+  return 2;
mgl@1371
 20057
+}
mgl@1371
 20058
+
mgl@1371
 20059
+static int
mgl@1371
 20060
+print_intreg_udisp(struct avr32_operand *op,
mgl@1371
 20061
+		   struct disassemble_info *info,
mgl@1371
 20062
+		   struct avr32_field_value *ifields)
mgl@1371
 20063
+{
mgl@1371
 20064
+  info->fprintf_func(info->stream, "%s[0x%lx]",
mgl@1371
 20065
+		     reg_table[ifields[0].value].name,
mgl@1371
 20066
+		     ifields[1].value << op->align_order);
mgl@1371
 20067
+  return 2;
mgl@1371
 20068
+}
mgl@1371
 20069
+
mgl@1371
 20070
+static int
mgl@1371
 20071
+print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20072
+		   struct disassemble_info *info,
mgl@1371
 20073
+		   struct avr32_field_value *ifields)
mgl@1371
 20074
+{
mgl@1371
 20075
+  const char *rb, *ri;
mgl@1371
 20076
+  unsigned long sa = ifields[2].value;
mgl@1371
 20077
+
mgl@1371
 20078
+  rb = reg_table[ifields[0].value].name;
mgl@1371
 20079
+  ri = reg_table[ifields[1].value].name;
mgl@1371
 20080
+
mgl@1371
 20081
+  if (sa)
mgl@1371
 20082
+    info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
mgl@1371
 20083
+  else
mgl@1371
 20084
+    info->fprintf_func(info->stream, "%s[%s]", rb, ri);
mgl@1371
 20085
+
mgl@1371
 20086
+  return 3;
mgl@1371
 20087
+}
mgl@1371
 20088
+
mgl@1371
 20089
+static int
mgl@1371
 20090
+print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20091
+		    struct disassemble_info *info,
mgl@1371
 20092
+		    struct avr32_field_value *ifields)
mgl@1371
 20093
+{
mgl@1371
 20094
+  info->fprintf_func(info->stream, "%s[%s:%c<<2]",
mgl@1371
 20095
+		     reg_table[ifields[0].value].name,
mgl@1371
 20096
+		     reg_table[ifields[1].value].name,
mgl@1371
 20097
+		     bparts[ifields[2].value]);
mgl@1371
 20098
+  return 3;
mgl@1371
 20099
+}
mgl@1371
 20100
+
mgl@1371
 20101
+static int
mgl@1371
 20102
+print_jmplabel(struct avr32_operand *op,
mgl@1371
 20103
+	       struct disassemble_info *info,
mgl@1371
 20104
+	       struct avr32_field_value *ifields)
mgl@1371
 20105
+{
mgl@1371
 20106
+  bfd_vma address, offset;
mgl@1371
 20107
+
mgl@1371
 20108
+  offset = get_signed_value(ifields) << op->align_order;
mgl@1371
 20109
+  address = (current_pc & (~0UL << op->align_order)) + offset;
mgl@1371
 20110
+
mgl@1371
 20111
+  info->print_address_func(address, info);
mgl@1371
 20112
+
mgl@1371
 20113
+  return 1;
mgl@1371
 20114
+}
mgl@1371
 20115
+
mgl@1371
 20116
+static int
mgl@1371
 20117
+print_pc_disp(struct avr32_operand *op,
mgl@1371
 20118
+	      struct disassemble_info *info,
mgl@1371
 20119
+	      struct avr32_field_value *ifields)
mgl@1371
 20120
+{
mgl@1371
 20121
+  bfd_vma address, offset;
mgl@1371
 20122
+
mgl@1371
 20123
+  offset = ifields[0].value << op->align_order;
mgl@1371
 20124
+  address = (current_pc & (~0UL << op->align_order)) + offset;
mgl@1371
 20125
+
mgl@1371
 20126
+  info->print_address_func(address, info);
mgl@1371
 20127
+
mgl@1371
 20128
+  return 1;
mgl@1371
 20129
+}
mgl@1371
 20130
+
mgl@1371
 20131
+static int
mgl@1371
 20132
+print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20133
+	 struct disassemble_info *info,
mgl@1371
 20134
+	 struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
mgl@1371
 20135
+{
mgl@1371
 20136
+  info->fprintf_func(info->stream, "sp");
mgl@1371
 20137
+  return 1;
mgl@1371
 20138
+}
mgl@1371
 20139
+
mgl@1371
 20140
+static int
mgl@1371
 20141
+print_sp_disp(struct avr32_operand *op,
mgl@1371
 20142
+	      struct disassemble_info *info,
mgl@1371
 20143
+	      struct avr32_field_value *ifields)
mgl@1371
 20144
+{
mgl@1371
 20145
+  info->fprintf_func(info->stream, "sp[0x%lx]",
mgl@1371
 20146
+		     ifields[0].value << op->align_order);
mgl@1371
 20147
+  return 1;
mgl@1371
 20148
+}
mgl@1371
 20149
+
mgl@1371
 20150
+static int
mgl@1371
 20151
+print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20152
+	   struct disassemble_info *info,
mgl@1371
 20153
+	   struct avr32_field_value *ifields)
mgl@1371
 20154
+{
mgl@1371
 20155
+  info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
mgl@1371
 20156
+  return 1;
mgl@1371
 20157
+}
mgl@1371
 20158
+
mgl@1371
 20159
+static int
mgl@1371
 20160
+print_cpreg(struct avr32_operand *op,
mgl@1371
 20161
+	    struct disassemble_info *info,
mgl@1371
 20162
+	    struct avr32_field_value *ifields)
mgl@1371
 20163
+{
mgl@1371
 20164
+  info->fprintf_func(info->stream, "cr%lu",
mgl@1371
 20165
+		     ifields[0].value << op->align_order);
mgl@1371
 20166
+  return 1;
mgl@1371
 20167
+}
mgl@1371
 20168
+
mgl@1371
 20169
+static int
mgl@1371
 20170
+print_uconst(struct avr32_operand *op,
mgl@1371
 20171
+	     struct disassemble_info *info,
mgl@1371
 20172
+	     struct avr32_field_value *ifields)
mgl@1371
 20173
+{
mgl@1371
 20174
+  info->fprintf_func(info->stream, "0x%lx",
mgl@1371
 20175
+		     ifields[0].value << op->align_order);
mgl@1371
 20176
+  return 1;
mgl@1371
 20177
+}
mgl@1371
 20178
+
mgl@1371
 20179
+static int
mgl@1371
 20180
+print_sconst(struct avr32_operand *op,
mgl@1371
 20181
+	     struct disassemble_info *info,
mgl@1371
 20182
+	     struct avr32_field_value *ifields)
mgl@1371
 20183
+{
mgl@1371
 20184
+  info->fprintf_func(info->stream, "%ld",
mgl@1371
 20185
+		     get_signed_value(ifields) << op->align_order);
mgl@1371
 20186
+  return 1;
mgl@1371
 20187
+}
mgl@1371
 20188
+
mgl@1371
 20189
+static int
mgl@1371
 20190
+print_reglist8_head(unsigned long regmask, int *commap,
mgl@1371
 20191
+		    struct disassemble_info *info)
mgl@1371
 20192
+{
mgl@1371
 20193
+  int first = -1, last, i = 0;
mgl@1371
 20194
+  int need_comma = 0;
mgl@1371
 20195
+
mgl@1371
 20196
+  while (i < 12)
mgl@1371
 20197
+    {
mgl@1371
 20198
+      if (first == -1 && (regmask & 1))
mgl@1371
 20199
+	{
mgl@1371
 20200
+	  first = i;
mgl@1371
 20201
+	}
mgl@1371
 20202
+      else if (first != -1 && !(regmask & 1))
mgl@1371
 20203
+	{
mgl@1371
 20204
+	  last = i - 1;
mgl@1371
 20205
+
mgl@1371
 20206
+	  print_reglist_range(first, last, reg_table, need_comma, info);
mgl@1371
 20207
+	  need_comma = 1;
mgl@1371
 20208
+	  first = -1;
mgl@1371
 20209
+	}
mgl@1371
 20210
+
mgl@1371
 20211
+      if (i < 8)
mgl@1371
 20212
+	i += 4;
mgl@1371
 20213
+      else if (i < 10)
mgl@1371
 20214
+	i += 2;
mgl@1371
 20215
+      else
mgl@1371
 20216
+	i++;
mgl@1371
 20217
+      regmask >>= 1;
mgl@1371
 20218
+    }
mgl@1371
 20219
+
mgl@1371
 20220
+  *commap = need_comma;
mgl@1371
 20221
+  return first;
mgl@1371
 20222
+}
mgl@1371
 20223
+
mgl@1371
 20224
+static void
mgl@1371
 20225
+print_reglist8_tail(unsigned long regmask, int first, int need_comma,
mgl@1371
 20226
+		    struct disassemble_info *info)
mgl@1371
 20227
+{
mgl@1371
 20228
+  int last = 11;
mgl@1371
 20229
+
mgl@1371
 20230
+  if (regmask & 0x20)
mgl@1371
 20231
+    {
mgl@1371
 20232
+      if (first == -1)
mgl@1371
 20233
+	first = 12;
mgl@1371
 20234
+      last = 12;
mgl@1371
 20235
+    }
mgl@1371
 20236
+
mgl@1371
 20237
+  if (first != -1)
mgl@1371
 20238
+    {
mgl@1371
 20239
+      print_reglist_range(first, last, reg_table, need_comma, info);
mgl@1371
 20240
+      need_comma = 1;
mgl@1371
 20241
+      first = -1;
mgl@1371
 20242
+    }
mgl@1371
 20243
+
mgl@1371
 20244
+  if (regmask & 0x40)
mgl@1371
 20245
+    {
mgl@1371
 20246
+      if (first == -1)
mgl@1371
 20247
+	first = 14;
mgl@1371
 20248
+      last = 14;
mgl@1371
 20249
+    }
mgl@1371
 20250
+
mgl@1371
 20251
+  if (regmask & 0x80)
mgl@1371
 20252
+    {
mgl@1371
 20253
+      if (first == -1)
mgl@1371
 20254
+	first = 15;
mgl@1371
 20255
+      last = 15;
mgl@1371
 20256
+    }
mgl@1371
 20257
+
mgl@1371
 20258
+  if (first != -1)
mgl@1371
 20259
+    print_reglist_range(first, last, reg_table, need_comma, info);
mgl@1371
 20260
+}
mgl@1371
 20261
+
mgl@1371
 20262
+static int
mgl@1371
 20263
+print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20264
+	       struct disassemble_info *info,
mgl@1371
 20265
+	       struct avr32_field_value *ifields)
mgl@1371
 20266
+{
mgl@1371
 20267
+  unsigned long regmask = ifields[0].value;
mgl@1371
 20268
+  int first, need_comma;
mgl@1371
 20269
+
mgl@1371
 20270
+  first = print_reglist8_head(regmask, &need_comma, info);
mgl@1371
 20271
+  print_reglist8_tail(regmask, first, need_comma, info);
mgl@1371
 20272
+
mgl@1371
 20273
+  return 1;
mgl@1371
 20274
+}
mgl@1371
 20275
+
mgl@1371
 20276
+static int
mgl@1371
 20277
+print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20278
+	       struct disassemble_info *info,
mgl@1371
 20279
+	       struct avr32_field_value *ifields)
mgl@1371
 20280
+{
mgl@1371
 20281
+  unsigned long regmask = ifields[0].value >> 1;
mgl@1371
 20282
+  int first, last, need_comma;
mgl@1371
 20283
+
mgl@1371
 20284
+  first = print_reglist8_head(regmask, &need_comma, info);
mgl@1371
 20285
+
mgl@1371
 20286
+  if ((ifields[0].value & 0x101) == 0x101)
mgl@1371
 20287
+    {
mgl@1371
 20288
+      if (first != -1)
mgl@1371
 20289
+	{
mgl@1371
 20290
+	  last = 11;
mgl@1371
 20291
+
mgl@1371
 20292
+	  print_reglist_range(first, last, reg_table, need_comma, info);
mgl@1371
 20293
+	  need_comma = 1;
mgl@1371
 20294
+	  first = -1;
mgl@1371
 20295
+	}
mgl@1371
 20296
+
mgl@1371
 20297
+      print_reglist_range(15, 15, reg_table, need_comma, info);
mgl@1371
 20298
+
mgl@1371
 20299
+      regmask >>= 5;
mgl@1371
 20300
+
mgl@1371
 20301
+      if ((regmask & 3) == 0)
mgl@1371
 20302
+	info->fprintf_func(info->stream, ",r12=0");
mgl@1371
 20303
+      else if ((regmask & 3) == 1)
mgl@1371
 20304
+	info->fprintf_func(info->stream, ",r12=1");
mgl@1371
 20305
+      else
mgl@1371
 20306
+	info->fprintf_func(info->stream, ",r12=-1");
mgl@1371
 20307
+    }
mgl@1371
 20308
+  else
mgl@1371
 20309
+      print_reglist8_tail(regmask, first, need_comma, info);
mgl@1371
 20310
+
mgl@1371
 20311
+  return 1;
mgl@1371
 20312
+}
mgl@1371
 20313
+
mgl@1371
 20314
+static int
mgl@1371
 20315
+print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20316
+		struct disassemble_info *info,
mgl@1371
 20317
+		struct avr32_field_value *ifields)
mgl@1371
 20318
+{
mgl@1371
 20319
+  unsigned long regmask = ifields[0].value;
mgl@1371
 20320
+  unsigned int i = 0, first, last;
mgl@1371
 20321
+  int need_comma = 0;
mgl@1371
 20322
+
mgl@1371
 20323
+  while (i < 16)
mgl@1371
 20324
+    {
mgl@1371
 20325
+      if (regmask & 1)
mgl@1371
 20326
+	{
mgl@1371
 20327
+	  first = i;
mgl@1371
 20328
+	  while (i < 16)
mgl@1371
 20329
+	    {
mgl@1371
 20330
+	      i++;
mgl@1371
 20331
+	      regmask >>= 1;
mgl@1371
 20332
+	      if (!(regmask & 1))
mgl@1371
 20333
+		break;
mgl@1371
 20334
+	    }
mgl@1371
 20335
+	  last = i - 1;
mgl@1371
 20336
+	  print_reglist_range(first, last, reg_table, need_comma, info);
mgl@1371
 20337
+	  need_comma = 1;
mgl@1371
 20338
+	}
mgl@1371
 20339
+      else
mgl@1371
 20340
+	{
mgl@1371
 20341
+	  i++;
mgl@1371
 20342
+	  regmask >>= 1;
mgl@1371
 20343
+	}
mgl@1371
 20344
+    }
mgl@1371
 20345
+
mgl@1371
 20346
+  return 1;
mgl@1371
 20347
+}
mgl@1371
 20348
+
mgl@1371
 20349
+static int
mgl@1371
 20350
+print_reglist_ldm(struct avr32_operand *op,
mgl@1371
 20351
+		  struct disassemble_info *info,
mgl@1371
 20352
+		  struct avr32_field_value *ifields)
mgl@1371
 20353
+{
mgl@1371
 20354
+  int rp, w_bit;
mgl@1371
 20355
+  int i, first, last;
mgl@1371
 20356
+  unsigned long regmask;
mgl@1371
 20357
+
mgl@1371
 20358
+  rp = ifields[0].value;
mgl@1371
 20359
+  w_bit = ifields[1].value;
mgl@1371
 20360
+  regmask = ifields[2].value;
mgl@1371
 20361
+
mgl@1371
 20362
+  if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
mgl@1371
 20363
+    {
mgl@1371
 20364
+      if (w_bit)
mgl@1371
 20365
+	info->fprintf_func(info->stream, "sp++");
mgl@1371
 20366
+      else
mgl@1371
 20367
+	info->fprintf_func(info->stream, "sp");
mgl@1371
 20368
+
mgl@1371
 20369
+      for (i = 0; i < 12; )
mgl@1371
 20370
+	{
mgl@1371
 20371
+	  if (regmask & (1 << i))
mgl@1371
 20372
+	    {
mgl@1371
 20373
+	      first = i;
mgl@1371
 20374
+	      while (i < 12)
mgl@1371
 20375
+		{
mgl@1371
 20376
+		  i++;
mgl@1371
 20377
+		  if (!(regmask & (1 << i)))
mgl@1371
 20378
+		    break;
mgl@1371
 20379
+		}
mgl@1371
 20380
+	      last = i - 1;
mgl@1371
 20381
+	      print_reglist_range(first, last, reg_table, 1, info);
mgl@1371
 20382
+	    }
mgl@1371
 20383
+	  else
mgl@1371
 20384
+	    i++;
mgl@1371
 20385
+	}
mgl@1371
 20386
+
mgl@1371
 20387
+      info->fprintf_func(info->stream, ",pc");
mgl@1371
 20388
+      if (regmask & (1 << AVR32_REG_LR))
mgl@1371
 20389
+	info->fprintf_func(info->stream, ",r12=-1");
mgl@1371
 20390
+      else if (regmask & (1 << AVR32_REG_R12))
mgl@1371
 20391
+	info->fprintf_func(info->stream, ",r12=1");
mgl@1371
 20392
+      else
mgl@1371
 20393
+	info->fprintf_func(info->stream, ",r12=0");
mgl@1371
 20394
+    }
mgl@1371
 20395
+  else
mgl@1371
 20396
+    {
mgl@1371
 20397
+      if (w_bit)
mgl@1371
 20398
+	info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
mgl@1371
 20399
+      else
mgl@1371
 20400
+	info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
mgl@1371
 20401
+
mgl@1371
 20402
+      print_reglist16(op, info, ifields + 2);
mgl@1371
 20403
+    }
mgl@1371
 20404
+
mgl@1371
 20405
+  return 3;
mgl@1371
 20406
+}
mgl@1371
 20407
+
mgl@1371
 20408
+static int
mgl@1371
 20409
+print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20410
+		  struct disassemble_info *info,
mgl@1371
 20411
+		  struct avr32_field_value *ifields)
mgl@1371
 20412
+{
mgl@1371
 20413
+  unsigned long regmask = ifields[0].value;
mgl@1371
 20414
+  unsigned int i = 0, first, last, offset = 0;
mgl@1371
 20415
+  int need_comma = 0;
mgl@1371
 20416
+
mgl@1371
 20417
+  if (ifields[1].value)
mgl@1371
 20418
+    offset = 8;
mgl@1371
 20419
+
mgl@1371
 20420
+  while (i < 8)
mgl@1371
 20421
+    {
mgl@1371
 20422
+      if (regmask & 1)
mgl@1371
 20423
+	{
mgl@1371
 20424
+	  first = i;
mgl@1371
 20425
+	  while (i < 8)
mgl@1371
 20426
+	    {
mgl@1371
 20427
+	      i++;
mgl@1371
 20428
+	      regmask >>= 1;
mgl@1371
 20429
+	      if (!(regmask & 1))
mgl@1371
 20430
+		break;
mgl@1371
 20431
+	    }
mgl@1371
 20432
+	  last = i - 1;
mgl@1371
 20433
+	  print_reglist_range(offset + first, offset + last,
mgl@1371
 20434
+			      cr_table, need_comma, info);
mgl@1371
 20435
+	  need_comma = 1;
mgl@1371
 20436
+	}
mgl@1371
 20437
+      else
mgl@1371
 20438
+	{
mgl@1371
 20439
+	  i++;
mgl@1371
 20440
+	  regmask >>= 1;
mgl@1371
 20441
+	}
mgl@1371
 20442
+    }
mgl@1371
 20443
+
mgl@1371
 20444
+  return 2;
mgl@1371
 20445
+}
mgl@1371
 20446
+
mgl@1371
 20447
+static int
mgl@1371
 20448
+print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20449
+		   struct disassemble_info *info,
mgl@1371
 20450
+		   struct avr32_field_value *ifields)
mgl@1371
 20451
+{
mgl@1371
 20452
+  unsigned long regmask = ifields[0].value;
mgl@1371
 20453
+  unsigned int i = 0, first, last;
mgl@1371
 20454
+  int need_comma = 0;
mgl@1371
 20455
+
mgl@1371
 20456
+  while (i < 8)
mgl@1371
 20457
+    {
mgl@1371
 20458
+      if (regmask & 1)
mgl@1371
 20459
+	{
mgl@1371
 20460
+	  first = 2 * i;
mgl@1371
 20461
+	  while (i < 8)
mgl@1371
 20462
+	    {
mgl@1371
 20463
+	      i++;
mgl@1371
 20464
+	      regmask >>= 1;
mgl@1371
 20465
+	      if (!(regmask & 1))
mgl@1371
 20466
+		break;
mgl@1371
 20467
+	    }
mgl@1371
 20468
+	  last = 2 * (i - 1) + 1;
mgl@1371
 20469
+	  print_reglist_range(first, last, cr_table, need_comma, info);
mgl@1371
 20470
+	  need_comma = 1;
mgl@1371
 20471
+	}
mgl@1371
 20472
+      else
mgl@1371
 20473
+	{
mgl@1371
 20474
+	  i++;
mgl@1371
 20475
+	  regmask >>= 1;
mgl@1371
 20476
+	}
mgl@1371
 20477
+    }
mgl@1371
 20478
+
mgl@1371
 20479
+  return 1;
mgl@1371
 20480
+}
mgl@1371
 20481
+
mgl@1371
 20482
+static int
mgl@1371
 20483
+print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20484
+	     struct disassemble_info *info,
mgl@1371
 20485
+	     struct avr32_field_value *ifields)
mgl@1371
 20486
+{
mgl@1371
 20487
+  unsigned long regid = ifields[0].value;
mgl@1371
 20488
+  const char *retval;
mgl@1371
 20489
+
mgl@1371
 20490
+  if (regid < AVR32_REG_SP)
mgl@1371
 20491
+    retval = reg_table[regid].name;
mgl@1371
 20492
+  else if (regid == AVR32_REG_SP)
mgl@1371
 20493
+    retval = "0";
mgl@1371
 20494
+  else if (regid == AVR32_REG_LR)
mgl@1371
 20495
+    retval = "-1";
mgl@1371
 20496
+  else
mgl@1371
 20497
+    retval = "1";
mgl@1371
 20498
+
mgl@1371
 20499
+  info->fprintf_func(info->stream, "%s", retval);
mgl@1371
 20500
+
mgl@1371
 20501
+  return 1;
mgl@1371
 20502
+}
mgl@1371
 20503
+
mgl@1371
 20504
+static int
mgl@1371
 20505
+print_mcall(struct avr32_operand *op,
mgl@1371
 20506
+	    struct disassemble_info *info,
mgl@1371
 20507
+	    struct avr32_field_value *ifields)
mgl@1371
 20508
+{
mgl@1371
 20509
+  unsigned long regid = ifields[0].value;
mgl@1371
 20510
+
mgl@1371
 20511
+  if (regid == AVR32_REG_PC)
mgl@1371
 20512
+    print_jmplabel(op, info, ifields + 1);
mgl@1371
 20513
+  else
mgl@1371
 20514
+    print_intreg_sdisp(op, info, ifields);
mgl@1371
 20515
+
mgl@1371
 20516
+  return 2;
mgl@1371
 20517
+}
mgl@1371
 20518
+
mgl@1371
 20519
+static int
mgl@1371
 20520
+print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20521
+	      struct disassemble_info *info,
mgl@1371
 20522
+	      struct avr32_field_value *ifields)
mgl@1371
 20523
+{
mgl@1371
 20524
+  signed long value = ifields[0].value;
mgl@1371
 20525
+
mgl@1371
 20526
+  if (value >= 4)
mgl@1371
 20527
+    value -= 8;
mgl@1371
 20528
+  else
mgl@1371
 20529
+    value += 1;
mgl@1371
 20530
+
mgl@1371
 20531
+  info->fprintf_func(info->stream, "%ld", value);
mgl@1371
 20532
+
mgl@1371
 20533
+  return 1;
mgl@1371
 20534
+}
mgl@1371
 20535
+
mgl@1371
 20536
+static int
mgl@1371
 20537
+print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
mgl@1371
 20538
+	  struct disassemble_info *info,
mgl@1371
 20539
+	  struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
mgl@1371
 20540
+{
mgl@1371
 20541
+  info->fprintf_func(info->stream, "COH");
mgl@1371
 20542
+  return 0;
mgl@1371
 20543
+}
mgl@1371
 20544
+
mgl@1371
 20545
+#define OP(name, sgn, pcrel, align, func) \
mgl@1371
 20546
+  { AVR32_OPERAND_##name, pcrel, align, print_##func }
mgl@1371
 20547
+
mgl@1371
 20548
+struct avr32_operand operand[AVR32_NR_OPERANDS] =
mgl@1371
 20549
+  {
mgl@1371
 20550
+    OP(INTREG, 0, 0, 0, intreg),
mgl@1371
 20551
+    OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
mgl@1371
 20552
+    OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
mgl@1371
 20553
+    OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
mgl@1371
 20554
+    OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
mgl@1371
 20555
+    OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
mgl@1371
 20556
+    OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
mgl@1371
 20557
+    OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
mgl@1371
 20558
+    OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
mgl@1371
 20559
+    OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
mgl@1371
 20560
+    OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
mgl@1371
 20561
+    OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
mgl@1371
 20562
+    OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
mgl@1371
 20563
+    OP(INTREG_INDEX, 0, 0, 0, intreg_index),
mgl@1371
 20564
+    OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
mgl@1371
 20565
+    OP(DWREG, 0, 0, 1, intreg),
mgl@1371
 20566
+    OP(PC_UDISP_W, 0, 1, 2, pc_disp),
mgl@1371
 20567
+    OP(SP, 0, 0, 0, sp),
mgl@1371
 20568
+    OP(SP_UDISP_W, 0, 0, 2, sp_disp),
mgl@1371
 20569
+    OP(CPNO, 0, 0, 0, cpno),
mgl@1371
 20570
+    OP(CPREG, 0, 0, 0, cpreg),
mgl@1371
 20571
+    OP(CPREG_D, 0, 0, 1, cpreg),
mgl@1371
 20572
+    OP(UNSIGNED_CONST, 0, 0, 0, uconst),
mgl@1371
 20573
+    OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
mgl@1371
 20574
+    OP(SIGNED_CONST, 1, 0, 0, sconst),
mgl@1371
 20575
+    OP(SIGNED_CONST_W, 1, 0, 2, sconst),
mgl@1371
 20576
+    OP(JMPLABEL, 1, 1, 1, jmplabel),
mgl@1371
 20577
+    OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
mgl@1371
 20578
+    OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
mgl@1371
 20579
+    OP(REGLIST8, 0, 0, 0, reglist8),
mgl@1371
 20580
+    OP(REGLIST9, 0, 0, 0, reglist9),
mgl@1371
 20581
+    OP(REGLIST16, 0, 0, 0, reglist16),
mgl@1371
 20582
+    OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
mgl@1371
 20583
+    OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
mgl@1371
 20584
+    OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
mgl@1371
 20585
+    OP(RETVAL, 0, 0, 0, retval),
mgl@1371
 20586
+    OP(MCALL, 1, 0, 2, mcall),
mgl@1371
 20587
+    OP(JOSPINC, 0, 0, 0, jospinc),
mgl@1371
 20588
+    OP(COH, 0, 0, 0, coh),
mgl@1371
 20589
+  };
mgl@1371
 20590
+
mgl@1371
 20591
+static void
mgl@1371
 20592
+print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
mgl@1371
 20593
+	     bfd_vma pc, struct disassemble_info *info)
mgl@1371
 20594
+{
mgl@1371
 20595
+  const struct avr32_syntax *syntax = opc->syntax;
mgl@1371
 20596
+  struct avr32_field_value fields[AVR32_MAX_FIELDS];
mgl@1371
 20597
+  unsigned int i, next_field = 0, nr_operands;
mgl@1371
 20598
+
mgl@1371
 20599
+  for (i = 0; i < opc->nr_fields; i++)
mgl@1371
 20600
+    {
mgl@1371
 20601
+      opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
mgl@1371
 20602
+      fields[i].ifield = opc->fields[i];
mgl@1371
 20603
+    }
mgl@1371
 20604
+
mgl@1371
 20605
+  current_pc = pc;
mgl@1371
 20606
+  info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
mgl@1371
 20607
+
mgl@1371
 20608
+  if (syntax->nr_operands < 0)
mgl@1371
 20609
+    nr_operands = (unsigned int) -syntax->nr_operands;
mgl@1371
 20610
+  else
mgl@1371
 20611
+    nr_operands = (unsigned int) syntax->nr_operands;
mgl@1371
 20612
+
mgl@1371
 20613
+  for (i = 0; i < nr_operands; i++)
mgl@1371
 20614
+    {
mgl@1371
 20615
+      struct avr32_operand *op = &operand[syntax->operand[i]];
mgl@1371
 20616
+
mgl@1371
 20617
+      if (i)
mgl@1371
 20618
+	info->fprintf_func(info->stream, ",");
mgl@1371
 20619
+      else
mgl@1371
 20620
+	info->fprintf_func(info->stream, "\t");
mgl@1371
 20621
+      next_field += op->print(op, info, &fields[next_field]);
mgl@1371
 20622
+    }
mgl@1371
 20623
+}
mgl@1371
 20624
+
mgl@1371
 20625
+static const struct avr32_opcode *
mgl@1371
 20626
+find_opcode(bfd_vma insn_word)
mgl@1371
 20627
+{
mgl@1371
 20628
+  int i;
mgl@1371
 20629
+
mgl@1371
 20630
+  for (i = 0; i < AVR32_NR_OPCODES; i++)
mgl@1371
 20631
+    {
mgl@1371
 20632
+      const struct avr32_opcode *opc = &avr32_opc_table[i];
mgl@1371
 20633
+
mgl@1371
 20634
+      if ((insn_word & opc->mask) == opc->value)
mgl@1371
 20635
+	return opc;
mgl@1371
 20636
+    }
mgl@1371
 20637
+
mgl@1371
 20638
+  return NULL;
mgl@1371
 20639
+}
mgl@1371
 20640
+
mgl@1371
 20641
+static int
mgl@1371
 20642
+read_insn_word(bfd_vma pc, bfd_vma *valuep,
mgl@1371
 20643
+	       struct disassemble_info *info)
mgl@1371
 20644
+{
mgl@1371
 20645
+  bfd_byte b[4];
mgl@1371
 20646
+  int status;
mgl@1371
 20647
+
mgl@1371
 20648
+  status = info->read_memory_func(pc, b, 4, info);
mgl@1371
 20649
+  if (status)
mgl@1371
 20650
+    {
mgl@1371
 20651
+      status = info->read_memory_func(pc, b, 2, info);
mgl@1371
 20652
+      if (status)
mgl@1371
 20653
+	{
mgl@1371
 20654
+	  info->memory_error_func(status, pc, info);
mgl@1371
 20655
+	  return -1;
mgl@1371
 20656
+	}
mgl@1371
 20657
+      b[3] = b[2] = 0;
mgl@1371
 20658
+    }
mgl@1371
 20659
+
mgl@1371
 20660
+  *valuep =  (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
mgl@1371
 20661
+  return 0;
mgl@1371
 20662
+}
mgl@1371
 20663
+
mgl@1371
 20664
+/* Parse an individual disassembler option.  */
mgl@1371
 20665
+
mgl@1371
 20666
+void
mgl@1371
 20667
+parse_avr32_disassembler_option (option)
mgl@1371
 20668
+     char * option;
mgl@1371
 20669
+{
mgl@1371
 20670
+  if (option == NULL)
mgl@1371
 20671
+    return;
mgl@1371
 20672
+
mgl@1371
 20673
+  /* XXX - should break 'option' at following delimiter.  */
mgl@1371
 20674
+  fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
mgl@1371
 20675
+
mgl@1371
 20676
+  return;
mgl@1371
 20677
+}
mgl@1371
 20678
+
mgl@1371
 20679
+/* Parse the string of disassembler options, spliting it at whitespaces
mgl@1371
 20680
+   or commas.  (Whitespace separators supported for backwards compatibility).  */
mgl@1371
 20681
+
mgl@1371
 20682
+static void
mgl@1371
 20683
+parse_disassembler_options (char *options)
mgl@1371
 20684
+{
mgl@1371
 20685
+  if (options == NULL)
mgl@1371
 20686
+    return;
mgl@1371
 20687
+
mgl@1371
 20688
+  while (*options)
mgl@1371
 20689
+    {
mgl@1371
 20690
+      parse_avr32_disassembler_option (options);
mgl@1371
 20691
+
mgl@1371
 20692
+      /* Skip forward to next seperator.  */
mgl@1371
 20693
+      while ((*options) && (! ISSPACE (*options)) && (*options != ','))
mgl@1371
 20694
+	++ options;
mgl@1371
 20695
+      /* Skip forward past seperators.  */
mgl@1371
 20696
+      while (ISSPACE (*options) || (*options == ','))
mgl@1371
 20697
+	++ options;
mgl@1371
 20698
+    }
mgl@1371
 20699
+}
mgl@1371
 20700
+
mgl@1371
 20701
+int
mgl@1371
 20702
+print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
mgl@1371
 20703
+{
mgl@1371
 20704
+  bfd_vma insn_word;
mgl@1371
 20705
+  const struct avr32_opcode *opc;
mgl@1371
 20706
+
mgl@1371
 20707
+  if (info->disassembler_options)
mgl@1371
 20708
+    {
mgl@1371
 20709
+      parse_disassembler_options (info->disassembler_options);
mgl@1371
 20710
+
mgl@1371
 20711
+      /* To avoid repeated parsing of these options, we remove them here.  */
mgl@1371
 20712
+      info->disassembler_options = NULL;
mgl@1371
 20713
+    }
mgl@1371
 20714
+
mgl@1371
 20715
+  info->bytes_per_chunk = 1;
mgl@1371
 20716
+  info->display_endian = BFD_ENDIAN_BIG;
mgl@1371
 20717
+
mgl@1371
 20718
+  if (read_insn_word(pc, &insn_word, info))
mgl@1371
 20719
+    return -1;
mgl@1371
 20720
+
mgl@1371
 20721
+  opc = find_opcode(insn_word);
mgl@1371
 20722
+  if (opc)
mgl@1371
 20723
+    {
mgl@1371
 20724
+      print_opcode(insn_word, opc, pc, info);
mgl@1371
 20725
+      return opc->size;
mgl@1371
 20726
+    }
mgl@1371
 20727
+  else
mgl@1371
 20728
+    {
mgl@1371
 20729
+      info->fprintf_func(info->stream, _("*unknown*"));
mgl@1371
 20730
+      return 2;
mgl@1371
 20731
+    }
mgl@1371
 20732
+
mgl@1371
 20733
+}
mgl@1371
 20734
+
mgl@1371
 20735
+void
mgl@1371
 20736
+print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
mgl@1371
 20737
+{
mgl@1371
 20738
+
mgl@1371
 20739
+}
mgl@1371
 20740
--- /dev/null
mgl@1371
 20741
+++ b/opcodes/avr32-opc.c
mgl@1371
 20742
@@ -0,0 +1,6932 @@
mgl@1371
 20743
+/* Opcode tables for AVR32.
mgl@1371
 20744
+   Copyright 2005, 2006 Atmel Corporation.
mgl@1371
 20745
+
mgl@1371
 20746
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 20747
+
mgl@1371
 20748
+   This file is part of libopcodes.
mgl@1371
 20749
+
mgl@1371
 20750
+   This program is free software; you can redistribute it and/or
mgl@1371
 20751
+   modify it under the terms of the GNU General Public License as
mgl@1371
 20752
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 20753
+   License, or (at your option) any later version.
mgl@1371
 20754
+
mgl@1371
 20755
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 20756
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 20757
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 20758
+   General Public License for more details.
mgl@1371
 20759
+
mgl@1371
 20760
+   You should have received a copy of the GNU General Public License
mgl@1371
 20761
+   along with this program; if not, write to the Free Software
mgl@1371
 20762
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 20763
+   02111-1307, USA.  */
mgl@1371
 20764
+
mgl@1371
 20765
+#include <stdlib.h>
mgl@1371
 20766
+#include <assert.h>
mgl@1371
 20767
+
mgl@1371
 20768
+#include "avr32-opc.h"
mgl@1371
 20769
+
mgl@1371
 20770
+#define PICO_CPNO	1
mgl@1371
 20771
+
mgl@1371
 20772
+void
mgl@1371
 20773
+avr32_insert_simple(const struct avr32_ifield *field,
mgl@1371
 20774
+		    void *buf, unsigned long value)
mgl@1371
 20775
+{
mgl@1371
 20776
+  bfd_vma word;
mgl@1371
 20777
+
mgl@1371
 20778
+  word = bfd_getb32(buf);
mgl@1371
 20779
+  word &= ~field->mask;
mgl@1371
 20780
+  word |= (value << field->shift) & field->mask;
mgl@1371
 20781
+  bfd_putb32(word, buf);
mgl@1371
 20782
+}
mgl@1371
 20783
+
mgl@1371
 20784
+void
mgl@1371
 20785
+avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20786
+		   void *buf, unsigned long value)
mgl@1371
 20787
+{
mgl@1371
 20788
+  char *opcode = buf;
mgl@1371
 20789
+
mgl@1371
 20790
+  opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
mgl@1371
 20791
+  opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
mgl@1371
 20792
+}
mgl@1371
 20793
+
mgl@1371
 20794
+void
mgl@1371
 20795
+avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20796
+		 void *buf, unsigned long value)
mgl@1371
 20797
+{
mgl@1371
 20798
+  char *opcode = buf;
mgl@1371
 20799
+
mgl@1371
 20800
+  opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
mgl@1371
 20801
+  opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
mgl@1371
 20802
+	       | ((value & 0x300) >> 8));
mgl@1371
 20803
+}
mgl@1371
 20804
+
mgl@1371
 20805
+
mgl@1371
 20806
+void
mgl@1371
 20807
+avr32_insert_k21(const struct avr32_ifield *field,
mgl@1371
 20808
+		 void *buf, unsigned long value)
mgl@1371
 20809
+{
mgl@1371
 20810
+  bfd_vma word;
mgl@1371
 20811
+  bfd_vma k21;
mgl@1371
 20812
+
mgl@1371
 20813
+  word = bfd_getb32(buf);
mgl@1371
 20814
+  word &= ~field->mask;
mgl@1371
 20815
+  k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
mgl@1371
 20816
+	 | ((value & 0x1e0000) << 8));
mgl@1371
 20817
+  assert(!(k21 & ~field->mask));
mgl@1371
 20818
+  word |= k21;
mgl@1371
 20819
+  bfd_putb32(word, buf);
mgl@1371
 20820
+}
mgl@1371
 20821
+
mgl@1371
 20822
+void
mgl@1371
 20823
+avr32_insert_cpop(const struct avr32_ifield *field,
mgl@1371
 20824
+		  void *buf, unsigned long value)
mgl@1371
 20825
+{
mgl@1371
 20826
+  bfd_vma word;
mgl@1371
 20827
+
mgl@1371
 20828
+  word = bfd_getb32(buf);
mgl@1371
 20829
+  word &= ~field->mask;
mgl@1371
 20830
+  word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
mgl@1371
 20831
+	   | ((value & 0x01) << 12));
mgl@1371
 20832
+  bfd_putb32(word, buf);
mgl@1371
 20833
+}
mgl@1371
 20834
+
mgl@1371
 20835
+void
mgl@1371
 20836
+avr32_insert_k12cp(const struct avr32_ifield *field,
mgl@1371
 20837
+		   void *buf, unsigned long value)
mgl@1371
 20838
+{
mgl@1371
 20839
+  bfd_vma word;
mgl@1371
 20840
+
mgl@1371
 20841
+  word = bfd_getb32(buf);
mgl@1371
 20842
+  word &= ~field->mask;
mgl@1371
 20843
+  word |= ((value & 0xf00) << 4) | (value & 0xff);
mgl@1371
 20844
+  bfd_putb32(word, buf);
mgl@1371
 20845
+}
mgl@1371
 20846
+
mgl@1371
 20847
+void avr32_extract_simple(const struct avr32_ifield *field,
mgl@1371
 20848
+			  void *buf, unsigned long *value)
mgl@1371
 20849
+{
mgl@1371
 20850
+  /* XXX: The disassembler has done any necessary byteswapping already */
mgl@1371
 20851
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20852
+
mgl@1371
 20853
+  *value = (word & field->mask) >> field->shift;
mgl@1371
 20854
+}
mgl@1371
 20855
+
mgl@1371
 20856
+void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20857
+			 void *buf, unsigned long *value)
mgl@1371
 20858
+{
mgl@1371
 20859
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20860
+
mgl@1371
 20861
+  *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
mgl@1371
 20862
+}
mgl@1371
 20863
+
mgl@1371
 20864
+void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20865
+		       void *buf, unsigned long *value)
mgl@1371
 20866
+{
mgl@1371
 20867
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20868
+
mgl@1371
 20869
+  *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
mgl@1371
 20870
+}
mgl@1371
 20871
+
mgl@1371
 20872
+void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20873
+		       void *buf, unsigned long *value)
mgl@1371
 20874
+{
mgl@1371
 20875
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20876
+
mgl@1371
 20877
+  *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
mgl@1371
 20878
+	    | ((word >> 8) & 0x1e0000));
mgl@1371
 20879
+}
mgl@1371
 20880
+
mgl@1371
 20881
+void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20882
+			void *buf, unsigned long *value)
mgl@1371
 20883
+{
mgl@1371
 20884
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20885
+
mgl@1371
 20886
+  *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
mgl@1371
 20887
+	    | ((word >> 20) & 0x60));
mgl@1371
 20888
+}
mgl@1371
 20889
+
mgl@1371
 20890
+void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
mgl@1371
 20891
+			 void *buf, unsigned long *value)
mgl@1371
 20892
+{
mgl@1371
 20893
+  bfd_vma word = *(bfd_vma *)buf;
mgl@1371
 20894
+
mgl@1371
 20895
+  *value = ((word >> 4) & 0xf00) | (word & 0xff);
mgl@1371
 20896
+}
mgl@1371
 20897
+
mgl@1371
 20898
+
mgl@1371
 20899
+#define IFLD(id, bitsz, shift, mask, func) \
mgl@1371
 20900
+  { AVR32_IFIELD_##id, bitsz, shift, mask, \
mgl@1371
 20901
+    avr32_insert_##func, avr32_extract_##func }
mgl@1371
 20902
+
mgl@1371
 20903
+const struct avr32_ifield avr32_ifield_table[] =
mgl@1371
 20904
+  {
mgl@1371
 20905
+    IFLD(RX, 4, 25, 0x1e000000, simple),
mgl@1371
 20906
+    IFLD(RY, 4, 16, 0x000f0000, simple),
mgl@1371
 20907
+    IFLD(COND4C, 4, 20, 0x00f00000, simple),
mgl@1371
 20908
+    IFLD(K8C, 8, 20, 0x0ff00000, simple),
mgl@1371
 20909
+    IFLD(K7C, 7, 20, 0x07f00000, simple),
mgl@1371
 20910
+    IFLD(K5C, 5, 20, 0x01f00000, simple),
mgl@1371
 20911
+    IFLD(K3, 3, 20, 0x00700000, simple),
mgl@1371
 20912
+    IFLD(RY_DW, 3, 17, 0x000e0000, simple),
mgl@1371
 20913
+    IFLD(COND4E, 4, 8, 0x00000f00, simple),
mgl@1371
 20914
+    IFLD(K8E, 8, 0, 0x000000ff, simple),
mgl@1371
 20915
+    IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
mgl@1371
 20916
+    IFLD(COND3, 3, 16, 0x00070000, simple),
mgl@1371
 20917
+    IFLD(K10, 10, 16, 0x0ff30000, k10),
mgl@1371
 20918
+    IFLD(POPM, 9, 19, 0x0ff80000, simple),
mgl@1371
 20919
+    IFLD(K2, 2, 4, 0x00000030, simple),
mgl@1371
 20920
+    IFLD(RD_E, 4, 0, 0x0000000f, simple),
mgl@1371
 20921
+    IFLD(RD_DW, 3, 1, 0x0000000e, simple),
mgl@1371
 20922
+    IFLD(X, 1, 5, 0x00000020, simple),
mgl@1371
 20923
+    IFLD(Y, 1, 4, 0x00000010, simple),
mgl@1371
 20924
+    IFLD(X2, 1, 13, 0x00002000, simple),
mgl@1371
 20925
+    IFLD(Y2, 1, 12, 0x00001000, simple),
mgl@1371
 20926
+    IFLD(K5E, 5, 0, 0x0000001f, simple),
mgl@1371
 20927
+    IFLD(PART2, 2, 0, 0x00000003, simple),
mgl@1371
 20928
+    IFLD(PART1, 1, 0, 0x00000001, simple),
mgl@1371
 20929
+    IFLD(K16, 16, 0, 0x0000ffff, simple),
mgl@1371
 20930
+    IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
mgl@1371
 20931
+    IFLD(K11, 11, 0, 0x000007ff, simple),
mgl@1371
 20932
+    IFLD(K21, 21, 0, 0x1e10ffff, k21),
mgl@1371
 20933
+    IFLD(CPOP, 7, 12, 0x060f1000, cpop),
mgl@1371
 20934
+    IFLD(CPNO, 3, 13, 0x0000e000, simple),
mgl@1371
 20935
+    IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
mgl@1371
 20936
+    IFLD(CRX, 4, 4, 0x000000f0, simple),
mgl@1371
 20937
+    IFLD(CRY, 4, 0, 0x0000000f, simple),
mgl@1371
 20938
+    IFLD(K7E, 7, 0, 0x0000007f, simple),
mgl@1371
 20939
+    IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
mgl@1371
 20940
+    IFLD(PART1_K12, 1, 12, 0x00001000, simple),
mgl@1371
 20941
+    IFLD(PART2_K12, 2, 12, 0x00003000, simple),
mgl@1371
 20942
+    IFLD(K12, 12, 0, 0x00000fff, simple),
mgl@1371
 20943
+    IFLD(S5, 5, 5, 0x000003e0, simple),
mgl@1371
 20944
+    IFLD(K5E2, 5, 4, 0x000001f0, simple),
mgl@1371
 20945
+    IFLD(K4, 4, 20, 0x00f00000, simple),
mgl@1371
 20946
+    IFLD(COND4E2, 4, 4, 0x000000f0, simple),
mgl@1371
 20947
+    IFLD(K8E2, 8, 4, 0x00000ff0, simple),
mgl@1371
 20948
+    IFLD(K6, 6, 20, 0x03f00000, simple),
mgl@1371
 20949
+    IFLD(MEM15, 15, 0, 0x00007fff, simple),
mgl@1371
 20950
+    IFLD(MEMB5, 5, 15, 0x000f8000, simple),
mgl@1371
 20951
+    IFLD(W, 1, 25, 0x02000000, simple),
mgl@1371
 20952
+    /* Coprocessor Multiple High/Low */
mgl@1371
 20953
+    IFLD(CM_HL, 1, 8, 0x00000100, simple),
mgl@1371
 20954
+    IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
mgl@1371
 20955
+    IFLD(K9E, 9 ,0, 0x000001ff, simple),
mgl@1371
 20956
+  };
mgl@1371
 20957
+#undef IFLD
mgl@1371
 20958
+
mgl@1371
 20959
+
mgl@1371
 20960
+struct avr32_opcode avr32_opc_table[] =
mgl@1371
 20961
+  {
mgl@1371
 20962
+    {
mgl@1371
 20963
+      AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
mgl@1371
 20964
+      &avr32_syntax_table[AVR32_SYNTAX_ABS],
mgl@1371
 20965
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 20966
+      {
mgl@1371
 20967
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 20968
+      }
mgl@1371
 20969
+    },
mgl@1371
 20970
+    {
mgl@1371
 20971
+      AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
mgl@1371
 20972
+      &avr32_syntax_table[AVR32_SYNTAX_ACALL],
mgl@1371
 20973
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 20974
+      {
mgl@1371
 20975
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 20976
+      },
mgl@1371
 20977
+    },
mgl@1371
 20978
+    {
mgl@1371
 20979
+      AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
mgl@1371
 20980
+      &avr32_syntax_table[AVR32_SYNTAX_ACR],
mgl@1371
 20981
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 20982
+      {
mgl@1371
 20983
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 20984
+      },
mgl@1371
 20985
+    },
mgl@1371
 20986
+    {
mgl@1371
 20987
+      AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
mgl@1371
 20988
+      &avr32_syntax_table[AVR32_SYNTAX_ADC],
mgl@1371
 20989
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 20990
+      {
mgl@1371
 20991
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 20992
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 20993
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 20994
+      },
mgl@1371
 20995
+    },
mgl@1371
 20996
+    {
mgl@1371
 20997
+      AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
mgl@1371
 20998
+      &avr32_syntax_table[AVR32_SYNTAX_ADD1],
mgl@1371
 20999
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21000
+      {
mgl@1371
 21001
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21002
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21003
+      },
mgl@1371
 21004
+    },
mgl@1371
 21005
+    {
mgl@1371
 21006
+      AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
mgl@1371
 21007
+      &avr32_syntax_table[AVR32_SYNTAX_ADD2],
mgl@1371
 21008
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21009
+      {
mgl@1371
 21010
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21011
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21012
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21013
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21014
+      },
mgl@1371
 21015
+    },
mgl@1371
 21016
+    {
mgl@1371
 21017
+      AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
mgl@1371
 21018
+      &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
mgl@1371
 21019
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21020
+      {
mgl@1371
 21021
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21022
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21023
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21024
+      },
mgl@1371
 21025
+    },
mgl@1371
 21026
+    {
mgl@1371
 21027
+      AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
mgl@1371
 21028
+      &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
mgl@1371
 21029
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 21030
+      {
mgl@1371
 21031
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21032
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21033
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 21034
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21035
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 21036
+      },
mgl@1371
 21037
+    },
mgl@1371
 21038
+    {
mgl@1371
 21039
+      AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
mgl@1371
 21040
+      &avr32_syntax_table[AVR32_SYNTAX_AND1],
mgl@1371
 21041
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21042
+      {
mgl@1371
 21043
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21044
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21045
+      },
mgl@1371
 21046
+    },
mgl@1371
 21047
+    {
mgl@1371
 21048
+      AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
mgl@1371
 21049
+      &avr32_syntax_table[AVR32_SYNTAX_AND2],
mgl@1371
 21050
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21051
+      {
mgl@1371
 21052
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21053
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21054
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21055
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 21056
+      },
mgl@1371
 21057
+    },
mgl@1371
 21058
+    {
mgl@1371
 21059
+      AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
mgl@1371
 21060
+      &avr32_syntax_table[AVR32_SYNTAX_AND3],
mgl@1371
 21061
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21062
+      {
mgl@1371
 21063
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21064
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21065
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21066
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 21067
+      },
mgl@1371
 21068
+    },
mgl@1371
 21069
+    {
mgl@1371
 21070
+      AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
mgl@1371
 21071
+      &avr32_syntax_table[AVR32_SYNTAX_ANDH],
mgl@1371
 21072
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21073
+      {
mgl@1371
 21074
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21075
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21076
+      },
mgl@1371
 21077
+    },
mgl@1371
 21078
+    {
mgl@1371
 21079
+      AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
mgl@1371
 21080
+      &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
mgl@1371
 21081
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21082
+      {
mgl@1371
 21083
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21084
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21085
+      },
mgl@1371
 21086
+    },
mgl@1371
 21087
+    {
mgl@1371
 21088
+      AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
mgl@1371
 21089
+      &avr32_syntax_table[AVR32_SYNTAX_ANDL],
mgl@1371
 21090
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21091
+      {
mgl@1371
 21092
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21093
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21094
+      },
mgl@1371
 21095
+    },
mgl@1371
 21096
+    {
mgl@1371
 21097
+      AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
mgl@1371
 21098
+      &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
mgl@1371
 21099
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21100
+      {
mgl@1371
 21101
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21102
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21103
+      },
mgl@1371
 21104
+    },
mgl@1371
 21105
+    {
mgl@1371
 21106
+      AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
mgl@1371
 21107
+      &avr32_syntax_table[AVR32_SYNTAX_ANDN],
mgl@1371
 21108
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21109
+      {
mgl@1371
 21110
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21111
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21112
+      },
mgl@1371
 21113
+    },
mgl@1371
 21114
+    {
mgl@1371
 21115
+      AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
mgl@1371
 21116
+      &avr32_syntax_table[AVR32_SYNTAX_ASR1],
mgl@1371
 21117
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21118
+      {
mgl@1371
 21119
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21120
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21121
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21122
+      },
mgl@1371
 21123
+    },
mgl@1371
 21124
+    {
mgl@1371
 21125
+      AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
mgl@1371
 21126
+      &avr32_syntax_table[AVR32_SYNTAX_ASR3],
mgl@1371
 21127
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21128
+      {
mgl@1371
 21129
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21130
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21131
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 21132
+      },
mgl@1371
 21133
+    },
mgl@1371
 21134
+    {
mgl@1371
 21135
+      AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
mgl@1371
 21136
+      &avr32_syntax_table[AVR32_SYNTAX_ASR2],
mgl@1371
 21137
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21138
+      {
mgl@1371
 21139
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21140
+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
mgl@1371
 21141
+      },
mgl@1371
 21142
+    },
mgl@1371
 21143
+    {
mgl@1371
 21144
+      AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
mgl@1371
 21145
+      &avr32_syntax_table[AVR32_SYNTAX_BLD],
mgl@1371
 21146
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21147
+      {
mgl@1371
 21148
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21149
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 21150
+      },
mgl@1371
 21151
+    },
mgl@1371
 21152
+    {
mgl@1371
 21153
+      AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
mgl@1371
 21154
+      &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
mgl@1371
 21155
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21156
+      {
mgl@1371
 21157
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21158
+      },
mgl@1371
 21159
+    },
mgl@1371
 21160
+    {
mgl@1371
 21161
+      AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
mgl@1371
 21162
+      &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
mgl@1371
 21163
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21164
+      {
mgl@1371
 21165
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21166
+      },
mgl@1371
 21167
+    },
mgl@1371
 21168
+    {
mgl@1371
 21169
+      AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
mgl@1371
 21170
+      &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
mgl@1371
 21171
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21172
+      {
mgl@1371
 21173
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21174
+      },
mgl@1371
 21175
+    },
mgl@1371
 21176
+    {
mgl@1371
 21177
+      AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
mgl@1371
 21178
+      &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
mgl@1371
 21179
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21180
+      {
mgl@1371
 21181
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21182
+      },
mgl@1371
 21183
+    },
mgl@1371
 21184
+    {
mgl@1371
 21185
+      AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
mgl@1371
 21186
+      &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
mgl@1371
 21187
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21188
+      {
mgl@1371
 21189
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21190
+      },
mgl@1371
 21191
+    },
mgl@1371
 21192
+    {
mgl@1371
 21193
+      AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
mgl@1371
 21194
+      &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
mgl@1371
 21195
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21196
+      {
mgl@1371
 21197
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21198
+      },
mgl@1371
 21199
+    },
mgl@1371
 21200
+    {
mgl@1371
 21201
+      AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
mgl@1371
 21202
+      &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
mgl@1371
 21203
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21204
+      {
mgl@1371
 21205
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21206
+      },
mgl@1371
 21207
+    },
mgl@1371
 21208
+    {
mgl@1371
 21209
+      AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
mgl@1371
 21210
+      &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
mgl@1371
 21211
+      BFD_RELOC_AVR32_9H_PCREL, 1, 0,
mgl@1371
 21212
+      {
mgl@1371
 21213
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 21214
+      },
mgl@1371
 21215
+    },
mgl@1371
 21216
+    {
mgl@1371
 21217
+      AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
mgl@1371
 21218
+      &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
mgl@1371
 21219
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21220
+      {
mgl@1371
 21221
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21222
+      },
mgl@1371
 21223
+    },
mgl@1371
 21224
+    {
mgl@1371
 21225
+      AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
mgl@1371
 21226
+      &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
mgl@1371
 21227
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21228
+      {
mgl@1371
 21229
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21230
+      },
mgl@1371
 21231
+    },
mgl@1371
 21232
+    {
mgl@1371
 21233
+      AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
mgl@1371
 21234
+      &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
mgl@1371
 21235
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21236
+      {
mgl@1371
 21237
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21238
+      },
mgl@1371
 21239
+    },
mgl@1371
 21240
+    {
mgl@1371
 21241
+      AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
mgl@1371
 21242
+      &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
mgl@1371
 21243
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21244
+      {
mgl@1371
 21245
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21246
+      },
mgl@1371
 21247
+    },
mgl@1371
 21248
+    {
mgl@1371
 21249
+      AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
mgl@1371
 21250
+      &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
mgl@1371
 21251
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21252
+      {
mgl@1371
 21253
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21254
+      },
mgl@1371
 21255
+    },
mgl@1371
 21256
+    {
mgl@1371
 21257
+      AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
mgl@1371
 21258
+      &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
mgl@1371
 21259
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21260
+      {
mgl@1371
 21261
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21262
+      },
mgl@1371
 21263
+    },
mgl@1371
 21264
+    {
mgl@1371
 21265
+      AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
mgl@1371
 21266
+      &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
mgl@1371
 21267
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21268
+      {
mgl@1371
 21269
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21270
+      },
mgl@1371
 21271
+    },
mgl@1371
 21272
+    {
mgl@1371
 21273
+      AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
mgl@1371
 21274
+      &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
mgl@1371
 21275
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21276
+      {
mgl@1371
 21277
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21278
+      },
mgl@1371
 21279
+    },
mgl@1371
 21280
+    {
mgl@1371
 21281
+      AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
mgl@1371
 21282
+      &avr32_syntax_table[AVR32_SYNTAX_BRLS],
mgl@1371
 21283
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21284
+      {
mgl@1371
 21285
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21286
+      },
mgl@1371
 21287
+    },
mgl@1371
 21288
+    {
mgl@1371
 21289
+      AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
mgl@1371
 21290
+      &avr32_syntax_table[AVR32_SYNTAX_BRGT],
mgl@1371
 21291
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21292
+      {
mgl@1371
 21293
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21294
+      },
mgl@1371
 21295
+    },
mgl@1371
 21296
+    {
mgl@1371
 21297
+      AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
mgl@1371
 21298
+      &avr32_syntax_table[AVR32_SYNTAX_BRLE],
mgl@1371
 21299
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21300
+      {
mgl@1371
 21301
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21302
+      },
mgl@1371
 21303
+    },
mgl@1371
 21304
+    {
mgl@1371
 21305
+      AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
mgl@1371
 21306
+      &avr32_syntax_table[AVR32_SYNTAX_BRHI],
mgl@1371
 21307
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21308
+      {
mgl@1371
 21309
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21310
+      },
mgl@1371
 21311
+    },
mgl@1371
 21312
+    {
mgl@1371
 21313
+      AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
mgl@1371
 21314
+      &avr32_syntax_table[AVR32_SYNTAX_BRVS],
mgl@1371
 21315
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21316
+      {
mgl@1371
 21317
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21318
+      },
mgl@1371
 21319
+    },
mgl@1371
 21320
+    {
mgl@1371
 21321
+      AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
mgl@1371
 21322
+      &avr32_syntax_table[AVR32_SYNTAX_BRVC],
mgl@1371
 21323
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21324
+      {
mgl@1371
 21325
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21326
+      },
mgl@1371
 21327
+    },
mgl@1371
 21328
+    {
mgl@1371
 21329
+      AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
mgl@1371
 21330
+      &avr32_syntax_table[AVR32_SYNTAX_BRQS],
mgl@1371
 21331
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21332
+      {
mgl@1371
 21333
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21334
+      },
mgl@1371
 21335
+    },
mgl@1371
 21336
+    {
mgl@1371
 21337
+      AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
mgl@1371
 21338
+      &avr32_syntax_table[AVR32_SYNTAX_BRAL],
mgl@1371
 21339
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 21340
+      {
mgl@1371
 21341
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21342
+      },
mgl@1371
 21343
+    },
mgl@1371
 21344
+    {
mgl@1371
 21345
+      AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
mgl@1371
 21346
+      &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
mgl@1371
 21347
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 21348
+    },
mgl@1371
 21349
+    {
mgl@1371
 21350
+      AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
mgl@1371
 21351
+      &avr32_syntax_table[AVR32_SYNTAX_BREV],
mgl@1371
 21352
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21353
+      {
mgl@1371
 21354
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21355
+      },
mgl@1371
 21356
+    },
mgl@1371
 21357
+    {
mgl@1371
 21358
+      AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
mgl@1371
 21359
+      &avr32_syntax_table[AVR32_SYNTAX_BST],
mgl@1371
 21360
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21361
+      {
mgl@1371
 21362
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21363
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 21364
+      },
mgl@1371
 21365
+    },
mgl@1371
 21366
+    {
mgl@1371
 21367
+      AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
mgl@1371
 21368
+      &avr32_syntax_table[AVR32_SYNTAX_CACHE],
mgl@1371
 21369
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21370
+      {
mgl@1371
 21371
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21372
+	&avr32_ifield_table[AVR32_IFIELD_K11],
mgl@1371
 21373
+	&avr32_ifield_table[AVR32_IFIELD_CACHEOP],
mgl@1371
 21374
+      },
mgl@1371
 21375
+    },
mgl@1371
 21376
+    {
mgl@1371
 21377
+      AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
mgl@1371
 21378
+      &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
mgl@1371
 21379
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21380
+      {
mgl@1371
 21381
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21382
+      },
mgl@1371
 21383
+    },
mgl@1371
 21384
+    {
mgl@1371
 21385
+      AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
mgl@1371
 21386
+      &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
mgl@1371
 21387
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21388
+      {
mgl@1371
 21389
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21390
+      },
mgl@1371
 21391
+    },
mgl@1371
 21392
+    {
mgl@1371
 21393
+      AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
mgl@1371
 21394
+      &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
mgl@1371
 21395
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21396
+      {
mgl@1371
 21397
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21398
+      },
mgl@1371
 21399
+    },
mgl@1371
 21400
+    {
mgl@1371
 21401
+      AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
mgl@1371
 21402
+      &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
mgl@1371
 21403
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21404
+      {
mgl@1371
 21405
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21406
+      },
mgl@1371
 21407
+    },
mgl@1371
 21408
+    {
mgl@1371
 21409
+      AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
mgl@1371
 21410
+      &avr32_syntax_table[AVR32_SYNTAX_CBR],
mgl@1371
 21411
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21412
+      {
mgl@1371
 21413
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21414
+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
mgl@1371
 21415
+      },
mgl@1371
 21416
+    },
mgl@1371
 21417
+    {
mgl@1371
 21418
+      AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
mgl@1371
 21419
+      &avr32_syntax_table[AVR32_SYNTAX_CLZ],
mgl@1371
 21420
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21421
+      {
mgl@1371
 21422
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21423
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21424
+      },
mgl@1371
 21425
+    },
mgl@1371
 21426
+    {
mgl@1371
 21427
+      AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
mgl@1371
 21428
+      &avr32_syntax_table[AVR32_SYNTAX_COM],
mgl@1371
 21429
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21430
+      {
mgl@1371
 21431
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21432
+      },
mgl@1371
 21433
+    },
mgl@1371
 21434
+    {
mgl@1371
 21435
+      AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
mgl@1371
 21436
+      &avr32_syntax_table[AVR32_SYNTAX_COP],
mgl@1371
 21437
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 21438
+      {
mgl@1371
 21439
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21440
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 21441
+	&avr32_ifield_table[AVR32_IFIELD_CRX],
mgl@1371
 21442
+	&avr32_ifield_table[AVR32_IFIELD_CRY],
mgl@1371
 21443
+	&avr32_ifield_table[AVR32_IFIELD_CPOP],
mgl@1371
 21444
+      },
mgl@1371
 21445
+    },
mgl@1371
 21446
+    {
mgl@1371
 21447
+      AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
mgl@1371
 21448
+      &avr32_syntax_table[AVR32_SYNTAX_CP_B],
mgl@1371
 21449
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21450
+      {
mgl@1371
 21451
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21452
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21453
+      },
mgl@1371
 21454
+    },
mgl@1371
 21455
+    {
mgl@1371
 21456
+      AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
mgl@1371
 21457
+      &avr32_syntax_table[AVR32_SYNTAX_CP_H],
mgl@1371
 21458
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21459
+      {
mgl@1371
 21460
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21461
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21462
+      },
mgl@1371
 21463
+    },
mgl@1371
 21464
+    {
mgl@1371
 21465
+      AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
mgl@1371
 21466
+      &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
mgl@1371
 21467
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21468
+      {
mgl@1371
 21469
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21470
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21471
+      },
mgl@1371
 21472
+    },
mgl@1371
 21473
+    {
mgl@1371
 21474
+      AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
mgl@1371
 21475
+      &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
mgl@1371
 21476
+      BFD_RELOC_AVR32_6S, 2, 1,
mgl@1371
 21477
+      {
mgl@1371
 21478
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21479
+	&avr32_ifield_table[AVR32_IFIELD_K6],
mgl@1371
 21480
+      },
mgl@1371
 21481
+    },
mgl@1371
 21482
+    {
mgl@1371
 21483
+      AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
mgl@1371
 21484
+      &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
mgl@1371
 21485
+      BFD_RELOC_AVR32_21S, 2, 1,
mgl@1371
 21486
+      {
mgl@1371
 21487
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21488
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 21489
+      },
mgl@1371
 21490
+    },
mgl@1371
 21491
+    {
mgl@1371
 21492
+      AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
mgl@1371
 21493
+      &avr32_syntax_table[AVR32_SYNTAX_CPC1],
mgl@1371
 21494
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21495
+      {
mgl@1371
 21496
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21497
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21498
+      },
mgl@1371
 21499
+    },
mgl@1371
 21500
+    {
mgl@1371
 21501
+      AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
mgl@1371
 21502
+      &avr32_syntax_table[AVR32_SYNTAX_CPC2],
mgl@1371
 21503
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21504
+      {
mgl@1371
 21505
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21506
+      },
mgl@1371
 21507
+    },
mgl@1371
 21508
+    {
mgl@1371
 21509
+      AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
mgl@1371
 21510
+      &avr32_syntax_table[AVR32_SYNTAX_CSRF],
mgl@1371
 21511
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21512
+      {
mgl@1371
 21513
+	&avr32_ifield_table[AVR32_IFIELD_K5C],
mgl@1371
 21514
+      },
mgl@1371
 21515
+    },
mgl@1371
 21516
+    {
mgl@1371
 21517
+      AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
mgl@1371
 21518
+      &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
mgl@1371
 21519
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21520
+      {
mgl@1371
 21521
+	&avr32_ifield_table[AVR32_IFIELD_K5C],
mgl@1371
 21522
+      },
mgl@1371
 21523
+    },
mgl@1371
 21524
+    {
mgl@1371
 21525
+      AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
mgl@1371
 21526
+      &avr32_syntax_table[AVR32_SYNTAX_DIVS],
mgl@1371
 21527
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21528
+      {
mgl@1371
 21529
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21530
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21531
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21532
+      },
mgl@1371
 21533
+    },
mgl@1371
 21534
+    {
mgl@1371
 21535
+      AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
mgl@1371
 21536
+      &avr32_syntax_table[AVR32_SYNTAX_DIVU],
mgl@1371
 21537
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21538
+      {
mgl@1371
 21539
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21540
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21541
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21542
+      },
mgl@1371
 21543
+    },
mgl@1371
 21544
+    {
mgl@1371
 21545
+      AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
mgl@1371
 21546
+      &avr32_syntax_table[AVR32_SYNTAX_EOR1],
mgl@1371
 21547
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21548
+      {
mgl@1371
 21549
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21550
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21551
+      },
mgl@1371
 21552
+    },
mgl@1371
 21553
+    {
mgl@1371
 21554
+      AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
mgl@1371
 21555
+      &avr32_syntax_table[AVR32_SYNTAX_EOR2],
mgl@1371
 21556
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21557
+      {
mgl@1371
 21558
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21559
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21560
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21561
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 21562
+      }
mgl@1371
 21563
+    },
mgl@1371
 21564
+    {
mgl@1371
 21565
+      AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
mgl@1371
 21566
+      &avr32_syntax_table[AVR32_SYNTAX_EOR3],
mgl@1371
 21567
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21568
+      {
mgl@1371
 21569
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21570
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21571
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21572
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 21573
+      }
mgl@1371
 21574
+    },
mgl@1371
 21575
+    {
mgl@1371
 21576
+      AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
mgl@1371
 21577
+      &avr32_syntax_table[AVR32_SYNTAX_EORL],
mgl@1371
 21578
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21579
+      {
mgl@1371
 21580
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21581
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21582
+      },
mgl@1371
 21583
+    },
mgl@1371
 21584
+    {
mgl@1371
 21585
+      AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
mgl@1371
 21586
+      &avr32_syntax_table[AVR32_SYNTAX_EORH],
mgl@1371
 21587
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 21588
+      {
mgl@1371
 21589
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21590
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21591
+      },
mgl@1371
 21592
+    },
mgl@1371
 21593
+    {
mgl@1371
 21594
+      AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
mgl@1371
 21595
+      &avr32_syntax_table[AVR32_SYNTAX_FRS],
mgl@1371
 21596
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 21597
+    },
mgl@1371
 21598
+    {
mgl@1371
 21599
+      AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
mgl@1371
 21600
+      &avr32_syntax_table[AVR32_SYNTAX_ICALL],
mgl@1371
 21601
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21602
+      {
mgl@1371
 21603
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21604
+      },
mgl@1371
 21605
+    },
mgl@1371
 21606
+    {
mgl@1371
 21607
+      AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
mgl@1371
 21608
+      &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
mgl@1371
 21609
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 21610
+      {
mgl@1371
 21611
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 21612
+      },
mgl@1371
 21613
+    },
mgl@1371
 21614
+    {
mgl@1371
 21615
+      AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
mgl@1371
 21616
+      &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
mgl@1371
 21617
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21618
+      {
mgl@1371
 21619
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 21620
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21621
+      },
mgl@1371
 21622
+    },
mgl@1371
 21623
+    {
mgl@1371
 21624
+      AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
mgl@1371
 21625
+      &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
mgl@1371
 21626
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21627
+      {
mgl@1371
 21628
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 21629
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21630
+      },
mgl@1371
 21631
+    },
mgl@1371
 21632
+    {
mgl@1371
 21633
+      AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
mgl@1371
 21634
+      &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
mgl@1371
 21635
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21636
+      {
mgl@1371
 21637
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 21638
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21639
+      },
mgl@1371
 21640
+    },
mgl@1371
 21641
+    {
mgl@1371
 21642
+      AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
mgl@1371
 21643
+      &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
mgl@1371
 21644
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21645
+      {
mgl@1371
 21646
+	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
mgl@1371
 21647
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21648
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21649
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21650
+      },
mgl@1371
 21651
+    },
mgl@1371
 21652
+    {
mgl@1371
 21653
+      AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
mgl@1371
 21654
+      &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
mgl@1371
 21655
+      BFD_RELOC_AVR32_16S, 3, 2,
mgl@1371
 21656
+      {
mgl@1371
 21657
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 21658
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21659
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21660
+      },
mgl@1371
 21661
+    },
mgl@1371
 21662
+    {
mgl@1371
 21663
+      AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
mgl@1371
 21664
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
mgl@1371
 21665
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21666
+      {
mgl@1371
 21667
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21668
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21669
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21670
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21671
+      },
mgl@1371
 21672
+    },
mgl@1371
 21673
+    {
mgl@1371
 21674
+      AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
mgl@1371
 21675
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
mgl@1371
 21676
+      BFD_RELOC_AVR32_16S, 3, -1,
mgl@1371
 21677
+      {
mgl@1371
 21678
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21679
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21680
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21681
+      },
mgl@1371
 21682
+    },
mgl@1371
 21683
+    {
mgl@1371
 21684
+      AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
mgl@1371
 21685
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
mgl@1371
 21686
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21687
+      {
mgl@1371
 21688
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21689
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21690
+      },
mgl@1371
 21691
+    },
mgl@1371
 21692
+    {
mgl@1371
 21693
+      AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
mgl@1371
 21694
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
mgl@1371
 21695
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21696
+      {
mgl@1371
 21697
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21698
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21699
+      },
mgl@1371
 21700
+    },
mgl@1371
 21701
+    {
mgl@1371
 21702
+      AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
mgl@1371
 21703
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
mgl@1371
 21704
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21705
+      {
mgl@1371
 21706
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21707
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21708
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21709
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21710
+      },
mgl@1371
 21711
+    },
mgl@1371
 21712
+    {
mgl@1371
 21713
+      AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
mgl@1371
 21714
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
mgl@1371
 21715
+      BFD_RELOC_AVR32_3U, 3, 2,
mgl@1371
 21716
+      {
mgl@1371
 21717
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21718
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21719
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 21720
+      },
mgl@1371
 21721
+    },
mgl@1371
 21722
+    {
mgl@1371
 21723
+      AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
mgl@1371
 21724
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
mgl@1371
 21725
+      BFD_RELOC_AVR32_16S, 3, 2,
mgl@1371
 21726
+      {
mgl@1371
 21727
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21728
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21729
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21730
+      },
mgl@1371
 21731
+    },
mgl@1371
 21732
+    {
mgl@1371
 21733
+      AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
mgl@1371
 21734
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
mgl@1371
 21735
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21736
+      {
mgl@1371
 21737
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21738
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21739
+      },
mgl@1371
 21740
+    },
mgl@1371
 21741
+    {
mgl@1371
 21742
+      AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
mgl@1371
 21743
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
mgl@1371
 21744
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21745
+      {
mgl@1371
 21746
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21747
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21748
+      },
mgl@1371
 21749
+    },
mgl@1371
 21750
+    {
mgl@1371
 21751
+      AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
mgl@1371
 21752
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
mgl@1371
 21753
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21754
+      {
mgl@1371
 21755
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21756
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21757
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21758
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21759
+      },
mgl@1371
 21760
+    },
mgl@1371
 21761
+    {
mgl@1371
 21762
+      AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
mgl@1371
 21763
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
mgl@1371
 21764
+      BFD_RELOC_AVR32_4UH, 3, 2,
mgl@1371
 21765
+      {
mgl@1371
 21766
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21767
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21768
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 21769
+      },
mgl@1371
 21770
+    },
mgl@1371
 21771
+    {
mgl@1371
 21772
+      AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
mgl@1371
 21773
+      &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
mgl@1371
 21774
+      BFD_RELOC_AVR32_16S, 3, 2,
mgl@1371
 21775
+      {
mgl@1371
 21776
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21777
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21778
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21779
+      },
mgl@1371
 21780
+    },
mgl@1371
 21781
+    {
mgl@1371
 21782
+      AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
mgl@1371
 21783
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
mgl@1371
 21784
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21785
+      {
mgl@1371
 21786
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21787
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21788
+      },
mgl@1371
 21789
+    },
mgl@1371
 21790
+    {
mgl@1371
 21791
+      AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
mgl@1371
 21792
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
mgl@1371
 21793
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21794
+      {
mgl@1371
 21795
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21796
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21797
+      },
mgl@1371
 21798
+    },
mgl@1371
 21799
+    {
mgl@1371
 21800
+      AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
mgl@1371
 21801
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
mgl@1371
 21802
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21803
+      {
mgl@1371
 21804
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21805
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21806
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21807
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21808
+      },
mgl@1371
 21809
+    },
mgl@1371
 21810
+    {
mgl@1371
 21811
+      AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
mgl@1371
 21812
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
mgl@1371
 21813
+      BFD_RELOC_AVR32_4UH, 3, 2,
mgl@1371
 21814
+      {
mgl@1371
 21815
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21816
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21817
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 21818
+      },
mgl@1371
 21819
+    },
mgl@1371
 21820
+    {
mgl@1371
 21821
+      AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
mgl@1371
 21822
+      &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
mgl@1371
 21823
+      BFD_RELOC_AVR32_16S, 3, 2,
mgl@1371
 21824
+      {
mgl@1371
 21825
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21826
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21827
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21828
+      },
mgl@1371
 21829
+    },
mgl@1371
 21830
+    {
mgl@1371
 21831
+      AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
mgl@1371
 21832
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
mgl@1371
 21833
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21834
+      {
mgl@1371
 21835
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21836
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21837
+      },
mgl@1371
 21838
+    },
mgl@1371
 21839
+    {
mgl@1371
 21840
+      AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
mgl@1371
 21841
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
mgl@1371
 21842
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 21843
+      {
mgl@1371
 21844
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21845
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21846
+      },
mgl@1371
 21847
+    },
mgl@1371
 21848
+    {
mgl@1371
 21849
+      AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
mgl@1371
 21850
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
mgl@1371
 21851
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21852
+      {
mgl@1371
 21853
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21854
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21855
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21856
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21857
+      },
mgl@1371
 21858
+    },
mgl@1371
 21859
+    {
mgl@1371
 21860
+      AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
mgl@1371
 21861
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
mgl@1371
 21862
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 21863
+      {
mgl@1371
 21864
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21865
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21866
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21867
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21868
+      },
mgl@1371
 21869
+    },
mgl@1371
 21870
+    {
mgl@1371
 21871
+      AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
mgl@1371
 21872
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
mgl@1371
 21873
+      BFD_RELOC_AVR32_7UW, 3, 2,
mgl@1371
 21874
+      {
mgl@1371
 21875
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21876
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21877
+	&avr32_ifield_table[AVR32_IFIELD_K5C],
mgl@1371
 21878
+      },
mgl@1371
 21879
+    },
mgl@1371
 21880
+    {
mgl@1371
 21881
+      AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
mgl@1371
 21882
+      &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
mgl@1371
 21883
+      BFD_RELOC_AVR32_16S, 3, 2,
mgl@1371
 21884
+      {
mgl@1371
 21885
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21886
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 21887
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 21888
+      },
mgl@1371
 21889
+    },
mgl@1371
 21890
+    {
mgl@1371
 21891
+      AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
mgl@1371
 21892
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
mgl@1371
 21893
+      BFD_RELOC_AVR32_10UW, 4, 3,
mgl@1371
 21894
+      {
mgl@1371
 21895
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21896
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 21897
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21898
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 21899
+      },
mgl@1371
 21900
+    },
mgl@1371
 21901
+    {
mgl@1371
 21902
+      AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
mgl@1371
 21903
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
mgl@1371
 21904
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21905
+      {
mgl@1371
 21906
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21907
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 21908
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21909
+      },
mgl@1371
 21910
+    },
mgl@1371
 21911
+    {
mgl@1371
 21912
+      AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
mgl@1371
 21913
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
mgl@1371
 21914
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 21915
+      {
mgl@1371
 21916
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21917
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 21918
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21919
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21920
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21921
+      },
mgl@1371
 21922
+    },
mgl@1371
 21923
+    {
mgl@1371
 21924
+      AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
mgl@1371
 21925
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
mgl@1371
 21926
+      BFD_RELOC_AVR32_10UW, 4, 3,
mgl@1371
 21927
+      {
mgl@1371
 21928
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21929
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 21930
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21931
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 21932
+      },
mgl@1371
 21933
+    },
mgl@1371
 21934
+    {
mgl@1371
 21935
+      AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
mgl@1371
 21936
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
mgl@1371
 21937
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21938
+      {
mgl@1371
 21939
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21940
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 21941
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21942
+      },
mgl@1371
 21943
+    },
mgl@1371
 21944
+    {
mgl@1371
 21945
+      AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
mgl@1371
 21946
+      &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
mgl@1371
 21947
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 21948
+      {
mgl@1371
 21949
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21950
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 21951
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21952
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 21953
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 21954
+      },
mgl@1371
 21955
+    },
mgl@1371
 21956
+    {
mgl@1371
 21957
+      AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
mgl@1371
 21958
+      &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
mgl@1371
 21959
+      BFD_RELOC_AVR32_14UW, 3, 2,
mgl@1371
 21960
+      {
mgl@1371
 21961
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 21962
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21963
+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
mgl@1371
 21964
+      },
mgl@1371
 21965
+    },
mgl@1371
 21966
+    {
mgl@1371
 21967
+      AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
mgl@1371
 21968
+      &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
mgl@1371
 21969
+      BFD_RELOC_AVR32_14UW, 3, 2,
mgl@1371
 21970
+      {
mgl@1371
 21971
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 21972
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21973
+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
mgl@1371
 21974
+      },
mgl@1371
 21975
+    },
mgl@1371
 21976
+    {
mgl@1371
 21977
+      AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
mgl@1371
 21978
+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
mgl@1371
 21979
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21980
+      {
mgl@1371
 21981
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21982
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21983
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 21984
+      },
mgl@1371
 21985
+    },
mgl@1371
 21986
+    {
mgl@1371
 21987
+      AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
mgl@1371
 21988
+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
mgl@1371
 21989
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 21990
+      {
mgl@1371
 21991
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 21992
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 21993
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 21994
+      },
mgl@1371
 21995
+    },
mgl@1371
 21996
+    {
mgl@1371
 21997
+      AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
mgl@1371
 21998
+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
mgl@1371
 21999
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22000
+      {
mgl@1371
 22001
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22002
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22003
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22004
+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
mgl@1371
 22005
+      },
mgl@1371
 22006
+    },
mgl@1371
 22007
+    {
mgl@1371
 22008
+      AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
mgl@1371
 22009
+      &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
mgl@1371
 22010
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22011
+      {
mgl@1371
 22012
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22013
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22014
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22015
+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
mgl@1371
 22016
+      },
mgl@1371
 22017
+    },
mgl@1371
 22018
+    {
mgl@1371
 22019
+      AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
mgl@1371
 22020
+      &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
mgl@1371
 22021
+      BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
mgl@1371
 22022
+      {
mgl@1371
 22023
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22024
+	&avr32_ifield_table[AVR32_IFIELD_K7C],
mgl@1371
 22025
+      },
mgl@1371
 22026
+    },
mgl@1371
 22027
+    {
mgl@1371
 22028
+      AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
mgl@1371
 22029
+      &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
mgl@1371
 22030
+      BFD_RELOC_AVR32_16B_PCREL, 2, 1,
mgl@1371
 22031
+      {
mgl@1371
 22032
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22033
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22034
+      },
mgl@1371
 22035
+    },
mgl@1371
 22036
+    {
mgl@1371
 22037
+      AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
mgl@1371
 22038
+      &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
mgl@1371
 22039
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22040
+      {
mgl@1371
 22041
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22042
+	&avr32_ifield_table[AVR32_IFIELD_K7C],
mgl@1371
 22043
+      },
mgl@1371
 22044
+    },
mgl@1371
 22045
+    {
mgl@1371
 22046
+      AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
mgl@1371
 22047
+      &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
mgl@1371
 22048
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22049
+      {
mgl@1371
 22050
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22051
+	&avr32_ifield_table[AVR32_IFIELD_PART2_K12],
mgl@1371
 22052
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22053
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 22054
+      },
mgl@1371
 22055
+    },
mgl@1371
 22056
+    {
mgl@1371
 22057
+      AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
mgl@1371
 22058
+      &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
mgl@1371
 22059
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22060
+      {
mgl@1371
 22061
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22062
+	&avr32_ifield_table[AVR32_IFIELD_PART1_K12],
mgl@1371
 22063
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22064
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 22065
+      },
mgl@1371
 22066
+    },
mgl@1371
 22067
+    {
mgl@1371
 22068
+      AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
mgl@1371
 22069
+      &avr32_syntax_table[AVR32_SYNTAX_LDM],
mgl@1371
 22070
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22071
+      {
mgl@1371
 22072
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22073
+	&avr32_ifield_table[AVR32_IFIELD_W],
mgl@1371
 22074
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22075
+      },
mgl@1371
 22076
+    },
mgl@1371
 22077
+    {
mgl@1371
 22078
+      AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
mgl@1371
 22079
+      &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
mgl@1371
 22080
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22081
+      {
mgl@1371
 22082
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22083
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22084
+      },
mgl@1371
 22085
+    },
mgl@1371
 22086
+    {
mgl@1371
 22087
+      AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
mgl@1371
 22088
+      &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
mgl@1371
 22089
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22090
+      {
mgl@1371
 22091
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22092
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22093
+      },
mgl@1371
 22094
+    },
mgl@1371
 22095
+    {
mgl@1371
 22096
+      AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
mgl@1371
 22097
+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
mgl@1371
 22098
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22099
+      {
mgl@1371
 22100
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22101
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22102
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 22103
+      },
mgl@1371
 22104
+    },
mgl@1371
 22105
+    {
mgl@1371
 22106
+      AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
mgl@1371
 22107
+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
mgl@1371
 22108
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22109
+      {
mgl@1371
 22110
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22111
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22112
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 22113
+      },
mgl@1371
 22114
+    },
mgl@1371
 22115
+    {
mgl@1371
 22116
+      AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
mgl@1371
 22117
+      &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
mgl@1371
 22118
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22119
+      {
mgl@1371
 22120
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22121
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22122
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 22123
+      },
mgl@1371
 22124
+    },
mgl@1371
 22125
+    {
mgl@1371
 22126
+      AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
mgl@1371
 22127
+      &avr32_syntax_table[AVR32_SYNTAX_LSL1],
mgl@1371
 22128
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22129
+      {
mgl@1371
 22130
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22131
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22132
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22133
+      },
mgl@1371
 22134
+    },
mgl@1371
 22135
+    {
mgl@1371
 22136
+      AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
mgl@1371
 22137
+      &avr32_syntax_table[AVR32_SYNTAX_LSL3],
mgl@1371
 22138
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22139
+      {
mgl@1371
 22140
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22141
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22142
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 22143
+      },
mgl@1371
 22144
+    },
mgl@1371
 22145
+    {
mgl@1371
 22146
+      AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
mgl@1371
 22147
+      &avr32_syntax_table[AVR32_SYNTAX_LSL2],
mgl@1371
 22148
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22149
+      {
mgl@1371
 22150
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22151
+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
mgl@1371
 22152
+      },
mgl@1371
 22153
+    },
mgl@1371
 22154
+    {
mgl@1371
 22155
+      AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
mgl@1371
 22156
+      &avr32_syntax_table[AVR32_SYNTAX_LSR1],
mgl@1371
 22157
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22158
+      {
mgl@1371
 22159
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22160
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22161
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22162
+      },
mgl@1371
 22163
+    },
mgl@1371
 22164
+    {
mgl@1371
 22165
+      AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
mgl@1371
 22166
+      &avr32_syntax_table[AVR32_SYNTAX_LSR3],
mgl@1371
 22167
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22168
+      {
mgl@1371
 22169
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22170
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22171
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 22172
+      },
mgl@1371
 22173
+    },
mgl@1371
 22174
+    {
mgl@1371
 22175
+      AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
mgl@1371
 22176
+      &avr32_syntax_table[AVR32_SYNTAX_LSR2],
mgl@1371
 22177
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22178
+      {
mgl@1371
 22179
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22180
+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
mgl@1371
 22181
+      },
mgl@1371
 22182
+    },
mgl@1371
 22183
+    {
mgl@1371
 22184
+      AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
mgl@1371
 22185
+      &avr32_syntax_table[AVR32_SYNTAX_MAC],
mgl@1371
 22186
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22187
+      {
mgl@1371
 22188
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22189
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22190
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22191
+      },
mgl@1371
 22192
+    },
mgl@1371
 22193
+    {
mgl@1371
 22194
+      AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
mgl@1371
 22195
+      &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
mgl@1371
 22196
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22197
+      {
mgl@1371
 22198
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22199
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22200
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22201
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22202
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22203
+      },
mgl@1371
 22204
+    },
mgl@1371
 22205
+    {
mgl@1371
 22206
+      AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
mgl@1371
 22207
+      &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
mgl@1371
 22208
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22209
+      {
mgl@1371
 22210
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22211
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22212
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22213
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22214
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22215
+      },
mgl@1371
 22216
+    },
mgl@1371
 22217
+    {
mgl@1371
 22218
+      AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
mgl@1371
 22219
+      &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
mgl@1371
 22220
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22221
+      {
mgl@1371
 22222
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22223
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22224
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22225
+      },
mgl@1371
 22226
+    },
mgl@1371
 22227
+    {
mgl@1371
 22228
+      AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
mgl@1371
 22229
+      &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
mgl@1371
 22230
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22231
+      {
mgl@1371
 22232
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22233
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22234
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22235
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22236
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22237
+      },
mgl@1371
 22238
+    },
mgl@1371
 22239
+    {
mgl@1371
 22240
+      AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
mgl@1371
 22241
+      &avr32_syntax_table[AVR32_SYNTAX_MACUD],
mgl@1371
 22242
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22243
+      {
mgl@1371
 22244
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22245
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22246
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22247
+      },
mgl@1371
 22248
+    },
mgl@1371
 22249
+    {
mgl@1371
 22250
+      AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
mgl@1371
 22251
+      &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
mgl@1371
 22252
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22253
+      {
mgl@1371
 22254
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22255
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22256
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22257
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22258
+      },
mgl@1371
 22259
+    },
mgl@1371
 22260
+    {
mgl@1371
 22261
+      AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
mgl@1371
 22262
+      &avr32_syntax_table[AVR32_SYNTAX_MAX],
mgl@1371
 22263
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22264
+      {
mgl@1371
 22265
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22266
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22267
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22268
+      },
mgl@1371
 22269
+    },
mgl@1371
 22270
+    {
mgl@1371
 22271
+      AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
mgl@1371
 22272
+      &avr32_syntax_table[AVR32_SYNTAX_MCALL],
mgl@1371
 22273
+      BFD_RELOC_AVR32_18W_PCREL, 2, 1,
mgl@1371
 22274
+      {
mgl@1371
 22275
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22276
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22277
+      },
mgl@1371
 22278
+    },
mgl@1371
 22279
+    {
mgl@1371
 22280
+      AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
mgl@1371
 22281
+      &avr32_syntax_table[AVR32_SYNTAX_MFDR],
mgl@1371
 22282
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22283
+      {
mgl@1371
 22284
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22285
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22286
+      },
mgl@1371
 22287
+    },
mgl@1371
 22288
+    {
mgl@1371
 22289
+      AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
mgl@1371
 22290
+      &avr32_syntax_table[AVR32_SYNTAX_MFSR],
mgl@1371
 22291
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22292
+      {
mgl@1371
 22293
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22294
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22295
+      },
mgl@1371
 22296
+    },
mgl@1371
 22297
+    {
mgl@1371
 22298
+      AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
mgl@1371
 22299
+      &avr32_syntax_table[AVR32_SYNTAX_MIN],
mgl@1371
 22300
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22301
+      {
mgl@1371
 22302
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22303
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22304
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22305
+      },
mgl@1371
 22306
+    },
mgl@1371
 22307
+    {
mgl@1371
 22308
+      AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
mgl@1371
 22309
+      &avr32_syntax_table[AVR32_SYNTAX_MOV3],
mgl@1371
 22310
+      BFD_RELOC_NONE, 2, -1,
mgl@1371
 22311
+      {
mgl@1371
 22312
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22313
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22314
+      },
mgl@1371
 22315
+    },
mgl@1371
 22316
+    {
mgl@1371
 22317
+      AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
mgl@1371
 22318
+      &avr32_syntax_table[AVR32_SYNTAX_MOV1],
mgl@1371
 22319
+      BFD_RELOC_AVR32_8S, 2, 1,
mgl@1371
 22320
+      {
mgl@1371
 22321
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22322
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 22323
+      },
mgl@1371
 22324
+    },
mgl@1371
 22325
+    {
mgl@1371
 22326
+      AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
mgl@1371
 22327
+      &avr32_syntax_table[AVR32_SYNTAX_MOV2],
mgl@1371
 22328
+      BFD_RELOC_AVR32_21S, 2, 1,
mgl@1371
 22329
+      {
mgl@1371
 22330
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22331
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 22332
+      },
mgl@1371
 22333
+    },
mgl@1371
 22334
+    {
mgl@1371
 22335
+      AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
mgl@1371
 22336
+      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
mgl@1371
 22337
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22338
+      {
mgl@1371
 22339
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22340
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22341
+      },
mgl@1371
 22342
+    },
mgl@1371
 22343
+    {
mgl@1371
 22344
+      AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
mgl@1371
 22345
+      &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
mgl@1371
 22346
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22347
+      {
mgl@1371
 22348
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22349
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22350
+      },
mgl@1371
 22351
+    },
mgl@1371
 22352
+    {
mgl@1371
 22353
+      AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
mgl@1371
 22354
+      &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
mgl@1371
 22355
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22356
+      {
mgl@1371
 22357
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22358
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22359
+      },
mgl@1371
 22360
+    },
mgl@1371
 22361
+    {
mgl@1371
 22362
+      AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
mgl@1371
 22363
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
mgl@1371
 22364
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22365
+      {
mgl@1371
 22366
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22367
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22368
+      },
mgl@1371
 22369
+    },
mgl@1371
 22370
+    {
mgl@1371
 22371
+      AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
mgl@1371
 22372
+      &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
mgl@1371
 22373
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22374
+      {
mgl@1371
 22375
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22376
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22377
+      },
mgl@1371
 22378
+    },
mgl@1371
 22379
+    {
mgl@1371
 22380
+      AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
mgl@1371
 22381
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
mgl@1371
 22382
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22383
+      {
mgl@1371
 22384
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22385
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22386
+      },
mgl@1371
 22387
+    },
mgl@1371
 22388
+    {
mgl@1371
 22389
+      AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
mgl@1371
 22390
+      &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
mgl@1371
 22391
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22392
+      {
mgl@1371
 22393
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22394
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22395
+      },
mgl@1371
 22396
+    },
mgl@1371
 22397
+    {
mgl@1371
 22398
+      AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
mgl@1371
 22399
+      &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
mgl@1371
 22400
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22401
+      {
mgl@1371
 22402
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22403
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22404
+      },
mgl@1371
 22405
+    },
mgl@1371
 22406
+    {
mgl@1371
 22407
+      AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
mgl@1371
 22408
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
mgl@1371
 22409
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22410
+      {
mgl@1371
 22411
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22412
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22413
+      },
mgl@1371
 22414
+    },
mgl@1371
 22415
+    {
mgl@1371
 22416
+      AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
mgl@1371
 22417
+      &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
mgl@1371
 22418
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22419
+      {
mgl@1371
 22420
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22421
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22422
+      },
mgl@1371
 22423
+    },
mgl@1371
 22424
+    {
mgl@1371
 22425
+      AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
mgl@1371
 22426
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
mgl@1371
 22427
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22428
+      {
mgl@1371
 22429
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22430
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22431
+      },
mgl@1371
 22432
+    },
mgl@1371
 22433
+    {
mgl@1371
 22434
+      AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
mgl@1371
 22435
+      &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
mgl@1371
 22436
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22437
+      {
mgl@1371
 22438
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22439
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22440
+      },
mgl@1371
 22441
+    },
mgl@1371
 22442
+    {
mgl@1371
 22443
+      AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
mgl@1371
 22444
+      &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
mgl@1371
 22445
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22446
+      {
mgl@1371
 22447
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22448
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22449
+      },
mgl@1371
 22450
+    },
mgl@1371
 22451
+    {
mgl@1371
 22452
+      AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
mgl@1371
 22453
+      &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
mgl@1371
 22454
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22455
+      {
mgl@1371
 22456
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22457
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22458
+      },
mgl@1371
 22459
+    },
mgl@1371
 22460
+    {
mgl@1371
 22461
+      AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
mgl@1371
 22462
+      &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
mgl@1371
 22463
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22464
+      {
mgl@1371
 22465
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22466
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22467
+      },
mgl@1371
 22468
+    },
mgl@1371
 22469
+    {
mgl@1371
 22470
+      AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
mgl@1371
 22471
+      &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
mgl@1371
 22472
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22473
+      {
mgl@1371
 22474
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22475
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22476
+      },
mgl@1371
 22477
+    },
mgl@1371
 22478
+    {
mgl@1371
 22479
+      AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
mgl@1371
 22480
+      &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
mgl@1371
 22481
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22482
+      {
mgl@1371
 22483
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22484
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22485
+      },
mgl@1371
 22486
+    },
mgl@1371
 22487
+    {
mgl@1371
 22488
+      AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
mgl@1371
 22489
+      &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
mgl@1371
 22490
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22491
+      {
mgl@1371
 22492
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22493
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22494
+      },
mgl@1371
 22495
+    },
mgl@1371
 22496
+    {
mgl@1371
 22497
+      AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
mgl@1371
 22498
+      &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
mgl@1371
 22499
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22500
+      {
mgl@1371
 22501
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22502
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22503
+      },
mgl@1371
 22504
+    },
mgl@1371
 22505
+    {
mgl@1371
 22506
+      AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
mgl@1371
 22507
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
mgl@1371
 22508
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22509
+      {
mgl@1371
 22510
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22511
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22512
+      },
mgl@1371
 22513
+    },
mgl@1371
 22514
+    {
mgl@1371
 22515
+      AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
mgl@1371
 22516
+      &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
mgl@1371
 22517
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22518
+      {
mgl@1371
 22519
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22520
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22521
+      },
mgl@1371
 22522
+    },
mgl@1371
 22523
+    {
mgl@1371
 22524
+      AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
mgl@1371
 22525
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
mgl@1371
 22526
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22527
+      {
mgl@1371
 22528
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22529
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22530
+      },
mgl@1371
 22531
+    },
mgl@1371
 22532
+    {
mgl@1371
 22533
+      AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
mgl@1371
 22534
+      &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
mgl@1371
 22535
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22536
+      {
mgl@1371
 22537
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22538
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22539
+      },
mgl@1371
 22540
+    },
mgl@1371
 22541
+    {
mgl@1371
 22542
+      AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
mgl@1371
 22543
+      &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
mgl@1371
 22544
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22545
+      {
mgl@1371
 22546
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22547
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22548
+      },
mgl@1371
 22549
+    },
mgl@1371
 22550
+    {
mgl@1371
 22551
+      AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
mgl@1371
 22552
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
mgl@1371
 22553
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22554
+      {
mgl@1371
 22555
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22556
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22557
+      },
mgl@1371
 22558
+    },
mgl@1371
 22559
+    {
mgl@1371
 22560
+      AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
mgl@1371
 22561
+      &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
mgl@1371
 22562
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22563
+      {
mgl@1371
 22564
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22565
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22566
+      },
mgl@1371
 22567
+    },
mgl@1371
 22568
+    {
mgl@1371
 22569
+      AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
mgl@1371
 22570
+      &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
mgl@1371
 22571
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22572
+      {
mgl@1371
 22573
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22574
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22575
+      },
mgl@1371
 22576
+    },
mgl@1371
 22577
+    {
mgl@1371
 22578
+      AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
mgl@1371
 22579
+      &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
mgl@1371
 22580
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22581
+      {
mgl@1371
 22582
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22583
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22584
+      },
mgl@1371
 22585
+    },
mgl@1371
 22586
+    {
mgl@1371
 22587
+      AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
mgl@1371
 22588
+      &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
mgl@1371
 22589
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22590
+      {
mgl@1371
 22591
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22592
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22593
+      },
mgl@1371
 22594
+    },
mgl@1371
 22595
+    {
mgl@1371
 22596
+      AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
mgl@1371
 22597
+      &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
mgl@1371
 22598
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22599
+      {
mgl@1371
 22600
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22601
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22602
+      },
mgl@1371
 22603
+    },
mgl@1371
 22604
+    {
mgl@1371
 22605
+      AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
mgl@1371
 22606
+      &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
mgl@1371
 22607
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22608
+      {
mgl@1371
 22609
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22610
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22611
+      },
mgl@1371
 22612
+    },
mgl@1371
 22613
+    {
mgl@1371
 22614
+      AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
mgl@1371
 22615
+      &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
mgl@1371
 22616
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 22617
+      {
mgl@1371
 22618
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22619
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22620
+      },
mgl@1371
 22621
+    },
mgl@1371
 22622
+    {
mgl@1371
 22623
+      AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
mgl@1371
 22624
+      &avr32_syntax_table[AVR32_SYNTAX_MTDR],
mgl@1371
 22625
+      BFD_RELOC_AVR32_8S_EXT, 2, 0,
mgl@1371
 22626
+      {
mgl@1371
 22627
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22628
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22629
+      },
mgl@1371
 22630
+    },
mgl@1371
 22631
+    {
mgl@1371
 22632
+      AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
mgl@1371
 22633
+      &avr32_syntax_table[AVR32_SYNTAX_MTSR],
mgl@1371
 22634
+      BFD_RELOC_AVR32_8S_EXT, 2, 0,
mgl@1371
 22635
+      {
mgl@1371
 22636
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22637
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22638
+      },
mgl@1371
 22639
+    },
mgl@1371
 22640
+    {
mgl@1371
 22641
+      AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
mgl@1371
 22642
+      &avr32_syntax_table[AVR32_SYNTAX_MUL1],
mgl@1371
 22643
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22644
+      {
mgl@1371
 22645
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22646
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22647
+      },
mgl@1371
 22648
+    },
mgl@1371
 22649
+    {
mgl@1371
 22650
+      AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
mgl@1371
 22651
+      &avr32_syntax_table[AVR32_SYNTAX_MUL2],
mgl@1371
 22652
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22653
+      {
mgl@1371
 22654
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22655
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22656
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22657
+      },
mgl@1371
 22658
+    },
mgl@1371
 22659
+    {
mgl@1371
 22660
+      AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
mgl@1371
 22661
+      &avr32_syntax_table[AVR32_SYNTAX_MUL3],
mgl@1371
 22662
+      BFD_RELOC_AVR32_8S_EXT, 3, 2,
mgl@1371
 22663
+      {
mgl@1371
 22664
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22665
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22666
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 22667
+      },
mgl@1371
 22668
+    },
mgl@1371
 22669
+    {
mgl@1371
 22670
+      AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
mgl@1371
 22671
+      &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
mgl@1371
 22672
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22673
+      {
mgl@1371
 22674
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22675
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22676
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22677
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22678
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22679
+      },
mgl@1371
 22680
+    },
mgl@1371
 22681
+    {
mgl@1371
 22682
+      AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
mgl@1371
 22683
+      &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
mgl@1371
 22684
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22685
+      {
mgl@1371
 22686
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22687
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22688
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22689
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22690
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22691
+      },
mgl@1371
 22692
+    },
mgl@1371
 22693
+    {
mgl@1371
 22694
+      AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
mgl@1371
 22695
+      &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
mgl@1371
 22696
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22697
+      {
mgl@1371
 22698
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22699
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22700
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22701
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22702
+      },
mgl@1371
 22703
+    },
mgl@1371
 22704
+    {
mgl@1371
 22705
+      AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
mgl@1371
 22706
+      &avr32_syntax_table[AVR32_SYNTAX_MULSD],
mgl@1371
 22707
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22708
+      {
mgl@1371
 22709
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22710
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22711
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22712
+      },
mgl@1371
 22713
+    },
mgl@1371
 22714
+    {
mgl@1371
 22715
+      AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
mgl@1371
 22716
+      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
mgl@1371
 22717
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22718
+      {
mgl@1371
 22719
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22720
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22721
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22722
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22723
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22724
+      },
mgl@1371
 22725
+    },
mgl@1371
 22726
+    {
mgl@1371
 22727
+      AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
mgl@1371
 22728
+      &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
mgl@1371
 22729
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22730
+      {
mgl@1371
 22731
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22732
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22733
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22734
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22735
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22736
+      },
mgl@1371
 22737
+    },
mgl@1371
 22738
+    {
mgl@1371
 22739
+      AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
mgl@1371
 22740
+      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
mgl@1371
 22741
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 22742
+      {
mgl@1371
 22743
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22744
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22745
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 22746
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22747
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22748
+      },
mgl@1371
 22749
+    },
mgl@1371
 22750
+    {
mgl@1371
 22751
+      AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
mgl@1371
 22752
+      &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
mgl@1371
 22753
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22754
+      {
mgl@1371
 22755
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22756
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22757
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22758
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22759
+      },
mgl@1371
 22760
+    },
mgl@1371
 22761
+    {
mgl@1371
 22762
+      AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
mgl@1371
 22763
+      &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
mgl@1371
 22764
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22765
+      {
mgl@1371
 22766
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22767
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22768
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22769
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22770
+      },
mgl@1371
 22771
+    },
mgl@1371
 22772
+    {
mgl@1371
 22773
+      AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
mgl@1371
 22774
+      &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
mgl@1371
 22775
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22776
+      {
mgl@1371
 22777
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22778
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22779
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22780
+      },
mgl@1371
 22781
+    },
mgl@1371
 22782
+    {
mgl@1371
 22783
+      AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
mgl@1371
 22784
+      &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
mgl@1371
 22785
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22786
+      {
mgl@1371
 22787
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22788
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22789
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22790
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 22791
+      },
mgl@1371
 22792
+    },
mgl@1371
 22793
+    {
mgl@1371
 22794
+      AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
mgl@1371
 22795
+      &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
mgl@1371
 22796
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 22797
+      {
mgl@1371
 22798
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22799
+      }
mgl@1371
 22800
+    },
mgl@1371
 22801
+    {
mgl@1371
 22802
+      AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
mgl@1371
 22803
+      &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
mgl@1371
 22804
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 22805
+      {
mgl@1371
 22806
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22807
+      }
mgl@1371
 22808
+    },
mgl@1371
 22809
+    {
mgl@1371
 22810
+      AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
mgl@1371
 22811
+      &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
mgl@1371
 22812
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22813
+      {
mgl@1371
 22814
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22815
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 22816
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 22817
+      },
mgl@1371
 22818
+    },
mgl@1371
 22819
+    {
mgl@1371
 22820
+      AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
mgl@1371
 22821
+      &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
mgl@1371
 22822
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22823
+      {
mgl@1371
 22824
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22825
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22826
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 22827
+      },
mgl@1371
 22828
+    },
mgl@1371
 22829
+    {
mgl@1371
 22830
+      AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
mgl@1371
 22831
+      &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
mgl@1371
 22832
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22833
+      {
mgl@1371
 22834
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22835
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 22836
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 22837
+      },
mgl@1371
 22838
+    },
mgl@1371
 22839
+    {
mgl@1371
 22840
+      AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
mgl@1371
 22841
+      &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
mgl@1371
 22842
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22843
+      {
mgl@1371
 22844
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 22845
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 22846
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22847
+      },
mgl@1371
 22848
+    },
mgl@1371
 22849
+    {
mgl@1371
 22850
+      AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
mgl@1371
 22851
+      &avr32_syntax_table[AVR32_SYNTAX_NEG],
mgl@1371
 22852
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 22853
+      {
mgl@1371
 22854
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22855
+      }
mgl@1371
 22856
+    },
mgl@1371
 22857
+    {
mgl@1371
 22858
+      AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
mgl@1371
 22859
+      &avr32_syntax_table[AVR32_SYNTAX_NOP],
mgl@1371
 22860
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 22861
+    },
mgl@1371
 22862
+    {
mgl@1371
 22863
+      AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
mgl@1371
 22864
+      &avr32_syntax_table[AVR32_SYNTAX_OR1],
mgl@1371
 22865
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22866
+      {
mgl@1371
 22867
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22868
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22869
+      },
mgl@1371
 22870
+    },
mgl@1371
 22871
+    {
mgl@1371
 22872
+      AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
mgl@1371
 22873
+      &avr32_syntax_table[AVR32_SYNTAX_OR2],
mgl@1371
 22874
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22875
+      {
mgl@1371
 22876
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22877
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22878
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22879
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 22880
+      },
mgl@1371
 22881
+    },
mgl@1371
 22882
+    {
mgl@1371
 22883
+      AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
mgl@1371
 22884
+      &avr32_syntax_table[AVR32_SYNTAX_OR3],
mgl@1371
 22885
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 22886
+      {
mgl@1371
 22887
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22888
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22889
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22890
+	&avr32_ifield_table[AVR32_IFIELD_K5E2],
mgl@1371
 22891
+      },
mgl@1371
 22892
+    },
mgl@1371
 22893
+    {
mgl@1371
 22894
+      AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
mgl@1371
 22895
+      &avr32_syntax_table[AVR32_SYNTAX_ORH],
mgl@1371
 22896
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 22897
+      {
mgl@1371
 22898
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22899
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22900
+      },
mgl@1371
 22901
+    },
mgl@1371
 22902
+    {
mgl@1371
 22903
+      AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
mgl@1371
 22904
+      &avr32_syntax_table[AVR32_SYNTAX_ORL],
mgl@1371
 22905
+      BFD_RELOC_AVR32_16U, 2, 1,
mgl@1371
 22906
+      {
mgl@1371
 22907
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22908
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 22909
+      },
mgl@1371
 22910
+    },
mgl@1371
 22911
+    {
mgl@1371
 22912
+      AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
mgl@1371
 22913
+      &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
mgl@1371
 22914
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22915
+      {
mgl@1371
 22916
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22917
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22918
+      },
mgl@1371
 22919
+    },
mgl@1371
 22920
+    {
mgl@1371
 22921
+      AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
mgl@1371
 22922
+      &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
mgl@1371
 22923
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 22924
+      {
mgl@1371
 22925
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22926
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22927
+      },
mgl@1371
 22928
+    },
mgl@1371
 22929
+    {
mgl@1371
 22930
+      AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
mgl@1371
 22931
+      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
mgl@1371
 22932
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22933
+      {
mgl@1371
 22934
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22935
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22936
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22937
+      },
mgl@1371
 22938
+    },
mgl@1371
 22939
+    {
mgl@1371
 22940
+      AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
mgl@1371
 22941
+      &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
mgl@1371
 22942
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22943
+      {
mgl@1371
 22944
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22945
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22946
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22947
+      },
mgl@1371
 22948
+    },
mgl@1371
 22949
+    {
mgl@1371
 22950
+      AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
mgl@1371
 22951
+      &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
mgl@1371
 22952
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22953
+      {
mgl@1371
 22954
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22955
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22956
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22957
+      },
mgl@1371
 22958
+    },
mgl@1371
 22959
+    {
mgl@1371
 22960
+      AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
mgl@1371
 22961
+      &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
mgl@1371
 22962
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22963
+      {
mgl@1371
 22964
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22965
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22966
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22967
+      },
mgl@1371
 22968
+    },
mgl@1371
 22969
+    {
mgl@1371
 22970
+      AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
mgl@1371
 22971
+      &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
mgl@1371
 22972
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22973
+      {
mgl@1371
 22974
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22975
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22976
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22977
+      },
mgl@1371
 22978
+    },
mgl@1371
 22979
+    {
mgl@1371
 22980
+      AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
mgl@1371
 22981
+      &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
mgl@1371
 22982
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22983
+      {
mgl@1371
 22984
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22985
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22986
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22987
+      },
mgl@1371
 22988
+    },
mgl@1371
 22989
+    {
mgl@1371
 22990
+      AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
mgl@1371
 22991
+      &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
mgl@1371
 22992
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 22993
+      {
mgl@1371
 22994
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 22995
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 22996
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 22997
+      },
mgl@1371
 22998
+    },
mgl@1371
 22999
+    {
mgl@1371
 23000
+      AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
mgl@1371
 23001
+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
mgl@1371
 23002
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23003
+      {
mgl@1371
 23004
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23005
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23006
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23007
+      },
mgl@1371
 23008
+    },
mgl@1371
 23009
+    {
mgl@1371
 23010
+      AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
mgl@1371
 23011
+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
mgl@1371
 23012
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23013
+      {
mgl@1371
 23014
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23015
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23016
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23017
+      },
mgl@1371
 23018
+    },
mgl@1371
 23019
+    {
mgl@1371
 23020
+      AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
mgl@1371
 23021
+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
mgl@1371
 23022
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23023
+      {
mgl@1371
 23024
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23025
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23026
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23027
+      },
mgl@1371
 23028
+    },
mgl@1371
 23029
+    {
mgl@1371
 23030
+      AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
mgl@1371
 23031
+      &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
mgl@1371
 23032
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23033
+      {
mgl@1371
 23034
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23035
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23036
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23037
+      },
mgl@1371
 23038
+    },
mgl@1371
 23039
+    {
mgl@1371
 23040
+      AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
mgl@1371
 23041
+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
mgl@1371
 23042
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23043
+      {
mgl@1371
 23044
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23045
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23046
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23047
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23048
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23049
+      },
mgl@1371
 23050
+    },
mgl@1371
 23051
+    {
mgl@1371
 23052
+      AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
mgl@1371
 23053
+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
mgl@1371
 23054
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23055
+      {
mgl@1371
 23056
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23057
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23058
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23059
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23060
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23061
+      },
mgl@1371
 23062
+    },
mgl@1371
 23063
+    {
mgl@1371
 23064
+      AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
mgl@1371
 23065
+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
mgl@1371
 23066
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23067
+      {
mgl@1371
 23068
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23069
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23070
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23071
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23072
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23073
+      },
mgl@1371
 23074
+    },
mgl@1371
 23075
+    {
mgl@1371
 23076
+      AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
mgl@1371
 23077
+      &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
mgl@1371
 23078
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23079
+      {
mgl@1371
 23080
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23081
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23082
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23083
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23084
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23085
+      },
mgl@1371
 23086
+    },
mgl@1371
 23087
+    {
mgl@1371
 23088
+      AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
mgl@1371
 23089
+      &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
mgl@1371
 23090
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23091
+      {
mgl@1371
 23092
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23093
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23094
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23095
+      },
mgl@1371
 23096
+    },
mgl@1371
 23097
+    {
mgl@1371
 23098
+      AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
mgl@1371
 23099
+      &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
mgl@1371
 23100
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23101
+      {
mgl@1371
 23102
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23103
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23104
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23105
+      },
mgl@1371
 23106
+    },
mgl@1371
 23107
+    {
mgl@1371
 23108
+      AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
mgl@1371
 23109
+      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
mgl@1371
 23110
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23111
+      {
mgl@1371
 23112
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23113
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23114
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23115
+      },
mgl@1371
 23116
+    },
mgl@1371
 23117
+    {
mgl@1371
 23118
+      AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
mgl@1371
 23119
+      &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
mgl@1371
 23120
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23121
+      {
mgl@1371
 23122
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23123
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23124
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23125
+      },
mgl@1371
 23126
+    },
mgl@1371
 23127
+    {
mgl@1371
 23128
+      AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
mgl@1371
 23129
+      &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
mgl@1371
 23130
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23131
+      {
mgl@1371
 23132
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23133
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23134
+	&avr32_ifield_table[AVR32_IFIELD_COND3],
mgl@1371
 23135
+      },
mgl@1371
 23136
+    },
mgl@1371
 23137
+    {
mgl@1371
 23138
+      AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
mgl@1371
 23139
+      &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
mgl@1371
 23140
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23141
+      {
mgl@1371
 23142
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23143
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23144
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23145
+      },
mgl@1371
 23146
+    },
mgl@1371
 23147
+    {
mgl@1371
 23148
+      AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
mgl@1371
 23149
+      &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
mgl@1371
 23150
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23151
+      {
mgl@1371
 23152
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23153
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23154
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23155
+      },
mgl@1371
 23156
+    },
mgl@1371
 23157
+    {
mgl@1371
 23158
+      AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
mgl@1371
 23159
+      &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
mgl@1371
 23160
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23161
+      {
mgl@1371
 23162
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23163
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23164
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23165
+      },
mgl@1371
 23166
+    },
mgl@1371
 23167
+    {
mgl@1371
 23168
+      AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
mgl@1371
 23169
+      &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
mgl@1371
 23170
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23171
+      {
mgl@1371
 23172
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23173
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23174
+	&avr32_ifield_table[AVR32_IFIELD_COND3],
mgl@1371
 23175
+      },
mgl@1371
 23176
+    },
mgl@1371
 23177
+    {
mgl@1371
 23178
+      AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
mgl@1371
 23179
+      &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
mgl@1371
 23180
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23181
+      {
mgl@1371
 23182
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23183
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23184
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23185
+      },
mgl@1371
 23186
+    },
mgl@1371
 23187
+    {
mgl@1371
 23188
+      AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
mgl@1371
 23189
+      &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
mgl@1371
 23190
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23191
+      {
mgl@1371
 23192
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23193
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23194
+	&avr32_ifield_table[AVR32_IFIELD_COND3],
mgl@1371
 23195
+      },
mgl@1371
 23196
+    },
mgl@1371
 23197
+    {
mgl@1371
 23198
+      AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
mgl@1371
 23199
+      &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
mgl@1371
 23200
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23201
+      {
mgl@1371
 23202
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23203
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23204
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23205
+      },
mgl@1371
 23206
+    },
mgl@1371
 23207
+    {
mgl@1371
 23208
+      AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
mgl@1371
 23209
+      &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
mgl@1371
 23210
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23211
+      {
mgl@1371
 23212
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23213
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23214
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23215
+      },
mgl@1371
 23216
+    },
mgl@1371
 23217
+    {
mgl@1371
 23218
+      AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
mgl@1371
 23219
+      &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
mgl@1371
 23220
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23221
+      {
mgl@1371
 23222
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23223
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23224
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23225
+      },
mgl@1371
 23226
+    },
mgl@1371
 23227
+    {
mgl@1371
 23228
+      AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
mgl@1371
 23229
+      &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
mgl@1371
 23230
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23231
+      {
mgl@1371
 23232
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23233
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23234
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23235
+      },
mgl@1371
 23236
+    },
mgl@1371
 23237
+    {
mgl@1371
 23238
+      AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
mgl@1371
 23239
+      &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
mgl@1371
 23240
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23241
+      {
mgl@1371
 23242
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23243
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23244
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23245
+      },
mgl@1371
 23246
+    },
mgl@1371
 23247
+    {
mgl@1371
 23248
+      AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
mgl@1371
 23249
+      &avr32_syntax_table[AVR32_SYNTAX_POPJC],
mgl@1371
 23250
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 23251
+    },
mgl@1371
 23252
+    {
mgl@1371
 23253
+      AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
mgl@1371
 23254
+      &avr32_syntax_table[AVR32_SYNTAX_POPM],
mgl@1371
 23255
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23256
+      {
mgl@1371
 23257
+	&avr32_ifield_table[AVR32_IFIELD_POPM],
mgl@1371
 23258
+      },
mgl@1371
 23259
+    },
mgl@1371
 23260
+    {
mgl@1371
 23261
+      AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
mgl@1371
 23262
+      &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
mgl@1371
 23263
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23264
+      {
mgl@1371
 23265
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 23266
+      },
mgl@1371
 23267
+    },
mgl@1371
 23268
+    {
mgl@1371
 23269
+      AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
mgl@1371
 23270
+      &avr32_syntax_table[AVR32_SYNTAX_PREF],
mgl@1371
 23271
+      BFD_RELOC_AVR32_16S, 2, -1,
mgl@1371
 23272
+      {
mgl@1371
 23273
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23274
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 23275
+      },
mgl@1371
 23276
+    },
mgl@1371
 23277
+    {
mgl@1371
 23278
+      AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
mgl@1371
 23279
+      &avr32_syntax_table[AVR32_SYNTAX_PSAD],
mgl@1371
 23280
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23281
+      {
mgl@1371
 23282
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23283
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23284
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23285
+      },
mgl@1371
 23286
+    },
mgl@1371
 23287
+    {
mgl@1371
 23288
+      AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
mgl@1371
 23289
+      &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
mgl@1371
 23290
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23291
+      {
mgl@1371
 23292
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23293
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23294
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23295
+      },
mgl@1371
 23296
+    },
mgl@1371
 23297
+    {
mgl@1371
 23298
+      AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
mgl@1371
 23299
+      &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
mgl@1371
 23300
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23301
+      {
mgl@1371
 23302
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23303
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23304
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23305
+      },
mgl@1371
 23306
+    },
mgl@1371
 23307
+    {
mgl@1371
 23308
+      AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
mgl@1371
 23309
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
mgl@1371
 23310
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23311
+      {
mgl@1371
 23312
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23313
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23314
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23315
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23316
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23317
+      },
mgl@1371
 23318
+    },
mgl@1371
 23319
+    {
mgl@1371
 23320
+      AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
mgl@1371
 23321
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
mgl@1371
 23322
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23323
+      {
mgl@1371
 23324
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23325
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23326
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23327
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23328
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23329
+      },
mgl@1371
 23330
+    },
mgl@1371
 23331
+    {
mgl@1371
 23332
+      AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
mgl@1371
 23333
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
mgl@1371
 23334
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23335
+      {
mgl@1371
 23336
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23337
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23338
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23339
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23340
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23341
+      },
mgl@1371
 23342
+    },
mgl@1371
 23343
+    {
mgl@1371
 23344
+      AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
mgl@1371
 23345
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
mgl@1371
 23346
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 23347
+      {
mgl@1371
 23348
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23349
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23350
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 23351
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23352
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23353
+      },
mgl@1371
 23354
+    },
mgl@1371
 23355
+    {
mgl@1371
 23356
+      AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
mgl@1371
 23357
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
mgl@1371
 23358
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23359
+      {
mgl@1371
 23360
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23361
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23362
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23363
+      },
mgl@1371
 23364
+    },
mgl@1371
 23365
+    {
mgl@1371
 23366
+      AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
mgl@1371
 23367
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
mgl@1371
 23368
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23369
+      {
mgl@1371
 23370
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23371
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23372
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23373
+      },
mgl@1371
 23374
+    },
mgl@1371
 23375
+    {
mgl@1371
 23376
+      AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
mgl@1371
 23377
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
mgl@1371
 23378
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23379
+      {
mgl@1371
 23380
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23381
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23382
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23383
+      },
mgl@1371
 23384
+    },
mgl@1371
 23385
+    {
mgl@1371
 23386
+      AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
mgl@1371
 23387
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
mgl@1371
 23388
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23389
+      {
mgl@1371
 23390
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23391
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23392
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23393
+      },
mgl@1371
 23394
+    },
mgl@1371
 23395
+    {
mgl@1371
 23396
+      AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
mgl@1371
 23397
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
mgl@1371
 23398
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23399
+      {
mgl@1371
 23400
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23401
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23402
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23403
+      },
mgl@1371
 23404
+    },
mgl@1371
 23405
+    {
mgl@1371
 23406
+      AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
mgl@1371
 23407
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
mgl@1371
 23408
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23409
+      {
mgl@1371
 23410
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23411
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23412
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23413
+      },
mgl@1371
 23414
+    },
mgl@1371
 23415
+    {
mgl@1371
 23416
+      AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
mgl@1371
 23417
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
mgl@1371
 23418
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23419
+      {
mgl@1371
 23420
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23421
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23422
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23423
+      },
mgl@1371
 23424
+    },
mgl@1371
 23425
+    {
mgl@1371
 23426
+      AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
mgl@1371
 23427
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
mgl@1371
 23428
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23429
+      {
mgl@1371
 23430
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23431
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23432
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23433
+      },
mgl@1371
 23434
+    },
mgl@1371
 23435
+    {
mgl@1371
 23436
+      AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
mgl@1371
 23437
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
mgl@1371
 23438
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23439
+      {
mgl@1371
 23440
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23441
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23442
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23443
+      },
mgl@1371
 23444
+    },
mgl@1371
 23445
+    {
mgl@1371
 23446
+      AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
mgl@1371
 23447
+      &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
mgl@1371
 23448
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23449
+      {
mgl@1371
 23450
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23451
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23452
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23453
+      },
mgl@1371
 23454
+    },
mgl@1371
 23455
+    {
mgl@1371
 23456
+      AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
mgl@1371
 23457
+      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
mgl@1371
 23458
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23459
+      {
mgl@1371
 23460
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23461
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23462
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23463
+      },
mgl@1371
 23464
+    },
mgl@1371
 23465
+    {
mgl@1371
 23466
+      AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
mgl@1371
 23467
+      &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
mgl@1371
 23468
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23469
+      {
mgl@1371
 23470
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23471
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23472
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 23473
+      },
mgl@1371
 23474
+    },
mgl@1371
 23475
+    {
mgl@1371
 23476
+      AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
mgl@1371
 23477
+      &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
mgl@1371
 23478
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 23479
+    },
mgl@1371
 23480
+    {
mgl@1371
 23481
+      AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
mgl@1371
 23482
+      &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
mgl@1371
 23483
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23484
+      {
mgl@1371
 23485
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 23486
+      },
mgl@1371
 23487
+    },
mgl@1371
 23488
+    {
mgl@1371
 23489
+      AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
mgl@1371
 23490
+      &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
mgl@1371
 23491
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23492
+      {
mgl@1371
 23493
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 23494
+      },
mgl@1371
 23495
+    },
mgl@1371
 23496
+    {
mgl@1371
 23497
+      AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
mgl@1371
 23498
+      &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
mgl@1371
 23499
+      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
mgl@1371
 23500
+      {
mgl@1371
 23501
+	&avr32_ifield_table[AVR32_IFIELD_K10],
mgl@1371
 23502
+      },
mgl@1371
 23503
+    },
mgl@1371
 23504
+    {
mgl@1371
 23505
+      AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
mgl@1371
 23506
+      &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
mgl@1371
 23507
+      BFD_RELOC_AVR32_22H_PCREL, 1, 0,
mgl@1371
 23508
+      {
mgl@1371
 23509
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 23510
+      },
mgl@1371
 23511
+    },
mgl@1371
 23512
+    {
mgl@1371
 23513
+      AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
mgl@1371
 23514
+      &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
mgl@1371
 23515
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23516
+      {
mgl@1371
 23517
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23518
+      },
mgl@1371
 23519
+    },
mgl@1371
 23520
+    {
mgl@1371
 23521
+      AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
mgl@1371
 23522
+      &avr32_syntax_table[AVR32_SYNTAX_RETNE],
mgl@1371
 23523
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23524
+      {
mgl@1371
 23525
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23526
+      },
mgl@1371
 23527
+    },
mgl@1371
 23528
+    {
mgl@1371
 23529
+      AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
mgl@1371
 23530
+      &avr32_syntax_table[AVR32_SYNTAX_RETHS],
mgl@1371
 23531
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23532
+      {
mgl@1371
 23533
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23534
+      },
mgl@1371
 23535
+    },
mgl@1371
 23536
+    {
mgl@1371
 23537
+      AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
mgl@1371
 23538
+      &avr32_syntax_table[AVR32_SYNTAX_RETLO],
mgl@1371
 23539
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23540
+      {
mgl@1371
 23541
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23542
+      },
mgl@1371
 23543
+    },
mgl@1371
 23544
+    {
mgl@1371
 23545
+      AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
mgl@1371
 23546
+      &avr32_syntax_table[AVR32_SYNTAX_RETGE],
mgl@1371
 23547
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23548
+      {
mgl@1371
 23549
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23550
+      },
mgl@1371
 23551
+    },
mgl@1371
 23552
+    {
mgl@1371
 23553
+      AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
mgl@1371
 23554
+      &avr32_syntax_table[AVR32_SYNTAX_RETLT],
mgl@1371
 23555
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23556
+      {
mgl@1371
 23557
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23558
+      },
mgl@1371
 23559
+    },
mgl@1371
 23560
+    {
mgl@1371
 23561
+      AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
mgl@1371
 23562
+      &avr32_syntax_table[AVR32_SYNTAX_RETMI],
mgl@1371
 23563
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23564
+      {
mgl@1371
 23565
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23566
+      },
mgl@1371
 23567
+    },
mgl@1371
 23568
+    {
mgl@1371
 23569
+      AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
mgl@1371
 23570
+      &avr32_syntax_table[AVR32_SYNTAX_RETPL],
mgl@1371
 23571
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23572
+      {
mgl@1371
 23573
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23574
+      },
mgl@1371
 23575
+    },
mgl@1371
 23576
+    {
mgl@1371
 23577
+      AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
mgl@1371
 23578
+      &avr32_syntax_table[AVR32_SYNTAX_RETLS],
mgl@1371
 23579
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23580
+      {
mgl@1371
 23581
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23582
+      },
mgl@1371
 23583
+    },
mgl@1371
 23584
+    {
mgl@1371
 23585
+      AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
mgl@1371
 23586
+      &avr32_syntax_table[AVR32_SYNTAX_RETGT],
mgl@1371
 23587
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23588
+      {
mgl@1371
 23589
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23590
+      },
mgl@1371
 23591
+    },
mgl@1371
 23592
+    {
mgl@1371
 23593
+      AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
mgl@1371
 23594
+      &avr32_syntax_table[AVR32_SYNTAX_RETLE],
mgl@1371
 23595
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23596
+      {
mgl@1371
 23597
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23598
+      },
mgl@1371
 23599
+    },
mgl@1371
 23600
+    {
mgl@1371
 23601
+      AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
mgl@1371
 23602
+      &avr32_syntax_table[AVR32_SYNTAX_RETHI],
mgl@1371
 23603
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23604
+      {
mgl@1371
 23605
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23606
+      },
mgl@1371
 23607
+    },
mgl@1371
 23608
+    {
mgl@1371
 23609
+      AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
mgl@1371
 23610
+      &avr32_syntax_table[AVR32_SYNTAX_RETVS],
mgl@1371
 23611
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23612
+      {
mgl@1371
 23613
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23614
+      },
mgl@1371
 23615
+    },
mgl@1371
 23616
+    {
mgl@1371
 23617
+      AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
mgl@1371
 23618
+      &avr32_syntax_table[AVR32_SYNTAX_RETVC],
mgl@1371
 23619
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23620
+      {
mgl@1371
 23621
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23622
+      },
mgl@1371
 23623
+    },
mgl@1371
 23624
+    {
mgl@1371
 23625
+      AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
mgl@1371
 23626
+      &avr32_syntax_table[AVR32_SYNTAX_RETQS],
mgl@1371
 23627
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23628
+      {
mgl@1371
 23629
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23630
+      },
mgl@1371
 23631
+    },
mgl@1371
 23632
+    {
mgl@1371
 23633
+      AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
mgl@1371
 23634
+      &avr32_syntax_table[AVR32_SYNTAX_RETAL],
mgl@1371
 23635
+      BFD_RELOC_NONE, 1, -1,
mgl@1371
 23636
+      {
mgl@1371
 23637
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23638
+      },
mgl@1371
 23639
+    },
mgl@1371
 23640
+    {
mgl@1371
 23641
+      AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
mgl@1371
 23642
+      &avr32_syntax_table[AVR32_SYNTAX_RETD],
mgl@1371
 23643
+      BFD_RELOC_NONE, 0, -1, { NULL },
mgl@1371
 23644
+    },
mgl@1371
 23645
+    {
mgl@1371
 23646
+      AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
mgl@1371
 23647
+      &avr32_syntax_table[AVR32_SYNTAX_RETE],
mgl@1371
 23648
+      BFD_RELOC_NONE, 0, -1, { NULL },
mgl@1371
 23649
+    },
mgl@1371
 23650
+    {
mgl@1371
 23651
+      AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
mgl@1371
 23652
+      &avr32_syntax_table[AVR32_SYNTAX_RETJ],
mgl@1371
 23653
+      BFD_RELOC_NONE, 0, -1, { NULL },
mgl@1371
 23654
+    },
mgl@1371
 23655
+    {
mgl@1371
 23656
+      AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
mgl@1371
 23657
+      &avr32_syntax_table[AVR32_SYNTAX_RETS],
mgl@1371
 23658
+      BFD_RELOC_NONE, 0, -1, { NULL },
mgl@1371
 23659
+    },
mgl@1371
 23660
+    {
mgl@1371
 23661
+      AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
mgl@1371
 23662
+      &avr32_syntax_table[AVR32_SYNTAX_RJMP],
mgl@1371
 23663
+      BFD_RELOC_AVR32_11H_PCREL, 1, 0,
mgl@1371
 23664
+      {
mgl@1371
 23665
+	&avr32_ifield_table[AVR32_IFIELD_K10],
mgl@1371
 23666
+      },
mgl@1371
 23667
+    },
mgl@1371
 23668
+    {
mgl@1371
 23669
+      AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
mgl@1371
 23670
+      &avr32_syntax_table[AVR32_SYNTAX_ROL],
mgl@1371
 23671
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23672
+      {
mgl@1371
 23673
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23674
+      }
mgl@1371
 23675
+    },
mgl@1371
 23676
+    {
mgl@1371
 23677
+      AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
mgl@1371
 23678
+      &avr32_syntax_table[AVR32_SYNTAX_ROR],
mgl@1371
 23679
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23680
+      {
mgl@1371
 23681
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23682
+      }
mgl@1371
 23683
+    },
mgl@1371
 23684
+    {
mgl@1371
 23685
+      AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
mgl@1371
 23686
+      &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
mgl@1371
 23687
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 23688
+      {
mgl@1371
 23689
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23690
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23691
+      },
mgl@1371
 23692
+    },
mgl@1371
 23693
+    {
mgl@1371
 23694
+      AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
mgl@1371
 23695
+      &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
mgl@1371
 23696
+      BFD_RELOC_AVR32_8S_EXT, 3, 2,
mgl@1371
 23697
+      {
mgl@1371
 23698
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23699
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23700
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 23701
+      },
mgl@1371
 23702
+    },
mgl@1371
 23703
+    {
mgl@1371
 23704
+      AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
mgl@1371
 23705
+      &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
mgl@1371
 23706
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23707
+      {
mgl@1371
 23708
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23709
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23710
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23711
+      },
mgl@1371
 23712
+    },
mgl@1371
 23713
+    {
mgl@1371
 23714
+      AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
mgl@1371
 23715
+      &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
mgl@1371
 23716
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23717
+      {
mgl@1371
 23718
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23719
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23720
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23721
+      },
mgl@1371
 23722
+    },
mgl@1371
 23723
+    {
mgl@1371
 23724
+      AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
mgl@1371
 23725
+      &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
mgl@1371
 23726
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23727
+      {
mgl@1371
 23728
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23729
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 23730
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 23731
+      },
mgl@1371
 23732
+    },
mgl@1371
 23733
+    {
mgl@1371
 23734
+      AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
mgl@1371
 23735
+      &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
mgl@1371
 23736
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23737
+      {
mgl@1371
 23738
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23739
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 23740
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 23741
+      },
mgl@1371
 23742
+    },
mgl@1371
 23743
+    {
mgl@1371
 23744
+      AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
mgl@1371
 23745
+      &avr32_syntax_table[AVR32_SYNTAX_SATS],
mgl@1371
 23746
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23747
+      {
mgl@1371
 23748
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23749
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 23750
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 23751
+      },
mgl@1371
 23752
+    },
mgl@1371
 23753
+    {
mgl@1371
 23754
+      AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
mgl@1371
 23755
+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
mgl@1371
 23756
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23757
+      {
mgl@1371
 23758
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23759
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23760
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23761
+      },
mgl@1371
 23762
+    },
mgl@1371
 23763
+    {
mgl@1371
 23764
+      AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
mgl@1371
 23765
+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
mgl@1371
 23766
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23767
+      {
mgl@1371
 23768
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23769
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23770
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23771
+      },
mgl@1371
 23772
+    },
mgl@1371
 23773
+    {
mgl@1371
 23774
+      AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
mgl@1371
 23775
+      &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
mgl@1371
 23776
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23777
+      {
mgl@1371
 23778
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23779
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23780
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 23781
+      },
mgl@1371
 23782
+    },
mgl@1371
 23783
+    {
mgl@1371
 23784
+      AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
mgl@1371
 23785
+      &avr32_syntax_table[AVR32_SYNTAX_SATU],
mgl@1371
 23786
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23787
+      {
mgl@1371
 23788
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23789
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 23790
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 23791
+      },
mgl@1371
 23792
+    },
mgl@1371
 23793
+    {
mgl@1371
 23794
+      AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
mgl@1371
 23795
+      &avr32_syntax_table[AVR32_SYNTAX_SBC],
mgl@1371
 23796
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 23797
+      {
mgl@1371
 23798
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23799
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23800
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23801
+      },
mgl@1371
 23802
+    },
mgl@1371
 23803
+    {
mgl@1371
 23804
+      AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
mgl@1371
 23805
+      &avr32_syntax_table[AVR32_SYNTAX_SBR],
mgl@1371
 23806
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 23807
+      {
mgl@1371
 23808
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23809
+	&avr32_ifield_table[AVR32_IFIELD_BIT5C],
mgl@1371
 23810
+      },
mgl@1371
 23811
+    },
mgl@1371
 23812
+    {
mgl@1371
 23813
+      AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
mgl@1371
 23814
+      &avr32_syntax_table[AVR32_SYNTAX_SCALL],
mgl@1371
 23815
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 23816
+    },
mgl@1371
 23817
+    {
mgl@1371
 23818
+      AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
mgl@1371
 23819
+      &avr32_syntax_table[AVR32_SYNTAX_SCR],
mgl@1371
 23820
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23821
+      {
mgl@1371
 23822
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23823
+      },
mgl@1371
 23824
+    },
mgl@1371
 23825
+    {
mgl@1371
 23826
+      AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
mgl@1371
 23827
+      &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
mgl@1371
 23828
+      BFD_RELOC_AVR32_8S_EXT, 1, 0,
mgl@1371
 23829
+      {
mgl@1371
 23830
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 23831
+      },
mgl@1371
 23832
+    },
mgl@1371
 23833
+    {
mgl@1371
 23834
+      AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
mgl@1371
 23835
+      &avr32_syntax_table[AVR32_SYNTAX_SREQ],
mgl@1371
 23836
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23837
+      {
mgl@1371
 23838
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23839
+      },
mgl@1371
 23840
+    },
mgl@1371
 23841
+    {
mgl@1371
 23842
+      AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
mgl@1371
 23843
+      &avr32_syntax_table[AVR32_SYNTAX_SRNE],
mgl@1371
 23844
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23845
+      {
mgl@1371
 23846
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23847
+      },
mgl@1371
 23848
+    },
mgl@1371
 23849
+    {
mgl@1371
 23850
+      AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
mgl@1371
 23851
+      &avr32_syntax_table[AVR32_SYNTAX_SRHS],
mgl@1371
 23852
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23853
+      {
mgl@1371
 23854
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23855
+      },
mgl@1371
 23856
+    },
mgl@1371
 23857
+    {
mgl@1371
 23858
+      AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
mgl@1371
 23859
+      &avr32_syntax_table[AVR32_SYNTAX_SRLO],
mgl@1371
 23860
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23861
+      {
mgl@1371
 23862
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23863
+      },
mgl@1371
 23864
+    },
mgl@1371
 23865
+    {
mgl@1371
 23866
+      AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
mgl@1371
 23867
+      &avr32_syntax_table[AVR32_SYNTAX_SRGE],
mgl@1371
 23868
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23869
+      {
mgl@1371
 23870
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23871
+      },
mgl@1371
 23872
+    },
mgl@1371
 23873
+    {
mgl@1371
 23874
+      AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
mgl@1371
 23875
+      &avr32_syntax_table[AVR32_SYNTAX_SRLT],
mgl@1371
 23876
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23877
+      {
mgl@1371
 23878
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23879
+      },
mgl@1371
 23880
+    },
mgl@1371
 23881
+    {
mgl@1371
 23882
+      AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
mgl@1371
 23883
+      &avr32_syntax_table[AVR32_SYNTAX_SRMI],
mgl@1371
 23884
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23885
+      {
mgl@1371
 23886
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23887
+      },
mgl@1371
 23888
+    },
mgl@1371
 23889
+    {
mgl@1371
 23890
+      AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
mgl@1371
 23891
+      &avr32_syntax_table[AVR32_SYNTAX_SRPL],
mgl@1371
 23892
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23893
+      {
mgl@1371
 23894
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23895
+      },
mgl@1371
 23896
+    },
mgl@1371
 23897
+    {
mgl@1371
 23898
+      AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
mgl@1371
 23899
+      &avr32_syntax_table[AVR32_SYNTAX_SRLS],
mgl@1371
 23900
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23901
+      {
mgl@1371
 23902
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23903
+      },
mgl@1371
 23904
+    },
mgl@1371
 23905
+    {
mgl@1371
 23906
+      AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
mgl@1371
 23907
+      &avr32_syntax_table[AVR32_SYNTAX_SRGT],
mgl@1371
 23908
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23909
+      {
mgl@1371
 23910
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23911
+      },
mgl@1371
 23912
+    },
mgl@1371
 23913
+    {
mgl@1371
 23914
+      AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
mgl@1371
 23915
+      &avr32_syntax_table[AVR32_SYNTAX_SRLE],
mgl@1371
 23916
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23917
+      {
mgl@1371
 23918
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23919
+      },
mgl@1371
 23920
+    },
mgl@1371
 23921
+    {
mgl@1371
 23922
+      AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
mgl@1371
 23923
+      &avr32_syntax_table[AVR32_SYNTAX_SRHI],
mgl@1371
 23924
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23925
+      {
mgl@1371
 23926
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23927
+      },
mgl@1371
 23928
+    },
mgl@1371
 23929
+    {
mgl@1371
 23930
+      AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
mgl@1371
 23931
+      &avr32_syntax_table[AVR32_SYNTAX_SRVS],
mgl@1371
 23932
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23933
+      {
mgl@1371
 23934
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23935
+      },
mgl@1371
 23936
+    },
mgl@1371
 23937
+    {
mgl@1371
 23938
+      AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
mgl@1371
 23939
+      &avr32_syntax_table[AVR32_SYNTAX_SRVC],
mgl@1371
 23940
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23941
+      {
mgl@1371
 23942
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23943
+      },
mgl@1371
 23944
+    },
mgl@1371
 23945
+    {
mgl@1371
 23946
+      AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
mgl@1371
 23947
+      &avr32_syntax_table[AVR32_SYNTAX_SRQS],
mgl@1371
 23948
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23949
+      {
mgl@1371
 23950
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23951
+      },
mgl@1371
 23952
+    },
mgl@1371
 23953
+    {
mgl@1371
 23954
+      AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
mgl@1371
 23955
+      &avr32_syntax_table[AVR32_SYNTAX_SRAL],
mgl@1371
 23956
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23957
+      {
mgl@1371
 23958
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23959
+      },
mgl@1371
 23960
+    },
mgl@1371
 23961
+    {
mgl@1371
 23962
+      AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
mgl@1371
 23963
+      &avr32_syntax_table[AVR32_SYNTAX_SSRF],
mgl@1371
 23964
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 23965
+      {
mgl@1371
 23966
+	&avr32_ifield_table[AVR32_IFIELD_K5C],
mgl@1371
 23967
+      },
mgl@1371
 23968
+    },
mgl@1371
 23969
+    {
mgl@1371
 23970
+      AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
mgl@1371
 23971
+      &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
mgl@1371
 23972
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 23973
+      {
mgl@1371
 23974
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23975
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23976
+      },
mgl@1371
 23977
+    },
mgl@1371
 23978
+    {
mgl@1371
 23979
+      AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
mgl@1371
 23980
+      &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
mgl@1371
 23981
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 23982
+      {
mgl@1371
 23983
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23984
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23985
+      },
mgl@1371
 23986
+    },
mgl@1371
 23987
+    {
mgl@1371
 23988
+      AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
mgl@1371
 23989
+      &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
mgl@1371
 23990
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 23991
+      {
mgl@1371
 23992
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 23993
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 23994
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 23995
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 23996
+      },
mgl@1371
 23997
+    },
mgl@1371
 23998
+    {
mgl@1371
 23999
+      AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
mgl@1371
 24000
+      &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
mgl@1371
 24001
+      BFD_RELOC_AVR32_3U, 3, 1,
mgl@1371
 24002
+      {
mgl@1371
 24003
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24004
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 24005
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24006
+      },
mgl@1371
 24007
+    },
mgl@1371
 24008
+    {
mgl@1371
 24009
+      AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
mgl@1371
 24010
+      &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
mgl@1371
 24011
+      BFD_RELOC_AVR32_16S, 3, 1,
mgl@1371
 24012
+      {
mgl@1371
 24013
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24014
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24015
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24016
+      },
mgl@1371
 24017
+    },
mgl@1371
 24018
+    {
mgl@1371
 24019
+      AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
mgl@1371
 24020
+      &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
mgl@1371
 24021
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24022
+      {
mgl@1371
 24023
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24024
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 24025
+      },
mgl@1371
 24026
+    },
mgl@1371
 24027
+    {
mgl@1371
 24028
+      AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
mgl@1371
 24029
+      &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
mgl@1371
 24030
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24031
+      {
mgl@1371
 24032
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24033
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 24034
+      },
mgl@1371
 24035
+    },
mgl@1371
 24036
+    {
mgl@1371
 24037
+      AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
mgl@1371
 24038
+      &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
mgl@1371
 24039
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24040
+      {
mgl@1371
 24041
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24042
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 24043
+      },
mgl@1371
 24044
+    },
mgl@1371
 24045
+    {
mgl@1371
 24046
+      AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
mgl@1371
 24047
+      &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
mgl@1371
 24048
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24049
+      {
mgl@1371
 24050
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24051
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24052
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24053
+	&avr32_ifield_table[AVR32_IFIELD_RD_DW],
mgl@1371
 24054
+      },
mgl@1371
 24055
+    },
mgl@1371
 24056
+    {
mgl@1371
 24057
+      AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
mgl@1371
 24058
+      &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
mgl@1371
 24059
+      BFD_RELOC_AVR32_16S, 3, 1,
mgl@1371
 24060
+      {
mgl@1371
 24061
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24062
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24063
+	&avr32_ifield_table[AVR32_IFIELD_RY_DW],
mgl@1371
 24064
+      },
mgl@1371
 24065
+    },
mgl@1371
 24066
+    {
mgl@1371
 24067
+      AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
mgl@1371
 24068
+      &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
mgl@1371
 24069
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24070
+      {
mgl@1371
 24071
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24072
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24073
+      },
mgl@1371
 24074
+    },
mgl@1371
 24075
+    {
mgl@1371
 24076
+      AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
mgl@1371
 24077
+      &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
mgl@1371
 24078
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24079
+      {
mgl@1371
 24080
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24081
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24082
+      },
mgl@1371
 24083
+    },
mgl@1371
 24084
+    {
mgl@1371
 24085
+      AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
mgl@1371
 24086
+      &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
mgl@1371
 24087
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24088
+      {
mgl@1371
 24089
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24090
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24091
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24092
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24093
+      },
mgl@1371
 24094
+    },
mgl@1371
 24095
+    {
mgl@1371
 24096
+      AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
mgl@1371
 24097
+      &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
mgl@1371
 24098
+      BFD_RELOC_AVR32_4UH, 3, 1,
mgl@1371
 24099
+      {
mgl@1371
 24100
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24101
+	&avr32_ifield_table[AVR32_IFIELD_K3],
mgl@1371
 24102
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24103
+      },
mgl@1371
 24104
+    },
mgl@1371
 24105
+    {
mgl@1371
 24106
+      AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
mgl@1371
 24107
+      &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
mgl@1371
 24108
+      BFD_RELOC_AVR32_16S, 3, 1,
mgl@1371
 24109
+      {
mgl@1371
 24110
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24111
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24112
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24113
+      },
mgl@1371
 24114
+    },
mgl@1371
 24115
+    {
mgl@1371
 24116
+      AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
mgl@1371
 24117
+      &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
mgl@1371
 24118
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24119
+      {
mgl@1371
 24120
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24121
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24122
+      },
mgl@1371
 24123
+    },
mgl@1371
 24124
+    {
mgl@1371
 24125
+      AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
mgl@1371
 24126
+      &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
mgl@1371
 24127
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24128
+      {
mgl@1371
 24129
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24130
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24131
+      },
mgl@1371
 24132
+    },
mgl@1371
 24133
+    {
mgl@1371
 24134
+      AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
mgl@1371
 24135
+      &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
mgl@1371
 24136
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24137
+      {
mgl@1371
 24138
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24139
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24140
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24141
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24142
+      },
mgl@1371
 24143
+    },
mgl@1371
 24144
+    {
mgl@1371
 24145
+      AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
mgl@1371
 24146
+      &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
mgl@1371
 24147
+      BFD_RELOC_AVR32_6UW, 3, 1,
mgl@1371
 24148
+      {
mgl@1371
 24149
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24150
+	&avr32_ifield_table[AVR32_IFIELD_K4],
mgl@1371
 24151
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24152
+      },
mgl@1371
 24153
+    },
mgl@1371
 24154
+    {
mgl@1371
 24155
+      AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
mgl@1371
 24156
+      &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
mgl@1371
 24157
+      BFD_RELOC_AVR32_16S, 3, 1,
mgl@1371
 24158
+      {
mgl@1371
 24159
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24160
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24161
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24162
+      },
mgl@1371
 24163
+    },
mgl@1371
 24164
+    {
mgl@1371
 24165
+      AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
mgl@1371
 24166
+      &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
mgl@1371
 24167
+      BFD_RELOC_AVR32_10UW, 4, 2,
mgl@1371
 24168
+      {
mgl@1371
 24169
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24170
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24171
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24172
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 24173
+      },
mgl@1371
 24174
+    },
mgl@1371
 24175
+    {
mgl@1371
 24176
+      AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
mgl@1371
 24177
+      &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
mgl@1371
 24178
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24179
+      {
mgl@1371
 24180
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24181
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24182
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 24183
+      },
mgl@1371
 24184
+    },
mgl@1371
 24185
+    {
mgl@1371
 24186
+      AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
mgl@1371
 24187
+      &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
mgl@1371
 24188
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 24189
+      {
mgl@1371
 24190
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24191
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24192
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24193
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24194
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 24195
+      },
mgl@1371
 24196
+    },
mgl@1371
 24197
+    {
mgl@1371
 24198
+      AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
mgl@1371
 24199
+      &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
mgl@1371
 24200
+      BFD_RELOC_AVR32_10UW, 4, 2,
mgl@1371
 24201
+      {
mgl@1371
 24202
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24203
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24204
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24205
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 24206
+      },
mgl@1371
 24207
+    },
mgl@1371
 24208
+    {
mgl@1371
 24209
+      AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
mgl@1371
 24210
+      &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
mgl@1371
 24211
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24212
+      {
mgl@1371
 24213
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24214
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24215
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 24216
+      },
mgl@1371
 24217
+    },
mgl@1371
 24218
+    {
mgl@1371
 24219
+      AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
mgl@1371
 24220
+      &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
mgl@1371
 24221
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 24222
+      {
mgl@1371
 24223
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24224
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24225
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24226
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24227
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 24228
+      },
mgl@1371
 24229
+    },
mgl@1371
 24230
+    {
mgl@1371
 24231
+      AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
mgl@1371
 24232
+      &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
mgl@1371
 24233
+      BFD_RELOC_AVR32_14UW, 3, 1,
mgl@1371
 24234
+      {
mgl@1371
 24235
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24236
+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
mgl@1371
 24237
+	&avr32_ifield_table[AVR32_IFIELD_CRD_DW],
mgl@1371
 24238
+      },
mgl@1371
 24239
+    },
mgl@1371
 24240
+    {
mgl@1371
 24241
+      AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
mgl@1371
 24242
+      &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
mgl@1371
 24243
+      BFD_RELOC_AVR32_14UW, 3, 1,
mgl@1371
 24244
+      {
mgl@1371
 24245
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24246
+	&avr32_ifield_table[AVR32_IFIELD_K12CP],
mgl@1371
 24247
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 24248
+      },
mgl@1371
 24249
+    },
mgl@1371
 24250
+    {
mgl@1371
 24251
+      AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
mgl@1371
 24252
+      &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
mgl@1371
 24253
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24254
+      {
mgl@1371
 24255
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24256
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24257
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24258
+      },
mgl@1371
 24259
+    },
mgl@1371
 24260
+    {
mgl@1371
 24261
+      AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
mgl@1371
 24262
+      &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
mgl@1371
 24263
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24264
+      {
mgl@1371
 24265
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24266
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24267
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24268
+      },
mgl@1371
 24269
+    },
mgl@1371
 24270
+    {
mgl@1371
 24271
+      AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
mgl@1371
 24272
+      &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
mgl@1371
 24273
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24274
+      {
mgl@1371
 24275
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24276
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24277
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24278
+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
mgl@1371
 24279
+      },
mgl@1371
 24280
+    },
mgl@1371
 24281
+    {
mgl@1371
 24282
+      AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
mgl@1371
 24283
+      &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
mgl@1371
 24284
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24285
+      {
mgl@1371
 24286
+	&avr32_ifield_table[AVR32_IFIELD_CPNO],
mgl@1371
 24287
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24288
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24289
+	&avr32_ifield_table[AVR32_IFIELD_CM_HL],
mgl@1371
 24290
+      },
mgl@1371
 24291
+    },
mgl@1371
 24292
+    {
mgl@1371
 24293
+      AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
mgl@1371
 24294
+      &avr32_syntax_table[AVR32_SYNTAX_STCOND],
mgl@1371
 24295
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24296
+      {
mgl@1371
 24297
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24298
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24299
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24300
+      },
mgl@1371
 24301
+    },
mgl@1371
 24302
+    {
mgl@1371
 24303
+      AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
mgl@1371
 24304
+      &avr32_syntax_table[AVR32_SYNTAX_STDSP],
mgl@1371
 24305
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24306
+      {
mgl@1371
 24307
+	&avr32_ifield_table[AVR32_IFIELD_K7C],
mgl@1371
 24308
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24309
+      },
mgl@1371
 24310
+    },
mgl@1371
 24311
+    {
mgl@1371
 24312
+      AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
mgl@1371
 24313
+      &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
mgl@1371
 24314
+      BFD_RELOC_UNUSED, 7, -1,
mgl@1371
 24315
+      {
mgl@1371
 24316
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24317
+	&avr32_ifield_table[AVR32_IFIELD_CRD_RI],
mgl@1371
 24318
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24319
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24320
+	&avr32_ifield_table[AVR32_IFIELD_X2],
mgl@1371
 24321
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24322
+	&avr32_ifield_table[AVR32_IFIELD_Y2],
mgl@1371
 24323
+      },
mgl@1371
 24324
+    },
mgl@1371
 24325
+    {
mgl@1371
 24326
+      AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
mgl@1371
 24327
+      &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
mgl@1371
 24328
+      BFD_RELOC_AVR32_STHH_W, 6, 1,
mgl@1371
 24329
+      {
mgl@1371
 24330
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24331
+	&avr32_ifield_table[AVR32_IFIELD_K8E2],
mgl@1371
 24332
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24333
+	&avr32_ifield_table[AVR32_IFIELD_X2],
mgl@1371
 24334
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24335
+	&avr32_ifield_table[AVR32_IFIELD_Y2],
mgl@1371
 24336
+      },
mgl@1371
 24337
+    },
mgl@1371
 24338
+    {
mgl@1371
 24339
+      AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
mgl@1371
 24340
+      &avr32_syntax_table[AVR32_SYNTAX_STM],
mgl@1371
 24341
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24342
+      {
mgl@1371
 24343
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24344
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24345
+      },
mgl@1371
 24346
+    },
mgl@1371
 24347
+    {
mgl@1371
 24348
+      AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
mgl@1371
 24349
+      &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
mgl@1371
 24350
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24351
+      {
mgl@1371
 24352
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24353
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24354
+      },
mgl@1371
 24355
+    },
mgl@1371
 24356
+    {
mgl@1371
 24357
+      AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
mgl@1371
 24358
+      &avr32_syntax_table[AVR32_SYNTAX_STMTS],
mgl@1371
 24359
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24360
+      {
mgl@1371
 24361
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24362
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24363
+      },
mgl@1371
 24364
+    },
mgl@1371
 24365
+    {
mgl@1371
 24366
+      AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
mgl@1371
 24367
+      &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
mgl@1371
 24368
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24369
+      {
mgl@1371
 24370
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24371
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24372
+      },
mgl@1371
 24373
+    },
mgl@1371
 24374
+    {
mgl@1371
 24375
+      AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
mgl@1371
 24376
+      &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
mgl@1371
 24377
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24378
+      {
mgl@1371
 24379
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24380
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 24381
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24382
+      },
mgl@1371
 24383
+    },
mgl@1371
 24384
+    {
mgl@1371
 24385
+      AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
mgl@1371
 24386
+      &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
mgl@1371
 24387
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24388
+      {
mgl@1371
 24389
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24390
+	&avr32_ifield_table[AVR32_IFIELD_K12],
mgl@1371
 24391
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24392
+      },
mgl@1371
 24393
+    },
mgl@1371
 24394
+    {
mgl@1371
 24395
+      AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
mgl@1371
 24396
+      &avr32_syntax_table[AVR32_SYNTAX_SUB1],
mgl@1371
 24397
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24398
+      {
mgl@1371
 24399
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24400
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24401
+      },
mgl@1371
 24402
+    },
mgl@1371
 24403
+    {
mgl@1371
 24404
+      AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
mgl@1371
 24405
+      &avr32_syntax_table[AVR32_SYNTAX_SUB2],
mgl@1371
 24406
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24407
+      {
mgl@1371
 24408
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24409
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24410
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24411
+	&avr32_ifield_table[AVR32_IFIELD_K2],
mgl@1371
 24412
+      },
mgl@1371
 24413
+    },
mgl@1371
 24414
+    {
mgl@1371
 24415
+      AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
mgl@1371
 24416
+      &avr32_syntax_table[AVR32_SYNTAX_SUB5],
mgl@1371
 24417
+      BFD_RELOC_AVR32_SUB5, 3, 2,
mgl@1371
 24418
+      {
mgl@1371
 24419
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24420
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24421
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 24422
+      },
mgl@1371
 24423
+    },
mgl@1371
 24424
+    {
mgl@1371
 24425
+      AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
mgl@1371
 24426
+      &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
mgl@1371
 24427
+      BFD_RELOC_AVR32_10SW, 2, 1,
mgl@1371
 24428
+      {
mgl@1371
 24429
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24430
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 24431
+      },
mgl@1371
 24432
+    },
mgl@1371
 24433
+    {
mgl@1371
 24434
+      AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
mgl@1371
 24435
+      &avr32_syntax_table[AVR32_SYNTAX_SUB3],
mgl@1371
 24436
+      BFD_RELOC_AVR32_8S, 2, 1,
mgl@1371
 24437
+      {
mgl@1371
 24438
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24439
+	&avr32_ifield_table[AVR32_IFIELD_K8C],
mgl@1371
 24440
+      },
mgl@1371
 24441
+    },
mgl@1371
 24442
+    {
mgl@1371
 24443
+      AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
mgl@1371
 24444
+      &avr32_syntax_table[AVR32_SYNTAX_SUB4],
mgl@1371
 24445
+      BFD_RELOC_AVR32_21S, 2, 1,
mgl@1371
 24446
+      {
mgl@1371
 24447
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24448
+	&avr32_ifield_table[AVR32_IFIELD_K21],
mgl@1371
 24449
+      },
mgl@1371
 24450
+    },
mgl@1371
 24451
+    {
mgl@1371
 24452
+      AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
mgl@1371
 24453
+      &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
mgl@1371
 24454
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24455
+      {
mgl@1371
 24456
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24457
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24458
+      },
mgl@1371
 24459
+    },
mgl@1371
 24460
+    {
mgl@1371
 24461
+      AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
mgl@1371
 24462
+      &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
mgl@1371
 24463
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24464
+      {
mgl@1371
 24465
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24466
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24467
+      },
mgl@1371
 24468
+    },
mgl@1371
 24469
+    {
mgl@1371
 24470
+      AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
mgl@1371
 24471
+      &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
mgl@1371
 24472
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24473
+      {
mgl@1371
 24474
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24475
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24476
+      },
mgl@1371
 24477
+    },
mgl@1371
 24478
+    {
mgl@1371
 24479
+      AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
mgl@1371
 24480
+      &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
mgl@1371
 24481
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24482
+      {
mgl@1371
 24483
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24484
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24485
+      },
mgl@1371
 24486
+    },
mgl@1371
 24487
+    {
mgl@1371
 24488
+      AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
mgl@1371
 24489
+      &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
mgl@1371
 24490
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24491
+      {
mgl@1371
 24492
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24493
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24494
+      },
mgl@1371
 24495
+    },
mgl@1371
 24496
+    {
mgl@1371
 24497
+      AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
mgl@1371
 24498
+      &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
mgl@1371
 24499
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24500
+      {
mgl@1371
 24501
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24502
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24503
+      },
mgl@1371
 24504
+    },
mgl@1371
 24505
+    {
mgl@1371
 24506
+      AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
mgl@1371
 24507
+      &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
mgl@1371
 24508
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24509
+      {
mgl@1371
 24510
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24511
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24512
+      },
mgl@1371
 24513
+    },
mgl@1371
 24514
+    {
mgl@1371
 24515
+      AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
mgl@1371
 24516
+      &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
mgl@1371
 24517
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24518
+      {
mgl@1371
 24519
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24520
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24521
+      },
mgl@1371
 24522
+    },
mgl@1371
 24523
+    {
mgl@1371
 24524
+      AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
mgl@1371
 24525
+      &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
mgl@1371
 24526
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24527
+      {
mgl@1371
 24528
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24529
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24530
+      },
mgl@1371
 24531
+    },
mgl@1371
 24532
+    {
mgl@1371
 24533
+      AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
mgl@1371
 24534
+      &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
mgl@1371
 24535
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24536
+      {
mgl@1371
 24537
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24538
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24539
+      },
mgl@1371
 24540
+    },
mgl@1371
 24541
+    {
mgl@1371
 24542
+      AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
mgl@1371
 24543
+      &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
mgl@1371
 24544
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24545
+      {
mgl@1371
 24546
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24547
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24548
+      },
mgl@1371
 24549
+    },
mgl@1371
 24550
+    {
mgl@1371
 24551
+      AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
mgl@1371
 24552
+      &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
mgl@1371
 24553
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24554
+      {
mgl@1371
 24555
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24556
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24557
+      },
mgl@1371
 24558
+    },
mgl@1371
 24559
+    {
mgl@1371
 24560
+      AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
mgl@1371
 24561
+      &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
mgl@1371
 24562
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24563
+      {
mgl@1371
 24564
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24565
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24566
+      },
mgl@1371
 24567
+    },
mgl@1371
 24568
+    {
mgl@1371
 24569
+      AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
mgl@1371
 24570
+      &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
mgl@1371
 24571
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24572
+      {
mgl@1371
 24573
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24574
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24575
+      },
mgl@1371
 24576
+    },
mgl@1371
 24577
+    {
mgl@1371
 24578
+      AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
mgl@1371
 24579
+      &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
mgl@1371
 24580
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24581
+      {
mgl@1371
 24582
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24583
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24584
+      },
mgl@1371
 24585
+    },
mgl@1371
 24586
+    {
mgl@1371
 24587
+      AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
mgl@1371
 24588
+      &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
mgl@1371
 24589
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24590
+      {
mgl@1371
 24591
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24592
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24593
+      },
mgl@1371
 24594
+    },
mgl@1371
 24595
+    {
mgl@1371
 24596
+      AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
mgl@1371
 24597
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
mgl@1371
 24598
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24599
+      {
mgl@1371
 24600
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24601
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24602
+      },
mgl@1371
 24603
+    },
mgl@1371
 24604
+    {
mgl@1371
 24605
+      AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
mgl@1371
 24606
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
mgl@1371
 24607
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24608
+      {
mgl@1371
 24609
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24610
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24611
+      },
mgl@1371
 24612
+    },
mgl@1371
 24613
+    {
mgl@1371
 24614
+      AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
mgl@1371
 24615
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
mgl@1371
 24616
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24617
+      {
mgl@1371
 24618
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24619
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24620
+      },
mgl@1371
 24621
+    },
mgl@1371
 24622
+    {
mgl@1371
 24623
+      AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
mgl@1371
 24624
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
mgl@1371
 24625
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24626
+      {
mgl@1371
 24627
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24628
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24629
+      },
mgl@1371
 24630
+    },
mgl@1371
 24631
+    {
mgl@1371
 24632
+      AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
mgl@1371
 24633
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
mgl@1371
 24634
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24635
+      {
mgl@1371
 24636
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24637
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24638
+      },
mgl@1371
 24639
+    },
mgl@1371
 24640
+    {
mgl@1371
 24641
+      AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
mgl@1371
 24642
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
mgl@1371
 24643
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24644
+      {
mgl@1371
 24645
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24646
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24647
+      },
mgl@1371
 24648
+    },
mgl@1371
 24649
+    {
mgl@1371
 24650
+      AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
mgl@1371
 24651
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
mgl@1371
 24652
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24653
+      {
mgl@1371
 24654
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24655
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24656
+      },
mgl@1371
 24657
+    },
mgl@1371
 24658
+    {
mgl@1371
 24659
+      AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
mgl@1371
 24660
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
mgl@1371
 24661
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24662
+      {
mgl@1371
 24663
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24664
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24665
+      },
mgl@1371
 24666
+    },
mgl@1371
 24667
+    {
mgl@1371
 24668
+      AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
mgl@1371
 24669
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
mgl@1371
 24670
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24671
+      {
mgl@1371
 24672
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24673
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24674
+      },
mgl@1371
 24675
+    },
mgl@1371
 24676
+    {
mgl@1371
 24677
+      AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
mgl@1371
 24678
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
mgl@1371
 24679
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24680
+      {
mgl@1371
 24681
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24682
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24683
+      },
mgl@1371
 24684
+    },
mgl@1371
 24685
+    {
mgl@1371
 24686
+      AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
mgl@1371
 24687
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
mgl@1371
 24688
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24689
+      {
mgl@1371
 24690
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24691
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24692
+      },
mgl@1371
 24693
+    },
mgl@1371
 24694
+    {
mgl@1371
 24695
+      AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
mgl@1371
 24696
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
mgl@1371
 24697
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24698
+      {
mgl@1371
 24699
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24700
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24701
+      },
mgl@1371
 24702
+    },
mgl@1371
 24703
+    {
mgl@1371
 24704
+      AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
mgl@1371
 24705
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
mgl@1371
 24706
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24707
+      {
mgl@1371
 24708
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24709
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24710
+      },
mgl@1371
 24711
+    },
mgl@1371
 24712
+    {
mgl@1371
 24713
+      AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
mgl@1371
 24714
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
mgl@1371
 24715
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24716
+      {
mgl@1371
 24717
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24718
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24719
+      },
mgl@1371
 24720
+    },
mgl@1371
 24721
+    {
mgl@1371
 24722
+      AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
mgl@1371
 24723
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
mgl@1371
 24724
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24725
+      {
mgl@1371
 24726
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24727
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24728
+      },
mgl@1371
 24729
+    },
mgl@1371
 24730
+    {
mgl@1371
 24731
+      AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
mgl@1371
 24732
+      &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
mgl@1371
 24733
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,
mgl@1371
 24734
+      {
mgl@1371
 24735
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24736
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24737
+      },
mgl@1371
 24738
+    },
mgl@1371
 24739
+    {
mgl@1371
 24740
+      AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
mgl@1371
 24741
+      &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
mgl@1371
 24742
+      BFD_RELOC_UNUSED, 5, -1,
mgl@1371
 24743
+      {
mgl@1371
 24744
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24745
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24746
+	&avr32_ifield_table[AVR32_IFIELD_X],
mgl@1371
 24747
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24748
+	&avr32_ifield_table[AVR32_IFIELD_Y],
mgl@1371
 24749
+      },
mgl@1371
 24750
+    },
mgl@1371
 24751
+    {
mgl@1371
 24752
+      AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
mgl@1371
 24753
+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
mgl@1371
 24754
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 24755
+      {
mgl@1371
 24756
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24757
+      }
mgl@1371
 24758
+    },
mgl@1371
 24759
+    {
mgl@1371
 24760
+      AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
mgl@1371
 24761
+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
mgl@1371
 24762
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 24763
+      {
mgl@1371
 24764
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24765
+      }
mgl@1371
 24766
+    },
mgl@1371
 24767
+    {
mgl@1371
 24768
+      AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
mgl@1371
 24769
+      &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
mgl@1371
 24770
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 24771
+      {
mgl@1371
 24772
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24773
+      }
mgl@1371
 24774
+    },
mgl@1371
 24775
+    {
mgl@1371
 24776
+      AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
mgl@1371
 24777
+      &avr32_syntax_table[AVR32_SYNTAX_SYNC],
mgl@1371
 24778
+      BFD_RELOC_AVR32_8S_EXT, 1, 0,
mgl@1371
 24779
+      {
mgl@1371
 24780
+	&avr32_ifield_table[AVR32_IFIELD_K8E],
mgl@1371
 24781
+      }
mgl@1371
 24782
+    },
mgl@1371
 24783
+    {
mgl@1371
 24784
+      AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
mgl@1371
 24785
+      &avr32_syntax_table[AVR32_SYNTAX_TLBR],
mgl@1371
 24786
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 24787
+    },
mgl@1371
 24788
+    {
mgl@1371
 24789
+      AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
mgl@1371
 24790
+      &avr32_syntax_table[AVR32_SYNTAX_TLBS],
mgl@1371
 24791
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 24792
+    },
mgl@1371
 24793
+    {
mgl@1371
 24794
+      AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
mgl@1371
 24795
+      &avr32_syntax_table[AVR32_SYNTAX_TLBW],
mgl@1371
 24796
+      BFD_RELOC_UNUSED, 0, -1, { NULL },
mgl@1371
 24797
+    },
mgl@1371
 24798
+    {
mgl@1371
 24799
+      AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
mgl@1371
 24800
+      &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
mgl@1371
 24801
+      BFD_RELOC_UNUSED, 1, -1,
mgl@1371
 24802
+      {
mgl@1371
 24803
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24804
+      }
mgl@1371
 24805
+    },
mgl@1371
 24806
+    {
mgl@1371
 24807
+      AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
mgl@1371
 24808
+      &avr32_syntax_table[AVR32_SYNTAX_TST],
mgl@1371
 24809
+      BFD_RELOC_UNUSED, 2, -1,
mgl@1371
 24810
+      {
mgl@1371
 24811
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24812
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24813
+      },
mgl@1371
 24814
+    },
mgl@1371
 24815
+    {
mgl@1371
 24816
+      AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
mgl@1371
 24817
+      &avr32_syntax_table[AVR32_SYNTAX_XCHG],
mgl@1371
 24818
+      BFD_RELOC_UNUSED, 3, -1,
mgl@1371
 24819
+      {
mgl@1371
 24820
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],
mgl@1371
 24821
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24822
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24823
+      },
mgl@1371
 24824
+    },
mgl@1371
 24825
+    {
mgl@1371
 24826
+      AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
mgl@1371
 24827
+      &avr32_syntax_table[AVR32_SYNTAX_MEMC],
mgl@1371
 24828
+      BFD_RELOC_AVR32_15S, 2, 0,
mgl@1371
 24829
+      {
mgl@1371
 24830
+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
mgl@1371
 24831
+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
mgl@1371
 24832
+      },
mgl@1371
 24833
+    },
mgl@1371
 24834
+    {
mgl@1371
 24835
+      AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
mgl@1371
 24836
+      &avr32_syntax_table[AVR32_SYNTAX_MEMS],
mgl@1371
 24837
+      BFD_RELOC_AVR32_15S, 2, 0,
mgl@1371
 24838
+      {
mgl@1371
 24839
+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
mgl@1371
 24840
+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
mgl@1371
 24841
+      },
mgl@1371
 24842
+    },
mgl@1371
 24843
+    {
mgl@1371
 24844
+      AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
mgl@1371
 24845
+      &avr32_syntax_table[AVR32_SYNTAX_MEMT],
mgl@1371
 24846
+      BFD_RELOC_AVR32_15S, 2, 0,
mgl@1371
 24847
+      {
mgl@1371
 24848
+	&avr32_ifield_table[AVR32_IFIELD_MEM15],
mgl@1371
 24849
+	&avr32_ifield_table[AVR32_IFIELD_MEMB5],
mgl@1371
 24850
+      },
mgl@1371
 24851
+    },
mgl@1371
 24852
+    {
mgl@1371
 24853
+      AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
mgl@1371
 24854
+      &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
mgl@1371
 24855
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24856
+      {
mgl@1371
 24857
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24858
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24859
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 24860
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 24861
+      },
mgl@1371
 24862
+    },
mgl@1371
 24863
+    {
mgl@1371
 24864
+      AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
mgl@1371
 24865
+      &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
mgl@1371
 24866
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24867
+      {
mgl@1371
 24868
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24869
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24870
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 24871
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 24872
+      },
mgl@1371
 24873
+    },
mgl@1371
 24874
+    {
mgl@1371
 24875
+      AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
mgl@1371
 24876
+      &avr32_syntax_table[AVR32_SYNTAX_BFINS],
mgl@1371
 24877
+      BFD_RELOC_UNUSED, 4, -1,
mgl@1371
 24878
+      {
mgl@1371
 24879
+	&avr32_ifield_table[AVR32_IFIELD_RX],
mgl@1371
 24880
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 24881
+	&avr32_ifield_table[AVR32_IFIELD_S5],
mgl@1371
 24882
+	&avr32_ifield_table[AVR32_IFIELD_K5E],
mgl@1371
 24883
+      },
mgl@1371
 24884
+    },
mgl@1371
 24885
+#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field)                    \
mgl@1371
 24886
+    {                                                                   \
mgl@1371
 24887
+      AVR32_OPC_RSUB ## cond_name , 4,                                  \
mgl@1371
 24888
+      0xfbb00000 | (cond_field << 8), 0xfff0ff00,                       \
mgl@1371
 24889
+      &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ],             \
mgl@1371
 24890
+      BFD_RELOC_AVR32_8S_EXT, 2, 1,                                     \
mgl@1371
 24891
+      {                                                                 \
mgl@1371
 24892
+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
mgl@1371
 24893
+	&avr32_ifield_table[AVR32_IFIELD_K8E],                          \
mgl@1371
 24894
+      },                                                                \
mgl@1371
 24895
+    },
mgl@1371
 24896
+
mgl@1371
 24897
+    AVR32_OPCODE_RSUBCOND (EQ, 0) 
mgl@1371
 24898
+    AVR32_OPCODE_RSUBCOND (NE, 1) 
mgl@1371
 24899
+    AVR32_OPCODE_RSUBCOND (CC, 2) 
mgl@1371
 24900
+    AVR32_OPCODE_RSUBCOND (CS, 3) 
mgl@1371
 24901
+    AVR32_OPCODE_RSUBCOND (GE, 4) 
mgl@1371
 24902
+    AVR32_OPCODE_RSUBCOND (LT, 5) 
mgl@1371
 24903
+    AVR32_OPCODE_RSUBCOND (MI, 6) 
mgl@1371
 24904
+    AVR32_OPCODE_RSUBCOND (PL, 7) 
mgl@1371
 24905
+    AVR32_OPCODE_RSUBCOND (LS, 8) 
mgl@1371
 24906
+    AVR32_OPCODE_RSUBCOND (GT, 9) 
mgl@1371
 24907
+    AVR32_OPCODE_RSUBCOND (LE, 10) 
mgl@1371
 24908
+    AVR32_OPCODE_RSUBCOND (HI, 11) 
mgl@1371
 24909
+    AVR32_OPCODE_RSUBCOND (VS, 12) 
mgl@1371
 24910
+    AVR32_OPCODE_RSUBCOND (VC, 13) 
mgl@1371
 24911
+    AVR32_OPCODE_RSUBCOND (QS, 14) 
mgl@1371
 24912
+    AVR32_OPCODE_RSUBCOND (AL, 15) 
mgl@1371
 24913
+
mgl@1371
 24914
+#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
mgl@1371
 24915
+    {                                                                   \
mgl@1371
 24916
+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
mgl@1371
 24917
+      0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0,     \
mgl@1371
 24918
+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
mgl@1371
 24919
+      BFD_RELOC_UNUSED, 3, -1,                                          \
mgl@1371
 24920
+      {                                                                 \
mgl@1371
 24921
+	&avr32_ifield_table[AVR32_IFIELD_RD_E],                         \
mgl@1371
 24922
+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
mgl@1371
 24923
+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
mgl@1371
 24924
+      },                                                                \
mgl@1371
 24925
+    },
mgl@1371
 24926
+
mgl@1371
 24927
+    AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
mgl@1371
 24928
+    AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
mgl@1371
 24929
+    AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
mgl@1371
 24930
+    AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
mgl@1371
 24931
+    AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
mgl@1371
 24932
+    AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
mgl@1371
 24933
+    AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
mgl@1371
 24934
+    AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
mgl@1371
 24935
+    AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
mgl@1371
 24936
+    AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
mgl@1371
 24937
+    AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
mgl@1371
 24938
+    AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
mgl@1371
 24939
+    AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
mgl@1371
 24940
+    AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
mgl@1371
 24941
+    AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
mgl@1371
 24942
+    AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
mgl@1371
 24943
+
mgl@1371
 24944
+    AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
mgl@1371
 24945
+    AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
mgl@1371
 24946
+    AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
mgl@1371
 24947
+    AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
mgl@1371
 24948
+    AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
mgl@1371
 24949
+    AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
mgl@1371
 24950
+    AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
mgl@1371
 24951
+    AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
mgl@1371
 24952
+    AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
mgl@1371
 24953
+    AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
mgl@1371
 24954
+    AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
mgl@1371
 24955
+    AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
mgl@1371
 24956
+    AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
mgl@1371
 24957
+    AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
mgl@1371
 24958
+    AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
mgl@1371
 24959
+    AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
mgl@1371
 24960
+
mgl@1371
 24961
+    AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
mgl@1371
 24962
+    AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
mgl@1371
 24963
+    AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
mgl@1371
 24964
+    AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
mgl@1371
 24965
+    AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
mgl@1371
 24966
+    AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
mgl@1371
 24967
+    AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
mgl@1371
 24968
+    AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
mgl@1371
 24969
+    AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
mgl@1371
 24970
+    AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
mgl@1371
 24971
+    AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
mgl@1371
 24972
+    AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
mgl@1371
 24973
+    AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
mgl@1371
 24974
+    AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
mgl@1371
 24975
+    AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
mgl@1371
 24976
+    AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
mgl@1371
 24977
+
mgl@1371
 24978
+    AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
mgl@1371
 24979
+    AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
mgl@1371
 24980
+    AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
mgl@1371
 24981
+    AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
mgl@1371
 24982
+    AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
mgl@1371
 24983
+    AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
mgl@1371
 24984
+    AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
mgl@1371
 24985
+    AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
mgl@1371
 24986
+    AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
mgl@1371
 24987
+    AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
mgl@1371
 24988
+    AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
mgl@1371
 24989
+    AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
mgl@1371
 24990
+    AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
mgl@1371
 24991
+    AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
mgl@1371
 24992
+    AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
mgl@1371
 24993
+    AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
mgl@1371
 24994
+
mgl@1371
 24995
+    AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
mgl@1371
 24996
+    AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
mgl@1371
 24997
+    AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
mgl@1371
 24998
+    AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
mgl@1371
 24999
+    AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
mgl@1371
 25000
+    AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
mgl@1371
 25001
+    AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
mgl@1371
 25002
+    AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
mgl@1371
 25003
+    AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
mgl@1371
 25004
+    AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
mgl@1371
 25005
+    AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
mgl@1371
 25006
+    AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
mgl@1371
 25007
+    AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
mgl@1371
 25008
+    AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
mgl@1371
 25009
+    AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
mgl@1371
 25010
+    AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15) 
mgl@1371
 25011
+
mgl@1371
 25012
+#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field)  \
mgl@1371
 25013
+    {                                                                   \
mgl@1371
 25014
+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
mgl@1371
 25015
+      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
mgl@1371
 25016
+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
mgl@1371
 25017
+      BFD_RELOC_UNUSED, 3, -1,                                          \
mgl@1371
 25018
+      {                                                                 \
mgl@1371
 25019
+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
mgl@1371
 25020
+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
mgl@1371
 25021
+	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
mgl@1371
 25022
+      },                                                                \
mgl@1371
 25023
+    },
mgl@1371
 25024
+    
mgl@1371
 25025
+#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field)  \
mgl@1371
 25026
+    {                                                                   \
mgl@1371
 25027
+      AVR32_OPC_ ## op_name ## cond_name , 4,                           \
mgl@1371
 25028
+      0xe1f00000 | (cond_field << 12) | (op_field  << 9), 0xe1f0fe00,   \
mgl@1371
 25029
+      &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ],      \
mgl@1371
 25030
+      BFD_RELOC_UNUSED, 3, -1,                                          \
mgl@1371
 25031
+      {                                                                 \
mgl@1371
 25032
+	&avr32_ifield_table[AVR32_IFIELD_RX],                           \
mgl@1371
 25033
+	&avr32_ifield_table[AVR32_IFIELD_K9E],                          \
mgl@1371
 25034
+	&avr32_ifield_table[AVR32_IFIELD_RY],                           \
mgl@1371
 25035
+      },                                                                \
mgl@1371
 25036
+    },
mgl@1371
 25037
+
mgl@1371
 25038
+    AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0) 
mgl@1371
 25039
+    AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1) 
mgl@1371
 25040
+    AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2) 
mgl@1371
 25041
+    AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3) 
mgl@1371
 25042
+    AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4) 
mgl@1371
 25043
+    AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5) 
mgl@1371
 25044
+    AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6) 
mgl@1371
 25045
+    AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7) 
mgl@1371
 25046
+    AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8) 
mgl@1371
 25047
+    AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9) 
mgl@1371
 25048
+    AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10) 
mgl@1371
 25049
+    AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11) 
mgl@1371
 25050
+    AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12) 
mgl@1371
 25051
+    AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13) 
mgl@1371
 25052
+    AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14) 
mgl@1371
 25053
+    AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15) 
mgl@1371
 25054
+
mgl@1371
 25055
+    AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0) 
mgl@1371
 25056
+    AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1) 
mgl@1371
 25057
+    AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2) 
mgl@1371
 25058
+    AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3) 
mgl@1371
 25059
+    AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4) 
mgl@1371
 25060
+    AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5) 
mgl@1371
 25061
+    AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6) 
mgl@1371
 25062
+    AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7) 
mgl@1371
 25063
+    AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8) 
mgl@1371
 25064
+    AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9) 
mgl@1371
 25065
+    AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10) 
mgl@1371
 25066
+    AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11) 
mgl@1371
 25067
+    AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12) 
mgl@1371
 25068
+    AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13) 
mgl@1371
 25069
+    AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14) 
mgl@1371
 25070
+    AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15) 
mgl@1371
 25071
+
mgl@1371
 25072
+    AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0) 
mgl@1371
 25073
+    AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1) 
mgl@1371
 25074
+    AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2) 
mgl@1371
 25075
+    AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3) 
mgl@1371
 25076
+    AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4) 
mgl@1371
 25077
+    AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5) 
mgl@1371
 25078
+    AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6) 
mgl@1371
 25079
+    AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7) 
mgl@1371
 25080
+    AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8) 
mgl@1371
 25081
+    AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9) 
mgl@1371
 25082
+    AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10) 
mgl@1371
 25083
+    AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11) 
mgl@1371
 25084
+    AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12) 
mgl@1371
 25085
+    AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13) 
mgl@1371
 25086
+    AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14) 
mgl@1371
 25087
+    AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15) 
mgl@1371
 25088
+
mgl@1371
 25089
+    AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0) 
mgl@1371
 25090
+    AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1) 
mgl@1371
 25091
+    AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2) 
mgl@1371
 25092
+    AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3) 
mgl@1371
 25093
+    AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4) 
mgl@1371
 25094
+    AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5) 
mgl@1371
 25095
+    AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6) 
mgl@1371
 25096
+    AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7) 
mgl@1371
 25097
+    AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8) 
mgl@1371
 25098
+    AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9) 
mgl@1371
 25099
+    AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10) 
mgl@1371
 25100
+    AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11) 
mgl@1371
 25101
+    AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12) 
mgl@1371
 25102
+    AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13) 
mgl@1371
 25103
+    AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14) 
mgl@1371
 25104
+    AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15) 
mgl@1371
 25105
+
mgl@1371
 25106
+    AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0) 
mgl@1371
 25107
+    AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1) 
mgl@1371
 25108
+    AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2) 
mgl@1371
 25109
+    AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3) 
mgl@1371
 25110
+    AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4) 
mgl@1371
 25111
+    AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5) 
mgl@1371
 25112
+    AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6) 
mgl@1371
 25113
+    AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7) 
mgl@1371
 25114
+    AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8) 
mgl@1371
 25115
+    AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9) 
mgl@1371
 25116
+    AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10) 
mgl@1371
 25117
+    AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11) 
mgl@1371
 25118
+    AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12) 
mgl@1371
 25119
+    AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13) 
mgl@1371
 25120
+    AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14) 
mgl@1371
 25121
+    AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15) 
mgl@1371
 25122
+
mgl@1371
 25123
+    AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0) 
mgl@1371
 25124
+    AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1) 
mgl@1371
 25125
+    AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2) 
mgl@1371
 25126
+    AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3) 
mgl@1371
 25127
+    AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4) 
mgl@1371
 25128
+    AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5) 
mgl@1371
 25129
+    AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6) 
mgl@1371
 25130
+    AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7) 
mgl@1371
 25131
+    AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8) 
mgl@1371
 25132
+    AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9) 
mgl@1371
 25133
+    AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10) 
mgl@1371
 25134
+    AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11) 
mgl@1371
 25135
+    AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12) 
mgl@1371
 25136
+    AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13) 
mgl@1371
 25137
+    AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14) 
mgl@1371
 25138
+    AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15) 
mgl@1371
 25139
+
mgl@1371
 25140
+    AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0) 
mgl@1371
 25141
+    AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1) 
mgl@1371
 25142
+    AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2) 
mgl@1371
 25143
+    AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3) 
mgl@1371
 25144
+    AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4) 
mgl@1371
 25145
+    AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5) 
mgl@1371
 25146
+    AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6) 
mgl@1371
 25147
+    AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7) 
mgl@1371
 25148
+    AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8) 
mgl@1371
 25149
+    AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9) 
mgl@1371
 25150
+    AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10) 
mgl@1371
 25151
+    AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11) 
mgl@1371
 25152
+    AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12) 
mgl@1371
 25153
+    AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13) 
mgl@1371
 25154
+    AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14) 
mgl@1371
 25155
+    AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15) 
mgl@1371
 25156
+
mgl@1371
 25157
+    AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0) 
mgl@1371
 25158
+    AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1) 
mgl@1371
 25159
+    AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2) 
mgl@1371
 25160
+    AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3) 
mgl@1371
 25161
+    AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4) 
mgl@1371
 25162
+    AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5) 
mgl@1371
 25163
+    AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6) 
mgl@1371
 25164
+    AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7) 
mgl@1371
 25165
+    AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8) 
mgl@1371
 25166
+    AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9) 
mgl@1371
 25167
+    AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10) 
mgl@1371
 25168
+    AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11) 
mgl@1371
 25169
+    AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12) 
mgl@1371
 25170
+    AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13) 
mgl@1371
 25171
+    AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14) 
mgl@1371
 25172
+    AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15) 
mgl@1371
 25173
+
mgl@1371
 25174
+    {
mgl@1371
 25175
+      AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
mgl@1371
 25176
+      &avr32_syntax_table[AVR32_SYNTAX_MOVH],
mgl@1371
 25177
+      BFD_RELOC_AVR32_16U,  2, 1,
mgl@1371
 25178
+      {
mgl@1371
 25179
+	&avr32_ifield_table[AVR32_IFIELD_RY],
mgl@1371
 25180
+	&avr32_ifield_table[AVR32_IFIELD_K16],
mgl@1371
 25181
+      },
mgl@1371
 25182
+    },
mgl@1371
 25183
+
mgl@1371
 25184
+ };
mgl@1371
 25185
+
mgl@1371
 25186
+#define FPALIAS_DXY(name, opcode)			\
mgl@1371
 25187
+  {							\
mgl@1371
 25188
+    AVR32_ALIAS_##name##_S,				\
mgl@1371
 25189
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25190
+    {							\
mgl@1371
 25191
+      { 0, 0 },						\
mgl@1371
 25192
+      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
mgl@1371
 25193
+      { 0, opcode },					\
mgl@1371
 25194
+    },							\
mgl@1371
 25195
+  }, {							\
mgl@1371
 25196
+    AVR32_ALIAS_##name##_D,				\
mgl@1371
 25197
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25198
+    {							\
mgl@1371
 25199
+      { 0, 0 },						\
mgl@1371
 25200
+      { 1, 0 }, { 1, 1 }, { 1, 2 },			\
mgl@1371
 25201
+      { 0, (opcode) | 0x40 },				\
mgl@1371
 25202
+    },							\
mgl@1371
 25203
+  }
mgl@1371
 25204
+#define FPALIAS_DX(name, opcode)			\
mgl@1371
 25205
+  {							\
mgl@1371
 25206
+    AVR32_ALIAS_##name##_S,				\
mgl@1371
 25207
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25208
+    {							\
mgl@1371
 25209
+      { 0, 0 },						\
mgl@1371
 25210
+      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
mgl@1371
 25211
+      { 0, opcode },					\
mgl@1371
 25212
+    },							\
mgl@1371
 25213
+  }, {							\
mgl@1371
 25214
+    AVR32_ALIAS_##name##_D,				\
mgl@1371
 25215
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25216
+    {							\
mgl@1371
 25217
+      { 0, 0 },						\
mgl@1371
 25218
+      { 1, 0 }, { 1, 1 }, { 0, 0 },			\
mgl@1371
 25219
+      { 0, (opcode) | 0x40 },				\
mgl@1371
 25220
+    },							\
mgl@1371
 25221
+  }
mgl@1371
 25222
+#define FPALIAS_XY(name, opcode)			\
mgl@1371
 25223
+  {							\
mgl@1371
 25224
+    AVR32_ALIAS_##name##_S,				\
mgl@1371
 25225
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25226
+    {							\
mgl@1371
 25227
+      { 0, 0 },						\
mgl@1371
 25228
+      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
mgl@1371
 25229
+      { 0, opcode },					\
mgl@1371
 25230
+    },							\
mgl@1371
 25231
+  }, {							\
mgl@1371
 25232
+    AVR32_ALIAS_##name##_D,				\
mgl@1371
 25233
+    &avr32_opc_table[AVR32_OPC_COP],			\
mgl@1371
 25234
+    {							\
mgl@1371
 25235
+      { 0, 0 },						\
mgl@1371
 25236
+      { 0, 0 }, { 1, 0 }, { 1, 1 },			\
mgl@1371
 25237
+      { 0, (opcode) | 0x40 },				\
mgl@1371
 25238
+    },							\
mgl@1371
 25239
+  }
mgl@1371
 25240
+
mgl@1371
 25241
+const struct avr32_alias avr32_alias_table[] =
mgl@1371
 25242
+  {
mgl@1371
 25243
+    FPALIAS_DXY(FMAC, 0x00),
mgl@1371
 25244
+    FPALIAS_DXY(FNMAC, 0x01),
mgl@1371
 25245
+    FPALIAS_DXY(FMSC, 0x02),
mgl@1371
 25246
+    FPALIAS_DXY(FNMSC, 0x03),
mgl@1371
 25247
+    FPALIAS_DXY(FADD, 0x04),
mgl@1371
 25248
+    FPALIAS_DXY(FSUB, 0x05),
mgl@1371
 25249
+    FPALIAS_DXY(FMUL, 0x06),
mgl@1371
 25250
+    FPALIAS_DXY(FNMUL, 0x07),
mgl@1371
 25251
+    FPALIAS_DX(FNEG, 0x08),
mgl@1371
 25252
+    FPALIAS_DX(FABS, 0x09),
mgl@1371
 25253
+    FPALIAS_XY(FCMP, 0x0d),
mgl@1371
 25254
+    FPALIAS_DX(FMOV1, 0x0a),
mgl@1371
 25255
+    {
mgl@1371
 25256
+      AVR32_ALIAS_FMOV2_S,
mgl@1371
 25257
+      &avr32_opc_table[AVR32_OPC_MVCR_W],
mgl@1371
 25258
+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
mgl@1371
 25259
+    },
mgl@1371
 25260
+    {
mgl@1371
 25261
+      AVR32_ALIAS_FMOV2_D,
mgl@1371
 25262
+      &avr32_opc_table[AVR32_OPC_MVCR_D],
mgl@1371
 25263
+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
mgl@1371
 25264
+    },
mgl@1371
 25265
+    {
mgl@1371
 25266
+      AVR32_ALIAS_FMOV3_S,
mgl@1371
 25267
+      &avr32_opc_table[AVR32_OPC_MVRC_W],
mgl@1371
 25268
+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
mgl@1371
 25269
+    },
mgl@1371
 25270
+    {
mgl@1371
 25271
+      AVR32_ALIAS_FMOV3_D,
mgl@1371
 25272
+      &avr32_opc_table[AVR32_OPC_MVRC_D],
mgl@1371
 25273
+      { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
mgl@1371
 25274
+    },
mgl@1371
 25275
+    {
mgl@1371
 25276
+      AVR32_ALIAS_FCASTS_D,
mgl@1371
 25277
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25278
+      {
mgl@1371
 25279
+	{ 0, 0 },
mgl@1371
 25280
+	{ 1, 0 }, { 1, 1 }, { 0, 0 },
mgl@1371
 25281
+	{ 0, 0x0f },
mgl@1371
 25282
+      },
mgl@1371
 25283
+    },
mgl@1371
 25284
+    {
mgl@1371
 25285
+      AVR32_ALIAS_FCASTD_S,
mgl@1371
 25286
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25287
+      {
mgl@1371
 25288
+	{ 0, 0 },
mgl@1371
 25289
+	{ 1, 0 }, { 1, 1 }, { 0, 0 },
mgl@1371
 25290
+	{ 0, 0x10 },
mgl@1371
 25291
+      },
mgl@1371
 25292
+    },
mgl@1371
 25293
+    {
mgl@1371
 25294
+      AVR32_ALIAS_PICOSVMAC0,
mgl@1371
 25295
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25296
+      {
mgl@1371
 25297
+	{ 0, PICO_CPNO },
mgl@1371
 25298
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25299
+	{ 0, 0x0c },
mgl@1371
 25300
+      },
mgl@1371
 25301
+    },
mgl@1371
 25302
+    {
mgl@1371
 25303
+      AVR32_ALIAS_PICOSVMAC1,
mgl@1371
 25304
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25305
+      {
mgl@1371
 25306
+	{ 0, PICO_CPNO },
mgl@1371
 25307
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25308
+	{ 0, 0x0d },
mgl@1371
 25309
+      },
mgl@1371
 25310
+    },
mgl@1371
 25311
+    {
mgl@1371
 25312
+      AVR32_ALIAS_PICOSVMAC2,
mgl@1371
 25313
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25314
+      {
mgl@1371
 25315
+	{ 0, PICO_CPNO },
mgl@1371
 25316
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25317
+	{ 0, 0x0e },
mgl@1371
 25318
+      },
mgl@1371
 25319
+    },
mgl@1371
 25320
+    {
mgl@1371
 25321
+      AVR32_ALIAS_PICOSVMAC3,
mgl@1371
 25322
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25323
+      {
mgl@1371
 25324
+	{ 0, PICO_CPNO },
mgl@1371
 25325
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25326
+	{ 0, 0x0f },
mgl@1371
 25327
+      },
mgl@1371
 25328
+    },
mgl@1371
 25329
+    {
mgl@1371
 25330
+      AVR32_ALIAS_PICOSVMUL0,
mgl@1371
 25331
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25332
+      {
mgl@1371
 25333
+	{ 0, PICO_CPNO },
mgl@1371
 25334
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25335
+	{ 0, 0x08 },
mgl@1371
 25336
+      },
mgl@1371
 25337
+    },
mgl@1371
 25338
+    {
mgl@1371
 25339
+      AVR32_ALIAS_PICOSVMUL1,
mgl@1371
 25340
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25341
+      {
mgl@1371
 25342
+	{ 0, PICO_CPNO },
mgl@1371
 25343
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25344
+	{ 0, 0x09 },
mgl@1371
 25345
+      },
mgl@1371
 25346
+    },
mgl@1371
 25347
+    {
mgl@1371
 25348
+      AVR32_ALIAS_PICOSVMUL2,
mgl@1371
 25349
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25350
+      {
mgl@1371
 25351
+	{ 0, PICO_CPNO },
mgl@1371
 25352
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25353
+	{ 0, 0x0a },
mgl@1371
 25354
+      },
mgl@1371
 25355
+    },
mgl@1371
 25356
+    {
mgl@1371
 25357
+      AVR32_ALIAS_PICOSVMUL3,
mgl@1371
 25358
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25359
+      {
mgl@1371
 25360
+	{ 0, PICO_CPNO },
mgl@1371
 25361
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25362
+	{ 0, 0x0b },
mgl@1371
 25363
+      },
mgl@1371
 25364
+    },
mgl@1371
 25365
+    {
mgl@1371
 25366
+      AVR32_ALIAS_PICOVMAC0,
mgl@1371
 25367
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25368
+      {
mgl@1371
 25369
+	{ 0, PICO_CPNO },
mgl@1371
 25370
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25371
+	{ 0, 0x04 },
mgl@1371
 25372
+      },
mgl@1371
 25373
+    },
mgl@1371
 25374
+    {
mgl@1371
 25375
+      AVR32_ALIAS_PICOVMAC1,
mgl@1371
 25376
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25377
+      {
mgl@1371
 25378
+	{ 0, PICO_CPNO },
mgl@1371
 25379
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25380
+	{ 0, 0x05 },
mgl@1371
 25381
+      },
mgl@1371
 25382
+    },
mgl@1371
 25383
+    {
mgl@1371
 25384
+      AVR32_ALIAS_PICOVMAC2,
mgl@1371
 25385
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25386
+      {
mgl@1371
 25387
+	{ 0, PICO_CPNO },
mgl@1371
 25388
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25389
+	{ 0, 0x06 },
mgl@1371
 25390
+      },
mgl@1371
 25391
+    },
mgl@1371
 25392
+    {
mgl@1371
 25393
+      AVR32_ALIAS_PICOVMAC3,
mgl@1371
 25394
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25395
+      {
mgl@1371
 25396
+	{ 0, PICO_CPNO },
mgl@1371
 25397
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25398
+	{ 0, 0x07 },
mgl@1371
 25399
+      },
mgl@1371
 25400
+    },
mgl@1371
 25401
+    {
mgl@1371
 25402
+      AVR32_ALIAS_PICOVMUL0,
mgl@1371
 25403
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25404
+      {
mgl@1371
 25405
+	{ 0, PICO_CPNO },
mgl@1371
 25406
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25407
+	{ 0, 0x00 },
mgl@1371
 25408
+      },
mgl@1371
 25409
+    },
mgl@1371
 25410
+    {
mgl@1371
 25411
+      AVR32_ALIAS_PICOVMUL1,
mgl@1371
 25412
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25413
+      {
mgl@1371
 25414
+	{ 0, PICO_CPNO },
mgl@1371
 25415
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25416
+	{ 0, 0x01 },
mgl@1371
 25417
+      },
mgl@1371
 25418
+    },
mgl@1371
 25419
+    {
mgl@1371
 25420
+      AVR32_ALIAS_PICOVMUL2,
mgl@1371
 25421
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25422
+      {
mgl@1371
 25423
+	{ 0, PICO_CPNO },
mgl@1371
 25424
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25425
+	{ 0, 0x02 },
mgl@1371
 25426
+      },
mgl@1371
 25427
+    },
mgl@1371
 25428
+    {
mgl@1371
 25429
+      AVR32_ALIAS_PICOVMUL3,
mgl@1371
 25430
+      &avr32_opc_table[AVR32_OPC_COP],
mgl@1371
 25431
+      {
mgl@1371
 25432
+	{ 0, PICO_CPNO },
mgl@1371
 25433
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25434
+	{ 0, 0x03 },
mgl@1371
 25435
+      },
mgl@1371
 25436
+    },
mgl@1371
 25437
+    {
mgl@1371
 25438
+      AVR32_ALIAS_PICOLD_D1,
mgl@1371
 25439
+      &avr32_opc_table[AVR32_OPC_LDC_D1],
mgl@1371
 25440
+      {
mgl@1371
 25441
+	{ 0, PICO_CPNO },
mgl@1371
 25442
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25443
+      },
mgl@1371
 25444
+    },
mgl@1371
 25445
+    {
mgl@1371
 25446
+      AVR32_ALIAS_PICOLD_D2,
mgl@1371
 25447
+      &avr32_opc_table[AVR32_OPC_LDC_D2],
mgl@1371
 25448
+      {
mgl@1371
 25449
+	{ 0, PICO_CPNO },
mgl@1371
 25450
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25451
+      },
mgl@1371
 25452
+    },
mgl@1371
 25453
+    {
mgl@1371
 25454
+      AVR32_ALIAS_PICOLD_D3,
mgl@1371
 25455
+      &avr32_opc_table[AVR32_OPC_LDC_D3],
mgl@1371
 25456
+      {
mgl@1371
 25457
+	{ 0, PICO_CPNO },
mgl@1371
 25458
+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
mgl@1371
 25459
+      },
mgl@1371
 25460
+    },
mgl@1371
 25461
+    {
mgl@1371
 25462
+      AVR32_ALIAS_PICOLD_W1,
mgl@1371
 25463
+      &avr32_opc_table[AVR32_OPC_LDC_W1],
mgl@1371
 25464
+      {
mgl@1371
 25465
+	{ 0, PICO_CPNO },
mgl@1371
 25466
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25467
+      },
mgl@1371
 25468
+    },
mgl@1371
 25469
+    {
mgl@1371
 25470
+      AVR32_ALIAS_PICOLD_W2,
mgl@1371
 25471
+      &avr32_opc_table[AVR32_OPC_LDC_W2],
mgl@1371
 25472
+      {
mgl@1371
 25473
+	{ 0, PICO_CPNO },
mgl@1371
 25474
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25475
+      },
mgl@1371
 25476
+    },
mgl@1371
 25477
+    {
mgl@1371
 25478
+      AVR32_ALIAS_PICOLD_W3,
mgl@1371
 25479
+      &avr32_opc_table[AVR32_OPC_LDC_W3],
mgl@1371
 25480
+      {
mgl@1371
 25481
+	{ 0, PICO_CPNO },
mgl@1371
 25482
+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
mgl@1371
 25483
+      },
mgl@1371
 25484
+    },
mgl@1371
 25485
+    {
mgl@1371
 25486
+      AVR32_ALIAS_PICOLDM_D,
mgl@1371
 25487
+      &avr32_opc_table[AVR32_OPC_LDCM_D],
mgl@1371
 25488
+      {
mgl@1371
 25489
+	{ 0, PICO_CPNO },
mgl@1371
 25490
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25491
+      },
mgl@1371
 25492
+    },
mgl@1371
 25493
+    {
mgl@1371
 25494
+      AVR32_ALIAS_PICOLDM_D_PU,
mgl@1371
 25495
+      &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
mgl@1371
 25496
+      {
mgl@1371
 25497
+	{ 0, PICO_CPNO },
mgl@1371
 25498
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25499
+      },
mgl@1371
 25500
+    },
mgl@1371
 25501
+    {
mgl@1371
 25502
+      AVR32_ALIAS_PICOLDM_W,
mgl@1371
 25503
+      &avr32_opc_table[AVR32_OPC_LDCM_W],
mgl@1371
 25504
+      {
mgl@1371
 25505
+	{ 0, PICO_CPNO },
mgl@1371
 25506
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25507
+      },
mgl@1371
 25508
+    },
mgl@1371
 25509
+    {
mgl@1371
 25510
+      AVR32_ALIAS_PICOLDM_W_PU,
mgl@1371
 25511
+      &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
mgl@1371
 25512
+      {
mgl@1371
 25513
+	{ 0, PICO_CPNO },
mgl@1371
 25514
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25515
+      },
mgl@1371
 25516
+    },
mgl@1371
 25517
+    {
mgl@1371
 25518
+      AVR32_ALIAS_PICOMV_D1,
mgl@1371
 25519
+      &avr32_opc_table[AVR32_OPC_MVCR_D],
mgl@1371
 25520
+      {
mgl@1371
 25521
+	{ 0, PICO_CPNO },
mgl@1371
 25522
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25523
+      },
mgl@1371
 25524
+    },
mgl@1371
 25525
+    {
mgl@1371
 25526
+      AVR32_ALIAS_PICOMV_D2,
mgl@1371
 25527
+      &avr32_opc_table[AVR32_OPC_MVRC_D],
mgl@1371
 25528
+      {
mgl@1371
 25529
+	{ 0, PICO_CPNO },
mgl@1371
 25530
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25531
+      },
mgl@1371
 25532
+    },
mgl@1371
 25533
+    {
mgl@1371
 25534
+      AVR32_ALIAS_PICOMV_W1,
mgl@1371
 25535
+      &avr32_opc_table[AVR32_OPC_MVCR_W],
mgl@1371
 25536
+      {
mgl@1371
 25537
+	{ 0, PICO_CPNO },
mgl@1371
 25538
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25539
+      },
mgl@1371
 25540
+    },
mgl@1371
 25541
+    {
mgl@1371
 25542
+      AVR32_ALIAS_PICOMV_W2,
mgl@1371
 25543
+      &avr32_opc_table[AVR32_OPC_MVRC_W],
mgl@1371
 25544
+      {
mgl@1371
 25545
+	{ 0, PICO_CPNO },
mgl@1371
 25546
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25547
+      },
mgl@1371
 25548
+    },
mgl@1371
 25549
+    {
mgl@1371
 25550
+      AVR32_ALIAS_PICOST_D1,
mgl@1371
 25551
+      &avr32_opc_table[AVR32_OPC_STC_D1],
mgl@1371
 25552
+      {
mgl@1371
 25553
+	{ 0, PICO_CPNO },
mgl@1371
 25554
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25555
+      },
mgl@1371
 25556
+    },
mgl@1371
 25557
+    {
mgl@1371
 25558
+      AVR32_ALIAS_PICOST_D2,
mgl@1371
 25559
+      &avr32_opc_table[AVR32_OPC_STC_D2],
mgl@1371
 25560
+      {
mgl@1371
 25561
+	{ 0, PICO_CPNO },
mgl@1371
 25562
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25563
+      },
mgl@1371
 25564
+    },
mgl@1371
 25565
+    {
mgl@1371
 25566
+      AVR32_ALIAS_PICOST_D3,
mgl@1371
 25567
+      &avr32_opc_table[AVR32_OPC_STC_D3],
mgl@1371
 25568
+      {
mgl@1371
 25569
+	{ 0, PICO_CPNO },
mgl@1371
 25570
+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
mgl@1371
 25571
+      },
mgl@1371
 25572
+    },
mgl@1371
 25573
+    {
mgl@1371
 25574
+      AVR32_ALIAS_PICOST_W1,
mgl@1371
 25575
+      &avr32_opc_table[AVR32_OPC_STC_W1],
mgl@1371
 25576
+      {
mgl@1371
 25577
+	{ 0, PICO_CPNO },
mgl@1371
 25578
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25579
+      },
mgl@1371
 25580
+    },
mgl@1371
 25581
+    {
mgl@1371
 25582
+      AVR32_ALIAS_PICOST_W2,
mgl@1371
 25583
+      &avr32_opc_table[AVR32_OPC_STC_W2],
mgl@1371
 25584
+      {
mgl@1371
 25585
+	{ 0, PICO_CPNO },
mgl@1371
 25586
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25587
+      },
mgl@1371
 25588
+    },
mgl@1371
 25589
+    {
mgl@1371
 25590
+      AVR32_ALIAS_PICOST_W3,
mgl@1371
 25591
+      &avr32_opc_table[AVR32_OPC_STC_W3],
mgl@1371
 25592
+      {
mgl@1371
 25593
+	{ 0, PICO_CPNO },
mgl@1371
 25594
+	{ 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
mgl@1371
 25595
+      },
mgl@1371
 25596
+    },
mgl@1371
 25597
+    {
mgl@1371
 25598
+      AVR32_ALIAS_PICOSTM_D,
mgl@1371
 25599
+      &avr32_opc_table[AVR32_OPC_STCM_D],
mgl@1371
 25600
+      {
mgl@1371
 25601
+	{ 0, PICO_CPNO },
mgl@1371
 25602
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25603
+      },
mgl@1371
 25604
+    },
mgl@1371
 25605
+    {
mgl@1371
 25606
+      AVR32_ALIAS_PICOSTM_D_PU,
mgl@1371
 25607
+      &avr32_opc_table[AVR32_OPC_STCM_D_PU],
mgl@1371
 25608
+      {
mgl@1371
 25609
+	{ 0, PICO_CPNO },
mgl@1371
 25610
+	{ 1, 0 }, { 1, 1 },
mgl@1371
 25611
+      },
mgl@1371
 25612
+    },
mgl@1371
 25613
+    {
mgl@1371
 25614
+      AVR32_ALIAS_PICOSTM_W,
mgl@1371
 25615
+      &avr32_opc_table[AVR32_OPC_STCM_W],
mgl@1371
 25616
+      {
mgl@1371
 25617
+	{ 0, PICO_CPNO },
mgl@1371
 25618
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25619
+      },
mgl@1371
 25620
+    },
mgl@1371
 25621
+    {
mgl@1371
 25622
+      AVR32_ALIAS_PICOSTM_W_PU,
mgl@1371
 25623
+      &avr32_opc_table[AVR32_OPC_STCM_W_PU],
mgl@1371
 25624
+      {
mgl@1371
 25625
+	{ 0, PICO_CPNO },
mgl@1371
 25626
+	{ 1, 0 }, { 1, 1 }, { 1, 2 },
mgl@1371
 25627
+      },
mgl@1371
 25628
+    },
mgl@1371
 25629
+  };
mgl@1371
 25630
+
mgl@1371
 25631
+
mgl@1371
 25632
+#define SYNTAX_NORMAL0(id, mne, opc, arch)			\
mgl@1371
 25633
+  {							\
mgl@1371
 25634
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25635
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25636
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25637
+    { &avr32_opc_table[AVR32_OPC_##opc], },		\
mgl@1371
 25638
+    NULL, 0, { }					\
mgl@1371
 25639
+  }
mgl@1371
 25640
+#define SYNTAX_NORMAL1(id, mne, opc, op0, arch)		\
mgl@1371
 25641
+  {							\
mgl@1371
 25642
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25643
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25644
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25645
+    { &avr32_opc_table[AVR32_OPC_##opc], },		\
mgl@1371
 25646
+    NULL, 1,						\
mgl@1371
 25647
+    {							\
mgl@1371
 25648
+      AVR32_OPERAND_##op0,				\
mgl@1371
 25649
+    }							\
mgl@1371
 25650
+  }
mgl@1371
 25651
+#define SYNTAX_NORMALM1(id, mne, opc, op0, arch)		\
mgl@1371
 25652
+  {							\
mgl@1371
 25653
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25654
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25655
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25656
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25657
+    NULL, -1,						\
mgl@1371
 25658
+    {							\
mgl@1371
 25659
+      AVR32_OPERAND_##op0,				\
mgl@1371
 25660
+    }							\
mgl@1371
 25661
+  }
mgl@1371
 25662
+#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch)		\
mgl@1371
 25663
+  {							\
mgl@1371
 25664
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25665
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25666
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25667
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25668
+    NULL, 2,						\
mgl@1371
 25669
+    {							\
mgl@1371
 25670
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25671
+    }							\
mgl@1371
 25672
+  }
mgl@1371
 25673
+#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch)		\
mgl@1371
 25674
+  {							\
mgl@1371
 25675
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25676
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25677
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25678
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25679
+    NULL, -2,						\
mgl@1371
 25680
+    {							\
mgl@1371
 25681
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25682
+    }							\
mgl@1371
 25683
+  }
mgl@1371
 25684
+#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch)	\
mgl@1371
 25685
+  {							\
mgl@1371
 25686
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25687
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25688
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25689
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25690
+    NULL, 3,						\
mgl@1371
 25691
+    {							\
mgl@1371
 25692
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25693
+      AVR32_OPERAND_##op2,				\
mgl@1371
 25694
+    }							\
mgl@1371
 25695
+  }
mgl@1371
 25696
+#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch)	\
mgl@1371
 25697
+  {							\
mgl@1371
 25698
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25699
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25700
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25701
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25702
+    NULL, -3,						\
mgl@1371
 25703
+    {							\
mgl@1371
 25704
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25705
+      AVR32_OPERAND_##op2,				\
mgl@1371
 25706
+    }							\
mgl@1371
 25707
+  }
mgl@1371
 25708
+#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
mgl@1371
 25709
+  {							\
mgl@1371
 25710
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25711
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25712
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25713
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25714
+    NULL, 4,						\
mgl@1371
 25715
+    {							\
mgl@1371
 25716
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25717
+      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,		\
mgl@1371
 25718
+    }							\
mgl@1371
 25719
+  }
mgl@1371
 25720
+#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch)	\
mgl@1371
 25721
+  {								\
mgl@1371
 25722
+    AVR32_SYNTAX_##id, arch,				\
mgl@1371
 25723
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
mgl@1371
 25724
+    AVR32_PARSER_NORMAL,						\
mgl@1371
 25725
+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
mgl@1371
 25726
+    NULL, 5,							\
mgl@1371
 25727
+    {								\
mgl@1371
 25728
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
mgl@1371
 25729
+      AVR32_OPERAND_##op2, AVR32_OPERAND_##op3,			\
mgl@1371
 25730
+      AVR32_OPERAND_##op4,					\
mgl@1371
 25731
+    }								\
mgl@1371
 25732
+  }
mgl@1371
 25733
+
mgl@1371
 25734
+#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch)	\
mgl@1371
 25735
+  {							\
mgl@1371
 25736
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25737
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25738
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25739
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25740
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1,		\
mgl@1371
 25741
+    {							\
mgl@1371
 25742
+      AVR32_OPERAND_##op0,				\
mgl@1371
 25743
+    }							\
mgl@1371
 25744
+  }
mgl@1371
 25745
+#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch)	\
mgl@1371
 25746
+  {							\
mgl@1371
 25747
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25748
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25749
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25750
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25751
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1,	\
mgl@1371
 25752
+    {							\
mgl@1371
 25753
+      AVR32_OPERAND_##op0,				\
mgl@1371
 25754
+    }							\
mgl@1371
 25755
+  }
mgl@1371
 25756
+#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch)	\
mgl@1371
 25757
+  {							\
mgl@1371
 25758
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25759
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25760
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25761
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25762
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2,		\
mgl@1371
 25763
+    {							\
mgl@1371
 25764
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25765
+    }							\
mgl@1371
 25766
+  }
mgl@1371
 25767
+#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch)	\
mgl@1371
 25768
+  {							\
mgl@1371
 25769
+    AVR32_SYNTAX_##id, arch,			\
mgl@1371
 25770
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],	\
mgl@1371
 25771
+    AVR32_PARSER_NORMAL,					\
mgl@1371
 25772
+    { &avr32_opc_table[AVR32_OPC_##opc], },			\
mgl@1371
 25773
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2,	\
mgl@1371
 25774
+    {							\
mgl@1371
 25775
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,		\
mgl@1371
 25776
+    }							\
mgl@1371
 25777
+  }
mgl@1371
 25778
+#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch)	\
mgl@1371
 25779
+  {								\
mgl@1371
 25780
+    AVR32_SYNTAX_##id, arch,				\
mgl@1371
 25781
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
mgl@1371
 25782
+    AVR32_PARSER_NORMAL,						\
mgl@1371
 25783
+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
mgl@1371
 25784
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3,			\
mgl@1371
 25785
+    {								\
mgl@1371
 25786
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
mgl@1371
 25787
+      AVR32_OPERAND_##op2,					\
mgl@1371
 25788
+    }								\
mgl@1371
 25789
+  }
mgl@1371
 25790
+#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch)	\
mgl@1371
 25791
+  {								\
mgl@1371
 25792
+    AVR32_SYNTAX_##id, arch,				\
mgl@1371
 25793
+    &avr32_mnemonic_table[AVR32_MNEMONIC_##mne],		\
mgl@1371
 25794
+    AVR32_PARSER_NORMAL,						\
mgl@1371
 25795
+    { &avr32_opc_table[AVR32_OPC_##opc], },				\
mgl@1371
 25796
+    &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3,		\
mgl@1371
 25797
+    {								\
mgl@1371
 25798
+      AVR32_OPERAND_##op0, AVR32_OPERAND_##op1,			\
mgl@1371
 25799
+      AVR32_OPERAND_##op2,					\
mgl@1371
 25800
+    }								\
mgl@1371
 25801
+  }
mgl@1371
 25802
+
mgl@1371
 25803
+#define SYNTAX_FP(name, nr_ops)					\
mgl@1371
 25804
+    {								\
mgl@1371
 25805
+      AVR32_SYNTAX_##name##_S,					\
mgl@1371
 25806
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
mgl@1371
 25807
+      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] },	\
mgl@1371
 25808
+      NULL, nr_ops,						\
mgl@1371
 25809
+      {								\
mgl@1371
 25810
+	AVR32_OPERAND_FPREG_S,					\
mgl@1371
 25811
+	AVR32_OPERAND_FPREG_S,					\
mgl@1371
 25812
+	AVR32_OPERAND_FPREG_S,					\
mgl@1371
 25813
+      },							\
mgl@1371
 25814
+    },								\
mgl@1371
 25815
+    {								\
mgl@1371
 25816
+      AVR32_SYNTAX_##name##_D,					\
mgl@1371
 25817
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,			\
mgl@1371
 25818
+      { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] },	\
mgl@1371
 25819
+      NULL, nr_ops,						\
mgl@1371
 25820
+      {								\
mgl@1371
 25821
+	AVR32_OPERAND_FPREG_D,					\
mgl@1371
 25822
+	AVR32_OPERAND_FPREG_D,					\
mgl@1371
 25823
+	AVR32_OPERAND_FPREG_D,					\
mgl@1371
 25824
+      },							\
mgl@1371
 25825
+    }
mgl@1371
 25826
+
mgl@1371
 25827
+const struct avr32_syntax avr32_syntax_table[] =
mgl@1371
 25828
+  {
mgl@1371
 25829
+    SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
mgl@1371
 25830
+    SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
mgl@1371
 25831
+    SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
mgl@1371
 25832
+    SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25833
+    SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25834
+    SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
mgl@1371
 25835
+    SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25836
+    SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 25837
+    SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25838
+    SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
mgl@1371
 25839
+    SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
mgl@1371
 25840
+    SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 25841
+    SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
mgl@1371
 25842
+    SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 25843
+    SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
mgl@1371
 25844
+    SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
mgl@1371
 25845
+    SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25846
+    SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25847
+    SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25848
+    SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25849
+    SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25850
+    SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25851
+    SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25852
+    SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
mgl@1371
 25853
+    SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
mgl@1371
 25854
+    SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
mgl@1371
 25855
+    SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
mgl@1371
 25856
+    SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
mgl@1371
 25857
+    SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
mgl@1371
 25858
+    SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
mgl@1371
 25859
+    SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
mgl@1371
 25860
+    SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
mgl@1371
 25861
+    SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
mgl@1371
 25862
+    SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
mgl@1371
 25863
+    SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
mgl@1371
 25864
+    SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
mgl@1371
 25865
+    SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
mgl@1371
 25866
+    SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
mgl@1371
 25867
+    SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
mgl@1371
 25868
+    SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
mgl@1371
 25869
+    SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
mgl@1371
 25870
+    SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
mgl@1371
 25871
+    SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
mgl@1371
 25872
+    SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
mgl@1371
 25873
+    SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
mgl@1371
 25874
+    SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
mgl@1371
 25875
+    SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
mgl@1371
 25876
+    SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
mgl@1371
 25877
+    SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
mgl@1371
 25878
+    SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
mgl@1371
 25879
+    SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
mgl@1371
 25880
+    SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
mgl@1371
 25881
+    SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
mgl@1371
 25882
+    SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25883
+    SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25884
+    SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
mgl@1371
 25885
+    SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
mgl@1371
 25886
+    SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
mgl@1371
 25887
+    SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
mgl@1371
 25888
+    SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25889
+    SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
mgl@1371
 25890
+    SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
mgl@1371
 25891
+    SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25892
+    SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
mgl@1371
 25893
+    SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
mgl@1371
 25894
+    SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25895
+    SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 25896
+    SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 25897
+    SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25898
+    SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
mgl@1371
 25899
+    SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25900
+    SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25901
+    SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25902
+    SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25903
+    SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25904
+    SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
mgl@1371
 25905
+    SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
mgl@1371
 25906
+    SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 25907
+    SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 25908
+    SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
mgl@1371
 25909
+    SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
mgl@1371
 25910
+    SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
mgl@1371
 25911
+    SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
mgl@1371
 25912
+    SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25913
+    SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
mgl@1371
 25914
+    SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25915
+    SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25916
+    SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25917
+    SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25918
+    SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
mgl@1371
 25919
+    SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25920
+    SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25921
+    SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
mgl@1371
 25922
+    SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25923
+    SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
mgl@1371
 25924
+    SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25925
+    SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25926
+    SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
mgl@1371
 25927
+    SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25928
+    SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
mgl@1371
 25929
+    SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25930
+    SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25931
+    SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
mgl@1371
 25932
+    SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25933
+    SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
mgl@1371
 25934
+    SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25935
+    SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25936
+    SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
mgl@1371
 25937
+    SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
mgl@1371
 25938
+    SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
mgl@1371
 25939
+    SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
mgl@1371
 25940
+    SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25941
+    SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
mgl@1371
 25942
+    SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
mgl@1371
 25943
+    SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
mgl@1371
 25944
+    SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
mgl@1371
 25945
+    SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
mgl@1371
 25946
+    SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
mgl@1371
 25947
+    SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
mgl@1371
 25948
+    SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
mgl@1371
 25949
+    SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
mgl@1371
 25950
+    SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
mgl@1371
 25951
+    SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
mgl@1371
 25952
+    SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 25953
+    SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
mgl@1371
 25954
+    SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
mgl@1371
 25955
+    SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
mgl@1371
 25956
+    SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
mgl@1371
 25957
+    SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
mgl@1371
 25958
+    SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
mgl@1371
 25959
+    SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
mgl@1371
 25960
+    SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
mgl@1371
 25961
+    SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
mgl@1371
 25962
+    SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25963
+    SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25964
+    SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25965
+    SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25966
+    SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25967
+    SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 25968
+    SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25969
+    SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 25970
+    SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 25971
+    SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25972
+    SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 25973
+    SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25974
+    SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
mgl@1371
 25975
+    SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25976
+    SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
mgl@1371
 25977
+    SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
mgl@1371
 25978
+    SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
mgl@1371
 25979
+    SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 25980
+    SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
mgl@1371
 25981
+    SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 25982
+    SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 25983
+    SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25984
+    SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25985
+    SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25986
+    SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25987
+    SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25988
+    SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25989
+    SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25990
+    SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25991
+    SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25992
+    SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25993
+    SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25994
+    SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25995
+    SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25996
+    SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25997
+    SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25998
+    SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
mgl@1371
 25999
+    SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26000
+    SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26001
+    SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26002
+    SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26003
+    SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26004
+    SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26005
+    SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26006
+    SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26007
+    SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26008
+    SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26009
+    SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26010
+    SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26011
+    SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26012
+    SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26013
+    SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26014
+    SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26015
+    SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26016
+    SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26017
+    SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26018
+    SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26019
+    SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
mgl@1371
 26020
+    SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
mgl@1371
 26021
+    SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26022
+    SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 26023
+    SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26024
+    SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26025
+    SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26026
+    SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26027
+    SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 26028
+    SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26029
+    SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26030
+    SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26031
+    SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26032
+    SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26033
+    SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 26034
+    SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26035
+    SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
mgl@1371
 26036
+    SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
mgl@1371
 26037
+    SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
mgl@1371
 26038
+    SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
mgl@1371
 26039
+    SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
mgl@1371
 26040
+    SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
mgl@1371
 26041
+    SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
mgl@1371
 26042
+    SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
mgl@1371
 26043
+    SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26044
+    SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
mgl@1371
 26045
+    SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
mgl@1371
 26046
+    SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 26047
+    SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 26048
+    SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26049
+    SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26050
+    SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26051
+    SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26052
+    SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26053
+    SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26054
+    SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26055
+    SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26056
+    SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26057
+    SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26058
+    SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26059
+    SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26060
+    SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26061
+    SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26062
+    SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26063
+    SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26064
+    SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26065
+    SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26066
+    SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26067
+    SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26068
+    SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26069
+    SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26070
+    SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26071
+    SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26072
+    SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26073
+    SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26074
+    SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26075
+    SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26076
+    SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
mgl@1371
 26077
+    SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26078
+    SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26079
+    SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26080
+    SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26081
+    SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
mgl@1371
 26082
+    SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
mgl@1371
 26083
+    SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
mgl@1371
 26084
+    SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
mgl@1371
 26085
+    SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26086
+    SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26087
+    SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26088
+    SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26089
+    SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26090
+    SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26091
+    SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26092
+    SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26093
+    SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26094
+    SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26095
+    SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26096
+    SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26097
+    SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26098
+    SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26099
+    SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26100
+    SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26101
+    SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
mgl@1371
 26102
+    SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26103
+    SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
mgl@1371
 26104
+    SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
mgl@1371
 26105
+    SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
mgl@1371
 26106
+    SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
mgl@1371
 26107
+    SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
mgl@1371
 26108
+    SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
mgl@1371
 26109
+    SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
mgl@1371
 26110
+    SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
mgl@1371
 26111
+    SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
mgl@1371
 26112
+    SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
mgl@1371
 26113
+    SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
mgl@1371
 26114
+    SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
mgl@1371
 26115
+    SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
mgl@1371
 26116
+    SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
mgl@1371
 26117
+    SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
mgl@1371
 26118
+    SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
mgl@1371
 26119
+    SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
mgl@1371
 26120
+    SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
mgl@1371
 26121
+    SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
mgl@1371
 26122
+    SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
mgl@1371
 26123
+    SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
mgl@1371
 26124
+    SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
mgl@1371
 26125
+    SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
mgl@1371
 26126
+    SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
mgl@1371
 26127
+    SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
mgl@1371
 26128
+    SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
mgl@1371
 26129
+    SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
mgl@1371
 26130
+    SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
mgl@1371
 26131
+    SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
mgl@1371
 26132
+    SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
mgl@1371
 26133
+    SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
mgl@1371
 26134
+    SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26135
+    SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26136
+    SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG,  AVR32_DSP),
mgl@1371
 26137
+    SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
mgl@1371
 26138
+    SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
mgl@1371
 26139
+    SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
mgl@1371
 26140
+    SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
mgl@1371
 26141
+    SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
mgl@1371
 26142
+    SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
mgl@1371
 26143
+    SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
mgl@1371
 26144
+    SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 26145
+    SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 26146
+    SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 26147
+    SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
mgl@1371
 26148
+    SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
mgl@1371
 26149
+    SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 26150
+    SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
mgl@1371
 26151
+    SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
mgl@1371
 26152
+    SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
mgl@1371
 26153
+    SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
mgl@1371
 26154
+    SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
mgl@1371
 26155
+    SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
mgl@1371
 26156
+    SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
mgl@1371
 26157
+    SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
mgl@1371
 26158
+    SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
mgl@1371
 26159
+    SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
mgl@1371
 26160
+    SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
mgl@1371
 26161
+    SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
mgl@1371
 26162
+    SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
mgl@1371
 26163
+    SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
mgl@1371
 26164
+    SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
mgl@1371
 26165
+    SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
mgl@1371
 26166
+    SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
mgl@1371
 26167
+    SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
mgl@1371
 26168
+    SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
mgl@1371
 26169
+    SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
mgl@1371
 26170
+    SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
mgl@1371
 26171
+    SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
mgl@1371
 26172
+    SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
mgl@1371
 26173
+    SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
mgl@1371
 26174
+    SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
mgl@1371
 26175
+    SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
mgl@1371
 26176
+    SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
mgl@1371
 26177
+    SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
mgl@1371
 26178
+    SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
mgl@1371
 26179
+    SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
mgl@1371
 26180
+    SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
mgl@1371
 26181
+    SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
mgl@1371
 26182
+    SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
mgl@1371
 26183
+    SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
mgl@1371
 26184
+    SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
mgl@1371
 26185
+    SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
mgl@1371
 26186
+    SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
mgl@1371
 26187
+    SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
mgl@1371
 26188
+    SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
mgl@1371
 26189
+    SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
mgl@1371
 26190
+    SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
mgl@1371
 26191
+    SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
mgl@1371
 26192
+    SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
mgl@1371
 26193
+    SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
mgl@1371
 26194
+    SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
mgl@1371
 26195
+    SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
mgl@1371
 26196
+    SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
mgl@1371
 26197
+    SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
mgl@1371
 26198
+    SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
mgl@1371
 26199
+    SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
mgl@1371
 26200
+    SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
mgl@1371
 26201
+    SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
mgl@1371
 26202
+    SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
mgl@1371
 26203
+    SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
mgl@1371
 26204
+    SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
mgl@1371
 26205
+    SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
mgl@1371
 26206
+    SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
mgl@1371
 26207
+    SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
mgl@1371
 26208
+    SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
mgl@1371
 26209
+    SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
mgl@1371
 26210
+    SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
mgl@1371
 26211
+    SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
mgl@1371
 26212
+    SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
mgl@1371
 26213
+    SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26214
+    SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
mgl@1371
 26215
+    SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26216
+    SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26217
+    SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26218
+    SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26219
+    SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26220
+    SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26221
+    SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26222
+    SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26223
+    SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26224
+    SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26225
+    SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26226
+    SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26227
+    SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26228
+    SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26229
+    SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26230
+    SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26231
+    SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26232
+    SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26233
+    SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26234
+    SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26235
+    SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26236
+    SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26237
+    SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26238
+    SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26239
+    SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26240
+    SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26241
+    SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26242
+    SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26243
+    SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26244
+    SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26245
+    SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26246
+    SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26247
+    SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26248
+    SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26249
+    SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26250
+    SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26251
+    SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26252
+    SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26253
+    SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
mgl@1371
 26254
+    SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
mgl@1371
 26255
+    SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
mgl@1371
 26256
+    SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
mgl@1371
 26257
+    SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
mgl@1371
 26258
+    SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
mgl@1371
 26259
+    SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
mgl@1371
 26260
+    SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
mgl@1371
 26261
+    SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
mgl@1371
 26262
+    SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
mgl@1371
 26263
+    SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
mgl@1371
 26264
+    SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
mgl@1371
 26265
+    SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
mgl@1371
 26266
+    SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
mgl@1371
 26267
+    SYNTAX_FP(FADD, 3),
mgl@1371
 26268
+    SYNTAX_FP(FSUB, 3),
mgl@1371
 26269
+    SYNTAX_FP(FMAC, 3),
mgl@1371
 26270
+    SYNTAX_FP(FNMAC, 3),
mgl@1371
 26271
+    SYNTAX_FP(FMSC, 3),
mgl@1371
 26272
+    SYNTAX_FP(FNMSC, 3),
mgl@1371
 26273
+    SYNTAX_FP(FMUL, 3),
mgl@1371
 26274
+    SYNTAX_FP(FNMUL, 3),
mgl@1371
 26275
+    SYNTAX_FP(FNEG, 2),
mgl@1371
 26276
+    SYNTAX_FP(FABS, 2),
mgl@1371
 26277
+    SYNTAX_FP(FCMP, 2),
mgl@1371
 26278
+    {
mgl@1371
 26279
+      AVR32_SYNTAX_FMOV1_S,
mgl@1371
 26280
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26281
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
mgl@1371
 26282
+      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
mgl@1371
 26283
+      2,
mgl@1371
 26284
+      {
mgl@1371
 26285
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26286
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26287
+      },
mgl@1371
 26288
+    },
mgl@1371
 26289
+    {
mgl@1371
 26290
+      AVR32_SYNTAX_FMOV1_D,
mgl@1371
 26291
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26292
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
mgl@1371
 26293
+      &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
mgl@1371
 26294
+      2,
mgl@1371
 26295
+      {
mgl@1371
 26296
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26297
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26298
+      },
mgl@1371
 26299
+    },
mgl@1371
 26300
+    {
mgl@1371
 26301
+      AVR32_SYNTAX_FMOV2_S,
mgl@1371
 26302
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26303
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
mgl@1371
 26304
+      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
mgl@1371
 26305
+      2,
mgl@1371
 26306
+      {
mgl@1371
 26307
+	AVR32_OPERAND_INTREG,
mgl@1371
 26308
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26309
+      },
mgl@1371
 26310
+    },
mgl@1371
 26311
+    {
mgl@1371
 26312
+      AVR32_SYNTAX_FMOV2_D,
mgl@1371
 26313
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26314
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
mgl@1371
 26315
+      &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
mgl@1371
 26316
+      2,
mgl@1371
 26317
+      {
mgl@1371
 26318
+	AVR32_OPERAND_DWREG,
mgl@1371
 26319
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26320
+      },
mgl@1371
 26321
+    },
mgl@1371
 26322
+    {
mgl@1371
 26323
+      AVR32_SYNTAX_FMOV3_S,
mgl@1371
 26324
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26325
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
mgl@1371
 26326
+      2,
mgl@1371
 26327
+      {
mgl@1371
 26328
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26329
+	AVR32_OPERAND_INTREG,
mgl@1371
 26330
+      },
mgl@1371
 26331
+    },
mgl@1371
 26332
+    {
mgl@1371
 26333
+      AVR32_SYNTAX_FMOV3_D,
mgl@1371
 26334
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26335
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
mgl@1371
 26336
+      2,
mgl@1371
 26337
+      {
mgl@1371
 26338
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26339
+	AVR32_OPERAND_DWREG,
mgl@1371
 26340
+      },
mgl@1371
 26341
+    },
mgl@1371
 26342
+    {
mgl@1371
 26343
+      AVR32_SYNTAX_FCASTS_D,
mgl@1371
 26344
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26345
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
mgl@1371
 26346
+      2,
mgl@1371
 26347
+      {
mgl@1371
 26348
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26349
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26350
+      },
mgl@1371
 26351
+    },
mgl@1371
 26352
+    {
mgl@1371
 26353
+      AVR32_SYNTAX_FCASTD_S,
mgl@1371
 26354
+      AVR32_FP, NULL, AVR32_PARSER_ALIAS,
mgl@1371
 26355
+      { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
mgl@1371
 26356
+      2,
mgl@1371
 26357
+      {
mgl@1371
 26358
+	AVR32_OPERAND_FPREG_D,
mgl@1371
 26359
+	AVR32_OPERAND_FPREG_S,
mgl@1371
 26360
+      },
mgl@1371
 26361
+    },
mgl@1371
 26362
+    {
mgl@1371
 26363
+      AVR32_SYNTAX_LDA_W,
mgl@1371
 26364
+      AVR32_V1, NULL, AVR32_PARSER_LDA,
mgl@1371
 26365
+      { NULL }, NULL,
mgl@1371
 26366
+      2,
mgl@1371
 26367
+      {
mgl@1371
 26368
+	AVR32_OPERAND_INTREG,
mgl@1371
 26369
+	AVR32_OPERAND_SIGNED_CONST,
mgl@1371
 26370
+      },
mgl@1371
 26371
+    },
mgl@1371
 26372
+    {
mgl@1371
 26373
+      AVR32_SYNTAX_CALL,
mgl@1371
 26374
+      AVR32_V1, NULL, AVR32_PARSER_CALL,
mgl@1371
 26375
+      { NULL }, NULL,
mgl@1371
 26376
+      1,
mgl@1371
 26377
+      {
mgl@1371
 26378
+	AVR32_OPERAND_JMPLABEL,
mgl@1371
 26379
+      },
mgl@1371
 26380
+    },
mgl@1371
 26381
+    {
mgl@1371
 26382
+      AVR32_SYNTAX_PICOSVMAC0,
mgl@1371
 26383
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26384
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
mgl@1371
 26385
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
mgl@1371
 26386
+      {
mgl@1371
 26387
+	AVR32_OPERAND_PICO_OUT0,
mgl@1371
 26388
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26389
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26390
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26391
+      },
mgl@1371
 26392
+    },
mgl@1371
 26393
+    {
mgl@1371
 26394
+      AVR32_SYNTAX_PICOSVMAC1,
mgl@1371
 26395
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26396
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
mgl@1371
 26397
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
mgl@1371
 26398
+      {
mgl@1371
 26399
+	AVR32_OPERAND_PICO_OUT1,
mgl@1371
 26400
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26401
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26402
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26403
+      },
mgl@1371
 26404
+    },
mgl@1371
 26405
+    {
mgl@1371
 26406
+      AVR32_SYNTAX_PICOSVMAC2,
mgl@1371
 26407
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26408
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
mgl@1371
 26409
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
mgl@1371
 26410
+      {
mgl@1371
 26411
+	AVR32_OPERAND_PICO_OUT2,
mgl@1371
 26412
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26413
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26414
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26415
+      },
mgl@1371
 26416
+    },
mgl@1371
 26417
+    {
mgl@1371
 26418
+      AVR32_SYNTAX_PICOSVMAC3,
mgl@1371
 26419
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26420
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
mgl@1371
 26421
+      NULL, 4,
mgl@1371
 26422
+      {
mgl@1371
 26423
+	AVR32_OPERAND_PICO_OUT3,
mgl@1371
 26424
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26425
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26426
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26427
+      },
mgl@1371
 26428
+    },
mgl@1371
 26429
+    {
mgl@1371
 26430
+      AVR32_SYNTAX_PICOSVMUL0,
mgl@1371
 26431
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26432
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
mgl@1371
 26433
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
mgl@1371
 26434
+      {
mgl@1371
 26435
+	AVR32_OPERAND_PICO_OUT0,
mgl@1371
 26436
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26437
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26438
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26439
+      },
mgl@1371
 26440
+    },
mgl@1371
 26441
+    {
mgl@1371
 26442
+      AVR32_SYNTAX_PICOSVMUL1,
mgl@1371
 26443
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26444
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
mgl@1371
 26445
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
mgl@1371
 26446
+      {
mgl@1371
 26447
+	AVR32_OPERAND_PICO_OUT1,
mgl@1371
 26448
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26449
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26450
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26451
+      },
mgl@1371
 26452
+    },
mgl@1371
 26453
+    {
mgl@1371
 26454
+      AVR32_SYNTAX_PICOSVMUL2,
mgl@1371
 26455
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26456
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
mgl@1371
 26457
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
mgl@1371
 26458
+      {
mgl@1371
 26459
+	AVR32_OPERAND_PICO_OUT2,
mgl@1371
 26460
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26461
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26462
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26463
+      },
mgl@1371
 26464
+    },
mgl@1371
 26465
+    {
mgl@1371
 26466
+      AVR32_SYNTAX_PICOSVMUL3,
mgl@1371
 26467
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26468
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
mgl@1371
 26469
+      NULL, 4,
mgl@1371
 26470
+      {
mgl@1371
 26471
+	AVR32_OPERAND_PICO_OUT3,
mgl@1371
 26472
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26473
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26474
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26475
+      },
mgl@1371
 26476
+    },
mgl@1371
 26477
+    {
mgl@1371
 26478
+      AVR32_SYNTAX_PICOVMAC0,
mgl@1371
 26479
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26480
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
mgl@1371
 26481
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
mgl@1371
 26482
+      {
mgl@1371
 26483
+	AVR32_OPERAND_PICO_OUT0,
mgl@1371
 26484
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26485
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26486
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26487
+      },
mgl@1371
 26488
+    },
mgl@1371
 26489
+    {
mgl@1371
 26490
+      AVR32_SYNTAX_PICOVMAC1,
mgl@1371
 26491
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26492
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
mgl@1371
 26493
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
mgl@1371
 26494
+      {
mgl@1371
 26495
+	AVR32_OPERAND_PICO_OUT1,
mgl@1371
 26496
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26497
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26498
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26499
+      },
mgl@1371
 26500
+    },
mgl@1371
 26501
+    {
mgl@1371
 26502
+      AVR32_SYNTAX_PICOVMAC2,
mgl@1371
 26503
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26504
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
mgl@1371
 26505
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
mgl@1371
 26506
+      {
mgl@1371
 26507
+	AVR32_OPERAND_PICO_OUT2,
mgl@1371
 26508
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26509
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26510
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26511
+      },
mgl@1371
 26512
+    },
mgl@1371
 26513
+    {
mgl@1371
 26514
+      AVR32_SYNTAX_PICOVMAC3,
mgl@1371
 26515
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
mgl@1371
 26516
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
mgl@1371
 26517
+      NULL, 4,
mgl@1371
 26518
+      {
mgl@1371
 26519
+	AVR32_OPERAND_PICO_OUT3,
mgl@1371
 26520
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26521
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26522
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26523
+      },
mgl@1371
 26524
+    },
mgl@1371
 26525
+    {
mgl@1371
 26526
+      AVR32_SYNTAX_PICOVMUL0,
mgl@1371
 26527
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26528
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
mgl@1371
 26529
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
mgl@1371
 26530
+      {
mgl@1371
 26531
+	AVR32_OPERAND_PICO_OUT0,
mgl@1371
 26532
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26533
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26534
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26535
+      },
mgl@1371
 26536
+    },
mgl@1371
 26537
+    {
mgl@1371
 26538
+      AVR32_SYNTAX_PICOVMUL1,
mgl@1371
 26539
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26540
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
mgl@1371
 26541
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
mgl@1371
 26542
+      {
mgl@1371
 26543
+	AVR32_OPERAND_PICO_OUT1,
mgl@1371
 26544
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26545
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26546
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26547
+      },
mgl@1371
 26548
+    },
mgl@1371
 26549
+    {
mgl@1371
 26550
+      AVR32_SYNTAX_PICOVMUL2,
mgl@1371
 26551
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26552
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
mgl@1371
 26553
+      &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
mgl@1371
 26554
+      {
mgl@1371
 26555
+	AVR32_OPERAND_PICO_OUT2,
mgl@1371
 26556
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26557
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26558
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26559
+      },
mgl@1371
 26560
+    },
mgl@1371
 26561
+    {
mgl@1371
 26562
+      AVR32_SYNTAX_PICOVMUL3,
mgl@1371
 26563
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
mgl@1371
 26564
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
mgl@1371
 26565
+      NULL, 4,
mgl@1371
 26566
+      {
mgl@1371
 26567
+	AVR32_OPERAND_PICO_OUT3,
mgl@1371
 26568
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26569
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26570
+	AVR32_OPERAND_PICO_IN,
mgl@1371
 26571
+      },
mgl@1371
 26572
+    },
mgl@1371
 26573
+    {
mgl@1371
 26574
+      AVR32_SYNTAX_PICOLD_D2,
mgl@1371
 26575
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
mgl@1371
 26576
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
mgl@1371
 26577
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
mgl@1371
 26578
+      {
mgl@1371
 26579
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26580
+	AVR32_OPERAND_INTREG_PREDEC,
mgl@1371
 26581
+      },
mgl@1371
 26582
+    },
mgl@1371
 26583
+    {
mgl@1371
 26584
+      AVR32_SYNTAX_PICOLD_D3,
mgl@1371
 26585
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
mgl@1371
 26586
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
mgl@1371
 26587
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
mgl@1371
 26588
+      {
mgl@1371
 26589
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26590
+	AVR32_OPERAND_INTREG_INDEX,
mgl@1371
 26591
+      },
mgl@1371
 26592
+    },
mgl@1371
 26593
+    {
mgl@1371
 26594
+      AVR32_SYNTAX_PICOLD_D1,
mgl@1371
 26595
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
mgl@1371
 26596
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
mgl@1371
 26597
+      NULL, 2,
mgl@1371
 26598
+      {
mgl@1371
 26599
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26600
+	AVR32_OPERAND_INTREG_UDISP_W,
mgl@1371
 26601
+      },
mgl@1371
 26602
+    },
mgl@1371
 26603
+    {
mgl@1371
 26604
+      AVR32_SYNTAX_PICOLD_W2,
mgl@1371
 26605
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
mgl@1371
 26606
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
mgl@1371
 26607
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
mgl@1371
 26608
+      {
mgl@1371
 26609
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26610
+	AVR32_OPERAND_INTREG_PREDEC,
mgl@1371
 26611
+      },
mgl@1371
 26612
+    },
mgl@1371
 26613
+    {
mgl@1371
 26614
+      AVR32_SYNTAX_PICOLD_W3,
mgl@1371
 26615
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
mgl@1371
 26616
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
mgl@1371
 26617
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
mgl@1371
 26618
+      {
mgl@1371
 26619
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26620
+	AVR32_OPERAND_INTREG_INDEX,
mgl@1371
 26621
+      },
mgl@1371
 26622
+    },
mgl@1371
 26623
+    {
mgl@1371
 26624
+      AVR32_SYNTAX_PICOLD_W1,
mgl@1371
 26625
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
mgl@1371
 26626
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
mgl@1371
 26627
+      NULL, 2,
mgl@1371
 26628
+      {
mgl@1371
 26629
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26630
+	AVR32_OPERAND_INTREG_UDISP_W,
mgl@1371
 26631
+      },
mgl@1371
 26632
+    },
mgl@1371
 26633
+    {
mgl@1371
 26634
+      AVR32_SYNTAX_PICOLDM_D,
mgl@1371
 26635
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
mgl@1371
 26636
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
mgl@1371
 26637
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
mgl@1371
 26638
+      {
mgl@1371
 26639
+	AVR32_OPERAND_INTREG,
mgl@1371
 26640
+	AVR32_OPERAND_PICO_REGLIST_D,
mgl@1371
 26641
+      },
mgl@1371
 26642
+    },
mgl@1371
 26643
+    {
mgl@1371
 26644
+      AVR32_SYNTAX_PICOLDM_D_PU,
mgl@1371
 26645
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
mgl@1371
 26646
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
mgl@1371
 26647
+      NULL, -2,
mgl@1371
 26648
+      {
mgl@1371
 26649
+	AVR32_OPERAND_INTREG_POSTINC,
mgl@1371
 26650
+	AVR32_OPERAND_PICO_REGLIST_D,
mgl@1371
 26651
+      },
mgl@1371
 26652
+    },
mgl@1371
 26653
+    {
mgl@1371
 26654
+      AVR32_SYNTAX_PICOLDM_W,
mgl@1371
 26655
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
mgl@1371
 26656
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
mgl@1371
 26657
+      &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
mgl@1371
 26658
+      {
mgl@1371
 26659
+	AVR32_OPERAND_INTREG,
mgl@1371
 26660
+	AVR32_OPERAND_PICO_REGLIST_W,
mgl@1371
 26661
+      },
mgl@1371
 26662
+    },
mgl@1371
 26663
+    {
mgl@1371
 26664
+      AVR32_SYNTAX_PICOLDM_W_PU,
mgl@1371
 26665
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
mgl@1371
 26666
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
mgl@1371
 26667
+      NULL, -2,
mgl@1371
 26668
+      {
mgl@1371
 26669
+	AVR32_OPERAND_INTREG_POSTINC,
mgl@1371
 26670
+	AVR32_OPERAND_PICO_REGLIST_W,
mgl@1371
 26671
+      },
mgl@1371
 26672
+    },
mgl@1371
 26673
+    {
mgl@1371
 26674
+      AVR32_SYNTAX_PICOMV_D1,
mgl@1371
 26675
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
mgl@1371
 26676
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
mgl@1371
 26677
+      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
mgl@1371
 26678
+      {
mgl@1371
 26679
+	AVR32_OPERAND_DWREG,
mgl@1371
 26680
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26681
+      },
mgl@1371
 26682
+    },
mgl@1371
 26683
+    {
mgl@1371
 26684
+      AVR32_SYNTAX_PICOMV_D2,
mgl@1371
 26685
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
mgl@1371
 26686
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
mgl@1371
 26687
+      NULL, 2,
mgl@1371
 26688
+      {
mgl@1371
 26689
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26690
+	AVR32_OPERAND_DWREG,
mgl@1371
 26691
+      },
mgl@1371
 26692
+    },
mgl@1371
 26693
+    {
mgl@1371
 26694
+      AVR32_SYNTAX_PICOMV_W1,
mgl@1371
 26695
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
mgl@1371
 26696
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
mgl@1371
 26697
+      &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
mgl@1371
 26698
+      {
mgl@1371
 26699
+	AVR32_OPERAND_INTREG,
mgl@1371
 26700
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26701
+      },
mgl@1371
 26702
+    },
mgl@1371
 26703
+    {
mgl@1371
 26704
+      AVR32_SYNTAX_PICOMV_W2,
mgl@1371
 26705
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
mgl@1371
 26706
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
mgl@1371
 26707
+      NULL, 2,
mgl@1371
 26708
+      {
mgl@1371
 26709
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26710
+	AVR32_OPERAND_INTREG,
mgl@1371
 26711
+      },
mgl@1371
 26712
+    },
mgl@1371
 26713
+    {
mgl@1371
 26714
+      AVR32_SYNTAX_PICOST_D2,
mgl@1371
 26715
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
mgl@1371
 26716
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
mgl@1371
 26717
+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
mgl@1371
 26718
+      {
mgl@1371
 26719
+	AVR32_OPERAND_INTREG_POSTINC,
mgl@1371
 26720
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26721
+      },
mgl@1371
 26722
+    },
mgl@1371
 26723
+    {
mgl@1371
 26724
+      AVR32_SYNTAX_PICOST_D3,
mgl@1371
 26725
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
mgl@1371
 26726
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
mgl@1371
 26727
+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
mgl@1371
 26728
+      {
mgl@1371
 26729
+	AVR32_OPERAND_INTREG_INDEX,
mgl@1371
 26730
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26731
+      },
mgl@1371
 26732
+    },
mgl@1371
 26733
+    {
mgl@1371
 26734
+      AVR32_SYNTAX_PICOST_D1,
mgl@1371
 26735
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
mgl@1371
 26736
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
mgl@1371
 26737
+      NULL, 2,
mgl@1371
 26738
+      {
mgl@1371
 26739
+	AVR32_OPERAND_INTREG_UDISP_W,
mgl@1371
 26740
+	AVR32_OPERAND_PICO_REG_D,
mgl@1371
 26741
+      },
mgl@1371
 26742
+    },
mgl@1371
 26743
+    {
mgl@1371
 26744
+      AVR32_SYNTAX_PICOST_W2,
mgl@1371
 26745
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
mgl@1371
 26746
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
mgl@1371
 26747
+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
mgl@1371
 26748
+      {
mgl@1371
 26749
+	AVR32_OPERAND_INTREG_POSTINC,
mgl@1371
 26750
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26751
+      },
mgl@1371
 26752
+    },
mgl@1371
 26753
+    {
mgl@1371
 26754
+      AVR32_SYNTAX_PICOST_W3,
mgl@1371
 26755
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
mgl@1371
 26756
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
mgl@1371
 26757
+      &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
mgl@1371
 26758
+      {
mgl@1371
 26759
+	AVR32_OPERAND_INTREG_INDEX,
mgl@1371
 26760
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26761
+      },
mgl@1371
 26762
+    },
mgl@1371
 26763
+    {
mgl@1371
 26764
+      AVR32_SYNTAX_PICOST_W1,
mgl@1371
 26765
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
mgl@1371
 26766
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
mgl@1371
 26767
+      NULL, 2,
mgl@1371
 26768
+      {
mgl@1371
 26769
+	AVR32_OPERAND_INTREG_UDISP_W,
mgl@1371
 26770
+	AVR32_OPERAND_PICO_REG_W,
mgl@1371
 26771
+      },
mgl@1371
 26772
+    },
mgl@1371
 26773
+    {
mgl@1371
 26774
+      AVR32_SYNTAX_PICOSTM_D,
mgl@1371
 26775
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
mgl@1371
 26776
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
mgl@1371
 26777
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
mgl@1371
 26778
+      {
mgl@1371
 26779
+	AVR32_OPERAND_INTREG,
mgl@1371
 26780
+	AVR32_OPERAND_PICO_REGLIST_D,
mgl@1371
 26781
+      },
mgl@1371
 26782
+    },
mgl@1371
 26783
+    {
mgl@1371
 26784
+      AVR32_SYNTAX_PICOSTM_D_PU,
mgl@1371
 26785
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
mgl@1371
 26786
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
mgl@1371
 26787
+      NULL, -2,
mgl@1371
 26788
+      {
mgl@1371
 26789
+	AVR32_OPERAND_INTREG_PREDEC,
mgl@1371
 26790
+	AVR32_OPERAND_PICO_REGLIST_D,
mgl@1371
 26791
+      },
mgl@1371
 26792
+    },
mgl@1371
 26793
+    {
mgl@1371
 26794
+      AVR32_SYNTAX_PICOSTM_W,
mgl@1371
 26795
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
mgl@1371
 26796
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
mgl@1371
 26797
+      &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
mgl@1371
 26798
+      {
mgl@1371
 26799
+	AVR32_OPERAND_INTREG,
mgl@1371
 26800
+	AVR32_OPERAND_PICO_REGLIST_W,
mgl@1371
 26801
+      },
mgl@1371
 26802
+    },
mgl@1371
 26803
+    {
mgl@1371
 26804
+      AVR32_SYNTAX_PICOSTM_W_PU,
mgl@1371
 26805
+      AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
mgl@1371
 26806
+      { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
mgl@1371
 26807
+      NULL, -2,
mgl@1371
 26808
+      {
mgl@1371
 26809
+	AVR32_OPERAND_INTREG_PREDEC,
mgl@1371
 26810
+	AVR32_OPERAND_PICO_REGLIST_W,
mgl@1371
 26811
+      },
mgl@1371
 26812
+    },
mgl@1371
 26813
+    SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
mgl@1371
 26814
+    SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26815
+    SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26816
+    SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26817
+    SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26818
+    SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26819
+    SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26820
+    SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26821
+    SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26822
+    SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26823
+    SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26824
+    SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26825
+    SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26826
+    SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26827
+    SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26828
+    SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26829
+    SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26830
+    SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
mgl@1371
 26831
+    SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26832
+    SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26833
+    SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26834
+    SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26835
+    SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26836
+    SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26837
+    SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26838
+    SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26839
+    SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26840
+    SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26841
+    SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26842
+    SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26843
+    SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26844
+    SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26845
+    SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26846
+    SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26847
+    SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26848
+    SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26849
+    SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26850
+    SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26851
+    SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26852
+    SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26853
+    SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26854
+    SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26855
+    SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26856
+    SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26857
+    SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26858
+    SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26859
+    SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26860
+    SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26861
+    SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26862
+    SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26863
+    SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26864
+    SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26865
+    SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26866
+    SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26867
+    SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26868
+    SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26869
+    SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26870
+    SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26871
+    SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26872
+    SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26873
+    SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26874
+    SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26875
+    SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26876
+    SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26877
+    SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26878
+    SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26879
+    SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26880
+    SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26881
+    SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26882
+    SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26883
+    SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26884
+    SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26885
+    SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26886
+    SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26887
+    SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26888
+    SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26889
+    SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26890
+    SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26891
+    SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26892
+    SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26893
+    SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26894
+    SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26895
+    SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26896
+    SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26897
+    SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26898
+    SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26899
+    SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26900
+    SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26901
+    SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26902
+    SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26903
+    SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26904
+    SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26905
+    SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26906
+    SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26907
+    SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26908
+    SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26909
+    SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26910
+    SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26911
+    SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26912
+    SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26913
+    SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26914
+    SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26915
+    SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26916
+    SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26917
+    SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26918
+    SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26919
+    SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26920
+    SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
mgl@1371
 26921
+    SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26922
+    SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26923
+    SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26924
+    SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26925
+    SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26926
+    SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26927
+    SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26928
+    SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26929
+    SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26930
+    SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26931
+    SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26932
+    SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26933
+    SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26934
+    SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26935
+    SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26936
+    SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26937
+    SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26938
+    SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
mgl@1371
 26939
+    SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26940
+    SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26941
+    SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26942
+    SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26943
+    SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26944
+    SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26945
+    SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26946
+    SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26947
+    SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26948
+    SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26949
+    SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26950
+    SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26951
+    SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26952
+    SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26953
+    SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26954
+    SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26955
+    SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26956
+    SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26957
+    SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26958
+    SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26959
+    SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26960
+    SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26961
+    SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26962
+    SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26963
+    SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26964
+    SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26965
+    SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26966
+    SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26967
+    SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26968
+    SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26969
+    SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26970
+    SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26971
+    SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26972
+    SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26973
+    SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26974
+    SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
mgl@1371
 26975
+    SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26976
+    SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26977
+    SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26978
+    SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26979
+    SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26980
+    SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26981
+    SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26982
+    SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26983
+    SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26984
+    SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26985
+    SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26986
+    SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26987
+    SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26988
+    SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26989
+    SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26990
+    SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26991
+    SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26992
+    SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26993
+    SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26994
+    SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26995
+    SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26996
+    SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26997
+    SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26998
+    SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 26999
+    SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27000
+    SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27001
+    SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27002
+    SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27003
+    SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27004
+    SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27005
+    SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27006
+    SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27007
+    SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27008
+    SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27009
+    SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27010
+    SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
mgl@1371
 27011
+    SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27012
+    SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27013
+    SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27014
+    SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27015
+    SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27016
+    SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27017
+    SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27018
+    SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27019
+    SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27020
+    SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27021
+    SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27022
+    SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27023
+    SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27024
+    SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27025
+    SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27026
+    SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27027
+    SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27028
+    SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
mgl@1371
 27029
+    SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27030
+    SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27031
+    SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27032
+    SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27033
+    SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27034
+    SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27035
+    SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27036
+    SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27037
+    SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27038
+    SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27039
+    SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27040
+    SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27041
+    SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27042
+    SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27043
+    SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27044
+    SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27045
+    SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27046
+    SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
mgl@1371
 27047
+    SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27048
+    SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27049
+    SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27050
+    SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27051
+    SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27052
+    SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27053
+    SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27054
+    SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27055
+    SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27056
+    SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27057
+    SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27058
+    SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27059
+    SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27060
+    SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27061
+    SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27062
+    SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27063
+    SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27064
+    SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
mgl@1371
 27065
+    SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
mgl@1371
 27066
+
mgl@1371
 27067
+  };
mgl@1371
 27068
+
mgl@1371
 27069
+#define NORMAL_MNEMONIC(name, syntax, str)		\
mgl@1371
 27070
+  {							\
mgl@1371
 27071
+    AVR32_MNEMONIC_##name, str,				\
mgl@1371
 27072
+    &avr32_syntax_table[AVR32_SYNTAX_##syntax],		\
mgl@1371
 27073
+  }
mgl@1371
 27074
+#define FP_MNEMONIC(name, syntax, str)			\
mgl@1371
 27075
+  NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"),	\
mgl@1371
 27076
+  NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
mgl@1371
 27077
+
mgl@1371
 27078
+const struct avr32_mnemonic avr32_mnemonic_table[] =
mgl@1371
 27079
+  {
mgl@1371
 27080
+    NORMAL_MNEMONIC(ABS, ABS, "abs"),
mgl@1371
 27081
+    NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
mgl@1371
 27082
+    NORMAL_MNEMONIC(ACR, ACR, "acr"),
mgl@1371
 27083
+    NORMAL_MNEMONIC(ADC, ADC, "adc"),
mgl@1371
 27084
+    NORMAL_MNEMONIC(ADD, ADD1, "add"),
mgl@1371
 27085
+    NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
mgl@1371
 27086
+    NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
mgl@1371
 27087
+    NORMAL_MNEMONIC(AND, AND1, "and"),
mgl@1371
 27088
+    NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
mgl@1371
 27089
+    NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
mgl@1371
 27090
+    NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
mgl@1371
 27091
+    NORMAL_MNEMONIC(ASR, ASR1, "asr"),
mgl@1371
 27092
+    NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
mgl@1371
 27093
+    NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
mgl@1371
 27094
+    NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
mgl@1371
 27095
+    NORMAL_MNEMONIC(BLD, BLD, "bld"),
mgl@1371
 27096
+    NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
mgl@1371
 27097
+    NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
mgl@1371
 27098
+    NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
mgl@1371
 27099
+    NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
mgl@1371
 27100
+    NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
mgl@1371
 27101
+    NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
mgl@1371
 27102
+    NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
mgl@1371
 27103
+    NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
mgl@1371
 27104
+    NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
mgl@1371
 27105
+    NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
mgl@1371
 27106
+    NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
mgl@1371
 27107
+    NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
mgl@1371
 27108
+    NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
mgl@1371
 27109
+    NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
mgl@1371
 27110
+    NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
mgl@1371
 27111
+    NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
mgl@1371
 27112
+    NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
mgl@1371
 27113
+    NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
mgl@1371
 27114
+    NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
mgl@1371
 27115
+    NORMAL_MNEMONIC(BREV, BREV, "brev"),
mgl@1371
 27116
+    NORMAL_MNEMONIC(BST, BST, "bst"),
mgl@1371
 27117
+    NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
mgl@1371
 27118
+    NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
mgl@1371
 27119
+    NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
mgl@1371
 27120
+    NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
mgl@1371
 27121
+    NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
mgl@1371
 27122
+    NORMAL_MNEMONIC(CBR, CBR, "cbr"),
mgl@1371
 27123
+    NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
mgl@1371
 27124
+    NORMAL_MNEMONIC(COM, COM, "com"),
mgl@1371
 27125
+    NORMAL_MNEMONIC(COP, COP, "cop"),
mgl@1371
 27126
+    NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
mgl@1371
 27127
+    NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
mgl@1371
 27128
+    NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
mgl@1371
 27129
+    NORMAL_MNEMONIC(CP, CP_W1, "cp"),
mgl@1371
 27130
+    NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
mgl@1371
 27131
+    NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
mgl@1371
 27132
+    NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
mgl@1371
 27133
+    NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
mgl@1371
 27134
+    NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
mgl@1371
 27135
+    NORMAL_MNEMONIC(EOR, EOR1, "eor"),
mgl@1371
 27136
+    NORMAL_MNEMONIC(EORL, EORL, "eorl"),
mgl@1371
 27137
+    NORMAL_MNEMONIC(EORH, EORH, "eorh"),
mgl@1371
 27138
+    NORMAL_MNEMONIC(FRS, FRS, "frs"),
mgl@1371
 27139
+    NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
mgl@1371
 27140
+    NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
mgl@1371
 27141
+    NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
mgl@1371
 27142
+    NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
mgl@1371
 27143
+    NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
mgl@1371
 27144
+    NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
mgl@1371
 27145
+    NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
mgl@1371
 27146
+    NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
mgl@1371
 27147
+    NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
mgl@1371
 27148
+    NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
mgl@1371
 27149
+    NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
mgl@1371
 27150
+    NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
mgl@1371
 27151
+    NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
mgl@1371
 27152
+    NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
mgl@1371
 27153
+    NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
mgl@1371
 27154
+    NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
mgl@1371
 27155
+    NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
mgl@1371
 27156
+    NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
mgl@1371
 27157
+    NORMAL_MNEMONIC(LDM, LDM, "ldm"),
mgl@1371
 27158
+    NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
mgl@1371
 27159
+    NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
mgl@1371
 27160
+    NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
mgl@1371
 27161
+    NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
mgl@1371
 27162
+    NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
mgl@1371
 27163
+    NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
mgl@1371
 27164
+    NORMAL_MNEMONIC(MAC, MAC, "mac"),
mgl@1371
 27165
+    NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
mgl@1371
 27166
+    NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
mgl@1371
 27167
+    NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
mgl@1371
 27168
+    NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
mgl@1371
 27169
+    NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
mgl@1371
 27170
+    NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
mgl@1371
 27171
+    NORMAL_MNEMONIC(MAX, MAX, "max"),
mgl@1371
 27172
+    NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
mgl@1371
 27173
+    NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
mgl@1371
 27174
+    NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
mgl@1371
 27175
+    NORMAL_MNEMONIC(MIN, MIN, "min"),
mgl@1371
 27176
+    NORMAL_MNEMONIC(MOV, MOV3, "mov"),
mgl@1371
 27177
+    NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
mgl@1371
 27178
+    NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
mgl@1371
 27179
+    NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
mgl@1371
 27180
+    NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
mgl@1371
 27181
+    NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
mgl@1371
 27182
+    NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
mgl@1371
 27183
+    NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
mgl@1371
 27184
+    NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
mgl@1371
 27185
+    NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
mgl@1371
 27186
+    NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
mgl@1371
 27187
+    NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
mgl@1371
 27188
+    NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
mgl@1371
 27189
+    NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
mgl@1371
 27190
+    NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
mgl@1371
 27191
+    NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
mgl@1371
 27192
+    NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
mgl@1371
 27193
+    NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
mgl@1371
 27194
+    NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
mgl@1371
 27195
+    NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
mgl@1371
 27196
+    NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
mgl@1371
 27197
+    NORMAL_MNEMONIC(MUL, MUL1, "mul"),
mgl@1371
 27198
+    NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
mgl@1371
 27199
+    NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
mgl@1371
 27200
+    NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
mgl@1371
 27201
+    NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
mgl@1371
 27202
+    NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
mgl@1371
 27203
+    NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
mgl@1371
 27204
+    NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
mgl@1371
 27205
+    NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
mgl@1371
 27206
+    NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
mgl@1371
 27207
+    NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
mgl@1371
 27208
+    NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
mgl@1371
 27209
+    NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
mgl@1371
 27210
+    NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
mgl@1371
 27211
+    NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
mgl@1371
 27212
+    NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
mgl@1371
 27213
+    NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
mgl@1371
 27214
+    NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
mgl@1371
 27215
+    NORMAL_MNEMONIC(NEG, NEG, "neg"),
mgl@1371
 27216
+    NORMAL_MNEMONIC(NOP, NOP, "nop"),
mgl@1371
 27217
+    NORMAL_MNEMONIC(OR, OR1, "or"),
mgl@1371
 27218
+    NORMAL_MNEMONIC(ORH, ORH, "orh"),
mgl@1371
 27219
+    NORMAL_MNEMONIC(ORL, ORL, "orl"),
mgl@1371
 27220
+    NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
mgl@1371
 27221
+    NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
mgl@1371
 27222
+    NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
mgl@1371
 27223
+    NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
mgl@1371
 27224
+    NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
mgl@1371
 27225
+    NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
mgl@1371
 27226
+    NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
mgl@1371
 27227
+    NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
mgl@1371
 27228
+    NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
mgl@1371
 27229
+    NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
mgl@1371
 27230
+    NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
mgl@1371
 27231
+    NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
mgl@1371
 27232
+    NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
mgl@1371
 27233
+    NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
mgl@1371
 27234
+    NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
mgl@1371
 27235
+    NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
mgl@1371
 27236
+    NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
mgl@1371
 27237
+    NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
mgl@1371
 27238
+    NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
mgl@1371
 27239
+    NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
mgl@1371
 27240
+    NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
mgl@1371
 27241
+    NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
mgl@1371
 27242
+    NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
mgl@1371
 27243
+    NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
mgl@1371
 27244
+    NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
mgl@1371
 27245
+    NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
mgl@1371
 27246
+    NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
mgl@1371
 27247
+    NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
mgl@1371
 27248
+    NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
mgl@1371
 27249
+    NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
mgl@1371
 27250
+    NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
mgl@1371
 27251
+    NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
mgl@1371
 27252
+    NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
mgl@1371
 27253
+    NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
mgl@1371
 27254
+    NORMAL_MNEMONIC(POPM, POPM, "popm"),
mgl@1371
 27255
+    NORMAL_MNEMONIC(PREF, PREF, "pref"),
mgl@1371
 27256
+    NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
mgl@1371
 27257
+    NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
mgl@1371
 27258
+    NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
mgl@1371
 27259
+    NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
mgl@1371
 27260
+    NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
mgl@1371
 27261
+    NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
mgl@1371
 27262
+    NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
mgl@1371
 27263
+    NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
mgl@1371
 27264
+    NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
mgl@1371
 27265
+    NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
mgl@1371
 27266
+    NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
mgl@1371
 27267
+    NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
mgl@1371
 27268
+    NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
mgl@1371
 27269
+    NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
mgl@1371
 27270
+    NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
mgl@1371
 27271
+    NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
mgl@1371
 27272
+    NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
mgl@1371
 27273
+    NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
mgl@1371
 27274
+    NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
mgl@1371
 27275
+    NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
mgl@1371
 27276
+    NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
mgl@1371
 27277
+    NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
mgl@1371
 27278
+    NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
mgl@1371
 27279
+    NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
mgl@1371
 27280
+    NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
mgl@1371
 27281
+    NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
mgl@1371
 27282
+    NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
mgl@1371
 27283
+    NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
mgl@1371
 27284
+    NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
mgl@1371
 27285
+    NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
mgl@1371
 27286
+    NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
mgl@1371
 27287
+    NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
mgl@1371
 27288
+    NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
mgl@1371
 27289
+    NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
mgl@1371
 27290
+    NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
mgl@1371
 27291
+    NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
mgl@1371
 27292
+    NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
mgl@1371
 27293
+    NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
mgl@1371
 27294
+    NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
mgl@1371
 27295
+    NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
mgl@1371
 27296
+    NORMAL_MNEMONIC(RET, RETAL, "ret"),
mgl@1371
 27297
+    NORMAL_MNEMONIC(RETD, RETD, "retd"),
mgl@1371
 27298
+    NORMAL_MNEMONIC(RETE, RETE, "rete"),
mgl@1371
 27299
+    NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
mgl@1371
 27300
+    NORMAL_MNEMONIC(RETS, RETS, "rets"),
mgl@1371
 27301
+    NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
mgl@1371
 27302
+    NORMAL_MNEMONIC(ROL, ROL, "rol"),
mgl@1371
 27303
+    NORMAL_MNEMONIC(ROR, ROR, "ror"),
mgl@1371
 27304
+    NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
mgl@1371
 27305
+    NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
mgl@1371
 27306
+    NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
mgl@1371
 27307
+    NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
mgl@1371
 27308
+    NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
mgl@1371
 27309
+    NORMAL_MNEMONIC(SATS, SATS, "sats"),
mgl@1371
 27310
+    NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
mgl@1371
 27311
+    NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
mgl@1371
 27312
+    NORMAL_MNEMONIC(SATU, SATU, "satu"),
mgl@1371
 27313
+    NORMAL_MNEMONIC(SBC, SBC, "sbc"),
mgl@1371
 27314
+    NORMAL_MNEMONIC(SBR, SBR, "sbr"),
mgl@1371
 27315
+    NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
mgl@1371
 27316
+    NORMAL_MNEMONIC(SCR, SCR, "scr"),
mgl@1371
 27317
+    NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
mgl@1371
 27318
+    NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
mgl@1371
 27319
+    NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
mgl@1371
 27320
+    NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
mgl@1371
 27321
+    NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
mgl@1371
 27322
+    NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
mgl@1371
 27323
+    NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
mgl@1371
 27324
+    NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
mgl@1371
 27325
+    NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
mgl@1371
 27326
+    NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
mgl@1371
 27327
+    NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
mgl@1371
 27328
+    NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
mgl@1371
 27329
+    NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
mgl@1371
 27330
+    NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
mgl@1371
 27331
+    NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
mgl@1371
 27332
+    NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
mgl@1371
 27333
+    NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
mgl@1371
 27334
+    NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
mgl@1371
 27335
+    NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
mgl@1371
 27336
+    NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
mgl@1371
 27337
+    NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
mgl@1371
 27338
+    NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
mgl@1371
 27339
+    NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
mgl@1371
 27340
+    NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
mgl@1371
 27341
+    NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
mgl@1371
 27342
+    NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
mgl@1371
 27343
+    NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
mgl@1371
 27344
+    NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
mgl@1371
 27345
+    NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
mgl@1371
 27346
+    NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
mgl@1371
 27347
+    NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
mgl@1371
 27348
+    NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
mgl@1371
 27349
+    NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
mgl@1371
 27350
+    NORMAL_MNEMONIC(STM, STM, "stm"),
mgl@1371
 27351
+    NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
mgl@1371
 27352
+    NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
mgl@1371
 27353
+    NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
mgl@1371
 27354
+    NORMAL_MNEMONIC(SUB, SUB1, "sub"),
mgl@1371
 27355
+    NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
mgl@1371
 27356
+    NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
mgl@1371
 27357
+    NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
mgl@1371
 27358
+    NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
mgl@1371
 27359
+    NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
mgl@1371
 27360
+    NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
mgl@1371
 27361
+    NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
mgl@1371
 27362
+    NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
mgl@1371
 27363
+    NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
mgl@1371
 27364
+    NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
mgl@1371
 27365
+    NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
mgl@1371
 27366
+    NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
mgl@1371
 27367
+    NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
mgl@1371
 27368
+    NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
mgl@1371
 27369
+    NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
mgl@1371
 27370
+    NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
mgl@1371
 27371
+    NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
mgl@1371
 27372
+    NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
mgl@1371
 27373
+    NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
mgl@1371
 27374
+    NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
mgl@1371
 27375
+    NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
mgl@1371
 27376
+    NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
mgl@1371
 27377
+    NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
mgl@1371
 27378
+    NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
mgl@1371
 27379
+    NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
mgl@1371
 27380
+    NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
mgl@1371
 27381
+    NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
mgl@1371
 27382
+    NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
mgl@1371
 27383
+    NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
mgl@1371
 27384
+    NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
mgl@1371
 27385
+    NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
mgl@1371
 27386
+    NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
mgl@1371
 27387
+    NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
mgl@1371
 27388
+    NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
mgl@1371
 27389
+    NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
mgl@1371
 27390
+    NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
mgl@1371
 27391
+    NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
mgl@1371
 27392
+    NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
mgl@1371
 27393
+    NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
mgl@1371
 27394
+    NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
mgl@1371
 27395
+    NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
mgl@1371
 27396
+    NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
mgl@1371
 27397
+    NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
mgl@1371
 27398
+    NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
mgl@1371
 27399
+    NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
mgl@1371
 27400
+    NORMAL_MNEMONIC(TST, TST, "tst"),
mgl@1371
 27401
+    NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
mgl@1371
 27402
+    NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
mgl@1371
 27403
+    NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
mgl@1371
 27404
+    NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
mgl@1371
 27405
+    FP_MNEMONIC(FADD, FADD, "fadd"),
mgl@1371
 27406
+    FP_MNEMONIC(FSUB, FSUB, "fsub"),
mgl@1371
 27407
+    FP_MNEMONIC(FMAC, FMAC, "fmac"),
mgl@1371
 27408
+    FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
mgl@1371
 27409
+    FP_MNEMONIC(FMSC, FMSC, "fmsc"),
mgl@1371
 27410
+    FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
mgl@1371
 27411
+    FP_MNEMONIC(FMUL, FMUL, "fmul"),
mgl@1371
 27412
+    FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
mgl@1371
 27413
+    FP_MNEMONIC(FNEG, FNEG, "fneg"),
mgl@1371
 27414
+    FP_MNEMONIC(FABS, FABS, "fabs"),
mgl@1371
 27415
+    FP_MNEMONIC(FCMP, FCMP, "fcmp"),
mgl@1371
 27416
+    FP_MNEMONIC(FMOV, FMOV1, "fmov"),
mgl@1371
 27417
+    NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
mgl@1371
 27418
+    NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
mgl@1371
 27419
+    NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
mgl@1371
 27420
+    NORMAL_MNEMONIC(CALL, CALL, "call"),
mgl@1371
 27421
+    NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
mgl@1371
 27422
+    NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
mgl@1371
 27423
+    NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
mgl@1371
 27424
+    NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
mgl@1371
 27425
+    NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
mgl@1371
 27426
+    NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
mgl@1371
 27427
+    NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
mgl@1371
 27428
+    NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
mgl@1371
 27429
+    NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
mgl@1371
 27430
+    NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
mgl@1371
 27431
+    NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
mgl@1371
 27432
+    NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
mgl@1371
 27433
+    NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
mgl@1371
 27434
+    NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
mgl@1371
 27435
+    NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
mgl@1371
 27436
+    NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
mgl@1371
 27437
+    NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
mgl@1371
 27438
+    NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
mgl@1371
 27439
+    NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
mgl@1371
 27440
+    NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
mgl@1371
 27441
+    NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
mgl@1371
 27442
+    NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
mgl@1371
 27443
+    NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
mgl@1371
 27444
+    NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
mgl@1371
 27445
+    NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
mgl@1371
 27446
+    NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
mgl@1371
 27447
+    NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
mgl@1371
 27448
+    NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
mgl@1371
 27449
+    NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
mgl@1371
 27450
+    NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
mgl@1371
 27451
+    NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
mgl@1371
 27452
+    NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
mgl@1371
 27453
+    NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
mgl@1371
 27454
+    NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
mgl@1371
 27455
+    NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
mgl@1371
 27456
+    NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
mgl@1371
 27457
+    NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
mgl@1371
 27458
+    NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
mgl@1371
 27459
+    NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
mgl@1371
 27460
+    NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
mgl@1371
 27461
+    NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
mgl@1371
 27462
+    NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
mgl@1371
 27463
+    NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
mgl@1371
 27464
+    NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
mgl@1371
 27465
+    NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
mgl@1371
 27466
+    NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
mgl@1371
 27467
+    NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
mgl@1371
 27468
+    NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
mgl@1371
 27469
+    NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
mgl@1371
 27470
+    NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
mgl@1371
 27471
+    NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
mgl@1371
 27472
+    NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
mgl@1371
 27473
+    NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
mgl@1371
 27474
+    NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
mgl@1371
 27475
+    NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
mgl@1371
 27476
+    NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
mgl@1371
 27477
+    NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
mgl@1371
 27478
+    NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
mgl@1371
 27479
+    NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
mgl@1371
 27480
+    NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
mgl@1371
 27481
+    NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
mgl@1371
 27482
+    NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
mgl@1371
 27483
+    NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
mgl@1371
 27484
+    NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
mgl@1371
 27485
+    NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
mgl@1371
 27486
+    NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
mgl@1371
 27487
+    NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
mgl@1371
 27488
+    NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
mgl@1371
 27489
+    NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
mgl@1371
 27490
+    NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
mgl@1371
 27491
+    NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
mgl@1371
 27492
+    NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
mgl@1371
 27493
+    NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
mgl@1371
 27494
+    NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
mgl@1371
 27495
+    NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
mgl@1371
 27496
+    NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
mgl@1371
 27497
+    NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
mgl@1371
 27498
+    NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
mgl@1371
 27499
+    NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
mgl@1371
 27500
+    NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
mgl@1371
 27501
+    NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
mgl@1371
 27502
+    NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
mgl@1371
 27503
+    NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
mgl@1371
 27504
+    NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
mgl@1371
 27505
+    NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
mgl@1371
 27506
+    NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
mgl@1371
 27507
+    NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
mgl@1371
 27508
+    NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
mgl@1371
 27509
+    NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
mgl@1371
 27510
+    NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
mgl@1371
 27511
+    NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
mgl@1371
 27512
+    NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
mgl@1371
 27513
+    NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
mgl@1371
 27514
+    NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
mgl@1371
 27515
+    NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
mgl@1371
 27516
+    NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
mgl@1371
 27517
+    NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
mgl@1371
 27518
+    NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
mgl@1371
 27519
+    NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
mgl@1371
 27520
+    NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
mgl@1371
 27521
+    NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
mgl@1371
 27522
+    NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
mgl@1371
 27523
+    NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
mgl@1371
 27524
+    NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
mgl@1371
 27525
+    NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
mgl@1371
 27526
+    NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
mgl@1371
 27527
+    NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
mgl@1371
 27528
+    NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
mgl@1371
 27529
+    NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
mgl@1371
 27530
+    NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
mgl@1371
 27531
+    NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
mgl@1371
 27532
+    NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
mgl@1371
 27533
+    NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
mgl@1371
 27534
+    NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
mgl@1371
 27535
+    NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
mgl@1371
 27536
+    NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
mgl@1371
 27537
+    NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
mgl@1371
 27538
+    NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
mgl@1371
 27539
+    NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
mgl@1371
 27540
+    NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
mgl@1371
 27541
+    NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
mgl@1371
 27542
+    NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
mgl@1371
 27543
+    NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
mgl@1371
 27544
+    NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
mgl@1371
 27545
+    NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
mgl@1371
 27546
+    NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
mgl@1371
 27547
+    NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
mgl@1371
 27548
+    NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
mgl@1371
 27549
+    NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
mgl@1371
 27550
+    NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
mgl@1371
 27551
+    NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
mgl@1371
 27552
+    NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
mgl@1371
 27553
+    NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
mgl@1371
 27554
+    NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
mgl@1371
 27555
+    NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
mgl@1371
 27556
+    NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
mgl@1371
 27557
+    NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
mgl@1371
 27558
+    NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
mgl@1371
 27559
+    NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
mgl@1371
 27560
+    NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
mgl@1371
 27561
+    NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
mgl@1371
 27562
+    NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
mgl@1371
 27563
+    NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
mgl@1371
 27564
+    NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
mgl@1371
 27565
+    NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
mgl@1371
 27566
+    NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
mgl@1371
 27567
+    NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
mgl@1371
 27568
+    NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
mgl@1371
 27569
+    NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
mgl@1371
 27570
+    NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
mgl@1371
 27571
+    NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
mgl@1371
 27572
+    NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
mgl@1371
 27573
+    NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
mgl@1371
 27574
+    NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
mgl@1371
 27575
+    NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
mgl@1371
 27576
+    NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
mgl@1371
 27577
+    NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
mgl@1371
 27578
+    NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
mgl@1371
 27579
+    NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
mgl@1371
 27580
+    NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
mgl@1371
 27581
+    NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
mgl@1371
 27582
+    NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
mgl@1371
 27583
+    NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
mgl@1371
 27584
+    NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
mgl@1371
 27585
+    NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
mgl@1371
 27586
+    NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
mgl@1371
 27587
+    NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
mgl@1371
 27588
+    NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
mgl@1371
 27589
+    NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
mgl@1371
 27590
+    NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
mgl@1371
 27591
+    NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
mgl@1371
 27592
+    NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
mgl@1371
 27593
+    NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
mgl@1371
 27594
+    NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
mgl@1371
 27595
+    NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
mgl@1371
 27596
+    NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
mgl@1371
 27597
+    NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
mgl@1371
 27598
+    NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
mgl@1371
 27599
+    NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
mgl@1371
 27600
+    NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
mgl@1371
 27601
+    NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
mgl@1371
 27602
+    NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
mgl@1371
 27603
+    NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
mgl@1371
 27604
+    NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
mgl@1371
 27605
+    NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
mgl@1371
 27606
+    NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
mgl@1371
 27607
+    NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
mgl@1371
 27608
+    NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
mgl@1371
 27609
+    NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
mgl@1371
 27610
+    NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
mgl@1371
 27611
+    NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
mgl@1371
 27612
+    NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
mgl@1371
 27613
+    NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
mgl@1371
 27614
+    NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
mgl@1371
 27615
+    NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
mgl@1371
 27616
+    NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
mgl@1371
 27617
+    NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
mgl@1371
 27618
+    NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
mgl@1371
 27619
+    NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
mgl@1371
 27620
+    NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
mgl@1371
 27621
+    NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
mgl@1371
 27622
+    NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
mgl@1371
 27623
+    NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
mgl@1371
 27624
+    NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
mgl@1371
 27625
+    NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
mgl@1371
 27626
+    NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
mgl@1371
 27627
+    NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
mgl@1371
 27628
+    NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
mgl@1371
 27629
+    NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
mgl@1371
 27630
+    NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
mgl@1371
 27631
+    NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
mgl@1371
 27632
+    NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
mgl@1371
 27633
+    NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
mgl@1371
 27634
+    NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
mgl@1371
 27635
+    NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
mgl@1371
 27636
+    NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
mgl@1371
 27637
+    NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
mgl@1371
 27638
+    NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
mgl@1371
 27639
+    NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
mgl@1371
 27640
+    NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
mgl@1371
 27641
+    NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
mgl@1371
 27642
+    NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
mgl@1371
 27643
+    NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
mgl@1371
 27644
+    NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
mgl@1371
 27645
+    NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
mgl@1371
 27646
+    NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
mgl@1371
 27647
+    NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
mgl@1371
 27648
+    NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
mgl@1371
 27649
+    NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
mgl@1371
 27650
+    NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
mgl@1371
 27651
+    NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
mgl@1371
 27652
+    NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
mgl@1371
 27653
+    NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
mgl@1371
 27654
+    NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
mgl@1371
 27655
+    NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
mgl@1371
 27656
+    NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
mgl@1371
 27657
+    NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
mgl@1371
 27658
+    NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
mgl@1371
 27659
+    NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
mgl@1371
 27660
+    NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
mgl@1371
 27661
+    NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
mgl@1371
 27662
+    NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
mgl@1371
 27663
+    NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
mgl@1371
 27664
+    NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
mgl@1371
 27665
+    NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
mgl@1371
 27666
+    NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
mgl@1371
 27667
+    NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
mgl@1371
 27668
+    NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
mgl@1371
 27669
+    NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
mgl@1371
 27670
+
mgl@1371
 27671
+  };
mgl@1371
 27672
+#undef NORMAL_MNEMONIC
mgl@1371
 27673
+#undef ALIAS_MNEMONIC
mgl@1371
 27674
+#undef FP_MNEMONIC
mgl@1371
 27675
--- /dev/null
mgl@1371
 27676
+++ b/opcodes/avr32-opc.h
mgl@1371
 27677
@@ -0,0 +1,2370 @@
mgl@1371
 27678
+/* Opcode tables for AVR32.
mgl@1371
 27679
+   Copyright 2005, 2006 Atmel Corporation.
mgl@1371
 27680
+
mgl@1371
 27681
+   Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
mgl@1371
 27682
+
mgl@1371
 27683
+   This file is part of libopcodes.
mgl@1371
 27684
+
mgl@1371
 27685
+   This program is free software; you can redistribute it and/or
mgl@1371
 27686
+   modify it under the terms of the GNU General Public License as
mgl@1371
 27687
+   published by the Free Software Foundation; either version 2 of the
mgl@1371
 27688
+   License, or (at your option) any later version.
mgl@1371
 27689
+
mgl@1371
 27690
+   This program is distributed in the hope that it will be useful, but
mgl@1371
 27691
+   WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 27692
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 27693
+   General Public License for more details.
mgl@1371
 27694
+
mgl@1371
 27695
+   You should have received a copy of the GNU General Public License
mgl@1371
 27696
+   along with this program; if not, write to the Free Software
mgl@1371
 27697
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
mgl@1371
 27698
+   02111-1307, USA.  */
mgl@1371
 27699
+
mgl@1371
 27700
+#include "bfd.h"
mgl@1371
 27701
+
mgl@1371
 27702
+#define AVR32_MAX_OPERANDS	8
mgl@1371
 27703
+#define AVR32_MAX_FIELDS	8
mgl@1371
 27704
+
mgl@1371
 27705
+#define AVR32_V1	        (1 << 1)
mgl@1371
 27706
+#define AVR32_SIMD		(1 << 2)
mgl@1371
 27707
+#define AVR32_DSP		(1 << 3)
mgl@1371
 27708
+#define AVR32_RMW		(1 << 4)
mgl@1371
 27709
+#define AVR32_V2	        (1 << 5)
mgl@1371
 27710
+#define AVR32_FP		(1 << 16)
mgl@1371
 27711
+#define AVR32_PICO		(1 << 17)
mgl@1371
 27712
+
mgl@1371
 27713
+/* Registers we commonly refer to */
mgl@1371
 27714
+#define AVR32_REG_R12		12
mgl@1371
 27715
+#define AVR32_REG_SP		13
mgl@1371
 27716
+#define AVR32_REG_LR		14
mgl@1371
 27717
+#define AVR32_REG_PC		15
mgl@1371
 27718
+
mgl@1371
 27719
+struct avr32_ifield
mgl@1371
 27720
+{
mgl@1371
 27721
+  int id;
mgl@1371
 27722
+  unsigned short bitsize;
mgl@1371
 27723
+  unsigned short shift;
mgl@1371
 27724
+  unsigned long mask;
mgl@1371
 27725
+
mgl@1371
 27726
+  /* If the value doesn't fit, it will be truncated with no warning */
mgl@1371
 27727
+  void (*insert)(const struct avr32_ifield *, void *, unsigned long);
mgl@1371
 27728
+  void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
mgl@1371
 27729
+};
mgl@1371
 27730
+
mgl@1371
 27731
+struct avr32_opcode
mgl@1371
 27732
+{
mgl@1371
 27733
+  int id;
mgl@1371
 27734
+  int size;
mgl@1371
 27735
+  unsigned long value;
mgl@1371
 27736
+  unsigned long mask;
mgl@1371
 27737
+  const struct avr32_syntax *syntax;
mgl@1371
 27738
+  bfd_reloc_code_real_type reloc_type;
mgl@1371
 27739
+  unsigned int nr_fields;
mgl@1371
 27740
+  /* if relaxable, which field is variable, otherwise -1 */
mgl@1371
 27741
+  int var_field;
mgl@1371
 27742
+  const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
mgl@1371
 27743
+};
mgl@1371
 27744
+
mgl@1371
 27745
+struct avr32_alias
mgl@1371
 27746
+{
mgl@1371
 27747
+  int id;
mgl@1371
 27748
+  const struct avr32_opcode *opc;
mgl@1371
 27749
+  struct {
mgl@1371
 27750
+    int is_opindex;
mgl@1371
 27751
+    unsigned long value;
mgl@1371
 27752
+  } operand_map[AVR32_MAX_OPERANDS];
mgl@1371
 27753
+};
mgl@1371
 27754
+
mgl@1371
 27755
+struct avr32_syntax
mgl@1371
 27756
+{
mgl@1371
 27757
+  int id;
mgl@1371
 27758
+  unsigned long isa_flags;
mgl@1371
 27759
+  const struct avr32_mnemonic *mnemonic;
mgl@1371
 27760
+  int type;
mgl@1371
 27761
+  union {
mgl@1371
 27762
+    const struct avr32_opcode *opc;
mgl@1371
 27763
+    const struct avr32_alias *alias;
mgl@1371
 27764
+  } u;
mgl@1371
 27765
+  const struct avr32_syntax *next;
mgl@1371
 27766
+  /* negative means "vararg" */
mgl@1371
 27767
+  int nr_operands;
mgl@1371
 27768
+  int operand[AVR32_MAX_OPERANDS];
mgl@1371
 27769
+};
mgl@1371
 27770
+
mgl@1371
 27771
+#if 0
mgl@1371
 27772
+#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
mgl@1371
 27773
+#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
mgl@1371
 27774
+#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
mgl@1371
 27775
+#endif
mgl@1371
 27776
+
mgl@1371
 27777
+struct avr32_mnemonic
mgl@1371
 27778
+{
mgl@1371
 27779
+  int id;
mgl@1371
 27780
+  const char *name;
mgl@1371
 27781
+  const struct avr32_syntax *syntax;
mgl@1371
 27782
+};
mgl@1371
 27783
+
mgl@1371
 27784
+extern const struct avr32_ifield avr32_ifield_table[];
mgl@1371
 27785
+extern struct avr32_opcode avr32_opc_table[];
mgl@1371
 27786
+extern const struct avr32_syntax avr32_syntax_table[];
mgl@1371
 27787
+extern const struct avr32_alias avr32_alias_table[];
mgl@1371
 27788
+extern const struct avr32_mnemonic avr32_mnemonic_table[];
mgl@1371
 27789
+
mgl@1371
 27790
+extern void avr32_insert_simple(const struct avr32_ifield *field,
mgl@1371
 27791
+				void *buf, unsigned long value);
mgl@1371
 27792
+extern void avr32_insert_bit5c(const struct avr32_ifield *field,
mgl@1371
 27793
+			       void *buf, unsigned long value);
mgl@1371
 27794
+extern void avr32_insert_k10(const struct avr32_ifield *field,
mgl@1371
 27795
+			     void *buf, unsigned long value);
mgl@1371
 27796
+extern void avr32_insert_k21(const struct avr32_ifield *field,
mgl@1371
 27797
+			     void *buf, unsigned long value);
mgl@1371
 27798
+extern void avr32_insert_cpop(const struct avr32_ifield *field,
mgl@1371
 27799
+			      void *buf, unsigned long value);
mgl@1371
 27800
+extern void avr32_insert_k12cp(const struct avr32_ifield *field,
mgl@1371
 27801
+			       void *buf, unsigned long value);
mgl@1371
 27802
+
mgl@1371
 27803
+extern void avr32_extract_simple(const struct avr32_ifield *field,
mgl@1371
 27804
+				 void *buf, unsigned long *value);
mgl@1371
 27805
+extern void avr32_extract_bit5c(const struct avr32_ifield *field,
mgl@1371
 27806
+				void *buf, unsigned long *value);
mgl@1371
 27807
+extern void avr32_extract_k10(const struct avr32_ifield *field,
mgl@1371
 27808
+			      void *buf, unsigned long *value);
mgl@1371
 27809
+extern void avr32_extract_k21(const struct avr32_ifield *field,
mgl@1371
 27810
+			      void *buf, unsigned long *value);
mgl@1371
 27811
+extern void avr32_extract_cpop(const struct avr32_ifield *field,
mgl@1371
 27812
+			       void *buf, unsigned long *value);
mgl@1371
 27813
+extern void avr32_extract_k12cp(const struct avr32_ifield *field,
mgl@1371
 27814
+				void *buf, unsigned long *value);
mgl@1371
 27815
+
mgl@1371
 27816
+enum avr32_operand_type
mgl@1371
 27817
+{
mgl@1371
 27818
+  AVR32_OPERAND_INTREG,		/* just a register */
mgl@1371
 27819
+  AVR32_OPERAND_INTREG_PREDEC,	/* register with pre-decrement */
mgl@1371
 27820
+  AVR32_OPERAND_INTREG_POSTINC,	/* register with post-increment */
mgl@1371
 27821
+  AVR32_OPERAND_INTREG_LSL,	/* register with left shift */
mgl@1371
 27822
+  AVR32_OPERAND_INTREG_LSR,	/* register with right shift */
mgl@1371
 27823
+  AVR32_OPERAND_INTREG_BSEL,	/* register with byte selector */
mgl@1371
 27824
+  AVR32_OPERAND_INTREG_HSEL,	/* register with halfword selector */
mgl@1371
 27825
+  AVR32_OPERAND_INTREG_SDISP,	/* Rp[signed disp] */
mgl@1371
 27826
+  AVR32_OPERAND_INTREG_SDISP_H,	/* Rp[signed hword-aligned disp] */
mgl@1371
 27827
+  AVR32_OPERAND_INTREG_SDISP_W,	/* Rp[signed word-aligned disp] */
mgl@1371
 27828
+  AVR32_OPERAND_INTREG_UDISP,	/* Rp[unsigned disp] */
mgl@1371
 27829
+  AVR32_OPERAND_INTREG_UDISP_H,	/* Rp[unsigned hword-aligned disp] */
mgl@1371
 27830
+  AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
mgl@1371
 27831
+  AVR32_OPERAND_INTREG_INDEX,	/* Rp[Ri << sa] */
mgl@1371
 27832
+  AVR32_OPERAND_INTREG_XINDEX,	/* Rp[Ri:bytesel << 2] */
mgl@1371
 27833
+  AVR32_OPERAND_DWREG,		/* Even-numbered register */
mgl@1371
 27834
+  AVR32_OPERAND_PC_UDISP_W,	/* PC[unsigned word-aligned disp] or label */
mgl@1371
 27835
+  AVR32_OPERAND_SP,		/* Just SP */
mgl@1371
 27836
+  AVR32_OPERAND_SP_UDISP_W,	/* SP[unsigned word-aligned disp] */
mgl@1371
 27837
+  AVR32_OPERAND_CPNO,
mgl@1371
 27838
+  AVR32_OPERAND_CPREG,
mgl@1371
 27839
+  AVR32_OPERAND_CPREG_D,
mgl@1371
 27840
+  AVR32_OPERAND_UNSIGNED_CONST,
mgl@1371
 27841
+  AVR32_OPERAND_UNSIGNED_CONST_W,
mgl@1371
 27842
+  AVR32_OPERAND_SIGNED_CONST,
mgl@1371
 27843
+  AVR32_OPERAND_SIGNED_CONST_W,
mgl@1371
 27844
+  AVR32_OPERAND_JMPLABEL,
mgl@1371
 27845
+  AVR32_OPERAND_UNSIGNED_NUMBER,
mgl@1371
 27846
+  AVR32_OPERAND_UNSIGNED_NUMBER_W,
mgl@1371
 27847
+  AVR32_OPERAND_REGLIST8,
mgl@1371
 27848
+  AVR32_OPERAND_REGLIST9,
mgl@1371
 27849
+  AVR32_OPERAND_REGLIST16,
mgl@1371
 27850
+  AVR32_OPERAND_REGLIST_LDM,
mgl@1371
 27851
+  AVR32_OPERAND_REGLIST_CP8,
mgl@1371
 27852
+  AVR32_OPERAND_REGLIST_CPD8,
mgl@1371
 27853
+  AVR32_OPERAND_RETVAL,
mgl@1371
 27854
+  AVR32_OPERAND_MCALL,
mgl@1371
 27855
+  AVR32_OPERAND_JOSPINC,
mgl@1371
 27856
+  AVR32_OPERAND_COH,
mgl@1371
 27857
+  AVR32_OPERAND_FPREG_S,
mgl@1371
 27858
+  AVR32_OPERAND_FPREG_D,
mgl@1371
 27859
+  AVR32_OPERAND_PICO_REG_W,
mgl@1371
 27860
+  AVR32_OPERAND_PICO_REG_D,
mgl@1371
 27861
+  AVR32_OPERAND_PICO_REGLIST_W,
mgl@1371
 27862
+  AVR32_OPERAND_PICO_REGLIST_D,
mgl@1371
 27863
+  AVR32_OPERAND_PICO_IN,
mgl@1371
 27864
+  AVR32_OPERAND_PICO_OUT0,
mgl@1371
 27865
+  AVR32_OPERAND_PICO_OUT1,
mgl@1371
 27866
+  AVR32_OPERAND_PICO_OUT2,
mgl@1371
 27867
+  AVR32_OPERAND_PICO_OUT3,
mgl@1371
 27868
+  AVR32_OPERAND__END_
mgl@1371
 27869
+};
mgl@1371
 27870
+#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
mgl@1371
 27871
+#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
mgl@1371
 27872
+
mgl@1371
 27873
+enum avr32_ifield_type
mgl@1371
 27874
+{
mgl@1371
 27875
+  AVR32_IFIELD_RX,
mgl@1371
 27876
+  AVR32_IFIELD_RY,
mgl@1371
 27877
+  AVR32_IFIELD_COND4C,
mgl@1371
 27878
+  AVR32_IFIELD_K8C,
mgl@1371
 27879
+  AVR32_IFIELD_K7C,
mgl@1371
 27880
+  AVR32_IFIELD_K5C,
mgl@1371
 27881
+  AVR32_IFIELD_K3,
mgl@1371
 27882
+  AVR32_IFIELD_RY_DW,
mgl@1371
 27883
+  AVR32_IFIELD_COND4E,
mgl@1371
 27884
+  AVR32_IFIELD_K8E,
mgl@1371
 27885
+  AVR32_IFIELD_BIT5C,
mgl@1371
 27886
+  AVR32_IFIELD_COND3,
mgl@1371
 27887
+  AVR32_IFIELD_K10,
mgl@1371
 27888
+  AVR32_IFIELD_POPM,
mgl@1371
 27889
+  AVR32_IFIELD_K2,
mgl@1371
 27890
+  AVR32_IFIELD_RD_E,
mgl@1371
 27891
+  AVR32_IFIELD_RD_DW,
mgl@1371
 27892
+  AVR32_IFIELD_X,
mgl@1371
 27893
+  AVR32_IFIELD_Y,
mgl@1371
 27894
+  AVR32_IFIELD_X2,
mgl@1371
 27895
+  AVR32_IFIELD_Y2,
mgl@1371
 27896
+  AVR32_IFIELD_K5E,
mgl@1371
 27897
+  AVR32_IFIELD_PART2,
mgl@1371
 27898
+  AVR32_IFIELD_PART1,
mgl@1371
 27899
+  AVR32_IFIELD_K16,
mgl@1371
 27900
+  AVR32_IFIELD_CACHEOP,
mgl@1371
 27901
+  AVR32_IFIELD_K11,
mgl@1371
 27902
+  AVR32_IFIELD_K21,
mgl@1371
 27903
+  AVR32_IFIELD_CPOP,
mgl@1371
 27904
+  AVR32_IFIELD_CPNO,
mgl@1371
 27905
+  AVR32_IFIELD_CRD_RI,
mgl@1371
 27906
+  AVR32_IFIELD_CRX,
mgl@1371
 27907
+  AVR32_IFIELD_CRY,
mgl@1371
 27908
+  AVR32_IFIELD_K7E,
mgl@1371
 27909
+  AVR32_IFIELD_CRD_DW,
mgl@1371
 27910
+  AVR32_IFIELD_PART1_K12,
mgl@1371
 27911
+  AVR32_IFIELD_PART2_K12,
mgl@1371
 27912
+  AVR32_IFIELD_K12,
mgl@1371
 27913
+  AVR32_IFIELD_S5,
mgl@1371
 27914
+  AVR32_IFIELD_K5E2,
mgl@1371
 27915
+  AVR32_IFIELD_K4,
mgl@1371
 27916
+  AVR32_IFIELD_COND4E2,
mgl@1371
 27917
+  AVR32_IFIELD_K8E2,
mgl@1371
 27918
+  AVR32_IFIELD_K6,
mgl@1371
 27919
+  AVR32_IFIELD_MEM15,
mgl@1371
 27920
+  AVR32_IFIELD_MEMB5,
mgl@1371
 27921
+  AVR32_IFIELD_W,
mgl@1371
 27922
+  AVR32_IFIELD_CM_HL,
mgl@1371
 27923
+  AVR32_IFIELD_K12CP,
mgl@1371
 27924
+  AVR32_IFIELD_K9E,
mgl@1371
 27925
+  AVR32_IFIELD__END_,
mgl@1371
 27926
+};
mgl@1371
 27927
+#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
mgl@1371
 27928
+
mgl@1371
 27929
+enum avr32_opc_type
mgl@1371
 27930
+{
mgl@1371
 27931
+  AVR32_OPC_ABS,
mgl@1371
 27932
+  AVR32_OPC_ACALL,
mgl@1371
 27933
+  AVR32_OPC_ACR,
mgl@1371
 27934
+  AVR32_OPC_ADC,
mgl@1371
 27935
+  AVR32_OPC_ADD1,
mgl@1371
 27936
+  AVR32_OPC_ADD2,
mgl@1371
 27937
+  AVR32_OPC_ADDABS,
mgl@1371
 27938
+  AVR32_OPC_ADDHH_W,
mgl@1371
 27939
+  AVR32_OPC_AND1,
mgl@1371
 27940
+  AVR32_OPC_AND2,
mgl@1371
 27941
+  AVR32_OPC_AND3,
mgl@1371
 27942
+  AVR32_OPC_ANDH,
mgl@1371
 27943
+  AVR32_OPC_ANDH_COH,
mgl@1371
 27944
+  AVR32_OPC_ANDL,
mgl@1371
 27945
+  AVR32_OPC_ANDL_COH,
mgl@1371
 27946
+  AVR32_OPC_ANDN,
mgl@1371
 27947
+  AVR32_OPC_ASR1,
mgl@1371
 27948
+  AVR32_OPC_ASR3,
mgl@1371
 27949
+  AVR32_OPC_ASR2,
mgl@1371
 27950
+  AVR32_OPC_BLD,
mgl@1371
 27951
+  AVR32_OPC_BREQ1,
mgl@1371
 27952
+  AVR32_OPC_BRNE1,
mgl@1371
 27953
+  AVR32_OPC_BRCC1,
mgl@1371
 27954
+  AVR32_OPC_BRCS1,
mgl@1371
 27955
+  AVR32_OPC_BRGE1,
mgl@1371
 27956
+  AVR32_OPC_BRLT1,
mgl@1371
 27957
+  AVR32_OPC_BRMI1,
mgl@1371
 27958
+  AVR32_OPC_BRPL1,
mgl@1371
 27959
+  AVR32_OPC_BREQ2,
mgl@1371
 27960
+  AVR32_OPC_BRNE2,
mgl@1371
 27961
+  AVR32_OPC_BRCC2,
mgl@1371
 27962
+  AVR32_OPC_BRCS2,
mgl@1371
 27963
+  AVR32_OPC_BRGE2,
mgl@1371
 27964
+  AVR32_OPC_BRLT2,
mgl@1371
 27965
+  AVR32_OPC_BRMI2,
mgl@1371
 27966
+  AVR32_OPC_BRPL2,
mgl@1371
 27967
+  AVR32_OPC_BRLS,
mgl@1371
 27968
+  AVR32_OPC_BRGT,
mgl@1371
 27969
+  AVR32_OPC_BRLE,
mgl@1371
 27970
+  AVR32_OPC_BRHI,
mgl@1371
 27971
+  AVR32_OPC_BRVS,
mgl@1371
 27972
+  AVR32_OPC_BRVC,
mgl@1371
 27973
+  AVR32_OPC_BRQS,
mgl@1371
 27974
+  AVR32_OPC_BRAL,
mgl@1371
 27975
+  AVR32_OPC_BREAKPOINT,
mgl@1371
 27976
+  AVR32_OPC_BREV,
mgl@1371
 27977
+  AVR32_OPC_BST,
mgl@1371
 27978
+  AVR32_OPC_CACHE,
mgl@1371
 27979
+  AVR32_OPC_CASTS_B,
mgl@1371
 27980
+  AVR32_OPC_CASTS_H,
mgl@1371
 27981
+  AVR32_OPC_CASTU_B,
mgl@1371
 27982
+  AVR32_OPC_CASTU_H,
mgl@1371
 27983
+  AVR32_OPC_CBR,
mgl@1371
 27984
+  AVR32_OPC_CLZ,
mgl@1371
 27985
+  AVR32_OPC_COM,
mgl@1371
 27986
+  AVR32_OPC_COP,
mgl@1371
 27987
+  AVR32_OPC_CP_B,
mgl@1371
 27988
+  AVR32_OPC_CP_H,
mgl@1371
 27989
+  AVR32_OPC_CP_W1,
mgl@1371
 27990
+  AVR32_OPC_CP_W2,
mgl@1371
 27991
+  AVR32_OPC_CP_W3,
mgl@1371
 27992
+  AVR32_OPC_CPC1,
mgl@1371
 27993
+  AVR32_OPC_CPC2,
mgl@1371
 27994
+  AVR32_OPC_CSRF,
mgl@1371
 27995
+  AVR32_OPC_CSRFCZ,
mgl@1371
 27996
+  AVR32_OPC_DIVS,
mgl@1371
 27997
+  AVR32_OPC_DIVU,
mgl@1371
 27998
+  AVR32_OPC_EOR1,
mgl@1371
 27999
+  AVR32_OPC_EOR2,
mgl@1371
 28000
+  AVR32_OPC_EOR3,
mgl@1371
 28001
+  AVR32_OPC_EORL,
mgl@1371
 28002
+  AVR32_OPC_EORH,
mgl@1371
 28003
+  AVR32_OPC_FRS,
mgl@1371
 28004
+  AVR32_OPC_ICALL,
mgl@1371
 28005
+  AVR32_OPC_INCJOSP,
mgl@1371
 28006
+  AVR32_OPC_LD_D1,
mgl@1371
 28007
+  AVR32_OPC_LD_D2,
mgl@1371
 28008
+  AVR32_OPC_LD_D3,
mgl@1371
 28009
+  AVR32_OPC_LD_D5,
mgl@1371
 28010
+  AVR32_OPC_LD_D4,
mgl@1371
 28011
+  AVR32_OPC_LD_SB2,
mgl@1371
 28012
+  AVR32_OPC_LD_SB1,
mgl@1371
 28013
+  AVR32_OPC_LD_UB1,
mgl@1371
 28014
+  AVR32_OPC_LD_UB2,
mgl@1371
 28015
+  AVR32_OPC_LD_UB5,
mgl@1371
 28016
+  AVR32_OPC_LD_UB3,
mgl@1371
 28017
+  AVR32_OPC_LD_UB4,
mgl@1371
 28018
+  AVR32_OPC_LD_SH1,
mgl@1371
 28019
+  AVR32_OPC_LD_SH2,
mgl@1371
 28020
+  AVR32_OPC_LD_SH5,
mgl@1371
 28021
+  AVR32_OPC_LD_SH3,
mgl@1371
 28022
+  AVR32_OPC_LD_SH4,
mgl@1371
 28023
+  AVR32_OPC_LD_UH1,
mgl@1371
 28024
+  AVR32_OPC_LD_UH2,
mgl@1371
 28025
+  AVR32_OPC_LD_UH5,
mgl@1371
 28026
+  AVR32_OPC_LD_UH3,
mgl@1371
 28027
+  AVR32_OPC_LD_UH4,
mgl@1371
 28028
+  AVR32_OPC_LD_W1,
mgl@1371
 28029
+  AVR32_OPC_LD_W2,
mgl@1371
 28030
+  AVR32_OPC_LD_W5,
mgl@1371
 28031
+  AVR32_OPC_LD_W6,
mgl@1371
 28032
+  AVR32_OPC_LD_W3,
mgl@1371
 28033
+  AVR32_OPC_LD_W4,
mgl@1371
 28034
+  AVR32_OPC_LDC_D1,
mgl@1371
 28035
+  AVR32_OPC_LDC_D2,
mgl@1371
 28036
+  AVR32_OPC_LDC_D3,
mgl@1371
 28037
+  AVR32_OPC_LDC_W1,
mgl@1371
 28038
+  AVR32_OPC_LDC_W2,
mgl@1371
 28039
+  AVR32_OPC_LDC_W3,
mgl@1371
 28040
+  AVR32_OPC_LDC0_D,
mgl@1371
 28041
+  AVR32_OPC_LDC0_W,
mgl@1371
 28042
+  AVR32_OPC_LDCM_D,
mgl@1371
 28043
+  AVR32_OPC_LDCM_D_PU,
mgl@1371
 28044
+  AVR32_OPC_LDCM_W,
mgl@1371
 28045
+  AVR32_OPC_LDCM_W_PU,
mgl@1371
 28046
+  AVR32_OPC_LDDPC,
mgl@1371
 28047
+  AVR32_OPC_LDDPC_EXT,
mgl@1371
 28048
+  AVR32_OPC_LDDSP,
mgl@1371
 28049
+  AVR32_OPC_LDINS_B,
mgl@1371
 28050
+  AVR32_OPC_LDINS_H,
mgl@1371
 28051
+  AVR32_OPC_LDM,
mgl@1371
 28052
+  AVR32_OPC_LDMTS,
mgl@1371
 28053
+  AVR32_OPC_LDMTS_PU,
mgl@1371
 28054
+  AVR32_OPC_LDSWP_SH,
mgl@1371
 28055
+  AVR32_OPC_LDSWP_UH,
mgl@1371
 28056
+  AVR32_OPC_LDSWP_W,
mgl@1371
 28057
+  AVR32_OPC_LSL1,
mgl@1371
 28058
+  AVR32_OPC_LSL3,
mgl@1371
 28059
+  AVR32_OPC_LSL2,
mgl@1371
 28060
+  AVR32_OPC_LSR1,
mgl@1371
 28061
+  AVR32_OPC_LSR3,
mgl@1371
 28062
+  AVR32_OPC_LSR2,
mgl@1371
 28063
+  AVR32_OPC_MAC,
mgl@1371
 28064
+  AVR32_OPC_MACHH_D,
mgl@1371
 28065
+  AVR32_OPC_MACHH_W,
mgl@1371
 28066
+  AVR32_OPC_MACS_D,
mgl@1371
 28067
+  AVR32_OPC_MACSATHH_W,
mgl@1371
 28068
+  AVR32_OPC_MACUD,
mgl@1371
 28069
+  AVR32_OPC_MACWH_D,
mgl@1371
 28070
+  AVR32_OPC_MAX,
mgl@1371
 28071
+  AVR32_OPC_MCALL,
mgl@1371
 28072
+  AVR32_OPC_MFDR,
mgl@1371
 28073
+  AVR32_OPC_MFSR,
mgl@1371
 28074
+  AVR32_OPC_MIN,
mgl@1371
 28075
+  AVR32_OPC_MOV3,
mgl@1371
 28076
+  AVR32_OPC_MOV1,
mgl@1371
 28077
+  AVR32_OPC_MOV2,
mgl@1371
 28078
+  AVR32_OPC_MOVEQ1,
mgl@1371
 28079
+  AVR32_OPC_MOVNE1,
mgl@1371
 28080
+  AVR32_OPC_MOVCC1,
mgl@1371
 28081
+  AVR32_OPC_MOVCS1,
mgl@1371
 28082
+  AVR32_OPC_MOVGE1,
mgl@1371
 28083
+  AVR32_OPC_MOVLT1,
mgl@1371
 28084
+  AVR32_OPC_MOVMI1,
mgl@1371
 28085
+  AVR32_OPC_MOVPL1,
mgl@1371
 28086
+  AVR32_OPC_MOVLS1,
mgl@1371
 28087
+  AVR32_OPC_MOVGT1,
mgl@1371
 28088
+  AVR32_OPC_MOVLE1,
mgl@1371
 28089
+  AVR32_OPC_MOVHI1,
mgl@1371
 28090
+  AVR32_OPC_MOVVS1,
mgl@1371
 28091
+  AVR32_OPC_MOVVC1,
mgl@1371
 28092
+  AVR32_OPC_MOVQS1,
mgl@1371
 28093
+  AVR32_OPC_MOVAL1,
mgl@1371
 28094
+  AVR32_OPC_MOVEQ2,
mgl@1371
 28095
+  AVR32_OPC_MOVNE2,
mgl@1371
 28096
+  AVR32_OPC_MOVCC2,
mgl@1371
 28097
+  AVR32_OPC_MOVCS2,
mgl@1371
 28098
+  AVR32_OPC_MOVGE2,
mgl@1371
 28099
+  AVR32_OPC_MOVLT2,
mgl@1371
 28100
+  AVR32_OPC_MOVMI2,
mgl@1371
 28101
+  AVR32_OPC_MOVPL2,
mgl@1371
 28102
+  AVR32_OPC_MOVLS2,
mgl@1371
 28103
+  AVR32_OPC_MOVGT2,
mgl@1371
 28104
+  AVR32_OPC_MOVLE2,
mgl@1371
 28105
+  AVR32_OPC_MOVHI2,
mgl@1371
 28106
+  AVR32_OPC_MOVVS2,
mgl@1371
 28107
+  AVR32_OPC_MOVVC2,
mgl@1371
 28108
+  AVR32_OPC_MOVQS2,
mgl@1371
 28109
+  AVR32_OPC_MOVAL2,
mgl@1371
 28110
+  AVR32_OPC_MTDR,
mgl@1371
 28111
+  AVR32_OPC_MTSR,
mgl@1371
 28112
+  AVR32_OPC_MUL1,
mgl@1371
 28113
+  AVR32_OPC_MUL2,
mgl@1371
 28114
+  AVR32_OPC_MUL3,
mgl@1371
 28115
+  AVR32_OPC_MULHH_W,
mgl@1371
 28116
+  AVR32_OPC_MULNHH_W,
mgl@1371
 28117
+  AVR32_OPC_MULNWH_D,
mgl@1371
 28118
+  AVR32_OPC_MULSD,
mgl@1371
 28119
+  AVR32_OPC_MULSATHH_H,
mgl@1371
 28120
+  AVR32_OPC_MULSATHH_W,
mgl@1371
 28121
+  AVR32_OPC_MULSATRNDHH_H,
mgl@1371
 28122
+  AVR32_OPC_MULSATRNDWH_W,
mgl@1371
 28123
+  AVR32_OPC_MULSATWH_W,
mgl@1371
 28124
+  AVR32_OPC_MULU_D,
mgl@1371
 28125
+  AVR32_OPC_MULWH_D,
mgl@1371
 28126
+  AVR32_OPC_MUSFR,
mgl@1371
 28127
+  AVR32_OPC_MUSTR,
mgl@1371
 28128
+  AVR32_OPC_MVCR_D,
mgl@1371
 28129
+  AVR32_OPC_MVCR_W,
mgl@1371
 28130
+  AVR32_OPC_MVRC_D,
mgl@1371
 28131
+  AVR32_OPC_MVRC_W,
mgl@1371
 28132
+  AVR32_OPC_NEG,
mgl@1371
 28133
+  AVR32_OPC_NOP,
mgl@1371
 28134
+  AVR32_OPC_OR1,
mgl@1371
 28135
+  AVR32_OPC_OR2,
mgl@1371
 28136
+  AVR32_OPC_OR3,
mgl@1371
 28137
+  AVR32_OPC_ORH,
mgl@1371
 28138
+  AVR32_OPC_ORL,
mgl@1371
 28139
+  AVR32_OPC_PABS_SB,
mgl@1371
 28140
+  AVR32_OPC_PABS_SH,
mgl@1371
 28141
+  AVR32_OPC_PACKSH_SB,
mgl@1371
 28142
+  AVR32_OPC_PACKSH_UB,
mgl@1371
 28143
+  AVR32_OPC_PACKW_SH,
mgl@1371
 28144
+  AVR32_OPC_PADD_B,
mgl@1371
 28145
+  AVR32_OPC_PADD_H,
mgl@1371
 28146
+  AVR32_OPC_PADDH_SH,
mgl@1371
 28147
+  AVR32_OPC_PADDH_UB,
mgl@1371
 28148
+  AVR32_OPC_PADDS_SB,
mgl@1371
 28149
+  AVR32_OPC_PADDS_SH,
mgl@1371
 28150
+  AVR32_OPC_PADDS_UB,
mgl@1371
 28151
+  AVR32_OPC_PADDS_UH,
mgl@1371
 28152
+  AVR32_OPC_PADDSUB_H,
mgl@1371
 28153
+  AVR32_OPC_PADDSUBH_SH,
mgl@1371
 28154
+  AVR32_OPC_PADDSUBS_SH,
mgl@1371
 28155
+  AVR32_OPC_PADDSUBS_UH,
mgl@1371
 28156
+  AVR32_OPC_PADDX_H,
mgl@1371
 28157
+  AVR32_OPC_PADDXH_SH,
mgl@1371
 28158
+  AVR32_OPC_PADDXS_SH,
mgl@1371
 28159
+  AVR32_OPC_PADDXS_UH,
mgl@1371
 28160
+  AVR32_OPC_PASR_B,
mgl@1371
 28161
+  AVR32_OPC_PASR_H,
mgl@1371
 28162
+  AVR32_OPC_PAVG_SH,
mgl@1371
 28163
+  AVR32_OPC_PAVG_UB,
mgl@1371
 28164
+  AVR32_OPC_PLSL_B,
mgl@1371
 28165
+  AVR32_OPC_PLSL_H,
mgl@1371
 28166
+  AVR32_OPC_PLSR_B,
mgl@1371
 28167
+  AVR32_OPC_PLSR_H,
mgl@1371
 28168
+  AVR32_OPC_PMAX_SH,
mgl@1371
 28169
+  AVR32_OPC_PMAX_UB,
mgl@1371
 28170
+  AVR32_OPC_PMIN_SH,
mgl@1371
 28171
+  AVR32_OPC_PMIN_UB,
mgl@1371
 28172
+  AVR32_OPC_POPJC,
mgl@1371
 28173
+  AVR32_OPC_POPM,
mgl@1371
 28174
+  AVR32_OPC_POPM_E,
mgl@1371
 28175
+  AVR32_OPC_PREF,
mgl@1371
 28176
+  AVR32_OPC_PSAD,
mgl@1371
 28177
+  AVR32_OPC_PSUB_B,
mgl@1371
 28178
+  AVR32_OPC_PSUB_H,
mgl@1371
 28179
+  AVR32_OPC_PSUBADD_H,
mgl@1371
 28180
+  AVR32_OPC_PSUBADDH_SH,
mgl@1371
 28181
+  AVR32_OPC_PSUBADDS_SH,
mgl@1371
 28182
+  AVR32_OPC_PSUBADDS_UH,
mgl@1371
 28183
+  AVR32_OPC_PSUBH_SH,
mgl@1371
 28184
+  AVR32_OPC_PSUBH_UB,
mgl@1371
 28185
+  AVR32_OPC_PSUBS_SB,
mgl@1371
 28186
+  AVR32_OPC_PSUBS_SH,
mgl@1371
 28187
+  AVR32_OPC_PSUBS_UB,
mgl@1371
 28188
+  AVR32_OPC_PSUBS_UH,
mgl@1371
 28189
+  AVR32_OPC_PSUBX_H,
mgl@1371
 28190
+  AVR32_OPC_PSUBXH_SH,
mgl@1371
 28191
+  AVR32_OPC_PSUBXS_SH,
mgl@1371
 28192
+  AVR32_OPC_PSUBXS_UH,
mgl@1371
 28193
+  AVR32_OPC_PUNPCKSB_H,
mgl@1371
 28194
+  AVR32_OPC_PUNPCKUB_H,
mgl@1371
 28195
+  AVR32_OPC_PUSHJC,
mgl@1371
 28196
+  AVR32_OPC_PUSHM,
mgl@1371
 28197
+  AVR32_OPC_PUSHM_E,
mgl@1371
 28198
+  AVR32_OPC_RCALL1,
mgl@1371
 28199
+  AVR32_OPC_RCALL2,
mgl@1371
 28200
+  AVR32_OPC_RETEQ,
mgl@1371
 28201
+  AVR32_OPC_RETNE,
mgl@1371
 28202
+  AVR32_OPC_RETCC,
mgl@1371
 28203
+  AVR32_OPC_RETCS,
mgl@1371
 28204
+  AVR32_OPC_RETGE,
mgl@1371
 28205
+  AVR32_OPC_RETLT,
mgl@1371
 28206
+  AVR32_OPC_RETMI,
mgl@1371
 28207
+  AVR32_OPC_RETPL,
mgl@1371
 28208
+  AVR32_OPC_RETLS,
mgl@1371
 28209
+  AVR32_OPC_RETGT,
mgl@1371
 28210
+  AVR32_OPC_RETLE,
mgl@1371
 28211
+  AVR32_OPC_RETHI,
mgl@1371
 28212
+  AVR32_OPC_RETVS,
mgl@1371
 28213
+  AVR32_OPC_RETVC,
mgl@1371
 28214
+  AVR32_OPC_RETQS,
mgl@1371
 28215
+  AVR32_OPC_RETAL,
mgl@1371
 28216
+  AVR32_OPC_RETD,
mgl@1371
 28217
+  AVR32_OPC_RETE,
mgl@1371
 28218
+  AVR32_OPC_RETJ,
mgl@1371
 28219
+  AVR32_OPC_RETS,
mgl@1371
 28220
+  AVR32_OPC_RJMP,
mgl@1371
 28221
+  AVR32_OPC_ROL,
mgl@1371
 28222
+  AVR32_OPC_ROR,
mgl@1371
 28223
+  AVR32_OPC_RSUB1,
mgl@1371
 28224
+  AVR32_OPC_RSUB2,
mgl@1371
 28225
+  AVR32_OPC_SATADD_H,
mgl@1371
 28226
+  AVR32_OPC_SATADD_W,
mgl@1371
 28227
+  AVR32_OPC_SATRNDS,
mgl@1371
 28228
+  AVR32_OPC_SATRNDU,
mgl@1371
 28229
+  AVR32_OPC_SATS,
mgl@1371
 28230
+  AVR32_OPC_SATSUB_H,
mgl@1371
 28231
+  AVR32_OPC_SATSUB_W1,
mgl@1371
 28232
+  AVR32_OPC_SATSUB_W2,
mgl@1371
 28233
+  AVR32_OPC_SATU,
mgl@1371
 28234
+  AVR32_OPC_SBC,
mgl@1371
 28235
+  AVR32_OPC_SBR,
mgl@1371
 28236
+  AVR32_OPC_SCALL,
mgl@1371
 28237
+  AVR32_OPC_SCR,
mgl@1371
 28238
+  AVR32_OPC_SLEEP,
mgl@1371
 28239
+  AVR32_OPC_SREQ,
mgl@1371
 28240
+  AVR32_OPC_SRNE,
mgl@1371
 28241
+  AVR32_OPC_SRCC,
mgl@1371
 28242
+  AVR32_OPC_SRCS,
mgl@1371
 28243
+  AVR32_OPC_SRGE,
mgl@1371
 28244
+  AVR32_OPC_SRLT,
mgl@1371
 28245
+  AVR32_OPC_SRMI,
mgl@1371
 28246
+  AVR32_OPC_SRPL,
mgl@1371
 28247
+  AVR32_OPC_SRLS,
mgl@1371
 28248
+  AVR32_OPC_SRGT,
mgl@1371
 28249
+  AVR32_OPC_SRLE,
mgl@1371
 28250
+  AVR32_OPC_SRHI,
mgl@1371
 28251
+  AVR32_OPC_SRVS,
mgl@1371
 28252
+  AVR32_OPC_SRVC,
mgl@1371
 28253
+  AVR32_OPC_SRQS,
mgl@1371
 28254
+  AVR32_OPC_SRAL,
mgl@1371
 28255
+  AVR32_OPC_SSRF,
mgl@1371
 28256
+  AVR32_OPC_ST_B1,
mgl@1371
 28257
+  AVR32_OPC_ST_B2,
mgl@1371
 28258
+  AVR32_OPC_ST_B5,
mgl@1371
 28259
+  AVR32_OPC_ST_B3,
mgl@1371
 28260
+  AVR32_OPC_ST_B4,
mgl@1371
 28261
+  AVR32_OPC_ST_D1,
mgl@1371
 28262
+  AVR32_OPC_ST_D2,
mgl@1371
 28263
+  AVR32_OPC_ST_D3,
mgl@1371
 28264
+  AVR32_OPC_ST_D5,
mgl@1371
 28265
+  AVR32_OPC_ST_D4,
mgl@1371
 28266
+  AVR32_OPC_ST_H1,
mgl@1371
 28267
+  AVR32_OPC_ST_H2,
mgl@1371
 28268
+  AVR32_OPC_ST_H5,
mgl@1371
 28269
+  AVR32_OPC_ST_H3,
mgl@1371
 28270
+  AVR32_OPC_ST_H4,
mgl@1371
 28271
+  AVR32_OPC_ST_W1,
mgl@1371
 28272
+  AVR32_OPC_ST_W2,
mgl@1371
 28273
+  AVR32_OPC_ST_W5,
mgl@1371
 28274
+  AVR32_OPC_ST_W3,
mgl@1371
 28275
+  AVR32_OPC_ST_W4,
mgl@1371
 28276
+  AVR32_OPC_STC_D1,
mgl@1371
 28277
+  AVR32_OPC_STC_D2,
mgl@1371
 28278
+  AVR32_OPC_STC_D3,
mgl@1371
 28279
+  AVR32_OPC_STC_W1,
mgl@1371
 28280
+  AVR32_OPC_STC_W2,
mgl@1371
 28281
+  AVR32_OPC_STC_W3,
mgl@1371
 28282
+  AVR32_OPC_STC0_D,
mgl@1371
 28283
+  AVR32_OPC_STC0_W,
mgl@1371
 28284
+  AVR32_OPC_STCM_D,
mgl@1371
 28285
+  AVR32_OPC_STCM_D_PU,
mgl@1371
 28286
+  AVR32_OPC_STCM_W,
mgl@1371
 28287
+  AVR32_OPC_STCM_W_PU,
mgl@1371
 28288
+  AVR32_OPC_STCOND,
mgl@1371
 28289
+  AVR32_OPC_STDSP,
mgl@1371
 28290
+  AVR32_OPC_STHH_W2,
mgl@1371
 28291
+  AVR32_OPC_STHH_W1,
mgl@1371
 28292
+  AVR32_OPC_STM,
mgl@1371
 28293
+  AVR32_OPC_STM_PU,
mgl@1371
 28294
+  AVR32_OPC_STMTS,
mgl@1371
 28295
+  AVR32_OPC_STMTS_PU,
mgl@1371
 28296
+  AVR32_OPC_STSWP_H,
mgl@1371
 28297
+  AVR32_OPC_STSWP_W,
mgl@1371
 28298
+  AVR32_OPC_SUB1,
mgl@1371
 28299
+  AVR32_OPC_SUB2,
mgl@1371
 28300
+  AVR32_OPC_SUB5,
mgl@1371
 28301
+  AVR32_OPC_SUB3_SP,
mgl@1371
 28302
+  AVR32_OPC_SUB3,
mgl@1371
 28303
+  AVR32_OPC_SUB4,
mgl@1371
 28304
+  AVR32_OPC_SUBEQ,
mgl@1371
 28305
+  AVR32_OPC_SUBNE,
mgl@1371
 28306
+  AVR32_OPC_SUBCC,
mgl@1371
 28307
+  AVR32_OPC_SUBCS,
mgl@1371
 28308
+  AVR32_OPC_SUBGE,
mgl@1371
 28309
+  AVR32_OPC_SUBLT,
mgl@1371
 28310
+  AVR32_OPC_SUBMI,
mgl@1371
 28311
+  AVR32_OPC_SUBPL,
mgl@1371
 28312
+  AVR32_OPC_SUBLS,
mgl@1371
 28313
+  AVR32_OPC_SUBGT,
mgl@1371
 28314
+  AVR32_OPC_SUBLE,
mgl@1371
 28315
+  AVR32_OPC_SUBHI,
mgl@1371
 28316
+  AVR32_OPC_SUBVS,
mgl@1371
 28317
+  AVR32_OPC_SUBVC,
mgl@1371
 28318
+  AVR32_OPC_SUBQS,
mgl@1371
 28319
+  AVR32_OPC_SUBAL,
mgl@1371
 28320
+  AVR32_OPC_SUBFEQ,
mgl@1371
 28321
+  AVR32_OPC_SUBFNE,
mgl@1371
 28322
+  AVR32_OPC_SUBFCC,
mgl@1371
 28323
+  AVR32_OPC_SUBFCS,
mgl@1371
 28324
+  AVR32_OPC_SUBFGE,
mgl@1371
 28325
+  AVR32_OPC_SUBFLT,
mgl@1371
 28326
+  AVR32_OPC_SUBFMI,
mgl@1371
 28327
+  AVR32_OPC_SUBFPL,
mgl@1371
 28328
+  AVR32_OPC_SUBFLS,
mgl@1371
 28329
+  AVR32_OPC_SUBFGT,
mgl@1371
 28330
+  AVR32_OPC_SUBFLE,
mgl@1371
 28331
+  AVR32_OPC_SUBFHI,
mgl@1371
 28332
+  AVR32_OPC_SUBFVS,
mgl@1371
 28333
+  AVR32_OPC_SUBFVC,
mgl@1371
 28334
+  AVR32_OPC_SUBFQS,
mgl@1371
 28335
+  AVR32_OPC_SUBFAL,
mgl@1371
 28336
+  AVR32_OPC_SUBHH_W,
mgl@1371
 28337
+  AVR32_OPC_SWAP_B,
mgl@1371
 28338
+  AVR32_OPC_SWAP_BH,
mgl@1371
 28339
+  AVR32_OPC_SWAP_H,
mgl@1371
 28340
+  AVR32_OPC_SYNC,
mgl@1371
 28341
+  AVR32_OPC_TLBR,
mgl@1371
 28342
+  AVR32_OPC_TLBS,
mgl@1371
 28343
+  AVR32_OPC_TLBW,
mgl@1371
 28344
+  AVR32_OPC_TNBZ,
mgl@1371
 28345
+  AVR32_OPC_TST,
mgl@1371
 28346
+  AVR32_OPC_XCHG,
mgl@1371
 28347
+  AVR32_OPC_MEMC,
mgl@1371
 28348
+  AVR32_OPC_MEMS,
mgl@1371
 28349
+  AVR32_OPC_MEMT,
mgl@1371
 28350
+  AVR32_OPC_BFEXTS,
mgl@1371
 28351
+  AVR32_OPC_BFEXTU,
mgl@1371
 28352
+  AVR32_OPC_BFINS,
mgl@1371
 28353
+  AVR32_OPC_RSUBEQ,
mgl@1371
 28354
+  AVR32_OPC_RSUBNE,
mgl@1371
 28355
+  AVR32_OPC_RSUBCC,
mgl@1371
 28356
+  AVR32_OPC_RSUBCS,
mgl@1371
 28357
+  AVR32_OPC_RSUBGE,
mgl@1371
 28358
+  AVR32_OPC_RSUBLT,
mgl@1371
 28359
+  AVR32_OPC_RSUBMI,
mgl@1371
 28360
+  AVR32_OPC_RSUBPL,
mgl@1371
 28361
+  AVR32_OPC_RSUBLS,
mgl@1371
 28362
+  AVR32_OPC_RSUBGT,
mgl@1371
 28363
+  AVR32_OPC_RSUBLE,
mgl@1371
 28364
+  AVR32_OPC_RSUBHI,
mgl@1371
 28365
+  AVR32_OPC_RSUBVS,
mgl@1371
 28366
+  AVR32_OPC_RSUBVC,
mgl@1371
 28367
+  AVR32_OPC_RSUBQS,
mgl@1371
 28368
+  AVR32_OPC_RSUBAL,
mgl@1371
 28369
+  AVR32_OPC_ADDEQ,
mgl@1371
 28370
+  AVR32_OPC_ADDNE,
mgl@1371
 28371
+  AVR32_OPC_ADDCC,
mgl@1371
 28372
+  AVR32_OPC_ADDCS,
mgl@1371
 28373
+  AVR32_OPC_ADDGE,
mgl@1371
 28374
+  AVR32_OPC_ADDLT,
mgl@1371
 28375
+  AVR32_OPC_ADDMI,
mgl@1371
 28376
+  AVR32_OPC_ADDPL,
mgl@1371
 28377
+  AVR32_OPC_ADDLS,
mgl@1371
 28378
+  AVR32_OPC_ADDGT,
mgl@1371
 28379
+  AVR32_OPC_ADDLE,
mgl@1371
 28380
+  AVR32_OPC_ADDHI,
mgl@1371
 28381
+  AVR32_OPC_ADDVS,
mgl@1371
 28382
+  AVR32_OPC_ADDVC,
mgl@1371
 28383
+  AVR32_OPC_ADDQS,
mgl@1371
 28384
+  AVR32_OPC_ADDAL,
mgl@1371
 28385
+  AVR32_OPC_SUB2EQ,
mgl@1371
 28386
+  AVR32_OPC_SUB2NE,
mgl@1371
 28387
+  AVR32_OPC_SUB2CC,
mgl@1371
 28388
+  AVR32_OPC_SUB2CS,
mgl@1371
 28389
+  AVR32_OPC_SUB2GE,
mgl@1371
 28390
+  AVR32_OPC_SUB2LT,
mgl@1371
 28391
+  AVR32_OPC_SUB2MI,
mgl@1371
 28392
+  AVR32_OPC_SUB2PL,
mgl@1371
 28393
+  AVR32_OPC_SUB2LS,
mgl@1371
 28394
+  AVR32_OPC_SUB2GT,
mgl@1371
 28395
+  AVR32_OPC_SUB2LE,
mgl@1371
 28396
+  AVR32_OPC_SUB2HI,
mgl@1371
 28397
+  AVR32_OPC_SUB2VS,
mgl@1371
 28398
+  AVR32_OPC_SUB2VC,
mgl@1371
 28399
+  AVR32_OPC_SUB2QS,
mgl@1371
 28400
+  AVR32_OPC_SUB2AL,
mgl@1371
 28401
+  AVR32_OPC_ANDEQ,
mgl@1371
 28402
+  AVR32_OPC_ANDNE,
mgl@1371
 28403
+  AVR32_OPC_ANDCC,
mgl@1371
 28404
+  AVR32_OPC_ANDCS,
mgl@1371
 28405
+  AVR32_OPC_ANDGE,
mgl@1371
 28406
+  AVR32_OPC_ANDLT,
mgl@1371
 28407
+  AVR32_OPC_ANDMI,
mgl@1371
 28408
+  AVR32_OPC_ANDPL,
mgl@1371
 28409
+  AVR32_OPC_ANDLS,
mgl@1371
 28410
+  AVR32_OPC_ANDGT,
mgl@1371
 28411
+  AVR32_OPC_ANDLE,
mgl@1371
 28412
+  AVR32_OPC_ANDHI,
mgl@1371
 28413
+  AVR32_OPC_ANDVS,
mgl@1371
 28414
+  AVR32_OPC_ANDVC,
mgl@1371
 28415
+  AVR32_OPC_ANDQS,
mgl@1371
 28416
+  AVR32_OPC_ANDAL,
mgl@1371
 28417
+  AVR32_OPC_OREQ,
mgl@1371
 28418
+  AVR32_OPC_ORNE,
mgl@1371
 28419
+  AVR32_OPC_ORCC,
mgl@1371
 28420
+  AVR32_OPC_ORCS,
mgl@1371
 28421
+  AVR32_OPC_ORGE,
mgl@1371
 28422
+  AVR32_OPC_ORLT,
mgl@1371
 28423
+  AVR32_OPC_ORMI,
mgl@1371
 28424
+  AVR32_OPC_ORPL,
mgl@1371
 28425
+  AVR32_OPC_ORLS,
mgl@1371
 28426
+  AVR32_OPC_ORGT,
mgl@1371
 28427
+  AVR32_OPC_ORLE,
mgl@1371
 28428
+  AVR32_OPC_ORHI,
mgl@1371
 28429
+  AVR32_OPC_ORVS,
mgl@1371
 28430
+  AVR32_OPC_ORVC,
mgl@1371
 28431
+  AVR32_OPC_ORQS,
mgl@1371
 28432
+  AVR32_OPC_ORAL,
mgl@1371
 28433
+  AVR32_OPC_EOREQ,
mgl@1371
 28434
+  AVR32_OPC_EORNE,
mgl@1371
 28435
+  AVR32_OPC_EORCC,
mgl@1371
 28436
+  AVR32_OPC_EORCS,
mgl@1371
 28437
+  AVR32_OPC_EORGE,
mgl@1371
 28438
+  AVR32_OPC_EORLT,
mgl@1371
 28439
+  AVR32_OPC_EORMI,
mgl@1371
 28440
+  AVR32_OPC_EORPL,
mgl@1371
 28441
+  AVR32_OPC_EORLS,
mgl@1371
 28442
+  AVR32_OPC_EORGT,
mgl@1371
 28443
+  AVR32_OPC_EORLE,
mgl@1371
 28444
+  AVR32_OPC_EORHI,
mgl@1371
 28445
+  AVR32_OPC_EORVS,
mgl@1371
 28446
+  AVR32_OPC_EORVC,
mgl@1371
 28447
+  AVR32_OPC_EORQS,
mgl@1371
 28448
+  AVR32_OPC_EORAL,
mgl@1371
 28449
+  AVR32_OPC_LD_WEQ,
mgl@1371
 28450
+  AVR32_OPC_LD_WNE,
mgl@1371
 28451
+  AVR32_OPC_LD_WCC,
mgl@1371
 28452
+  AVR32_OPC_LD_WCS,
mgl@1371
 28453
+  AVR32_OPC_LD_WGE,
mgl@1371
 28454
+  AVR32_OPC_LD_WLT,
mgl@1371
 28455
+  AVR32_OPC_LD_WMI,
mgl@1371
 28456
+  AVR32_OPC_LD_WPL,
mgl@1371
 28457
+  AVR32_OPC_LD_WLS,
mgl@1371
 28458
+  AVR32_OPC_LD_WGT,
mgl@1371
 28459
+  AVR32_OPC_LD_WLE,
mgl@1371
 28460
+  AVR32_OPC_LD_WHI,
mgl@1371
 28461
+  AVR32_OPC_LD_WVS,
mgl@1371
 28462
+  AVR32_OPC_LD_WVC,
mgl@1371
 28463
+  AVR32_OPC_LD_WQS,
mgl@1371
 28464
+  AVR32_OPC_LD_WAL,
mgl@1371
 28465
+  AVR32_OPC_LD_SHEQ,
mgl@1371
 28466
+  AVR32_OPC_LD_SHNE,
mgl@1371
 28467
+  AVR32_OPC_LD_SHCC,
mgl@1371
 28468
+  AVR32_OPC_LD_SHCS,
mgl@1371
 28469
+  AVR32_OPC_LD_SHGE,
mgl@1371
 28470
+  AVR32_OPC_LD_SHLT,
mgl@1371
 28471
+  AVR32_OPC_LD_SHMI,
mgl@1371
 28472
+  AVR32_OPC_LD_SHPL,
mgl@1371
 28473
+  AVR32_OPC_LD_SHLS,
mgl@1371
 28474
+  AVR32_OPC_LD_SHGT,
mgl@1371
 28475
+  AVR32_OPC_LD_SHLE,
mgl@1371
 28476
+  AVR32_OPC_LD_SHHI,
mgl@1371
 28477
+  AVR32_OPC_LD_SHVS,
mgl@1371
 28478
+  AVR32_OPC_LD_SHVC,
mgl@1371
 28479
+  AVR32_OPC_LD_SHQS,
mgl@1371
 28480
+  AVR32_OPC_LD_SHAL,
mgl@1371
 28481
+  AVR32_OPC_LD_UHEQ,
mgl@1371
 28482
+  AVR32_OPC_LD_UHNE,
mgl@1371
 28483
+  AVR32_OPC_LD_UHCC,
mgl@1371
 28484
+  AVR32_OPC_LD_UHCS,
mgl@1371
 28485
+  AVR32_OPC_LD_UHGE,
mgl@1371
 28486
+  AVR32_OPC_LD_UHLT,
mgl@1371
 28487
+  AVR32_OPC_LD_UHMI,
mgl@1371
 28488
+  AVR32_OPC_LD_UHPL,
mgl@1371
 28489
+  AVR32_OPC_LD_UHLS,
mgl@1371
 28490
+  AVR32_OPC_LD_UHGT,
mgl@1371
 28491
+  AVR32_OPC_LD_UHLE,
mgl@1371
 28492
+  AVR32_OPC_LD_UHHI,
mgl@1371
 28493
+  AVR32_OPC_LD_UHVS,
mgl@1371
 28494
+  AVR32_OPC_LD_UHVC,
mgl@1371
 28495
+  AVR32_OPC_LD_UHQS,
mgl@1371
 28496
+  AVR32_OPC_LD_UHAL,
mgl@1371
 28497
+  AVR32_OPC_LD_SBEQ,
mgl@1371
 28498
+  AVR32_OPC_LD_SBNE,
mgl@1371
 28499
+  AVR32_OPC_LD_SBCC,
mgl@1371
 28500
+  AVR32_OPC_LD_SBCS,
mgl@1371
 28501
+  AVR32_OPC_LD_SBGE,
mgl@1371
 28502
+  AVR32_OPC_LD_SBLT,
mgl@1371
 28503
+  AVR32_OPC_LD_SBMI,
mgl@1371
 28504
+  AVR32_OPC_LD_SBPL,
mgl@1371
 28505
+  AVR32_OPC_LD_SBLS,
mgl@1371
 28506
+  AVR32_OPC_LD_SBGT,
mgl@1371
 28507
+  AVR32_OPC_LD_SBLE,
mgl@1371
 28508
+  AVR32_OPC_LD_SBHI,
mgl@1371
 28509
+  AVR32_OPC_LD_SBVS,
mgl@1371
 28510
+  AVR32_OPC_LD_SBVC,
mgl@1371
 28511
+  AVR32_OPC_LD_SBQS,
mgl@1371
 28512
+  AVR32_OPC_LD_SBAL,
mgl@1371
 28513
+  AVR32_OPC_LD_UBEQ,
mgl@1371
 28514
+  AVR32_OPC_LD_UBNE,
mgl@1371
 28515
+  AVR32_OPC_LD_UBCC,
mgl@1371
 28516
+  AVR32_OPC_LD_UBCS,
mgl@1371
 28517
+  AVR32_OPC_LD_UBGE,
mgl@1371
 28518
+  AVR32_OPC_LD_UBLT,
mgl@1371
 28519
+  AVR32_OPC_LD_UBMI,
mgl@1371
 28520
+  AVR32_OPC_LD_UBPL,
mgl@1371
 28521
+  AVR32_OPC_LD_UBLS,
mgl@1371
 28522
+  AVR32_OPC_LD_UBGT,
mgl@1371
 28523
+  AVR32_OPC_LD_UBLE,
mgl@1371
 28524
+  AVR32_OPC_LD_UBHI,
mgl@1371
 28525
+  AVR32_OPC_LD_UBVS,
mgl@1371
 28526
+  AVR32_OPC_LD_UBVC,
mgl@1371
 28527
+  AVR32_OPC_LD_UBQS,
mgl@1371
 28528
+  AVR32_OPC_LD_UBAL,
mgl@1371
 28529
+  AVR32_OPC_ST_WEQ,
mgl@1371
 28530
+  AVR32_OPC_ST_WNE,
mgl@1371
 28531
+  AVR32_OPC_ST_WCC,
mgl@1371
 28532
+  AVR32_OPC_ST_WCS,
mgl@1371
 28533
+  AVR32_OPC_ST_WGE,
mgl@1371
 28534
+  AVR32_OPC_ST_WLT,
mgl@1371
 28535
+  AVR32_OPC_ST_WMI,
mgl@1371
 28536
+  AVR32_OPC_ST_WPL,
mgl@1371
 28537
+  AVR32_OPC_ST_WLS,
mgl@1371
 28538
+  AVR32_OPC_ST_WGT,
mgl@1371
 28539
+  AVR32_OPC_ST_WLE,
mgl@1371
 28540
+  AVR32_OPC_ST_WHI,
mgl@1371
 28541
+  AVR32_OPC_ST_WVS,
mgl@1371
 28542
+  AVR32_OPC_ST_WVC,
mgl@1371
 28543
+  AVR32_OPC_ST_WQS,
mgl@1371
 28544
+  AVR32_OPC_ST_WAL,
mgl@1371
 28545
+  AVR32_OPC_ST_HEQ,
mgl@1371
 28546
+  AVR32_OPC_ST_HNE,
mgl@1371
 28547
+  AVR32_OPC_ST_HCC,
mgl@1371
 28548
+  AVR32_OPC_ST_HCS,
mgl@1371
 28549
+  AVR32_OPC_ST_HGE,
mgl@1371
 28550
+  AVR32_OPC_ST_HLT,
mgl@1371
 28551
+  AVR32_OPC_ST_HMI,
mgl@1371
 28552
+  AVR32_OPC_ST_HPL,
mgl@1371
 28553
+  AVR32_OPC_ST_HLS,
mgl@1371
 28554
+  AVR32_OPC_ST_HGT,
mgl@1371
 28555
+  AVR32_OPC_ST_HLE,
mgl@1371
 28556
+  AVR32_OPC_ST_HHI,
mgl@1371
 28557
+  AVR32_OPC_ST_HVS,
mgl@1371
 28558
+  AVR32_OPC_ST_HVC,
mgl@1371
 28559
+  AVR32_OPC_ST_HQS,
mgl@1371
 28560
+  AVR32_OPC_ST_HAL,
mgl@1371
 28561
+  AVR32_OPC_ST_BEQ,
mgl@1371
 28562
+  AVR32_OPC_ST_BNE,
mgl@1371
 28563
+  AVR32_OPC_ST_BCC,
mgl@1371
 28564
+  AVR32_OPC_ST_BCS,
mgl@1371
 28565
+  AVR32_OPC_ST_BGE,
mgl@1371
 28566
+  AVR32_OPC_ST_BLT,
mgl@1371
 28567
+  AVR32_OPC_ST_BMI,
mgl@1371
 28568
+  AVR32_OPC_ST_BPL,
mgl@1371
 28569
+  AVR32_OPC_ST_BLS,
mgl@1371
 28570
+  AVR32_OPC_ST_BGT,
mgl@1371
 28571
+  AVR32_OPC_ST_BLE,
mgl@1371
 28572
+  AVR32_OPC_ST_BHI,
mgl@1371
 28573
+  AVR32_OPC_ST_BVS,
mgl@1371
 28574
+  AVR32_OPC_ST_BVC,
mgl@1371
 28575
+  AVR32_OPC_ST_BQS,
mgl@1371
 28576
+  AVR32_OPC_ST_BAL,
mgl@1371
 28577
+  AVR32_OPC_MOVH,
mgl@1371
 28578
+  AVR32_OPC__END_
mgl@1371
 28579
+};
mgl@1371
 28580
+#define AVR32_NR_OPCODES AVR32_OPC__END_
mgl@1371
 28581
+
mgl@1371
 28582
+enum avr32_syntax_type
mgl@1371
 28583
+{
mgl@1371
 28584
+  AVR32_SYNTAX_ABS,
mgl@1371
 28585
+  AVR32_SYNTAX_ACALL,
mgl@1371
 28586
+  AVR32_SYNTAX_ACR,
mgl@1371
 28587
+  AVR32_SYNTAX_ADC,
mgl@1371
 28588
+  AVR32_SYNTAX_ADD1,
mgl@1371
 28589
+  AVR32_SYNTAX_ADD2,
mgl@1371
 28590
+  AVR32_SYNTAX_ADDABS,
mgl@1371
 28591
+  AVR32_SYNTAX_ADDHH_W,
mgl@1371
 28592
+  AVR32_SYNTAX_AND1,
mgl@1371
 28593
+  AVR32_SYNTAX_AND2,
mgl@1371
 28594
+  AVR32_SYNTAX_AND3,
mgl@1371
 28595
+  AVR32_SYNTAX_ANDH,
mgl@1371
 28596
+  AVR32_SYNTAX_ANDH_COH,
mgl@1371
 28597
+  AVR32_SYNTAX_ANDL,
mgl@1371
 28598
+  AVR32_SYNTAX_ANDL_COH,
mgl@1371
 28599
+  AVR32_SYNTAX_ANDN,
mgl@1371
 28600
+  AVR32_SYNTAX_ASR1,
mgl@1371
 28601
+  AVR32_SYNTAX_ASR3,
mgl@1371
 28602
+  AVR32_SYNTAX_ASR2,
mgl@1371
 28603
+  AVR32_SYNTAX_BFEXTS,
mgl@1371
 28604
+  AVR32_SYNTAX_BFEXTU,
mgl@1371
 28605
+  AVR32_SYNTAX_BFINS,
mgl@1371
 28606
+  AVR32_SYNTAX_BLD,
mgl@1371
 28607
+  AVR32_SYNTAX_BREQ1,
mgl@1371
 28608
+  AVR32_SYNTAX_BRNE1,
mgl@1371
 28609
+  AVR32_SYNTAX_BRCC1,
mgl@1371
 28610
+  AVR32_SYNTAX_BRCS1,
mgl@1371
 28611
+  AVR32_SYNTAX_BRGE1,
mgl@1371
 28612
+  AVR32_SYNTAX_BRLT1,
mgl@1371
 28613
+  AVR32_SYNTAX_BRMI1,
mgl@1371
 28614
+  AVR32_SYNTAX_BRPL1,
mgl@1371
 28615
+  AVR32_SYNTAX_BRHS1,
mgl@1371
 28616
+  AVR32_SYNTAX_BRLO1,
mgl@1371
 28617
+  AVR32_SYNTAX_BREQ2,
mgl@1371
 28618
+  AVR32_SYNTAX_BRNE2,
mgl@1371
 28619
+  AVR32_SYNTAX_BRCC2,
mgl@1371
 28620
+  AVR32_SYNTAX_BRCS2,
mgl@1371
 28621
+  AVR32_SYNTAX_BRGE2,
mgl@1371
 28622
+  AVR32_SYNTAX_BRLT2,
mgl@1371
 28623
+  AVR32_SYNTAX_BRMI2,
mgl@1371
 28624
+  AVR32_SYNTAX_BRPL2,
mgl@1371
 28625
+  AVR32_SYNTAX_BRLS,
mgl@1371
 28626
+  AVR32_SYNTAX_BRGT,
mgl@1371
 28627
+  AVR32_SYNTAX_BRLE,
mgl@1371
 28628
+  AVR32_SYNTAX_BRHI,
mgl@1371
 28629
+  AVR32_SYNTAX_BRVS,
mgl@1371
 28630
+  AVR32_SYNTAX_BRVC,
mgl@1371
 28631
+  AVR32_SYNTAX_BRQS,
mgl@1371
 28632
+  AVR32_SYNTAX_BRAL,
mgl@1371
 28633
+  AVR32_SYNTAX_BRHS2,
mgl@1371
 28634
+  AVR32_SYNTAX_BRLO2,
mgl@1371
 28635
+  AVR32_SYNTAX_BREAKPOINT,
mgl@1371
 28636
+  AVR32_SYNTAX_BREV,
mgl@1371
 28637
+  AVR32_SYNTAX_BST,
mgl@1371
 28638
+  AVR32_SYNTAX_CACHE,
mgl@1371
 28639
+  AVR32_SYNTAX_CASTS_B,
mgl@1371
 28640
+  AVR32_SYNTAX_CASTS_H,
mgl@1371
 28641
+  AVR32_SYNTAX_CASTU_B,
mgl@1371
 28642
+  AVR32_SYNTAX_CASTU_H,
mgl@1371
 28643
+  AVR32_SYNTAX_CBR,
mgl@1371
 28644
+  AVR32_SYNTAX_CLZ,
mgl@1371
 28645
+  AVR32_SYNTAX_COM,
mgl@1371
 28646
+  AVR32_SYNTAX_COP,
mgl@1371
 28647
+  AVR32_SYNTAX_CP_B,
mgl@1371
 28648
+  AVR32_SYNTAX_CP_H,
mgl@1371
 28649
+  AVR32_SYNTAX_CP_W1,
mgl@1371
 28650
+  AVR32_SYNTAX_CP_W2,
mgl@1371
 28651
+  AVR32_SYNTAX_CP_W3,
mgl@1371
 28652
+  AVR32_SYNTAX_CPC1,
mgl@1371
 28653
+  AVR32_SYNTAX_CPC2,
mgl@1371
 28654
+  AVR32_SYNTAX_CSRF,
mgl@1371
 28655
+  AVR32_SYNTAX_CSRFCZ,
mgl@1371
 28656
+  AVR32_SYNTAX_DIVS,
mgl@1371
 28657
+  AVR32_SYNTAX_DIVU,
mgl@1371
 28658
+  AVR32_SYNTAX_EOR1,
mgl@1371
 28659
+  AVR32_SYNTAX_EOR2,
mgl@1371
 28660
+  AVR32_SYNTAX_EOR3,
mgl@1371
 28661
+  AVR32_SYNTAX_EORL,
mgl@1371
 28662
+  AVR32_SYNTAX_EORH,
mgl@1371
 28663
+  AVR32_SYNTAX_FRS,
mgl@1371
 28664
+  AVR32_SYNTAX_ICALL,
mgl@1371
 28665
+  AVR32_SYNTAX_INCJOSP,
mgl@1371
 28666
+  AVR32_SYNTAX_LD_D1,
mgl@1371
 28667
+  AVR32_SYNTAX_LD_D2,
mgl@1371
 28668
+  AVR32_SYNTAX_LD_D3,
mgl@1371
 28669
+  AVR32_SYNTAX_LD_D5,
mgl@1371
 28670
+  AVR32_SYNTAX_LD_D4,
mgl@1371
 28671
+  AVR32_SYNTAX_LD_SB2,
mgl@1371
 28672
+  AVR32_SYNTAX_LD_SB1,
mgl@1371
 28673
+  AVR32_SYNTAX_LD_UB1,
mgl@1371
 28674
+  AVR32_SYNTAX_LD_UB2,
mgl@1371
 28675
+  AVR32_SYNTAX_LD_UB5,
mgl@1371
 28676
+  AVR32_SYNTAX_LD_UB3,
mgl@1371
 28677
+  AVR32_SYNTAX_LD_UB4,
mgl@1371
 28678
+  AVR32_SYNTAX_LD_SH1,
mgl@1371
 28679
+  AVR32_SYNTAX_LD_SH2,
mgl@1371
 28680
+  AVR32_SYNTAX_LD_SH5,
mgl@1371
 28681
+  AVR32_SYNTAX_LD_SH3,
mgl@1371
 28682
+  AVR32_SYNTAX_LD_SH4,
mgl@1371
 28683
+  AVR32_SYNTAX_LD_UH1,
mgl@1371
 28684
+  AVR32_SYNTAX_LD_UH2,
mgl@1371
 28685
+  AVR32_SYNTAX_LD_UH5,
mgl@1371
 28686
+  AVR32_SYNTAX_LD_UH3,
mgl@1371
 28687
+  AVR32_SYNTAX_LD_UH4,
mgl@1371
 28688
+  AVR32_SYNTAX_LD_W1,
mgl@1371
 28689
+  AVR32_SYNTAX_LD_W2,
mgl@1371
 28690
+  AVR32_SYNTAX_LD_W5,
mgl@1371
 28691
+  AVR32_SYNTAX_LD_W6,
mgl@1371
 28692
+  AVR32_SYNTAX_LD_W3,
mgl@1371
 28693
+  AVR32_SYNTAX_LD_W4,
mgl@1371
 28694
+  AVR32_SYNTAX_LDC_D1,
mgl@1371
 28695
+  AVR32_SYNTAX_LDC_D2,
mgl@1371
 28696
+  AVR32_SYNTAX_LDC_D3,
mgl@1371
 28697
+  AVR32_SYNTAX_LDC_W1,
mgl@1371
 28698
+  AVR32_SYNTAX_LDC_W2,
mgl@1371
 28699
+  AVR32_SYNTAX_LDC_W3,
mgl@1371
 28700
+  AVR32_SYNTAX_LDC0_D,
mgl@1371
 28701
+  AVR32_SYNTAX_LDC0_W,
mgl@1371
 28702
+  AVR32_SYNTAX_LDCM_D,
mgl@1371
 28703
+  AVR32_SYNTAX_LDCM_D_PU,
mgl@1371
 28704
+  AVR32_SYNTAX_LDCM_W,
mgl@1371
 28705
+  AVR32_SYNTAX_LDCM_W_PU,
mgl@1371
 28706
+  AVR32_SYNTAX_LDDPC,
mgl@1371
 28707
+  AVR32_SYNTAX_LDDPC_EXT,
mgl@1371
 28708
+  AVR32_SYNTAX_LDDSP,
mgl@1371
 28709
+  AVR32_SYNTAX_LDINS_B,
mgl@1371
 28710
+  AVR32_SYNTAX_LDINS_H,
mgl@1371
 28711
+  AVR32_SYNTAX_LDM,
mgl@1371
 28712
+  AVR32_SYNTAX_LDMTS,
mgl@1371
 28713
+  AVR32_SYNTAX_LDMTS_PU,
mgl@1371
 28714
+  AVR32_SYNTAX_LDSWP_SH,
mgl@1371
 28715
+  AVR32_SYNTAX_LDSWP_UH,
mgl@1371
 28716
+  AVR32_SYNTAX_LDSWP_W,
mgl@1371
 28717
+  AVR32_SYNTAX_LSL1,
mgl@1371
 28718
+  AVR32_SYNTAX_LSL3,
mgl@1371
 28719
+  AVR32_SYNTAX_LSL2,
mgl@1371
 28720
+  AVR32_SYNTAX_LSR1,
mgl@1371
 28721
+  AVR32_SYNTAX_LSR3,
mgl@1371
 28722
+  AVR32_SYNTAX_LSR2,
mgl@1371
 28723
+  AVR32_SYNTAX_MAC,
mgl@1371
 28724
+  AVR32_SYNTAX_MACHH_D,
mgl@1371
 28725
+  AVR32_SYNTAX_MACHH_W,
mgl@1371
 28726
+  AVR32_SYNTAX_MACS_D,
mgl@1371
 28727
+  AVR32_SYNTAX_MACSATHH_W,
mgl@1371
 28728
+  AVR32_SYNTAX_MACUD,
mgl@1371
 28729
+  AVR32_SYNTAX_MACWH_D,
mgl@1371
 28730
+  AVR32_SYNTAX_MAX,
mgl@1371
 28731
+  AVR32_SYNTAX_MCALL,
mgl@1371
 28732
+  AVR32_SYNTAX_MFDR,
mgl@1371
 28733
+  AVR32_SYNTAX_MFSR,
mgl@1371
 28734
+  AVR32_SYNTAX_MIN,
mgl@1371
 28735
+  AVR32_SYNTAX_MOV3,
mgl@1371
 28736
+  AVR32_SYNTAX_MOV1,
mgl@1371
 28737
+  AVR32_SYNTAX_MOV2,
mgl@1371
 28738
+  AVR32_SYNTAX_MOVEQ1,
mgl@1371
 28739
+  AVR32_SYNTAX_MOVNE1,
mgl@1371
 28740
+  AVR32_SYNTAX_MOVCC1,
mgl@1371
 28741
+  AVR32_SYNTAX_MOVCS1,
mgl@1371
 28742
+  AVR32_SYNTAX_MOVGE1,
mgl@1371
 28743
+  AVR32_SYNTAX_MOVLT1,
mgl@1371
 28744
+  AVR32_SYNTAX_MOVMI1,
mgl@1371
 28745
+  AVR32_SYNTAX_MOVPL1,
mgl@1371
 28746
+  AVR32_SYNTAX_MOVLS1,
mgl@1371
 28747
+  AVR32_SYNTAX_MOVGT1,
mgl@1371
 28748
+  AVR32_SYNTAX_MOVLE1,
mgl@1371
 28749
+  AVR32_SYNTAX_MOVHI1,
mgl@1371
 28750
+  AVR32_SYNTAX_MOVVS1,
mgl@1371
 28751
+  AVR32_SYNTAX_MOVVC1,
mgl@1371
 28752
+  AVR32_SYNTAX_MOVQS1,
mgl@1371
 28753
+  AVR32_SYNTAX_MOVAL1,
mgl@1371
 28754
+  AVR32_SYNTAX_MOVHS1,
mgl@1371
 28755
+  AVR32_SYNTAX_MOVLO1,
mgl@1371
 28756
+  AVR32_SYNTAX_MOVEQ2,
mgl@1371
 28757
+  AVR32_SYNTAX_MOVNE2,
mgl@1371
 28758
+  AVR32_SYNTAX_MOVCC2,
mgl@1371
 28759
+  AVR32_SYNTAX_MOVCS2,
mgl@1371
 28760
+  AVR32_SYNTAX_MOVGE2,
mgl@1371
 28761
+  AVR32_SYNTAX_MOVLT2,
mgl@1371
 28762
+  AVR32_SYNTAX_MOVMI2,
mgl@1371
 28763
+  AVR32_SYNTAX_MOVPL2,
mgl@1371
 28764
+  AVR32_SYNTAX_MOVLS2,
mgl@1371
 28765
+  AVR32_SYNTAX_MOVGT2,
mgl@1371
 28766
+  AVR32_SYNTAX_MOVLE2,
mgl@1371
 28767
+  AVR32_SYNTAX_MOVHI2,
mgl@1371
 28768
+  AVR32_SYNTAX_MOVVS2,
mgl@1371
 28769
+  AVR32_SYNTAX_MOVVC2,
mgl@1371
 28770
+  AVR32_SYNTAX_MOVQS2,
mgl@1371
 28771
+  AVR32_SYNTAX_MOVAL2,
mgl@1371
 28772
+  AVR32_SYNTAX_MOVHS2,
mgl@1371
 28773
+  AVR32_SYNTAX_MOVLO2,
mgl@1371
 28774
+  AVR32_SYNTAX_MTDR,
mgl@1371
 28775
+  AVR32_SYNTAX_MTSR,
mgl@1371
 28776
+  AVR32_SYNTAX_MUL1,
mgl@1371
 28777
+  AVR32_SYNTAX_MUL2,
mgl@1371
 28778
+  AVR32_SYNTAX_MUL3,
mgl@1371
 28779
+  AVR32_SYNTAX_MULHH_W,
mgl@1371
 28780
+  AVR32_SYNTAX_MULNHH_W,
mgl@1371
 28781
+  AVR32_SYNTAX_MULNWH_D,
mgl@1371
 28782
+  AVR32_SYNTAX_MULSD,
mgl@1371
 28783
+  AVR32_SYNTAX_MULSATHH_H,
mgl@1371
 28784
+  AVR32_SYNTAX_MULSATHH_W,
mgl@1371
 28785
+  AVR32_SYNTAX_MULSATRNDHH_H,
mgl@1371
 28786
+  AVR32_SYNTAX_MULSATRNDWH_W,
mgl@1371
 28787
+  AVR32_SYNTAX_MULSATWH_W,
mgl@1371
 28788
+  AVR32_SYNTAX_MULU_D,
mgl@1371
 28789
+  AVR32_SYNTAX_MULWH_D,
mgl@1371
 28790
+  AVR32_SYNTAX_MUSFR,
mgl@1371
 28791
+  AVR32_SYNTAX_MUSTR,
mgl@1371
 28792
+  AVR32_SYNTAX_MVCR_D,
mgl@1371
 28793
+  AVR32_SYNTAX_MVCR_W,
mgl@1371
 28794
+  AVR32_SYNTAX_MVRC_D,
mgl@1371
 28795
+  AVR32_SYNTAX_MVRC_W,
mgl@1371
 28796
+  AVR32_SYNTAX_NEG,
mgl@1371
 28797
+  AVR32_SYNTAX_NOP,
mgl@1371
 28798
+  AVR32_SYNTAX_OR1,
mgl@1371
 28799
+  AVR32_SYNTAX_OR2,
mgl@1371
 28800
+  AVR32_SYNTAX_OR3,
mgl@1371
 28801
+  AVR32_SYNTAX_ORH,
mgl@1371
 28802
+  AVR32_SYNTAX_ORL,
mgl@1371
 28803
+  AVR32_SYNTAX_PABS_SB,
mgl@1371
 28804
+  AVR32_SYNTAX_PABS_SH,
mgl@1371
 28805
+  AVR32_SYNTAX_PACKSH_SB,
mgl@1371
 28806
+  AVR32_SYNTAX_PACKSH_UB,
mgl@1371
 28807
+  AVR32_SYNTAX_PACKW_SH,
mgl@1371
 28808
+  AVR32_SYNTAX_PADD_B,
mgl@1371
 28809
+  AVR32_SYNTAX_PADD_H,
mgl@1371
 28810
+  AVR32_SYNTAX_PADDH_SH,
mgl@1371
 28811
+  AVR32_SYNTAX_PADDH_UB,
mgl@1371
 28812
+  AVR32_SYNTAX_PADDS_SB,
mgl@1371
 28813
+  AVR32_SYNTAX_PADDS_SH,
mgl@1371
 28814
+  AVR32_SYNTAX_PADDS_UB,
mgl@1371
 28815
+  AVR32_SYNTAX_PADDS_UH,
mgl@1371
 28816
+  AVR32_SYNTAX_PADDSUB_H,
mgl@1371
 28817
+  AVR32_SYNTAX_PADDSUBH_SH,
mgl@1371
 28818
+  AVR32_SYNTAX_PADDSUBS_SH,
mgl@1371
 28819
+  AVR32_SYNTAX_PADDSUBS_UH,
mgl@1371
 28820
+  AVR32_SYNTAX_PADDX_H,
mgl@1371
 28821
+  AVR32_SYNTAX_PADDXH_SH,
mgl@1371
 28822
+  AVR32_SYNTAX_PADDXS_SH,
mgl@1371
 28823
+  AVR32_SYNTAX_PADDXS_UH,
mgl@1371
 28824
+  AVR32_SYNTAX_PASR_B,
mgl@1371
 28825
+  AVR32_SYNTAX_PASR_H,
mgl@1371
 28826
+  AVR32_SYNTAX_PAVG_SH,
mgl@1371
 28827
+  AVR32_SYNTAX_PAVG_UB,
mgl@1371
 28828
+  AVR32_SYNTAX_PLSL_B,
mgl@1371
 28829
+  AVR32_SYNTAX_PLSL_H,
mgl@1371
 28830
+  AVR32_SYNTAX_PLSR_B,
mgl@1371
 28831
+  AVR32_SYNTAX_PLSR_H,
mgl@1371
 28832
+  AVR32_SYNTAX_PMAX_SH,
mgl@1371
 28833
+  AVR32_SYNTAX_PMAX_UB,
mgl@1371
 28834
+  AVR32_SYNTAX_PMIN_SH,
mgl@1371
 28835
+  AVR32_SYNTAX_PMIN_UB,
mgl@1371
 28836
+  AVR32_SYNTAX_POPJC,
mgl@1371
 28837
+  AVR32_SYNTAX_POPM,
mgl@1371
 28838
+  AVR32_SYNTAX_POPM_E,
mgl@1371
 28839
+  AVR32_SYNTAX_PREF,
mgl@1371
 28840
+  AVR32_SYNTAX_PSAD,
mgl@1371
 28841
+  AVR32_SYNTAX_PSUB_B,
mgl@1371
 28842
+  AVR32_SYNTAX_PSUB_H,
mgl@1371
 28843
+  AVR32_SYNTAX_PSUBADD_H,
mgl@1371
 28844
+  AVR32_SYNTAX_PSUBADDH_SH,
mgl@1371
 28845
+  AVR32_SYNTAX_PSUBADDS_SH,
mgl@1371
 28846
+  AVR32_SYNTAX_PSUBADDS_UH,
mgl@1371
 28847
+  AVR32_SYNTAX_PSUBH_SH,
mgl@1371
 28848
+  AVR32_SYNTAX_PSUBH_UB,
mgl@1371
 28849
+  AVR32_SYNTAX_PSUBS_SB,
mgl@1371
 28850
+  AVR32_SYNTAX_PSUBS_SH,
mgl@1371
 28851
+  AVR32_SYNTAX_PSUBS_UB,
mgl@1371
 28852
+  AVR32_SYNTAX_PSUBS_UH,
mgl@1371
 28853
+  AVR32_SYNTAX_PSUBX_H,
mgl@1371
 28854
+  AVR32_SYNTAX_PSUBXH_SH,
mgl@1371
 28855
+  AVR32_SYNTAX_PSUBXS_SH,
mgl@1371
 28856
+  AVR32_SYNTAX_PSUBXS_UH,
mgl@1371
 28857
+  AVR32_SYNTAX_PUNPCKSB_H,
mgl@1371
 28858
+  AVR32_SYNTAX_PUNPCKUB_H,
mgl@1371
 28859
+  AVR32_SYNTAX_PUSHJC,
mgl@1371
 28860
+  AVR32_SYNTAX_PUSHM,
mgl@1371
 28861
+  AVR32_SYNTAX_PUSHM_E,
mgl@1371
 28862
+  AVR32_SYNTAX_RCALL1,
mgl@1371
 28863
+  AVR32_SYNTAX_RCALL2,
mgl@1371
 28864
+  AVR32_SYNTAX_RETEQ,
mgl@1371
 28865
+  AVR32_SYNTAX_RETNE,
mgl@1371
 28866
+  AVR32_SYNTAX_RETCC,
mgl@1371
 28867
+  AVR32_SYNTAX_RETCS,
mgl@1371
 28868
+  AVR32_SYNTAX_RETGE,
mgl@1371
 28869
+  AVR32_SYNTAX_RETLT,
mgl@1371
 28870
+  AVR32_SYNTAX_RETMI,
mgl@1371
 28871
+  AVR32_SYNTAX_RETPL,
mgl@1371
 28872
+  AVR32_SYNTAX_RETLS,
mgl@1371
 28873
+  AVR32_SYNTAX_RETGT,
mgl@1371
 28874
+  AVR32_SYNTAX_RETLE,
mgl@1371
 28875
+  AVR32_SYNTAX_RETHI,
mgl@1371
 28876
+  AVR32_SYNTAX_RETVS,
mgl@1371
 28877
+  AVR32_SYNTAX_RETVC,
mgl@1371
 28878
+  AVR32_SYNTAX_RETQS,
mgl@1371
 28879
+  AVR32_SYNTAX_RETAL,
mgl@1371
 28880
+  AVR32_SYNTAX_RETHS,
mgl@1371
 28881
+  AVR32_SYNTAX_RETLO,
mgl@1371
 28882
+  AVR32_SYNTAX_RETD,
mgl@1371
 28883
+  AVR32_SYNTAX_RETE,
mgl@1371
 28884
+  AVR32_SYNTAX_RETJ,
mgl@1371
 28885
+  AVR32_SYNTAX_RETS,
mgl@1371
 28886
+  AVR32_SYNTAX_RJMP,
mgl@1371
 28887
+  AVR32_SYNTAX_ROL,
mgl@1371
 28888
+  AVR32_SYNTAX_ROR,
mgl@1371
 28889
+  AVR32_SYNTAX_RSUB1,
mgl@1371
 28890
+  AVR32_SYNTAX_RSUB2,
mgl@1371
 28891
+  AVR32_SYNTAX_SATADD_H,
mgl@1371
 28892
+  AVR32_SYNTAX_SATADD_W,
mgl@1371
 28893
+  AVR32_SYNTAX_SATRNDS,
mgl@1371
 28894
+  AVR32_SYNTAX_SATRNDU,
mgl@1371
 28895
+  AVR32_SYNTAX_SATS,
mgl@1371
 28896
+  AVR32_SYNTAX_SATSUB_H,
mgl@1371
 28897
+  AVR32_SYNTAX_SATSUB_W1,
mgl@1371
 28898
+  AVR32_SYNTAX_SATSUB_W2,
mgl@1371
 28899
+  AVR32_SYNTAX_SATU,
mgl@1371
 28900
+  AVR32_SYNTAX_SBC,
mgl@1371
 28901
+  AVR32_SYNTAX_SBR,
mgl@1371
 28902
+  AVR32_SYNTAX_SCALL,
mgl@1371
 28903
+  AVR32_SYNTAX_SCR,
mgl@1371
 28904
+  AVR32_SYNTAX_SLEEP,
mgl@1371
 28905
+  AVR32_SYNTAX_SREQ,
mgl@1371
 28906
+  AVR32_SYNTAX_SRNE,
mgl@1371
 28907
+  AVR32_SYNTAX_SRCC,
mgl@1371
 28908
+  AVR32_SYNTAX_SRCS,
mgl@1371
 28909
+  AVR32_SYNTAX_SRGE,
mgl@1371
 28910
+  AVR32_SYNTAX_SRLT,
mgl@1371
 28911
+  AVR32_SYNTAX_SRMI,
mgl@1371
 28912
+  AVR32_SYNTAX_SRPL,
mgl@1371
 28913
+  AVR32_SYNTAX_SRLS,
mgl@1371
 28914
+  AVR32_SYNTAX_SRGT,
mgl@1371
 28915
+  AVR32_SYNTAX_SRLE,
mgl@1371
 28916
+  AVR32_SYNTAX_SRHI,
mgl@1371
 28917
+  AVR32_SYNTAX_SRVS,
mgl@1371
 28918
+  AVR32_SYNTAX_SRVC,
mgl@1371
 28919
+  AVR32_SYNTAX_SRQS,
mgl@1371
 28920
+  AVR32_SYNTAX_SRAL,
mgl@1371
 28921
+  AVR32_SYNTAX_SRHS,
mgl@1371
 28922
+  AVR32_SYNTAX_SRLO,
mgl@1371
 28923
+  AVR32_SYNTAX_SSRF,
mgl@1371
 28924
+  AVR32_SYNTAX_ST_B1,
mgl@1371
 28925
+  AVR32_SYNTAX_ST_B2,
mgl@1371
 28926
+  AVR32_SYNTAX_ST_B5,
mgl@1371
 28927
+  AVR32_SYNTAX_ST_B3,
mgl@1371
 28928
+  AVR32_SYNTAX_ST_B4,
mgl@1371
 28929
+  AVR32_SYNTAX_ST_D1,
mgl@1371
 28930
+  AVR32_SYNTAX_ST_D2,
mgl@1371
 28931
+  AVR32_SYNTAX_ST_D3,
mgl@1371
 28932
+  AVR32_SYNTAX_ST_D5,
mgl@1371
 28933
+  AVR32_SYNTAX_ST_D4,
mgl@1371
 28934
+  AVR32_SYNTAX_ST_H1,
mgl@1371
 28935
+  AVR32_SYNTAX_ST_H2,
mgl@1371
 28936
+  AVR32_SYNTAX_ST_H5,
mgl@1371
 28937
+  AVR32_SYNTAX_ST_H3,
mgl@1371
 28938
+  AVR32_SYNTAX_ST_H4,
mgl@1371
 28939
+  AVR32_SYNTAX_ST_W1,
mgl@1371
 28940
+  AVR32_SYNTAX_ST_W2,
mgl@1371
 28941
+  AVR32_SYNTAX_ST_W5,
mgl@1371
 28942
+  AVR32_SYNTAX_ST_W3,
mgl@1371
 28943
+  AVR32_SYNTAX_ST_W4,
mgl@1371
 28944
+  AVR32_SYNTAX_STC_D1,
mgl@1371
 28945
+  AVR32_SYNTAX_STC_D2,
mgl@1371
 28946
+  AVR32_SYNTAX_STC_D3,
mgl@1371
 28947
+  AVR32_SYNTAX_STC_W1,
mgl@1371
 28948
+  AVR32_SYNTAX_STC_W2,
mgl@1371
 28949
+  AVR32_SYNTAX_STC_W3,
mgl@1371
 28950
+  AVR32_SYNTAX_STC0_D,
mgl@1371
 28951
+  AVR32_SYNTAX_STC0_W,
mgl@1371
 28952
+  AVR32_SYNTAX_STCM_D,
mgl@1371
 28953
+  AVR32_SYNTAX_STCM_D_PU,
mgl@1371
 28954
+  AVR32_SYNTAX_STCM_W,
mgl@1371
 28955
+  AVR32_SYNTAX_STCM_W_PU,
mgl@1371
 28956
+  AVR32_SYNTAX_STCOND,
mgl@1371
 28957
+  AVR32_SYNTAX_STDSP,
mgl@1371
 28958
+  AVR32_SYNTAX_STHH_W2,
mgl@1371
 28959
+  AVR32_SYNTAX_STHH_W1,
mgl@1371
 28960
+  AVR32_SYNTAX_STM,
mgl@1371
 28961
+  AVR32_SYNTAX_STM_PU,
mgl@1371
 28962
+  AVR32_SYNTAX_STMTS,
mgl@1371
 28963
+  AVR32_SYNTAX_STMTS_PU,
mgl@1371
 28964
+  AVR32_SYNTAX_STSWP_H,
mgl@1371
 28965
+  AVR32_SYNTAX_STSWP_W,
mgl@1371
 28966
+  AVR32_SYNTAX_SUB1,
mgl@1371
 28967
+  AVR32_SYNTAX_SUB2,
mgl@1371
 28968
+  AVR32_SYNTAX_SUB5,
mgl@1371
 28969
+  AVR32_SYNTAX_SUB3_SP,
mgl@1371
 28970
+  AVR32_SYNTAX_SUB3,
mgl@1371
 28971
+  AVR32_SYNTAX_SUB4,
mgl@1371
 28972
+  AVR32_SYNTAX_SUBEQ,
mgl@1371
 28973
+  AVR32_SYNTAX_SUBNE,
mgl@1371
 28974
+  AVR32_SYNTAX_SUBCC,
mgl@1371
 28975
+  AVR32_SYNTAX_SUBCS,
mgl@1371
 28976
+  AVR32_SYNTAX_SUBGE,
mgl@1371
 28977
+  AVR32_SYNTAX_SUBLT,
mgl@1371
 28978
+  AVR32_SYNTAX_SUBMI,
mgl@1371
 28979
+  AVR32_SYNTAX_SUBPL,
mgl@1371
 28980
+  AVR32_SYNTAX_SUBLS,
mgl@1371
 28981
+  AVR32_SYNTAX_SUBGT,
mgl@1371
 28982
+  AVR32_SYNTAX_SUBLE,
mgl@1371
 28983
+  AVR32_SYNTAX_SUBHI,
mgl@1371
 28984
+  AVR32_SYNTAX_SUBVS,
mgl@1371
 28985
+  AVR32_SYNTAX_SUBVC,
mgl@1371
 28986
+  AVR32_SYNTAX_SUBQS,
mgl@1371
 28987
+  AVR32_SYNTAX_SUBAL,
mgl@1371
 28988
+  AVR32_SYNTAX_SUBHS,
mgl@1371
 28989
+  AVR32_SYNTAX_SUBLO,
mgl@1371
 28990
+  AVR32_SYNTAX_SUBFEQ,
mgl@1371
 28991
+  AVR32_SYNTAX_SUBFNE,
mgl@1371
 28992
+  AVR32_SYNTAX_SUBFCC,
mgl@1371
 28993
+  AVR32_SYNTAX_SUBFCS,
mgl@1371
 28994
+  AVR32_SYNTAX_SUBFGE,
mgl@1371
 28995
+  AVR32_SYNTAX_SUBFLT,
mgl@1371
 28996
+  AVR32_SYNTAX_SUBFMI,
mgl@1371
 28997
+  AVR32_SYNTAX_SUBFPL,
mgl@1371
 28998
+  AVR32_SYNTAX_SUBFLS,
mgl@1371
 28999
+  AVR32_SYNTAX_SUBFGT,
mgl@1371
 29000
+  AVR32_SYNTAX_SUBFLE,
mgl@1371
 29001
+  AVR32_SYNTAX_SUBFHI,
mgl@1371
 29002
+  AVR32_SYNTAX_SUBFVS,
mgl@1371
 29003
+  AVR32_SYNTAX_SUBFVC,
mgl@1371
 29004
+  AVR32_SYNTAX_SUBFQS,
mgl@1371
 29005
+  AVR32_SYNTAX_SUBFAL,
mgl@1371
 29006
+  AVR32_SYNTAX_SUBFHS,
mgl@1371
 29007
+  AVR32_SYNTAX_SUBFLO,
mgl@1371
 29008
+  AVR32_SYNTAX_SUBHH_W,
mgl@1371
 29009
+  AVR32_SYNTAX_SWAP_B,
mgl@1371
 29010
+  AVR32_SYNTAX_SWAP_BH,
mgl@1371
 29011
+  AVR32_SYNTAX_SWAP_H,
mgl@1371
 29012
+  AVR32_SYNTAX_SYNC,
mgl@1371
 29013
+  AVR32_SYNTAX_TLBR,
mgl@1371
 29014
+  AVR32_SYNTAX_TLBS,
mgl@1371
 29015
+  AVR32_SYNTAX_TLBW,
mgl@1371
 29016
+  AVR32_SYNTAX_TNBZ,
mgl@1371
 29017
+  AVR32_SYNTAX_TST,
mgl@1371
 29018
+  AVR32_SYNTAX_XCHG,
mgl@1371
 29019
+  AVR32_SYNTAX_MEMC,
mgl@1371
 29020
+  AVR32_SYNTAX_MEMS,
mgl@1371
 29021
+  AVR32_SYNTAX_MEMT,
mgl@1371
 29022
+  AVR32_SYNTAX_FADD_S,
mgl@1371
 29023
+  AVR32_SYNTAX_FADD_D,
mgl@1371
 29024
+  AVR32_SYNTAX_FSUB_S,
mgl@1371
 29025
+  AVR32_SYNTAX_FSUB_D,
mgl@1371
 29026
+  AVR32_SYNTAX_FMAC_S,
mgl@1371
 29027
+  AVR32_SYNTAX_FMAC_D,
mgl@1371
 29028
+  AVR32_SYNTAX_FNMAC_S,
mgl@1371
 29029
+  AVR32_SYNTAX_FNMAC_D,
mgl@1371
 29030
+  AVR32_SYNTAX_FMSC_S,
mgl@1371
 29031
+  AVR32_SYNTAX_FMSC_D,
mgl@1371
 29032
+  AVR32_SYNTAX_FNMSC_S,
mgl@1371
 29033
+  AVR32_SYNTAX_FNMSC_D,
mgl@1371
 29034
+  AVR32_SYNTAX_FMUL_S,
mgl@1371
 29035
+  AVR32_SYNTAX_FMUL_D,
mgl@1371
 29036
+  AVR32_SYNTAX_FNMUL_S,
mgl@1371
 29037
+  AVR32_SYNTAX_FNMUL_D,
mgl@1371
 29038
+  AVR32_SYNTAX_FNEG_S,
mgl@1371
 29039
+  AVR32_SYNTAX_FNEG_D,
mgl@1371
 29040
+  AVR32_SYNTAX_FABS_S,
mgl@1371
 29041
+  AVR32_SYNTAX_FABS_D,
mgl@1371
 29042
+  AVR32_SYNTAX_FCMP_S,
mgl@1371
 29043
+  AVR32_SYNTAX_FCMP_D,
mgl@1371
 29044
+  AVR32_SYNTAX_FMOV1_S,
mgl@1371
 29045
+  AVR32_SYNTAX_FMOV1_D,
mgl@1371
 29046
+  AVR32_SYNTAX_FMOV2_S,
mgl@1371
 29047
+  AVR32_SYNTAX_FMOV2_D,
mgl@1371
 29048
+  AVR32_SYNTAX_FMOV3_S,
mgl@1371
 29049
+  AVR32_SYNTAX_FMOV3_D,
mgl@1371
 29050
+  AVR32_SYNTAX_FCASTS_D,
mgl@1371
 29051
+  AVR32_SYNTAX_FCASTD_S,
mgl@1371
 29052
+  AVR32_SYNTAX_LDA_W,
mgl@1371
 29053
+  AVR32_SYNTAX_CALL,
mgl@1371
 29054
+  AVR32_SYNTAX_PICOSVMAC0,
mgl@1371
 29055
+  AVR32_SYNTAX_PICOSVMAC1,
mgl@1371
 29056
+  AVR32_SYNTAX_PICOSVMAC2,
mgl@1371
 29057
+  AVR32_SYNTAX_PICOSVMAC3,
mgl@1371
 29058
+  AVR32_SYNTAX_PICOSVMUL0,
mgl@1371
 29059
+  AVR32_SYNTAX_PICOSVMUL1,
mgl@1371
 29060
+  AVR32_SYNTAX_PICOSVMUL2,
mgl@1371
 29061
+  AVR32_SYNTAX_PICOSVMUL3,
mgl@1371
 29062
+  AVR32_SYNTAX_PICOVMAC0,
mgl@1371
 29063
+  AVR32_SYNTAX_PICOVMAC1,
mgl@1371
 29064
+  AVR32_SYNTAX_PICOVMAC2,
mgl@1371
 29065
+  AVR32_SYNTAX_PICOVMAC3,
mgl@1371
 29066
+  AVR32_SYNTAX_PICOVMUL0,
mgl@1371
 29067
+  AVR32_SYNTAX_PICOVMUL1,
mgl@1371
 29068
+  AVR32_SYNTAX_PICOVMUL2,
mgl@1371
 29069
+  AVR32_SYNTAX_PICOVMUL3,
mgl@1371
 29070
+  AVR32_SYNTAX_PICOLD_D2,
mgl@1371
 29071
+  AVR32_SYNTAX_PICOLD_D3,
mgl@1371
 29072
+  AVR32_SYNTAX_PICOLD_D1,
mgl@1371
 29073
+  AVR32_SYNTAX_PICOLD_W2,
mgl@1371
 29074
+  AVR32_SYNTAX_PICOLD_W3,
mgl@1371
 29075
+  AVR32_SYNTAX_PICOLD_W1,
mgl@1371
 29076
+  AVR32_SYNTAX_PICOLDM_D,
mgl@1371
 29077
+  AVR32_SYNTAX_PICOLDM_D_PU,
mgl@1371
 29078
+  AVR32_SYNTAX_PICOLDM_W,
mgl@1371
 29079
+  AVR32_SYNTAX_PICOLDM_W_PU,
mgl@1371
 29080
+  AVR32_SYNTAX_PICOMV_D1,
mgl@1371
 29081
+  AVR32_SYNTAX_PICOMV_D2,
mgl@1371
 29082
+  AVR32_SYNTAX_PICOMV_W1,
mgl@1371
 29083
+  AVR32_SYNTAX_PICOMV_W2,
mgl@1371
 29084
+  AVR32_SYNTAX_PICOST_D2,
mgl@1371
 29085
+  AVR32_SYNTAX_PICOST_D3,
mgl@1371
 29086
+  AVR32_SYNTAX_PICOST_D1,
mgl@1371
 29087
+  AVR32_SYNTAX_PICOST_W2,
mgl@1371
 29088
+  AVR32_SYNTAX_PICOST_W3,
mgl@1371
 29089
+  AVR32_SYNTAX_PICOST_W1,
mgl@1371
 29090
+  AVR32_SYNTAX_PICOSTM_D,
mgl@1371
 29091
+  AVR32_SYNTAX_PICOSTM_D_PU,
mgl@1371
 29092
+  AVR32_SYNTAX_PICOSTM_W,
mgl@1371
 29093
+  AVR32_SYNTAX_PICOSTM_W_PU,
mgl@1371
 29094
+  AVR32_SYNTAX_RSUBEQ,
mgl@1371
 29095
+  AVR32_SYNTAX_RSUBNE,
mgl@1371
 29096
+  AVR32_SYNTAX_RSUBCC,
mgl@1371
 29097
+  AVR32_SYNTAX_RSUBCS,
mgl@1371
 29098
+  AVR32_SYNTAX_RSUBGE,
mgl@1371
 29099
+  AVR32_SYNTAX_RSUBLT,
mgl@1371
 29100
+  AVR32_SYNTAX_RSUBMI,
mgl@1371
 29101
+  AVR32_SYNTAX_RSUBPL,
mgl@1371
 29102
+  AVR32_SYNTAX_RSUBLS,
mgl@1371
 29103
+  AVR32_SYNTAX_RSUBGT,
mgl@1371
 29104
+  AVR32_SYNTAX_RSUBLE,
mgl@1371
 29105
+  AVR32_SYNTAX_RSUBHI,
mgl@1371
 29106
+  AVR32_SYNTAX_RSUBVS,
mgl@1371
 29107
+  AVR32_SYNTAX_RSUBVC,
mgl@1371
 29108
+  AVR32_SYNTAX_RSUBQS,
mgl@1371
 29109
+  AVR32_SYNTAX_RSUBAL,
mgl@1371
 29110
+  AVR32_SYNTAX_RSUBHS,
mgl@1371
 29111
+  AVR32_SYNTAX_RSUBLO,
mgl@1371
 29112
+  AVR32_SYNTAX_ADDEQ,
mgl@1371
 29113
+  AVR32_SYNTAX_ADDNE,
mgl@1371
 29114
+  AVR32_SYNTAX_ADDCC,
mgl@1371
 29115
+  AVR32_SYNTAX_ADDCS,
mgl@1371
 29116
+  AVR32_SYNTAX_ADDGE,
mgl@1371
 29117
+  AVR32_SYNTAX_ADDLT,
mgl@1371
 29118
+  AVR32_SYNTAX_ADDMI,
mgl@1371
 29119
+  AVR32_SYNTAX_ADDPL,
mgl@1371
 29120
+  AVR32_SYNTAX_ADDLS,
mgl@1371
 29121
+  AVR32_SYNTAX_ADDGT,
mgl@1371
 29122
+  AVR32_SYNTAX_ADDLE,
mgl@1371
 29123
+  AVR32_SYNTAX_ADDHI,
mgl@1371
 29124
+  AVR32_SYNTAX_ADDVS,
mgl@1371
 29125
+  AVR32_SYNTAX_ADDVC,
mgl@1371
 29126
+  AVR32_SYNTAX_ADDQS,
mgl@1371
 29127
+  AVR32_SYNTAX_ADDAL,
mgl@1371
 29128
+  AVR32_SYNTAX_ADDHS,
mgl@1371
 29129
+  AVR32_SYNTAX_ADDLO,
mgl@1371
 29130
+  AVR32_SYNTAX_SUB2EQ,
mgl@1371
 29131
+  AVR32_SYNTAX_SUB2NE,
mgl@1371
 29132
+  AVR32_SYNTAX_SUB2CC,
mgl@1371
 29133
+  AVR32_SYNTAX_SUB2CS,
mgl@1371
 29134
+  AVR32_SYNTAX_SUB2GE,
mgl@1371
 29135
+  AVR32_SYNTAX_SUB2LT,
mgl@1371
 29136
+  AVR32_SYNTAX_SUB2MI,
mgl@1371
 29137
+  AVR32_SYNTAX_SUB2PL,
mgl@1371
 29138
+  AVR32_SYNTAX_SUB2LS,
mgl@1371
 29139
+  AVR32_SYNTAX_SUB2GT,
mgl@1371
 29140
+  AVR32_SYNTAX_SUB2LE,
mgl@1371
 29141
+  AVR32_SYNTAX_SUB2HI,
mgl@1371
 29142
+  AVR32_SYNTAX_SUB2VS,
mgl@1371
 29143
+  AVR32_SYNTAX_SUB2VC,
mgl@1371
 29144
+  AVR32_SYNTAX_SUB2QS,
mgl@1371
 29145
+  AVR32_SYNTAX_SUB2AL,
mgl@1371
 29146
+  AVR32_SYNTAX_SUB2HS,
mgl@1371
 29147
+  AVR32_SYNTAX_SUB2LO,
mgl@1371
 29148
+  AVR32_SYNTAX_ANDEQ,
mgl@1371
 29149
+  AVR32_SYNTAX_ANDNE,
mgl@1371
 29150
+  AVR32_SYNTAX_ANDCC,
mgl@1371
 29151
+  AVR32_SYNTAX_ANDCS,
mgl@1371
 29152
+  AVR32_SYNTAX_ANDGE,
mgl@1371
 29153
+  AVR32_SYNTAX_ANDLT,
mgl@1371
 29154
+  AVR32_SYNTAX_ANDMI,
mgl@1371
 29155
+  AVR32_SYNTAX_ANDPL,
mgl@1371
 29156
+  AVR32_SYNTAX_ANDLS,
mgl@1371
 29157
+  AVR32_SYNTAX_ANDGT,
mgl@1371
 29158
+  AVR32_SYNTAX_ANDLE,
mgl@1371
 29159
+  AVR32_SYNTAX_ANDHI,
mgl@1371
 29160
+  AVR32_SYNTAX_ANDVS,
mgl@1371
 29161
+  AVR32_SYNTAX_ANDVC,
mgl@1371
 29162
+  AVR32_SYNTAX_ANDQS,
mgl@1371
 29163
+  AVR32_SYNTAX_ANDAL,
mgl@1371
 29164
+  AVR32_SYNTAX_ANDHS,
mgl@1371
 29165
+  AVR32_SYNTAX_ANDLO,
mgl@1371
 29166
+  AVR32_SYNTAX_OREQ,
mgl@1371
 29167
+  AVR32_SYNTAX_ORNE,
mgl@1371
 29168
+  AVR32_SYNTAX_ORCC,
mgl@1371
 29169
+  AVR32_SYNTAX_ORCS,
mgl@1371
 29170
+  AVR32_SYNTAX_ORGE,
mgl@1371
 29171
+  AVR32_SYNTAX_ORLT,
mgl@1371
 29172
+  AVR32_SYNTAX_ORMI,
mgl@1371
 29173
+  AVR32_SYNTAX_ORPL,
mgl@1371
 29174
+  AVR32_SYNTAX_ORLS,
mgl@1371
 29175
+  AVR32_SYNTAX_ORGT,
mgl@1371
 29176
+  AVR32_SYNTAX_ORLE,
mgl@1371
 29177
+  AVR32_SYNTAX_ORHI,
mgl@1371
 29178
+  AVR32_SYNTAX_ORVS,
mgl@1371
 29179
+  AVR32_SYNTAX_ORVC,
mgl@1371
 29180
+  AVR32_SYNTAX_ORQS,
mgl@1371
 29181
+  AVR32_SYNTAX_ORAL,
mgl@1371
 29182
+  AVR32_SYNTAX_ORHS,
mgl@1371
 29183
+  AVR32_SYNTAX_ORLO,
mgl@1371
 29184
+  AVR32_SYNTAX_EOREQ,
mgl@1371
 29185
+  AVR32_SYNTAX_EORNE,
mgl@1371
 29186
+  AVR32_SYNTAX_EORCC,
mgl@1371
 29187
+  AVR32_SYNTAX_EORCS,
mgl@1371
 29188
+  AVR32_SYNTAX_EORGE,
mgl@1371
 29189
+  AVR32_SYNTAX_EORLT,
mgl@1371
 29190
+  AVR32_SYNTAX_EORMI,
mgl@1371
 29191
+  AVR32_SYNTAX_EORPL,
mgl@1371
 29192
+  AVR32_SYNTAX_EORLS,
mgl@1371
 29193
+  AVR32_SYNTAX_EORGT,
mgl@1371
 29194
+  AVR32_SYNTAX_EORLE,
mgl@1371
 29195
+  AVR32_SYNTAX_EORHI,
mgl@1371
 29196
+  AVR32_SYNTAX_EORVS,
mgl@1371
 29197
+  AVR32_SYNTAX_EORVC,
mgl@1371
 29198
+  AVR32_SYNTAX_EORQS,
mgl@1371
 29199
+  AVR32_SYNTAX_EORAL,
mgl@1371
 29200
+  AVR32_SYNTAX_EORHS,
mgl@1371
 29201
+  AVR32_SYNTAX_EORLO,
mgl@1371
 29202
+  AVR32_SYNTAX_LD_WEQ,
mgl@1371
 29203
+  AVR32_SYNTAX_LD_WNE,
mgl@1371
 29204
+  AVR32_SYNTAX_LD_WCC,
mgl@1371
 29205
+  AVR32_SYNTAX_LD_WCS,
mgl@1371
 29206
+  AVR32_SYNTAX_LD_WGE,
mgl@1371
 29207
+  AVR32_SYNTAX_LD_WLT,
mgl@1371
 29208
+  AVR32_SYNTAX_LD_WMI,
mgl@1371
 29209
+  AVR32_SYNTAX_LD_WPL,
mgl@1371
 29210
+  AVR32_SYNTAX_LD_WLS,
mgl@1371
 29211
+  AVR32_SYNTAX_LD_WGT,
mgl@1371
 29212
+  AVR32_SYNTAX_LD_WLE,
mgl@1371
 29213
+  AVR32_SYNTAX_LD_WHI,
mgl@1371
 29214
+  AVR32_SYNTAX_LD_WVS,
mgl@1371
 29215
+  AVR32_SYNTAX_LD_WVC,
mgl@1371
 29216
+  AVR32_SYNTAX_LD_WQS,
mgl@1371
 29217
+  AVR32_SYNTAX_LD_WAL,
mgl@1371
 29218
+  AVR32_SYNTAX_LD_WHS,
mgl@1371
 29219
+  AVR32_SYNTAX_LD_WLO,
mgl@1371
 29220
+  AVR32_SYNTAX_LD_SHEQ,
mgl@1371
 29221
+  AVR32_SYNTAX_LD_SHNE,
mgl@1371
 29222
+  AVR32_SYNTAX_LD_SHCC,
mgl@1371
 29223
+  AVR32_SYNTAX_LD_SHCS,
mgl@1371
 29224
+  AVR32_SYNTAX_LD_SHGE,
mgl@1371
 29225
+  AVR32_SYNTAX_LD_SHLT,
mgl@1371
 29226
+  AVR32_SYNTAX_LD_SHMI,
mgl@1371
 29227
+  AVR32_SYNTAX_LD_SHPL,
mgl@1371
 29228
+  AVR32_SYNTAX_LD_SHLS,
mgl@1371
 29229
+  AVR32_SYNTAX_LD_SHGT,
mgl@1371
 29230
+  AVR32_SYNTAX_LD_SHLE,
mgl@1371
 29231
+  AVR32_SYNTAX_LD_SHHI,
mgl@1371
 29232
+  AVR32_SYNTAX_LD_SHVS,
mgl@1371
 29233
+  AVR32_SYNTAX_LD_SHVC,
mgl@1371
 29234
+  AVR32_SYNTAX_LD_SHQS,
mgl@1371
 29235
+  AVR32_SYNTAX_LD_SHAL,
mgl@1371
 29236
+  AVR32_SYNTAX_LD_SHHS,
mgl@1371
 29237
+  AVR32_SYNTAX_LD_SHLO,
mgl@1371
 29238
+  AVR32_SYNTAX_LD_UHEQ,
mgl@1371
 29239
+  AVR32_SYNTAX_LD_UHNE,
mgl@1371
 29240
+  AVR32_SYNTAX_LD_UHCC,
mgl@1371
 29241
+  AVR32_SYNTAX_LD_UHCS,
mgl@1371
 29242
+  AVR32_SYNTAX_LD_UHGE,
mgl@1371
 29243
+  AVR32_SYNTAX_LD_UHLT,
mgl@1371
 29244
+  AVR32_SYNTAX_LD_UHMI,
mgl@1371
 29245
+  AVR32_SYNTAX_LD_UHPL,
mgl@1371
 29246
+  AVR32_SYNTAX_LD_UHLS,
mgl@1371
 29247
+  AVR32_SYNTAX_LD_UHGT,
mgl@1371
 29248
+  AVR32_SYNTAX_LD_UHLE,
mgl@1371
 29249
+  AVR32_SYNTAX_LD_UHHI,
mgl@1371
 29250
+  AVR32_SYNTAX_LD_UHVS,
mgl@1371
 29251
+  AVR32_SYNTAX_LD_UHVC,
mgl@1371
 29252
+  AVR32_SYNTAX_LD_UHQS,
mgl@1371
 29253
+  AVR32_SYNTAX_LD_UHAL,
mgl@1371
 29254
+  AVR32_SYNTAX_LD_UHHS,
mgl@1371
 29255
+  AVR32_SYNTAX_LD_UHLO,
mgl@1371
 29256
+  AVR32_SYNTAX_LD_SBEQ,
mgl@1371
 29257
+  AVR32_SYNTAX_LD_SBNE,
mgl@1371
 29258
+  AVR32_SYNTAX_LD_SBCC,
mgl@1371
 29259
+  AVR32_SYNTAX_LD_SBCS,
mgl@1371
 29260
+  AVR32_SYNTAX_LD_SBGE,
mgl@1371
 29261
+  AVR32_SYNTAX_LD_SBLT,
mgl@1371
 29262
+  AVR32_SYNTAX_LD_SBMI,
mgl@1371
 29263
+  AVR32_SYNTAX_LD_SBPL,
mgl@1371
 29264
+  AVR32_SYNTAX_LD_SBLS,
mgl@1371
 29265
+  AVR32_SYNTAX_LD_SBGT,
mgl@1371
 29266
+  AVR32_SYNTAX_LD_SBLE,
mgl@1371
 29267
+  AVR32_SYNTAX_LD_SBHI,
mgl@1371
 29268
+  AVR32_SYNTAX_LD_SBVS,
mgl@1371
 29269
+  AVR32_SYNTAX_LD_SBVC,
mgl@1371
 29270
+  AVR32_SYNTAX_LD_SBQS,
mgl@1371
 29271
+  AVR32_SYNTAX_LD_SBAL,
mgl@1371
 29272
+  AVR32_SYNTAX_LD_SBHS,
mgl@1371
 29273
+  AVR32_SYNTAX_LD_SBLO,
mgl@1371
 29274
+  AVR32_SYNTAX_LD_UBEQ,
mgl@1371
 29275
+  AVR32_SYNTAX_LD_UBNE,
mgl@1371
 29276
+  AVR32_SYNTAX_LD_UBCC,
mgl@1371
 29277
+  AVR32_SYNTAX_LD_UBCS,
mgl@1371
 29278
+  AVR32_SYNTAX_LD_UBGE,
mgl@1371
 29279
+  AVR32_SYNTAX_LD_UBLT,
mgl@1371
 29280
+  AVR32_SYNTAX_LD_UBMI,
mgl@1371
 29281
+  AVR32_SYNTAX_LD_UBPL,
mgl@1371
 29282
+  AVR32_SYNTAX_LD_UBLS,
mgl@1371
 29283
+  AVR32_SYNTAX_LD_UBGT,
mgl@1371
 29284
+  AVR32_SYNTAX_LD_UBLE,
mgl@1371
 29285
+  AVR32_SYNTAX_LD_UBHI,
mgl@1371
 29286
+  AVR32_SYNTAX_LD_UBVS,
mgl@1371
 29287
+  AVR32_SYNTAX_LD_UBVC,
mgl@1371
 29288
+  AVR32_SYNTAX_LD_UBQS,
mgl@1371
 29289
+  AVR32_SYNTAX_LD_UBAL,
mgl@1371
 29290
+  AVR32_SYNTAX_LD_UBHS,
mgl@1371
 29291
+  AVR32_SYNTAX_LD_UBLO,
mgl@1371
 29292
+  AVR32_SYNTAX_ST_WEQ,
mgl@1371
 29293
+  AVR32_SYNTAX_ST_WNE,
mgl@1371
 29294
+  AVR32_SYNTAX_ST_WCC,
mgl@1371
 29295
+  AVR32_SYNTAX_ST_WCS,
mgl@1371
 29296
+  AVR32_SYNTAX_ST_WGE,
mgl@1371
 29297
+  AVR32_SYNTAX_ST_WLT,
mgl@1371
 29298
+  AVR32_SYNTAX_ST_WMI,
mgl@1371
 29299
+  AVR32_SYNTAX_ST_WPL,
mgl@1371
 29300
+  AVR32_SYNTAX_ST_WLS,
mgl@1371
 29301
+  AVR32_SYNTAX_ST_WGT,
mgl@1371
 29302
+  AVR32_SYNTAX_ST_WLE,
mgl@1371
 29303
+  AVR32_SYNTAX_ST_WHI,
mgl@1371
 29304
+  AVR32_SYNTAX_ST_WVS,
mgl@1371
 29305
+  AVR32_SYNTAX_ST_WVC,
mgl@1371
 29306
+  AVR32_SYNTAX_ST_WQS,
mgl@1371
 29307
+  AVR32_SYNTAX_ST_WAL,
mgl@1371
 29308
+  AVR32_SYNTAX_ST_WHS,
mgl@1371
 29309
+  AVR32_SYNTAX_ST_WLO,
mgl@1371
 29310
+  AVR32_SYNTAX_ST_HEQ,
mgl@1371
 29311
+  AVR32_SYNTAX_ST_HNE,
mgl@1371
 29312
+  AVR32_SYNTAX_ST_HCC,
mgl@1371
 29313
+  AVR32_SYNTAX_ST_HCS,
mgl@1371
 29314
+  AVR32_SYNTAX_ST_HGE,
mgl@1371
 29315
+  AVR32_SYNTAX_ST_HLT,
mgl@1371
 29316
+  AVR32_SYNTAX_ST_HMI,
mgl@1371
 29317
+  AVR32_SYNTAX_ST_HPL,
mgl@1371
 29318
+  AVR32_SYNTAX_ST_HLS,
mgl@1371
 29319
+  AVR32_SYNTAX_ST_HGT,
mgl@1371
 29320
+  AVR32_SYNTAX_ST_HLE,
mgl@1371
 29321
+  AVR32_SYNTAX_ST_HHI,
mgl@1371
 29322
+  AVR32_SYNTAX_ST_HVS,
mgl@1371
 29323
+  AVR32_SYNTAX_ST_HVC,
mgl@1371
 29324
+  AVR32_SYNTAX_ST_HQS,
mgl@1371
 29325
+  AVR32_SYNTAX_ST_HAL,
mgl@1371
 29326
+  AVR32_SYNTAX_ST_HHS,
mgl@1371
 29327
+  AVR32_SYNTAX_ST_HLO,
mgl@1371
 29328
+  AVR32_SYNTAX_ST_BEQ,
mgl@1371
 29329
+  AVR32_SYNTAX_ST_BNE,
mgl@1371
 29330
+  AVR32_SYNTAX_ST_BCC,
mgl@1371
 29331
+  AVR32_SYNTAX_ST_BCS,
mgl@1371
 29332
+  AVR32_SYNTAX_ST_BGE,
mgl@1371
 29333
+  AVR32_SYNTAX_ST_BLT,
mgl@1371
 29334
+  AVR32_SYNTAX_ST_BMI,
mgl@1371
 29335
+  AVR32_SYNTAX_ST_BPL,
mgl@1371
 29336
+  AVR32_SYNTAX_ST_BLS,
mgl@1371
 29337
+  AVR32_SYNTAX_ST_BGT,
mgl@1371
 29338
+  AVR32_SYNTAX_ST_BLE,
mgl@1371
 29339
+  AVR32_SYNTAX_ST_BHI,
mgl@1371
 29340
+  AVR32_SYNTAX_ST_BVS,
mgl@1371
 29341
+  AVR32_SYNTAX_ST_BVC,
mgl@1371
 29342
+  AVR32_SYNTAX_ST_BQS,
mgl@1371
 29343
+  AVR32_SYNTAX_ST_BAL,
mgl@1371
 29344
+  AVR32_SYNTAX_ST_BHS,
mgl@1371
 29345
+  AVR32_SYNTAX_ST_BLO,
mgl@1371
 29346
+  AVR32_SYNTAX_MOVH,
mgl@1371
 29347
+  AVR32_SYNTAX__END_
mgl@1371
 29348
+};
mgl@1371
 29349
+#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
mgl@1371
 29350
+
mgl@1371
 29351
+enum avr32_alias_type
mgl@1371
 29352
+  {
mgl@1371
 29353
+    AVR32_ALIAS_FMAC_S,
mgl@1371
 29354
+    AVR32_ALIAS_FMAC_D,
mgl@1371
 29355
+    AVR32_ALIAS_FNMAC_S,
mgl@1371
 29356
+    AVR32_ALIAS_FNMAC_D,
mgl@1371
 29357
+    AVR32_ALIAS_FMSC_S,
mgl@1371
 29358
+    AVR32_ALIAS_FMSC_D,
mgl@1371
 29359
+    AVR32_ALIAS_FNMSC_S,
mgl@1371
 29360
+    AVR32_ALIAS_FNMSC_D,
mgl@1371
 29361
+    AVR32_ALIAS_FADD_S,
mgl@1371
 29362
+    AVR32_ALIAS_FADD_D,
mgl@1371
 29363
+    AVR32_ALIAS_FSUB_S,
mgl@1371
 29364
+    AVR32_ALIAS_FSUB_D,
mgl@1371
 29365
+    AVR32_ALIAS_FMUL_S,
mgl@1371
 29366
+    AVR32_ALIAS_FMUL_D,
mgl@1371
 29367
+    AVR32_ALIAS_FNMUL_S,
mgl@1371
 29368
+    AVR32_ALIAS_FNMUL_D,
mgl@1371
 29369
+    AVR32_ALIAS_FNEG_S,
mgl@1371
 29370
+    AVR32_ALIAS_FNEG_D,
mgl@1371
 29371
+    AVR32_ALIAS_FABS_S,
mgl@1371
 29372
+    AVR32_ALIAS_FABS_D,
mgl@1371
 29373
+    AVR32_ALIAS_FCMP_S,
mgl@1371
 29374
+    AVR32_ALIAS_FCMP_D,
mgl@1371
 29375
+    AVR32_ALIAS_FMOV1_S,
mgl@1371
 29376
+    AVR32_ALIAS_FMOV1_D,
mgl@1371
 29377
+    AVR32_ALIAS_FMOV2_S,
mgl@1371
 29378
+    AVR32_ALIAS_FMOV2_D,
mgl@1371
 29379
+    AVR32_ALIAS_FMOV3_S,
mgl@1371
 29380
+    AVR32_ALIAS_FMOV3_D,
mgl@1371
 29381
+    AVR32_ALIAS_FCASTS_D,
mgl@1371
 29382
+    AVR32_ALIAS_FCASTD_S,
mgl@1371
 29383
+    AVR32_ALIAS_PICOSVMAC0,
mgl@1371
 29384
+    AVR32_ALIAS_PICOSVMAC1,
mgl@1371
 29385
+    AVR32_ALIAS_PICOSVMAC2,
mgl@1371
 29386
+    AVR32_ALIAS_PICOSVMAC3,
mgl@1371
 29387
+    AVR32_ALIAS_PICOSVMUL0,
mgl@1371
 29388
+    AVR32_ALIAS_PICOSVMUL1,
mgl@1371
 29389
+    AVR32_ALIAS_PICOSVMUL2,
mgl@1371
 29390
+    AVR32_ALIAS_PICOSVMUL3,
mgl@1371
 29391
+    AVR32_ALIAS_PICOVMAC0,
mgl@1371
 29392
+    AVR32_ALIAS_PICOVMAC1,
mgl@1371
 29393
+    AVR32_ALIAS_PICOVMAC2,
mgl@1371
 29394
+    AVR32_ALIAS_PICOVMAC3,
mgl@1371
 29395
+    AVR32_ALIAS_PICOVMUL0,
mgl@1371
 29396
+    AVR32_ALIAS_PICOVMUL1,
mgl@1371
 29397
+    AVR32_ALIAS_PICOVMUL2,
mgl@1371
 29398
+    AVR32_ALIAS_PICOVMUL3,
mgl@1371
 29399
+    AVR32_ALIAS_PICOLD_D1,
mgl@1371
 29400
+    AVR32_ALIAS_PICOLD_D2,
mgl@1371
 29401
+    AVR32_ALIAS_PICOLD_D3,
mgl@1371
 29402
+    AVR32_ALIAS_PICOLD_W1,
mgl@1371
 29403
+    AVR32_ALIAS_PICOLD_W2,
mgl@1371
 29404
+    AVR32_ALIAS_PICOLD_W3,
mgl@1371
 29405
+    AVR32_ALIAS_PICOLDM_D,
mgl@1371
 29406
+    AVR32_ALIAS_PICOLDM_D_PU,
mgl@1371
 29407
+    AVR32_ALIAS_PICOLDM_W,
mgl@1371
 29408
+    AVR32_ALIAS_PICOLDM_W_PU,
mgl@1371
 29409
+    AVR32_ALIAS_PICOMV_D1,
mgl@1371
 29410
+    AVR32_ALIAS_PICOMV_D2,
mgl@1371
 29411
+    AVR32_ALIAS_PICOMV_W1,
mgl@1371
 29412
+    AVR32_ALIAS_PICOMV_W2,
mgl@1371
 29413
+    AVR32_ALIAS_PICOST_D1,
mgl@1371
 29414
+    AVR32_ALIAS_PICOST_D2,
mgl@1371
 29415
+    AVR32_ALIAS_PICOST_D3,
mgl@1371
 29416
+    AVR32_ALIAS_PICOST_W1,
mgl@1371
 29417
+    AVR32_ALIAS_PICOST_W2,
mgl@1371
 29418
+    AVR32_ALIAS_PICOST_W3,
mgl@1371
 29419
+    AVR32_ALIAS_PICOSTM_D,
mgl@1371
 29420
+    AVR32_ALIAS_PICOSTM_D_PU,
mgl@1371
 29421
+    AVR32_ALIAS_PICOSTM_W,
mgl@1371
 29422
+    AVR32_ALIAS_PICOSTM_W_PU,
mgl@1371
 29423
+    AVR32_ALIAS__END_
mgl@1371
 29424
+  };
mgl@1371
 29425
+#define AVR32_NR_ALIAS AVR32_ALIAS__END_
mgl@1371
 29426
+
mgl@1371
 29427
+enum avr32_mnemonic_type
mgl@1371
 29428
+{
mgl@1371
 29429
+  AVR32_MNEMONIC_ABS,
mgl@1371
 29430
+  AVR32_MNEMONIC_ACALL,
mgl@1371
 29431
+  AVR32_MNEMONIC_ACR,
mgl@1371
 29432
+  AVR32_MNEMONIC_ADC,
mgl@1371
 29433
+  AVR32_MNEMONIC_ADD,
mgl@1371
 29434
+  AVR32_MNEMONIC_ADDABS,
mgl@1371
 29435
+  AVR32_MNEMONIC_ADDHH_W,
mgl@1371
 29436
+  AVR32_MNEMONIC_AND,
mgl@1371
 29437
+  AVR32_MNEMONIC_ANDH,
mgl@1371
 29438
+  AVR32_MNEMONIC_ANDL,
mgl@1371
 29439
+  AVR32_MNEMONIC_ANDN,
mgl@1371
 29440
+  AVR32_MNEMONIC_ASR,
mgl@1371
 29441
+  AVR32_MNEMONIC_BFEXTS,
mgl@1371
 29442
+  AVR32_MNEMONIC_BFEXTU,
mgl@1371
 29443
+  AVR32_MNEMONIC_BFINS,
mgl@1371
 29444
+  AVR32_MNEMONIC_BLD,
mgl@1371
 29445
+  AVR32_MNEMONIC_BREQ,
mgl@1371
 29446
+  AVR32_MNEMONIC_BRNE,
mgl@1371
 29447
+  AVR32_MNEMONIC_BRCC,
mgl@1371
 29448
+  AVR32_MNEMONIC_BRCS,
mgl@1371
 29449
+  AVR32_MNEMONIC_BRGE,
mgl@1371
 29450
+  AVR32_MNEMONIC_BRLT,
mgl@1371
 29451
+  AVR32_MNEMONIC_BRMI,
mgl@1371
 29452
+  AVR32_MNEMONIC_BRPL,
mgl@1371
 29453
+  AVR32_MNEMONIC_BRHS,
mgl@1371
 29454
+  AVR32_MNEMONIC_BRLO,
mgl@1371
 29455
+  AVR32_MNEMONIC_BRLS,
mgl@1371
 29456
+  AVR32_MNEMONIC_BRGT,
mgl@1371
 29457
+  AVR32_MNEMONIC_BRLE,
mgl@1371
 29458
+  AVR32_MNEMONIC_BRHI,
mgl@1371
 29459
+  AVR32_MNEMONIC_BRVS,
mgl@1371
 29460
+  AVR32_MNEMONIC_BRVC,
mgl@1371
 29461
+  AVR32_MNEMONIC_BRQS,
mgl@1371
 29462
+  AVR32_MNEMONIC_BRAL,
mgl@1371
 29463
+  AVR32_MNEMONIC_BREAKPOINT,
mgl@1371
 29464
+  AVR32_MNEMONIC_BREV,
mgl@1371
 29465
+  AVR32_MNEMONIC_BST,
mgl@1371
 29466
+  AVR32_MNEMONIC_CACHE,
mgl@1371
 29467
+  AVR32_MNEMONIC_CASTS_B,
mgl@1371
 29468
+  AVR32_MNEMONIC_CASTS_H,
mgl@1371
 29469
+  AVR32_MNEMONIC_CASTU_B,
mgl@1371
 29470
+  AVR32_MNEMONIC_CASTU_H,
mgl@1371
 29471
+  AVR32_MNEMONIC_CBR,
mgl@1371
 29472
+  AVR32_MNEMONIC_CLZ,
mgl@1371
 29473
+  AVR32_MNEMONIC_COM,
mgl@1371
 29474
+  AVR32_MNEMONIC_COP,
mgl@1371
 29475
+  AVR32_MNEMONIC_CP_B,
mgl@1371
 29476
+  AVR32_MNEMONIC_CP_H,
mgl@1371
 29477
+  AVR32_MNEMONIC_CP_W,
mgl@1371
 29478
+  AVR32_MNEMONIC_CP,
mgl@1371
 29479
+  AVR32_MNEMONIC_CPC,
mgl@1371
 29480
+  AVR32_MNEMONIC_CSRF,
mgl@1371
 29481
+  AVR32_MNEMONIC_CSRFCZ,
mgl@1371
 29482
+  AVR32_MNEMONIC_DIVS,
mgl@1371
 29483
+  AVR32_MNEMONIC_DIVU,
mgl@1371
 29484
+  AVR32_MNEMONIC_EOR,
mgl@1371
 29485
+  AVR32_MNEMONIC_EORL,
mgl@1371
 29486
+  AVR32_MNEMONIC_EORH,
mgl@1371
 29487
+  AVR32_MNEMONIC_FRS,
mgl@1371
 29488
+  AVR32_MNEMONIC_ICALL,
mgl@1371
 29489
+  AVR32_MNEMONIC_INCJOSP,
mgl@1371
 29490
+  AVR32_MNEMONIC_LD_D,
mgl@1371
 29491
+  AVR32_MNEMONIC_LD_SB,
mgl@1371
 29492
+  AVR32_MNEMONIC_LD_UB,
mgl@1371
 29493
+  AVR32_MNEMONIC_LD_SH,
mgl@1371
 29494
+  AVR32_MNEMONIC_LD_UH,
mgl@1371
 29495
+  AVR32_MNEMONIC_LD_W,
mgl@1371
 29496
+  AVR32_MNEMONIC_LDC_D,
mgl@1371
 29497
+  AVR32_MNEMONIC_LDC_W,
mgl@1371
 29498
+  AVR32_MNEMONIC_LDC0_D,
mgl@1371
 29499
+  AVR32_MNEMONIC_LDC0_W,
mgl@1371
 29500
+  AVR32_MNEMONIC_LDCM_D,
mgl@1371
 29501
+  AVR32_MNEMONIC_LDCM_W,
mgl@1371
 29502
+  AVR32_MNEMONIC_LDDPC,
mgl@1371
 29503
+  AVR32_MNEMONIC_LDDSP,
mgl@1371
 29504
+  AVR32_MNEMONIC_LDINS_B,
mgl@1371
 29505
+  AVR32_MNEMONIC_LDINS_H,
mgl@1371
 29506
+  AVR32_MNEMONIC_LDM,
mgl@1371
 29507
+  AVR32_MNEMONIC_LDMTS,
mgl@1371
 29508
+  AVR32_MNEMONIC_LDSWP_SH,
mgl@1371
 29509
+  AVR32_MNEMONIC_LDSWP_UH,
mgl@1371
 29510
+  AVR32_MNEMONIC_LDSWP_W,
mgl@1371
 29511
+  AVR32_MNEMONIC_LSL,
mgl@1371
 29512
+  AVR32_MNEMONIC_LSR,
mgl@1371
 29513
+  AVR32_MNEMONIC_MAC,
mgl@1371
 29514
+  AVR32_MNEMONIC_MACHH_D,
mgl@1371
 29515
+  AVR32_MNEMONIC_MACHH_W,
mgl@1371
 29516
+  AVR32_MNEMONIC_MACS_D,
mgl@1371
 29517
+  AVR32_MNEMONIC_MACSATHH_W,
mgl@1371
 29518
+  AVR32_MNEMONIC_MACU_D,
mgl@1371
 29519
+  AVR32_MNEMONIC_MACWH_D,
mgl@1371
 29520
+  AVR32_MNEMONIC_MAX,
mgl@1371
 29521
+  AVR32_MNEMONIC_MCALL,
mgl@1371
 29522
+  AVR32_MNEMONIC_MFDR,
mgl@1371
 29523
+  AVR32_MNEMONIC_MFSR,
mgl@1371
 29524
+  AVR32_MNEMONIC_MIN,
mgl@1371
 29525
+  AVR32_MNEMONIC_MOV,
mgl@1371
 29526
+  AVR32_MNEMONIC_MOVEQ,
mgl@1371
 29527
+  AVR32_MNEMONIC_MOVNE,
mgl@1371
 29528
+  AVR32_MNEMONIC_MOVCC,
mgl@1371
 29529
+  AVR32_MNEMONIC_MOVCS,
mgl@1371
 29530
+  AVR32_MNEMONIC_MOVGE,
mgl@1371
 29531
+  AVR32_MNEMONIC_MOVLT,
mgl@1371
 29532
+  AVR32_MNEMONIC_MOVMI,
mgl@1371
 29533
+  AVR32_MNEMONIC_MOVPL,
mgl@1371
 29534
+  AVR32_MNEMONIC_MOVLS,
mgl@1371
 29535
+  AVR32_MNEMONIC_MOVGT,
mgl@1371
 29536
+  AVR32_MNEMONIC_MOVLE,
mgl@1371
 29537
+  AVR32_MNEMONIC_MOVHI,
mgl@1371
 29538
+  AVR32_MNEMONIC_MOVVS,
mgl@1371
 29539
+  AVR32_MNEMONIC_MOVVC,
mgl@1371
 29540
+  AVR32_MNEMONIC_MOVQS,
mgl@1371
 29541
+  AVR32_MNEMONIC_MOVAL,
mgl@1371
 29542
+  AVR32_MNEMONIC_MOVHS,
mgl@1371
 29543
+  AVR32_MNEMONIC_MOVLO,
mgl@1371
 29544
+  AVR32_MNEMONIC_MTDR,
mgl@1371
 29545
+  AVR32_MNEMONIC_MTSR,
mgl@1371
 29546
+  AVR32_MNEMONIC_MUL,
mgl@1371
 29547
+  AVR32_MNEMONIC_MULHH_W,
mgl@1371
 29548
+  AVR32_MNEMONIC_MULNHH_W,
mgl@1371
 29549
+  AVR32_MNEMONIC_MULNWH_D,
mgl@1371
 29550
+  AVR32_MNEMONIC_MULS_D,
mgl@1371
 29551
+  AVR32_MNEMONIC_MULSATHH_H,
mgl@1371
 29552
+  AVR32_MNEMONIC_MULSATHH_W,
mgl@1371
 29553
+  AVR32_MNEMONIC_MULSATRNDHH_H,
mgl@1371
 29554
+  AVR32_MNEMONIC_MULSATRNDWH_W,
mgl@1371
 29555
+  AVR32_MNEMONIC_MULSATWH_W,
mgl@1371
 29556
+  AVR32_MNEMONIC_MULU_D,
mgl@1371
 29557
+  AVR32_MNEMONIC_MULWH_D,
mgl@1371
 29558
+  AVR32_MNEMONIC_MUSFR,
mgl@1371
 29559
+  AVR32_MNEMONIC_MUSTR,
mgl@1371
 29560
+  AVR32_MNEMONIC_MVCR_D,
mgl@1371
 29561
+  AVR32_MNEMONIC_MVCR_W,
mgl@1371
 29562
+  AVR32_MNEMONIC_MVRC_D,
mgl@1371
 29563
+  AVR32_MNEMONIC_MVRC_W,
mgl@1371
 29564
+  AVR32_MNEMONIC_NEG,
mgl@1371
 29565
+  AVR32_MNEMONIC_NOP,
mgl@1371
 29566
+  AVR32_MNEMONIC_OR,
mgl@1371
 29567
+  AVR32_MNEMONIC_ORH,
mgl@1371
 29568
+  AVR32_MNEMONIC_ORL,
mgl@1371
 29569
+  AVR32_MNEMONIC_PABS_SB,
mgl@1371
 29570
+  AVR32_MNEMONIC_PABS_SH,
mgl@1371
 29571
+  AVR32_MNEMONIC_PACKSH_SB,
mgl@1371
 29572
+  AVR32_MNEMONIC_PACKSH_UB,
mgl@1371
 29573
+  AVR32_MNEMONIC_PACKW_SH,
mgl@1371
 29574
+  AVR32_MNEMONIC_PADD_B,
mgl@1371
 29575
+  AVR32_MNEMONIC_PADD_H,
mgl@1371
 29576
+  AVR32_MNEMONIC_PADDH_SH,
mgl@1371
 29577
+  AVR32_MNEMONIC_PADDH_UB,
mgl@1371
 29578
+  AVR32_MNEMONIC_PADDS_SB,
mgl@1371
 29579
+  AVR32_MNEMONIC_PADDS_SH,
mgl@1371
 29580
+  AVR32_MNEMONIC_PADDS_UB,
mgl@1371
 29581
+  AVR32_MNEMONIC_PADDS_UH,
mgl@1371
 29582
+  AVR32_MNEMONIC_PADDSUB_H,
mgl@1371
 29583
+  AVR32_MNEMONIC_PADDSUBH_SH,
mgl@1371
 29584
+  AVR32_MNEMONIC_PADDSUBS_SH,
mgl@1371
 29585
+  AVR32_MNEMONIC_PADDSUBS_UH,
mgl@1371
 29586
+  AVR32_MNEMONIC_PADDX_H,
mgl@1371
 29587
+  AVR32_MNEMONIC_PADDXH_SH,
mgl@1371
 29588
+  AVR32_MNEMONIC_PADDXS_SH,
mgl@1371
 29589
+  AVR32_MNEMONIC_PADDXS_UH,
mgl@1371
 29590
+  AVR32_MNEMONIC_PASR_B,
mgl@1371
 29591
+  AVR32_MNEMONIC_PASR_H,
mgl@1371
 29592
+  AVR32_MNEMONIC_PAVG_SH,
mgl@1371
 29593
+  AVR32_MNEMONIC_PAVG_UB,
mgl@1371
 29594
+  AVR32_MNEMONIC_PLSL_B,
mgl@1371
 29595
+  AVR32_MNEMONIC_PLSL_H,
mgl@1371
 29596
+  AVR32_MNEMONIC_PLSR_B,
mgl@1371
 29597
+  AVR32_MNEMONIC_PLSR_H,
mgl@1371
 29598
+  AVR32_MNEMONIC_PMAX_SH,
mgl@1371
 29599
+  AVR32_MNEMONIC_PMAX_UB,
mgl@1371
 29600
+  AVR32_MNEMONIC_PMIN_SH,
mgl@1371
 29601
+  AVR32_MNEMONIC_PMIN_UB,
mgl@1371
 29602
+  AVR32_MNEMONIC_POPJC,
mgl@1371
 29603
+  AVR32_MNEMONIC_POPM,
mgl@1371
 29604
+  AVR32_MNEMONIC_PREF,
mgl@1371
 29605
+  AVR32_MNEMONIC_PSAD,
mgl@1371
 29606
+  AVR32_MNEMONIC_PSUB_B,
mgl@1371
 29607
+  AVR32_MNEMONIC_PSUB_H,
mgl@1371
 29608
+  AVR32_MNEMONIC_PSUBADD_H,
mgl@1371
 29609
+  AVR32_MNEMONIC_PSUBADDH_SH,
mgl@1371
 29610
+  AVR32_MNEMONIC_PSUBADDS_SH,
mgl@1371
 29611
+  AVR32_MNEMONIC_PSUBADDS_UH,
mgl@1371
 29612
+  AVR32_MNEMONIC_PSUBH_SH,
mgl@1371
 29613
+  AVR32_MNEMONIC_PSUBH_UB,
mgl@1371
 29614
+  AVR32_MNEMONIC_PSUBS_SB,
mgl@1371
 29615
+  AVR32_MNEMONIC_PSUBS_SH,
mgl@1371
 29616
+  AVR32_MNEMONIC_PSUBS_UB,
mgl@1371
 29617
+  AVR32_MNEMONIC_PSUBS_UH,
mgl@1371
 29618
+  AVR32_MNEMONIC_PSUBX_H,
mgl@1371
 29619
+  AVR32_MNEMONIC_PSUBXH_SH,
mgl@1371
 29620
+  AVR32_MNEMONIC_PSUBXS_SH,
mgl@1371
 29621
+  AVR32_MNEMONIC_PSUBXS_UH,
mgl@1371
 29622
+  AVR32_MNEMONIC_PUNPCKSB_H,
mgl@1371
 29623
+  AVR32_MNEMONIC_PUNPCKUB_H,
mgl@1371
 29624
+  AVR32_MNEMONIC_PUSHJC,
mgl@1371
 29625
+  AVR32_MNEMONIC_PUSHM,
mgl@1371
 29626
+  AVR32_MNEMONIC_RCALL,
mgl@1371
 29627
+  AVR32_MNEMONIC_RETEQ,
mgl@1371
 29628
+  AVR32_MNEMONIC_RETNE,
mgl@1371
 29629
+  AVR32_MNEMONIC_RETCC,
mgl@1371
 29630
+  AVR32_MNEMONIC_RETCS,
mgl@1371
 29631
+  AVR32_MNEMONIC_RETGE,
mgl@1371
 29632
+  AVR32_MNEMONIC_RETLT,
mgl@1371
 29633
+  AVR32_MNEMONIC_RETMI,
mgl@1371
 29634
+  AVR32_MNEMONIC_RETPL,
mgl@1371
 29635
+  AVR32_MNEMONIC_RETLS,
mgl@1371
 29636
+  AVR32_MNEMONIC_RETGT,
mgl@1371
 29637
+  AVR32_MNEMONIC_RETLE,
mgl@1371
 29638
+  AVR32_MNEMONIC_RETHI,
mgl@1371
 29639
+  AVR32_MNEMONIC_RETVS,
mgl@1371
 29640
+  AVR32_MNEMONIC_RETVC,
mgl@1371
 29641
+  AVR32_MNEMONIC_RETQS,
mgl@1371
 29642
+  AVR32_MNEMONIC_RETAL,
mgl@1371
 29643
+  AVR32_MNEMONIC_RETHS,
mgl@1371
 29644
+  AVR32_MNEMONIC_RETLO,
mgl@1371
 29645
+  AVR32_MNEMONIC_RET,
mgl@1371
 29646
+  AVR32_MNEMONIC_RETD,
mgl@1371
 29647
+  AVR32_MNEMONIC_RETE,
mgl@1371
 29648
+  AVR32_MNEMONIC_RETJ,
mgl@1371
 29649
+  AVR32_MNEMONIC_RETS,
mgl@1371
 29650
+  AVR32_MNEMONIC_RJMP,
mgl@1371
 29651
+  AVR32_MNEMONIC_ROL,
mgl@1371
 29652
+  AVR32_MNEMONIC_ROR,
mgl@1371
 29653
+  AVR32_MNEMONIC_RSUB,
mgl@1371
 29654
+  AVR32_MNEMONIC_SATADD_H,
mgl@1371
 29655
+  AVR32_MNEMONIC_SATADD_W,
mgl@1371
 29656
+  AVR32_MNEMONIC_SATRNDS,
mgl@1371
 29657
+  AVR32_MNEMONIC_SATRNDU,
mgl@1371
 29658
+  AVR32_MNEMONIC_SATS,
mgl@1371
 29659
+  AVR32_MNEMONIC_SATSUB_H,
mgl@1371
 29660
+  AVR32_MNEMONIC_SATSUB_W,
mgl@1371
 29661
+  AVR32_MNEMONIC_SATU,
mgl@1371
 29662
+  AVR32_MNEMONIC_SBC,
mgl@1371
 29663
+  AVR32_MNEMONIC_SBR,
mgl@1371
 29664
+  AVR32_MNEMONIC_SCALL,
mgl@1371
 29665
+  AVR32_MNEMONIC_SCR,
mgl@1371
 29666
+  AVR32_MNEMONIC_SLEEP,
mgl@1371
 29667
+  AVR32_MNEMONIC_SREQ,
mgl@1371
 29668
+  AVR32_MNEMONIC_SRNE,
mgl@1371
 29669
+  AVR32_MNEMONIC_SRCC,
mgl@1371
 29670
+  AVR32_MNEMONIC_SRCS,
mgl@1371
 29671
+  AVR32_MNEMONIC_SRGE,
mgl@1371
 29672
+  AVR32_MNEMONIC_SRLT,
mgl@1371
 29673
+  AVR32_MNEMONIC_SRMI,
mgl@1371
 29674
+  AVR32_MNEMONIC_SRPL,
mgl@1371
 29675
+  AVR32_MNEMONIC_SRLS,
mgl@1371
 29676
+  AVR32_MNEMONIC_SRGT,
mgl@1371
 29677
+  AVR32_MNEMONIC_SRLE,
mgl@1371
 29678
+  AVR32_MNEMONIC_SRHI,
mgl@1371
 29679
+  AVR32_MNEMONIC_SRVS,
mgl@1371
 29680
+  AVR32_MNEMONIC_SRVC,
mgl@1371
 29681
+  AVR32_MNEMONIC_SRQS,
mgl@1371
 29682
+  AVR32_MNEMONIC_SRAL,
mgl@1371
 29683
+  AVR32_MNEMONIC_SRHS,
mgl@1371
 29684
+  AVR32_MNEMONIC_SRLO,
mgl@1371
 29685
+  AVR32_MNEMONIC_SSRF,
mgl@1371
 29686
+  AVR32_MNEMONIC_ST_B,
mgl@1371
 29687
+  AVR32_MNEMONIC_ST_D,
mgl@1371
 29688
+  AVR32_MNEMONIC_ST_H,
mgl@1371
 29689
+  AVR32_MNEMONIC_ST_W,
mgl@1371
 29690
+  AVR32_MNEMONIC_STC_D,
mgl@1371
 29691
+  AVR32_MNEMONIC_STC_W,
mgl@1371
 29692
+  AVR32_MNEMONIC_STC0_D,
mgl@1371
 29693
+  AVR32_MNEMONIC_STC0_W,
mgl@1371
 29694
+  AVR32_MNEMONIC_STCM_D,
mgl@1371
 29695
+  AVR32_MNEMONIC_STCM_W,
mgl@1371
 29696
+  AVR32_MNEMONIC_STCOND,
mgl@1371
 29697
+  AVR32_MNEMONIC_STDSP,
mgl@1371
 29698
+  AVR32_MNEMONIC_STHH_W,
mgl@1371
 29699
+  AVR32_MNEMONIC_STM,
mgl@1371
 29700
+  AVR32_MNEMONIC_STMTS,
mgl@1371
 29701
+  AVR32_MNEMONIC_STSWP_H,
mgl@1371
 29702
+  AVR32_MNEMONIC_STSWP_W,
mgl@1371
 29703
+  AVR32_MNEMONIC_SUB,
mgl@1371
 29704
+  AVR32_MNEMONIC_SUBEQ,
mgl@1371
 29705
+  AVR32_MNEMONIC_SUBNE,
mgl@1371
 29706
+  AVR32_MNEMONIC_SUBCC,
mgl@1371
 29707
+  AVR32_MNEMONIC_SUBCS,
mgl@1371
 29708
+  AVR32_MNEMONIC_SUBGE,
mgl@1371
 29709
+  AVR32_MNEMONIC_SUBLT,
mgl@1371
 29710
+  AVR32_MNEMONIC_SUBMI,
mgl@1371
 29711
+  AVR32_MNEMONIC_SUBPL,
mgl@1371
 29712
+  AVR32_MNEMONIC_SUBLS,
mgl@1371
 29713
+  AVR32_MNEMONIC_SUBGT,
mgl@1371
 29714
+  AVR32_MNEMONIC_SUBLE,
mgl@1371
 29715
+  AVR32_MNEMONIC_SUBHI,
mgl@1371
 29716
+  AVR32_MNEMONIC_SUBVS,
mgl@1371
 29717
+  AVR32_MNEMONIC_SUBVC,
mgl@1371
 29718
+  AVR32_MNEMONIC_SUBQS,
mgl@1371
 29719
+  AVR32_MNEMONIC_SUBAL,
mgl@1371
 29720
+  AVR32_MNEMONIC_SUBHS,
mgl@1371
 29721
+  AVR32_MNEMONIC_SUBLO,
mgl@1371
 29722
+  AVR32_MNEMONIC_SUBFEQ,
mgl@1371
 29723
+  AVR32_MNEMONIC_SUBFNE,
mgl@1371
 29724
+  AVR32_MNEMONIC_SUBFCC,
mgl@1371
 29725
+  AVR32_MNEMONIC_SUBFCS,
mgl@1371
 29726
+  AVR32_MNEMONIC_SUBFGE,
mgl@1371
 29727
+  AVR32_MNEMONIC_SUBFLT,
mgl@1371
 29728
+  AVR32_MNEMONIC_SUBFMI,
mgl@1371
 29729
+  AVR32_MNEMONIC_SUBFPL,
mgl@1371
 29730
+  AVR32_MNEMONIC_SUBFLS,
mgl@1371
 29731
+  AVR32_MNEMONIC_SUBFGT,
mgl@1371
 29732
+  AVR32_MNEMONIC_SUBFLE,
mgl@1371
 29733
+  AVR32_MNEMONIC_SUBFHI,
mgl@1371
 29734
+  AVR32_MNEMONIC_SUBFVS,
mgl@1371
 29735
+  AVR32_MNEMONIC_SUBFVC,
mgl@1371
 29736
+  AVR32_MNEMONIC_SUBFQS,
mgl@1371
 29737
+  AVR32_MNEMONIC_SUBFAL,
mgl@1371
 29738
+  AVR32_MNEMONIC_SUBFHS,
mgl@1371
 29739
+  AVR32_MNEMONIC_SUBFLO,
mgl@1371
 29740
+  AVR32_MNEMONIC_SUBHH_W,
mgl@1371
 29741
+  AVR32_MNEMONIC_SWAP_B,
mgl@1371
 29742
+  AVR32_MNEMONIC_SWAP_BH,
mgl@1371
 29743
+  AVR32_MNEMONIC_SWAP_H,
mgl@1371
 29744
+  AVR32_MNEMONIC_SYNC,
mgl@1371
 29745
+  AVR32_MNEMONIC_TLBR,
mgl@1371
 29746
+  AVR32_MNEMONIC_TLBS,
mgl@1371
 29747
+  AVR32_MNEMONIC_TLBW,
mgl@1371
 29748
+  AVR32_MNEMONIC_TNBZ,
mgl@1371
 29749
+  AVR32_MNEMONIC_TST,
mgl@1371
 29750
+  AVR32_MNEMONIC_XCHG,
mgl@1371
 29751
+  AVR32_MNEMONIC_MEMC,
mgl@1371
 29752
+  AVR32_MNEMONIC_MEMS,
mgl@1371
 29753
+  AVR32_MNEMONIC_MEMT,
mgl@1371
 29754
+  AVR32_MNEMONIC_FADD_S,
mgl@1371
 29755
+  AVR32_MNEMONIC_FADD_D,
mgl@1371
 29756
+  AVR32_MNEMONIC_FSUB_S,
mgl@1371
 29757
+  AVR32_MNEMONIC_FSUB_D,
mgl@1371
 29758
+  AVR32_MNEMONIC_FMAC_S,
mgl@1371
 29759
+  AVR32_MNEMONIC_FMAC_D,
mgl@1371
 29760
+  AVR32_MNEMONIC_FNMAC_S,
mgl@1371
 29761
+  AVR32_MNEMONIC_FNMAC_D,
mgl@1371
 29762
+  AVR32_MNEMONIC_FMSC_S,
mgl@1371
 29763
+  AVR32_MNEMONIC_FMSC_D,
mgl@1371
 29764
+  AVR32_MNEMONIC_FNMSC_S,
mgl@1371
 29765
+  AVR32_MNEMONIC_FNMSC_D,
mgl@1371
 29766
+  AVR32_MNEMONIC_FMUL_S,
mgl@1371
 29767
+  AVR32_MNEMONIC_FMUL_D,
mgl@1371
 29768
+  AVR32_MNEMONIC_FNMUL_S,
mgl@1371
 29769
+  AVR32_MNEMONIC_FNMUL_D,
mgl@1371
 29770
+  AVR32_MNEMONIC_FNEG_S,
mgl@1371
 29771
+  AVR32_MNEMONIC_FNEG_D,
mgl@1371
 29772
+  AVR32_MNEMONIC_FABS_S,
mgl@1371
 29773
+  AVR32_MNEMONIC_FABS_D,
mgl@1371
 29774
+  AVR32_MNEMONIC_FCMP_S,
mgl@1371
 29775
+  AVR32_MNEMONIC_FCMP_D,
mgl@1371
 29776
+  AVR32_MNEMONIC_FMOV_S,
mgl@1371
 29777
+  AVR32_MNEMONIC_FMOV_D,
mgl@1371
 29778
+  AVR32_MNEMONIC_FCASTS_D,
mgl@1371
 29779
+  AVR32_MNEMONIC_FCASTD_S,
mgl@1371
 29780
+  /* AVR32_MNEMONIC_FLD_S,
mgl@1371
 29781
+     AVR32_MNEMONIC_FLD_D,
mgl@1371
 29782
+     AVR32_MNEMONIC_FST_S,
mgl@1371
 29783
+     AVR32_MNEMONIC_FST_D, */
mgl@1371
 29784
+  AVR32_MNEMONIC_LDA_W,
mgl@1371
 29785
+  AVR32_MNEMONIC_CALL,
mgl@1371
 29786
+  AVR32_MNEMONIC_PICOSVMAC,
mgl@1371
 29787
+  AVR32_MNEMONIC_PICOSVMUL,
mgl@1371
 29788
+  AVR32_MNEMONIC_PICOVMAC,
mgl@1371
 29789
+  AVR32_MNEMONIC_PICOVMUL,
mgl@1371
 29790
+  AVR32_MNEMONIC_PICOLD_D,
mgl@1371
 29791
+  AVR32_MNEMONIC_PICOLD_W,
mgl@1371
 29792
+  AVR32_MNEMONIC_PICOLDM_D,
mgl@1371
 29793
+  AVR32_MNEMONIC_PICOLDM_W,
mgl@1371
 29794
+  AVR32_MNEMONIC_PICOMV_D,
mgl@1371
 29795
+  AVR32_MNEMONIC_PICOMV_W,
mgl@1371
 29796
+  AVR32_MNEMONIC_PICOST_D,
mgl@1371
 29797
+  AVR32_MNEMONIC_PICOST_W,
mgl@1371
 29798
+  AVR32_MNEMONIC_PICOSTM_D,
mgl@1371
 29799
+  AVR32_MNEMONIC_PICOSTM_W,
mgl@1371
 29800
+  AVR32_MNEMONIC_RSUBEQ,
mgl@1371
 29801
+  AVR32_MNEMONIC_RSUBNE,
mgl@1371
 29802
+  AVR32_MNEMONIC_RSUBCC,
mgl@1371
 29803
+  AVR32_MNEMONIC_RSUBCS,
mgl@1371
 29804
+  AVR32_MNEMONIC_RSUBGE,
mgl@1371
 29805
+  AVR32_MNEMONIC_RSUBLT,
mgl@1371
 29806
+  AVR32_MNEMONIC_RSUBMI,
mgl@1371
 29807
+  AVR32_MNEMONIC_RSUBPL,
mgl@1371
 29808
+  AVR32_MNEMONIC_RSUBLS,
mgl@1371
 29809
+  AVR32_MNEMONIC_RSUBGT,
mgl@1371
 29810
+  AVR32_MNEMONIC_RSUBLE,
mgl@1371
 29811
+  AVR32_MNEMONIC_RSUBHI,
mgl@1371
 29812
+  AVR32_MNEMONIC_RSUBVS,
mgl@1371
 29813
+  AVR32_MNEMONIC_RSUBVC,
mgl@1371
 29814
+  AVR32_MNEMONIC_RSUBQS,
mgl@1371
 29815
+  AVR32_MNEMONIC_RSUBAL,
mgl@1371
 29816
+  AVR32_MNEMONIC_RSUBHS,
mgl@1371
 29817
+  AVR32_MNEMONIC_RSUBLO,
mgl@1371
 29818
+  AVR32_MNEMONIC_ADDEQ,
mgl@1371
 29819
+  AVR32_MNEMONIC_ADDNE,
mgl@1371
 29820
+  AVR32_MNEMONIC_ADDCC,
mgl@1371
 29821
+  AVR32_MNEMONIC_ADDCS,
mgl@1371
 29822
+  AVR32_MNEMONIC_ADDGE,
mgl@1371
 29823
+  AVR32_MNEMONIC_ADDLT,
mgl@1371
 29824
+  AVR32_MNEMONIC_ADDMI,
mgl@1371
 29825
+  AVR32_MNEMONIC_ADDPL,
mgl@1371
 29826
+  AVR32_MNEMONIC_ADDLS,
mgl@1371
 29827
+  AVR32_MNEMONIC_ADDGT,
mgl@1371
 29828
+  AVR32_MNEMONIC_ADDLE,
mgl@1371
 29829
+  AVR32_MNEMONIC_ADDHI,
mgl@1371
 29830
+  AVR32_MNEMONIC_ADDVS,
mgl@1371
 29831
+  AVR32_MNEMONIC_ADDVC,
mgl@1371
 29832
+  AVR32_MNEMONIC_ADDQS,
mgl@1371
 29833
+  AVR32_MNEMONIC_ADDAL,
mgl@1371
 29834
+  AVR32_MNEMONIC_ADDHS,
mgl@1371
 29835
+  AVR32_MNEMONIC_ADDLO,
mgl@1371
 29836
+  AVR32_MNEMONIC_ANDEQ,
mgl@1371
 29837
+  AVR32_MNEMONIC_ANDNE,
mgl@1371
 29838
+  AVR32_MNEMONIC_ANDCC,
mgl@1371
 29839
+  AVR32_MNEMONIC_ANDCS,
mgl@1371
 29840
+  AVR32_MNEMONIC_ANDGE,
mgl@1371
 29841
+  AVR32_MNEMONIC_ANDLT,
mgl@1371
 29842
+  AVR32_MNEMONIC_ANDMI,
mgl@1371
 29843
+  AVR32_MNEMONIC_ANDPL,
mgl@1371
 29844
+  AVR32_MNEMONIC_ANDLS,
mgl@1371
 29845
+  AVR32_MNEMONIC_ANDGT,
mgl@1371
 29846
+  AVR32_MNEMONIC_ANDLE,
mgl@1371
 29847
+  AVR32_MNEMONIC_ANDHI,
mgl@1371
 29848
+  AVR32_MNEMONIC_ANDVS,
mgl@1371
 29849
+  AVR32_MNEMONIC_ANDVC,
mgl@1371
 29850
+  AVR32_MNEMONIC_ANDQS,
mgl@1371
 29851
+  AVR32_MNEMONIC_ANDAL,
mgl@1371
 29852
+  AVR32_MNEMONIC_ANDHS,
mgl@1371
 29853
+  AVR32_MNEMONIC_ANDLO,
mgl@1371
 29854
+  AVR32_MNEMONIC_OREQ,
mgl@1371
 29855
+  AVR32_MNEMONIC_ORNE,
mgl@1371
 29856
+  AVR32_MNEMONIC_ORCC,
mgl@1371
 29857
+  AVR32_MNEMONIC_ORCS,
mgl@1371
 29858
+  AVR32_MNEMONIC_ORGE,
mgl@1371
 29859
+  AVR32_MNEMONIC_ORLT,
mgl@1371
 29860
+  AVR32_MNEMONIC_ORMI,
mgl@1371
 29861
+  AVR32_MNEMONIC_ORPL,
mgl@1371
 29862
+  AVR32_MNEMONIC_ORLS,
mgl@1371
 29863
+  AVR32_MNEMONIC_ORGT,
mgl@1371
 29864
+  AVR32_MNEMONIC_ORLE,
mgl@1371
 29865
+  AVR32_MNEMONIC_ORHI,
mgl@1371
 29866
+  AVR32_MNEMONIC_ORVS,
mgl@1371
 29867
+  AVR32_MNEMONIC_ORVC,
mgl@1371
 29868
+  AVR32_MNEMONIC_ORQS,
mgl@1371
 29869
+  AVR32_MNEMONIC_ORAL,
mgl@1371
 29870
+  AVR32_MNEMONIC_ORHS,
mgl@1371
 29871
+  AVR32_MNEMONIC_ORLO,
mgl@1371
 29872
+  AVR32_MNEMONIC_EOREQ,
mgl@1371
 29873
+  AVR32_MNEMONIC_EORNE,
mgl@1371
 29874
+  AVR32_MNEMONIC_EORCC,
mgl@1371
 29875
+  AVR32_MNEMONIC_EORCS,
mgl@1371
 29876
+  AVR32_MNEMONIC_EORGE,
mgl@1371
 29877
+  AVR32_MNEMONIC_EORLT,
mgl@1371
 29878
+  AVR32_MNEMONIC_EORMI,
mgl@1371
 29879
+  AVR32_MNEMONIC_EORPL,
mgl@1371
 29880
+  AVR32_MNEMONIC_EORLS,
mgl@1371
 29881
+  AVR32_MNEMONIC_EORGT,
mgl@1371
 29882
+  AVR32_MNEMONIC_EORLE,
mgl@1371
 29883
+  AVR32_MNEMONIC_EORHI,
mgl@1371
 29884
+  AVR32_MNEMONIC_EORVS,
mgl@1371
 29885
+  AVR32_MNEMONIC_EORVC,
mgl@1371
 29886
+  AVR32_MNEMONIC_EORQS,
mgl@1371
 29887
+  AVR32_MNEMONIC_EORAL,
mgl@1371
 29888
+  AVR32_MNEMONIC_EORHS,
mgl@1371
 29889
+  AVR32_MNEMONIC_EORLO,
mgl@1371
 29890
+  AVR32_MNEMONIC_LD_WEQ,
mgl@1371
 29891
+  AVR32_MNEMONIC_LD_WNE,
mgl@1371
 29892
+  AVR32_MNEMONIC_LD_WCC,
mgl@1371
 29893
+  AVR32_MNEMONIC_LD_WCS,
mgl@1371
 29894
+  AVR32_MNEMONIC_LD_WGE,
mgl@1371
 29895
+  AVR32_MNEMONIC_LD_WLT,
mgl@1371
 29896
+  AVR32_MNEMONIC_LD_WMI,
mgl@1371
 29897
+  AVR32_MNEMONIC_LD_WPL,
mgl@1371
 29898
+  AVR32_MNEMONIC_LD_WLS,
mgl@1371
 29899
+  AVR32_MNEMONIC_LD_WGT,
mgl@1371
 29900
+  AVR32_MNEMONIC_LD_WLE,
mgl@1371
 29901
+  AVR32_MNEMONIC_LD_WHI,
mgl@1371
 29902
+  AVR32_MNEMONIC_LD_WVS,
mgl@1371
 29903
+  AVR32_MNEMONIC_LD_WVC,
mgl@1371
 29904
+  AVR32_MNEMONIC_LD_WQS,
mgl@1371
 29905
+  AVR32_MNEMONIC_LD_WAL,
mgl@1371
 29906
+  AVR32_MNEMONIC_LD_WHS,
mgl@1371
 29907
+  AVR32_MNEMONIC_LD_WLO,
mgl@1371
 29908
+  AVR32_MNEMONIC_LD_SHEQ,
mgl@1371
 29909
+  AVR32_MNEMONIC_LD_SHNE,
mgl@1371
 29910
+  AVR32_MNEMONIC_LD_SHCC,
mgl@1371
 29911
+  AVR32_MNEMONIC_LD_SHCS,
mgl@1371
 29912
+  AVR32_MNEMONIC_LD_SHGE,
mgl@1371
 29913
+  AVR32_MNEMONIC_LD_SHLT,
mgl@1371
 29914
+  AVR32_MNEMONIC_LD_SHMI,
mgl@1371
 29915
+  AVR32_MNEMONIC_LD_SHPL,
mgl@1371
 29916
+  AVR32_MNEMONIC_LD_SHLS,
mgl@1371
 29917
+  AVR32_MNEMONIC_LD_SHGT,
mgl@1371
 29918
+  AVR32_MNEMONIC_LD_SHLE,
mgl@1371
 29919
+  AVR32_MNEMONIC_LD_SHHI,
mgl@1371
 29920
+  AVR32_MNEMONIC_LD_SHVS,
mgl@1371
 29921
+  AVR32_MNEMONIC_LD_SHVC,
mgl@1371
 29922
+  AVR32_MNEMONIC_LD_SHQS,
mgl@1371
 29923
+  AVR32_MNEMONIC_LD_SHAL,
mgl@1371
 29924
+  AVR32_MNEMONIC_LD_SHHS,
mgl@1371
 29925
+  AVR32_MNEMONIC_LD_SHLO,
mgl@1371
 29926
+  AVR32_MNEMONIC_LD_UHEQ,
mgl@1371
 29927
+  AVR32_MNEMONIC_LD_UHNE,
mgl@1371
 29928
+  AVR32_MNEMONIC_LD_UHCC,
mgl@1371
 29929
+  AVR32_MNEMONIC_LD_UHCS,
mgl@1371
 29930
+  AVR32_MNEMONIC_LD_UHGE,
mgl@1371
 29931
+  AVR32_MNEMONIC_LD_UHLT,
mgl@1371
 29932
+  AVR32_MNEMONIC_LD_UHMI,
mgl@1371
 29933
+  AVR32_MNEMONIC_LD_UHPL,
mgl@1371
 29934
+  AVR32_MNEMONIC_LD_UHLS,
mgl@1371
 29935
+  AVR32_MNEMONIC_LD_UHGT,
mgl@1371
 29936
+  AVR32_MNEMONIC_LD_UHLE,
mgl@1371
 29937
+  AVR32_MNEMONIC_LD_UHHI,
mgl@1371
 29938
+  AVR32_MNEMONIC_LD_UHVS,
mgl@1371
 29939
+  AVR32_MNEMONIC_LD_UHVC,
mgl@1371
 29940
+  AVR32_MNEMONIC_LD_UHQS,
mgl@1371
 29941
+  AVR32_MNEMONIC_LD_UHAL,
mgl@1371
 29942
+  AVR32_MNEMONIC_LD_UHHS,
mgl@1371
 29943
+  AVR32_MNEMONIC_LD_UHLO,
mgl@1371
 29944
+  AVR32_MNEMONIC_LD_SBEQ,
mgl@1371
 29945
+  AVR32_MNEMONIC_LD_SBNE,
mgl@1371
 29946
+  AVR32_MNEMONIC_LD_SBCC,
mgl@1371
 29947
+  AVR32_MNEMONIC_LD_SBCS,
mgl@1371
 29948
+  AVR32_MNEMONIC_LD_SBGE,
mgl@1371
 29949
+  AVR32_MNEMONIC_LD_SBLT,
mgl@1371
 29950
+  AVR32_MNEMONIC_LD_SBMI,
mgl@1371
 29951
+  AVR32_MNEMONIC_LD_SBPL,
mgl@1371
 29952
+  AVR32_MNEMONIC_LD_SBLS,
mgl@1371
 29953
+  AVR32_MNEMONIC_LD_SBGT,
mgl@1371
 29954
+  AVR32_MNEMONIC_LD_SBLE,
mgl@1371
 29955
+  AVR32_MNEMONIC_LD_SBHI,
mgl@1371
 29956
+  AVR32_MNEMONIC_LD_SBVS,
mgl@1371
 29957
+  AVR32_MNEMONIC_LD_SBVC,
mgl@1371
 29958
+  AVR32_MNEMONIC_LD_SBQS,
mgl@1371
 29959
+  AVR32_MNEMONIC_LD_SBAL,
mgl@1371
 29960
+  AVR32_MNEMONIC_LD_SBHS,
mgl@1371
 29961
+  AVR32_MNEMONIC_LD_SBLO,
mgl@1371
 29962
+  AVR32_MNEMONIC_LD_UBEQ,
mgl@1371
 29963
+  AVR32_MNEMONIC_LD_UBNE,
mgl@1371
 29964
+  AVR32_MNEMONIC_LD_UBCC,
mgl@1371
 29965
+  AVR32_MNEMONIC_LD_UBCS,
mgl@1371
 29966
+  AVR32_MNEMONIC_LD_UBGE,
mgl@1371
 29967
+  AVR32_MNEMONIC_LD_UBLT,
mgl@1371
 29968
+  AVR32_MNEMONIC_LD_UBMI,
mgl@1371
 29969
+  AVR32_MNEMONIC_LD_UBPL,
mgl@1371
 29970
+  AVR32_MNEMONIC_LD_UBLS,
mgl@1371
 29971
+  AVR32_MNEMONIC_LD_UBGT,
mgl@1371
 29972
+  AVR32_MNEMONIC_LD_UBLE,
mgl@1371
 29973
+  AVR32_MNEMONIC_LD_UBHI,
mgl@1371
 29974
+  AVR32_MNEMONIC_LD_UBVS,
mgl@1371
 29975
+  AVR32_MNEMONIC_LD_UBVC,
mgl@1371
 29976
+  AVR32_MNEMONIC_LD_UBQS,
mgl@1371
 29977
+  AVR32_MNEMONIC_LD_UBAL,
mgl@1371
 29978
+  AVR32_MNEMONIC_LD_UBHS,
mgl@1371
 29979
+  AVR32_MNEMONIC_LD_UBLO,
mgl@1371
 29980
+  AVR32_MNEMONIC_ST_WEQ,
mgl@1371
 29981
+  AVR32_MNEMONIC_ST_WNE,
mgl@1371
 29982
+  AVR32_MNEMONIC_ST_WCC,
mgl@1371
 29983
+  AVR32_MNEMONIC_ST_WCS,
mgl@1371
 29984
+  AVR32_MNEMONIC_ST_WGE,
mgl@1371
 29985
+  AVR32_MNEMONIC_ST_WLT,
mgl@1371
 29986
+  AVR32_MNEMONIC_ST_WMI,
mgl@1371
 29987
+  AVR32_MNEMONIC_ST_WPL,
mgl@1371
 29988
+  AVR32_MNEMONIC_ST_WLS,
mgl@1371
 29989
+  AVR32_MNEMONIC_ST_WGT,
mgl@1371
 29990
+  AVR32_MNEMONIC_ST_WLE,
mgl@1371
 29991
+  AVR32_MNEMONIC_ST_WHI,
mgl@1371
 29992
+  AVR32_MNEMONIC_ST_WVS,
mgl@1371
 29993
+  AVR32_MNEMONIC_ST_WVC,
mgl@1371
 29994
+  AVR32_MNEMONIC_ST_WQS,
mgl@1371
 29995
+  AVR32_MNEMONIC_ST_WAL,
mgl@1371
 29996
+  AVR32_MNEMONIC_ST_WHS,
mgl@1371
 29997
+  AVR32_MNEMONIC_ST_WLO,
mgl@1371
 29998
+  AVR32_MNEMONIC_ST_HEQ,
mgl@1371
 29999
+  AVR32_MNEMONIC_ST_HNE,
mgl@1371
 30000
+  AVR32_MNEMONIC_ST_HCC,
mgl@1371
 30001
+  AVR32_MNEMONIC_ST_HCS,
mgl@1371
 30002
+  AVR32_MNEMONIC_ST_HGE,
mgl@1371
 30003
+  AVR32_MNEMONIC_ST_HLT,
mgl@1371
 30004
+  AVR32_MNEMONIC_ST_HMI,
mgl@1371
 30005
+  AVR32_MNEMONIC_ST_HPL,
mgl@1371
 30006
+  AVR32_MNEMONIC_ST_HLS,
mgl@1371
 30007
+  AVR32_MNEMONIC_ST_HGT,
mgl@1371
 30008
+  AVR32_MNEMONIC_ST_HLE,
mgl@1371
 30009
+  AVR32_MNEMONIC_ST_HHI,
mgl@1371
 30010
+  AVR32_MNEMONIC_ST_HVS,
mgl@1371
 30011
+  AVR32_MNEMONIC_ST_HVC,
mgl@1371
 30012
+  AVR32_MNEMONIC_ST_HQS,
mgl@1371
 30013
+  AVR32_MNEMONIC_ST_HAL,
mgl@1371
 30014
+  AVR32_MNEMONIC_ST_HHS,
mgl@1371
 30015
+  AVR32_MNEMONIC_ST_HLO,
mgl@1371
 30016
+  AVR32_MNEMONIC_ST_BEQ,
mgl@1371
 30017
+  AVR32_MNEMONIC_ST_BNE,
mgl@1371
 30018
+  AVR32_MNEMONIC_ST_BCC,
mgl@1371
 30019
+  AVR32_MNEMONIC_ST_BCS,
mgl@1371
 30020
+  AVR32_MNEMONIC_ST_BGE,
mgl@1371
 30021
+  AVR32_MNEMONIC_ST_BLT,
mgl@1371
 30022
+  AVR32_MNEMONIC_ST_BMI,
mgl@1371
 30023
+  AVR32_MNEMONIC_ST_BPL,
mgl@1371
 30024
+  AVR32_MNEMONIC_ST_BLS,
mgl@1371
 30025
+  AVR32_MNEMONIC_ST_BGT,
mgl@1371
 30026
+  AVR32_MNEMONIC_ST_BLE,
mgl@1371
 30027
+  AVR32_MNEMONIC_ST_BHI,
mgl@1371
 30028
+  AVR32_MNEMONIC_ST_BVS,
mgl@1371
 30029
+  AVR32_MNEMONIC_ST_BVC,
mgl@1371
 30030
+  AVR32_MNEMONIC_ST_BQS,
mgl@1371
 30031
+  AVR32_MNEMONIC_ST_BAL,
mgl@1371
 30032
+  AVR32_MNEMONIC_ST_BHS,
mgl@1371
 30033
+  AVR32_MNEMONIC_ST_BLO,
mgl@1371
 30034
+  AVR32_MNEMONIC_MOVH,
mgl@1371
 30035
+  AVR32_MNEMONIC__END_
mgl@1371
 30036
+};
mgl@1371
 30037
+#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
mgl@1371
 30038
+
mgl@1371
 30039
+enum avr32_syntax_parser
mgl@1371
 30040
+  {
mgl@1371
 30041
+    AVR32_PARSER_NORMAL,
mgl@1371
 30042
+    AVR32_PARSER_ALIAS,
mgl@1371
 30043
+    AVR32_PARSER_LDA,
mgl@1371
 30044
+    AVR32_PARSER_CALL,
mgl@1371
 30045
+    AVR32_PARSER__END_
mgl@1371
 30046
+  };
mgl@1371
 30047
+#define AVR32_NR_PARSERS AVR32_PARSER__END_
mgl@1371
 30048
--- a/opcodes/configure.in
mgl@1371
 30049
+++ b/opcodes/configure.in
mgl@1371
 30050
@@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
mgl@1371
 30051
 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
mgl@1371
 30052
 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
mgl@1371
 30053
 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
mgl@1371
 30054
+	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
mgl@1371
 30055
 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
mgl@1371
 30056
 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
mgl@1371
 30057
 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
mgl@1371
 30058
@@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
mgl@1371
 30059
 				ta="$ta sh64-dis.lo sh64-opc.lo"
mgl@1371
 30060
 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
mgl@1371
 30061
 				break;;
mgl@1371
 30062
-	    esac;
mgl@1371
 30063
+	    esac
mgl@1371
 30064
 	  done
mgl@1371
 30065
 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
mgl@1371
 30066
 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
mgl@1371
 30067
--- a/opcodes/disassemble.c
mgl@1371
 30068
+++ b/opcodes/disassemble.c
mgl@1371
 30069
@@ -27,6 +27,7 @@
mgl@1371
 30070
 #define ARCH_arc
mgl@1371
 30071
 #define ARCH_arm
mgl@1371
 30072
 #define ARCH_avr
mgl@1371
 30073
+#define ARCH_avr32
mgl@1371
 30074
 #define ARCH_bfin
mgl@1371
 30075
 #define ARCH_cr16
mgl@1371
 30076
 #define ARCH_cris
mgl@1371
 30077
@@ -128,6 +129,11 @@ disassembler (abfd)
mgl@1371
 30078
       disassemble = print_insn_avr;
mgl@1371
 30079
       break;
mgl@1371
 30080
 #endif
mgl@1371
 30081
+#ifdef ARCH_avr32
mgl@1371
 30082
+    case bfd_arch_avr32:
mgl@1371
 30083
+      disassemble = print_insn_avr32;
mgl@1371
 30084
+      break;
mgl@1371
 30085
+#endif
mgl@1371
 30086
 #ifdef ARCH_bfin
mgl@1371
 30087
     case bfd_arch_bfin:
mgl@1371
 30088
       disassemble = print_insn_bfin;
mgl@1371
 30089
@@ -346,9 +352,9 @@ disassembler (abfd)
mgl@1371
 30090
 #ifdef ARCH_score
mgl@1371
 30091
     case bfd_arch_score:
mgl@1371
 30092
       if (bfd_big_endian (abfd))
mgl@1371
 30093
-        disassemble = print_insn_big_score;      
mgl@1371
 30094
+        disassemble = print_insn_big_score;
mgl@1371
 30095
       else
mgl@1371
 30096
-        disassemble = print_insn_little_score; 
mgl@1371
 30097
+        disassemble = print_insn_little_score;
mgl@1371
 30098
      break;
mgl@1371
 30099
 #endif
mgl@1371
 30100
 #ifdef ARCH_sh
mgl@1371
 30101
@@ -466,6 +472,9 @@ disassembler_usage (stream)
mgl@1371
 30102
 #ifdef ARCH_i386
mgl@1371
 30103
   print_i386_disassembler_options (stream);
mgl@1371
 30104
 #endif
mgl@1371
 30105
+#ifdef ARCH_avr32
mgl@1371
 30106
+  print_avr32_disassembler_options (stream);
mgl@1371
 30107
+#endif
mgl@1371
 30108
 
mgl@1371
 30109
   return;
mgl@1371
 30110
 }
mgl@1371
 30111
--- a/opcodes/Makefile.am
mgl@1371
 30112
+++ b/opcodes/Makefile.am
mgl@1371
 30113
@@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
mgl@1371
 30114
 # Header files.
mgl@1371
 30115
 HFILES = \
mgl@1371
 30116
 	cgen-ops.h cgen-types.h \
mgl@1371
 30117
+	avr32-asm.h avr32-opc.h \
mgl@1371
 30118
 	fr30-desc.h fr30-opc.h \
mgl@1371
 30119
 	frv-desc.h frv-opc.h \
mgl@1371
 30120
 	h8500-opc.h \
mgl@1371
 30121
@@ -63,6 +64,9 @@ CFILES = \
mgl@1371
 30122
 	arc-ext.c \
mgl@1371
 30123
 	arm-dis.c \
mgl@1371
 30124
 	avr-dis.c \
mgl@1371
 30125
+	avr32-asm.c \
mgl@1371
 30126
+	avr32-dis.c \
mgl@1371
 30127
+	avr32-opc.c \
mgl@1371
 30128
 	bfin-dis.c \
mgl@1371
 30129
 	cgen-asm.c \
mgl@1371
 30130
 	cgen-bitset.c \
mgl@1371
 30131
@@ -217,6 +221,9 @@ ALL_MACHINES = \
mgl@1371
 30132
 	arc-ext.lo \
mgl@1371
 30133
 	arm-dis.lo \
mgl@1371
 30134
 	avr-dis.lo \
mgl@1371
 30135
+	avr32-asm.lo \
mgl@1371
 30136
+	avr32-dis.lo \
mgl@1371
 30137
+	avr32-opc.lo \
mgl@1371
 30138
 	bfin-dis.lo \
mgl@1371
 30139
 	cgen-asm.lo \
mgl@1371
 30140
 	cgen-bitset.lo \
mgl@1371
 30141
@@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
mgl@1371
 30142
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
mgl@1371
 30143
   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
mgl@1371
 30144
   $(INCDIR)/opcode/avr.h
mgl@1371
 30145
+avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 30146
+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
mgl@1371
 30147
+  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
mgl@1371
 30148
+  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
mgl@1371
 30149
+avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 30150
+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
mgl@1371
 30151
+  avr32-opc.h opintl.h
mgl@1371
 30152
+avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 30153
+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
mgl@1371
 30154
 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
mgl@1371
 30155
   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
mgl@1371
 30156
 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 30157
--- a/bfd/bfd-in2.h
mgl@1371
 30158
+++ b/bfd/bfd-in2.h
mgl@1371
 30159
@@ -2017,6 +2017,11 @@ enum bfd_architecture
mgl@1371
 30160
 #define bfd_mach_avr4          4
mgl@1371
 30161
 #define bfd_mach_avr5          5
mgl@1371
 30162
 #define bfd_mach_avr6          6
mgl@1371
 30163
+  bfd_arch_avr32,     /* Atmel AVR32 */
mgl@1371
 30164
+#define bfd_mach_avr32_ap      7000
mgl@1371
 30165
+#define bfd_mach_avr32_uc      3000
mgl@1371
 30166
+#define bfd_mach_avr32_ucr1    3001
mgl@1371
 30167
+#define bfd_mach_avr32_ucr2    3002
mgl@1371
 30168
   bfd_arch_bfin,        /* ADI Blackfin */
mgl@1371
 30169
 #define bfd_mach_bfin          1
mgl@1371
 30170
   bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
mgl@1371
 30171
@@ -3758,6 +3763,88 @@ instructions  */
mgl@1371
 30172
 instructions  */
mgl@1371
 30173
   BFD_RELOC_AVR_6_ADIW,
mgl@1371
 30174
 
mgl@1371
 30175
+/* Difference between two labels: L2 - L1. The value of L1 is encoded
mgl@1371
 30176
+as sym + addend, while the initial difference after assembly is
mgl@1371
 30177
+inserted into the object file by the assembler.  */
mgl@1371
 30178
+  BFD_RELOC_AVR32_DIFF32,
mgl@1371
 30179
+  BFD_RELOC_AVR32_DIFF16,
mgl@1371
 30180
+  BFD_RELOC_AVR32_DIFF8,
mgl@1371
 30181
+
mgl@1371
 30182
+/* Reference to a symbol through the Global Offset Table. The linker
mgl@1371
 30183
+will allocate an entry for symbol in the GOT and insert the offset
mgl@1371
 30184
+of this entry as the relocation value.  */
mgl@1371
 30185
+  BFD_RELOC_AVR32_GOT32,
mgl@1371
 30186
+  BFD_RELOC_AVR32_GOT16,
mgl@1371
 30187
+  BFD_RELOC_AVR32_GOT8,
mgl@1371
 30188
+
mgl@1371
 30189
+/* Normal (non-pc-relative) code relocations. Alignment and signedness
mgl@1371
 30190
+is indicated by the suffixes. S means signed, U means unsigned. W
mgl@1371
 30191
+means word-aligned, H means halfword-aligned, neither means
mgl@1371
 30192
+byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
mgl@1371
 30193
+  BFD_RELOC_AVR32_21S,
mgl@1371
 30194
+  BFD_RELOC_AVR32_16U,
mgl@1371
 30195
+  BFD_RELOC_AVR32_16S,
mgl@1371
 30196
+  BFD_RELOC_AVR32_SUB5,
mgl@1371
 30197
+  BFD_RELOC_AVR32_8S_EXT,
mgl@1371
 30198
+  BFD_RELOC_AVR32_8S,
mgl@1371
 30199
+  BFD_RELOC_AVR32_15S,
mgl@1371
 30200
+
mgl@1371
 30201
+/* PC-relative relocations are signed if neither 'U' nor 'S' is
mgl@1371
 30202
+specified. However, we explicitly tack on a 'B' to indicate no
mgl@1371
 30203
+alignment, to avoid confusion with data relocs. All of these resolve
mgl@1371
 30204
+to sym + addend - offset, except the one with 'N' (negated) suffix.
mgl@1371
 30205
+This particular one resolves to offset - sym - addend.  */
mgl@1371
 30206
+  BFD_RELOC_AVR32_22H_PCREL,
mgl@1371
 30207
+  BFD_RELOC_AVR32_18W_PCREL,
mgl@1371
 30208
+  BFD_RELOC_AVR32_16B_PCREL,
mgl@1371
 30209
+  BFD_RELOC_AVR32_16N_PCREL,
mgl@1371
 30210
+  BFD_RELOC_AVR32_14UW_PCREL,
mgl@1371
 30211
+  BFD_RELOC_AVR32_11H_PCREL,
mgl@1371
 30212
+  BFD_RELOC_AVR32_10UW_PCREL,
mgl@1371
 30213
+  BFD_RELOC_AVR32_9H_PCREL,
mgl@1371
 30214
+  BFD_RELOC_AVR32_9UW_PCREL,
mgl@1371
 30215
+
mgl@1371
 30216
+/* Subtract the link-time address of the GOT from (symbol + addend)
mgl@1371
 30217
+and insert the result.  */
mgl@1371
 30218
+  BFD_RELOC_AVR32_GOTPC,
mgl@1371
 30219
+
mgl@1371
 30220
+/* Reference to a symbol through the GOT. The linker will allocate an
mgl@1371
 30221
+entry for symbol in the GOT and insert the offset of this entry as
mgl@1371
 30222
+the relocation value. addend must be zero. As usual, 'S' means
mgl@1371
 30223
+signed, 'W' means word-aligned, etc.  */
mgl@1371
 30224
+  BFD_RELOC_AVR32_GOTCALL,
mgl@1371
 30225
+  BFD_RELOC_AVR32_LDA_GOT,
mgl@1371
 30226
+  BFD_RELOC_AVR32_GOT21S,
mgl@1371
 30227
+  BFD_RELOC_AVR32_GOT18SW,
mgl@1371
 30228
+  BFD_RELOC_AVR32_GOT16S,
mgl@1371
 30229
+
mgl@1371
 30230
+/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
mgl@1371
 30231
+a whole lot of sense.  */
mgl@1371
 30232
+  BFD_RELOC_AVR32_32_CPENT,
mgl@1371
 30233
+
mgl@1371
 30234
+/* Constant pool references. Some of these relocations are signed,
mgl@1371
 30235
+others are unsigned. It doesn't really matter, since the constant
mgl@1371
 30236
+pool always comes after the code that references it.  */
mgl@1371
 30237
+  BFD_RELOC_AVR32_CPCALL,
mgl@1371
 30238
+  BFD_RELOC_AVR32_16_CP,
mgl@1371
 30239
+  BFD_RELOC_AVR32_9W_CP,
mgl@1371
 30240
+
mgl@1371
 30241
+/* sym must be the absolute symbol. The addend specifies the alignment
mgl@1371
 30242
+order, e.g. if addend is 2, the linker must add padding so that the
mgl@1371
 30243
+next address is aligned to a 4-byte boundary.  */
mgl@1371
 30244
+  BFD_RELOC_AVR32_ALIGN,
mgl@1371
 30245
+
mgl@1371
 30246
+/* Code relocations that will never make it to the output file.  */
mgl@1371
 30247
+  BFD_RELOC_AVR32_14UW,
mgl@1371
 30248
+  BFD_RELOC_AVR32_10UW,
mgl@1371
 30249
+  BFD_RELOC_AVR32_10SW,
mgl@1371
 30250
+  BFD_RELOC_AVR32_STHH_W,
mgl@1371
 30251
+  BFD_RELOC_AVR32_7UW,
mgl@1371
 30252
+  BFD_RELOC_AVR32_6S,
mgl@1371
 30253
+  BFD_RELOC_AVR32_6UW,
mgl@1371
 30254
+  BFD_RELOC_AVR32_4UH,
mgl@1371
 30255
+  BFD_RELOC_AVR32_3U,
mgl@1371
 30256
+
mgl@1371
 30257
 /* Direct 12 bit.  */
mgl@1371
 30258
   BFD_RELOC_390_12,
mgl@1371
 30259
 
mgl@1371
 30260
--- /dev/null
mgl@1371
 30261
+++ b/bfd/bfd-in3.h
mgl@1371
 30262
@@ -0,0 +1,5406 @@
mgl@1371
 30263
+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
mgl@1371
 30264
+   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
mgl@1371
 30265
+   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
mgl@1371
 30266
+   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
mgl@1371
 30267
+   "linker.c" and "simple.c".
mgl@1371
 30268
+   Run "make headers" in your build bfd/ to regenerate.  */
mgl@1371
 30269
+
mgl@1371
 30270
+/* Main header file for the bfd library -- portable access to object files.
mgl@1371
 30271
+
mgl@1371
 30272
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
mgl@1371
 30273
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
mgl@1371
 30274
+   Free Software Foundation, Inc.
mgl@1371
 30275
+
mgl@1371
 30276
+   Contributed by Cygnus Support.
mgl@1371
 30277
+
mgl@1371
 30278
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
 30279
+
mgl@1371
 30280
+   This program is free software; you can redistribute it and/or modify
mgl@1371
 30281
+   it under the terms of the GNU General Public License as published by
mgl@1371
 30282
+   the Free Software Foundation; either version 3 of the License, or
mgl@1371
 30283
+   (at your option) any later version.
mgl@1371
 30284
+
mgl@1371
 30285
+   This program is distributed in the hope that it will be useful,
mgl@1371
 30286
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 30287
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 30288
+   GNU General Public License for more details.
mgl@1371
 30289
+
mgl@1371
 30290
+   You should have received a copy of the GNU General Public License
mgl@1371
 30291
+   along with this program; if not, write to the Free Software
mgl@1371
 30292
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
mgl@1371
 30293
+
mgl@1371
 30294
+#ifndef __BFD_H_SEEN__
mgl@1371
 30295
+#define __BFD_H_SEEN__
mgl@1371
 30296
+
mgl@1371
 30297
+#ifdef __cplusplus
mgl@1371
 30298
+extern "C" {
mgl@1371
 30299
+#endif
mgl@1371
 30300
+
mgl@1371
 30301
+#include "ansidecl.h"
mgl@1371
 30302
+#include "symcat.h"
mgl@1371
 30303
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
mgl@1371
 30304
+#ifndef SABER
mgl@1371
 30305
+/* This hack is to avoid a problem with some strict ANSI C preprocessors.
mgl@1371
 30306
+   The problem is, "32_" is not a valid preprocessing token, and we don't
mgl@1371
 30307
+   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
mgl@1371
 30308
+   cause the inner CONCAT2 macros to be evaluated first, producing
mgl@1371
 30309
+   still-valid pp-tokens.  Then the final concatenation can be done.  */
mgl@1371
 30310
+#undef CONCAT4
mgl@1371
 30311
+#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
mgl@1371
 30312
+#endif
mgl@1371
 30313
+#endif
mgl@1371
 30314
+
mgl@1371
 30315
+/* This is a utility macro to handle the situation where the code
mgl@1371
 30316
+   wants to place a constant string into the code, followed by a
mgl@1371
 30317
+   comma and then the length of the string.  Doing this by hand
mgl@1371
 30318
+   is error prone, so using this macro is safer.  The macro will
mgl@1371
 30319
+   also safely handle the case where a NULL is passed as the arg.  */
mgl@1371
 30320
+#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
mgl@1371
 30321
+/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
mgl@1371
 30322
+   to create the arguments to another macro, since the preprocessor
mgl@1371
 30323
+   will mis-count the number of arguments to the outer macro (by not
mgl@1371
 30324
+   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
mgl@1371
 30325
+   problem for example when trying to use STRING_COMMA_LEN to build
mgl@1371
 30326
+   the arguments to the strncmp() macro.  Hence this alternative
mgl@1371
 30327
+   definition of strncmp is provided here.
mgl@1371
 30328
+   
mgl@1371
 30329
+   Note - these macros do NOT work if STR2 is not a constant string.  */
mgl@1371
 30330
+#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
mgl@1371
 30331
+  /* strcpy() can have a similar problem, but since we know we are
mgl@1371
 30332
+     copying a constant string, we can use memcpy which will be faster
mgl@1371
 30333
+     since there is no need to check for a NUL byte inside STR.  We
mgl@1371
 30334
+     can also save time if we do not need to copy the terminating NUL.  */
mgl@1371
 30335
+#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
mgl@1371
 30336
+#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
mgl@1371
 30337
+
mgl@1371
 30338
+
mgl@1371
 30339
+/* The word size used by BFD on the host.  This may be 64 with a 32
mgl@1371
 30340
+   bit target if the host is 64 bit, or if other 64 bit targets have
mgl@1371
 30341
+   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
mgl@1371
 30342
+#define BFD_ARCH_SIZE 32
mgl@1371
 30343
+
mgl@1371
 30344
+/* The word size of the default bfd target.  */
mgl@1371
 30345
+#define BFD_DEFAULT_TARGET_SIZE 32
mgl@1371
 30346
+
mgl@1371
 30347
+#define BFD_HOST_64BIT_LONG 0
mgl@1371
 30348
+#define BFD_HOST_64BIT_LONG_LONG 0
mgl@1371
 30349
+#define BFD_HOST_LONG_LONG 1
mgl@1371
 30350
+#if 1
mgl@1371
 30351
+#define BFD_HOST_64_BIT long long
mgl@1371
 30352
+#define BFD_HOST_U_64_BIT unsigned long long
mgl@1371
 30353
+typedef BFD_HOST_64_BIT bfd_int64_t;
mgl@1371
 30354
+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
mgl@1371
 30355
+#endif
mgl@1371
 30356
+
mgl@1371
 30357
+#if BFD_ARCH_SIZE >= 64
mgl@1371
 30358
+#define BFD64
mgl@1371
 30359
+#endif
mgl@1371
 30360
+
mgl@1371
 30361
+#ifndef INLINE
mgl@1371
 30362
+#if __GNUC__ >= 2
mgl@1371
 30363
+#define INLINE __inline__
mgl@1371
 30364
+#else
mgl@1371
 30365
+#define INLINE
mgl@1371
 30366
+#endif
mgl@1371
 30367
+#endif
mgl@1371
 30368
+
mgl@1371
 30369
+/* Declaring a type wide enough to hold a host long and a host pointer.  */
mgl@1371
 30370
+#define BFD_HOSTPTR_T	unsigned long
mgl@1371
 30371
+typedef BFD_HOSTPTR_T bfd_hostptr_t;
mgl@1371
 30372
+
mgl@1371
 30373
+/* Forward declaration.  */
mgl@1371
 30374
+typedef struct bfd bfd;
mgl@1371
 30375
+
mgl@1371
 30376
+/* Boolean type used in bfd.  Too many systems define their own
mgl@1371
 30377
+   versions of "boolean" for us to safely typedef a "boolean" of
mgl@1371
 30378
+   our own.  Using an enum for "bfd_boolean" has its own set of
mgl@1371
 30379
+   problems, with strange looking casts required to avoid warnings
mgl@1371
 30380
+   on some older compilers.  Thus we just use an int.
mgl@1371
 30381
+
mgl@1371
 30382
+   General rule: Functions which are bfd_boolean return TRUE on
mgl@1371
 30383
+   success and FALSE on failure (unless they're a predicate).  */
mgl@1371
 30384
+
mgl@1371
 30385
+typedef int bfd_boolean;
mgl@1371
 30386
+#undef FALSE
mgl@1371
 30387
+#undef TRUE
mgl@1371
 30388
+#define FALSE 0
mgl@1371
 30389
+#define TRUE 1
mgl@1371
 30390
+
mgl@1371
 30391
+#ifdef BFD64
mgl@1371
 30392
+
mgl@1371
 30393
+#ifndef BFD_HOST_64_BIT
mgl@1371
 30394
+ #error No 64 bit integer type available
mgl@1371
 30395
+#endif /* ! defined (BFD_HOST_64_BIT) */
mgl@1371
 30396
+
mgl@1371
 30397
+typedef BFD_HOST_U_64_BIT bfd_vma;
mgl@1371
 30398
+typedef BFD_HOST_64_BIT bfd_signed_vma;
mgl@1371
 30399
+typedef BFD_HOST_U_64_BIT bfd_size_type;
mgl@1371
 30400
+typedef BFD_HOST_U_64_BIT symvalue;
mgl@1371
 30401
+
mgl@1371
 30402
+#ifndef fprintf_vma
mgl@1371
 30403
+#if BFD_HOST_64BIT_LONG
mgl@1371
 30404
+#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
mgl@1371
 30405
+#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
mgl@1371
 30406
+#elif BFD_HOST_64BIT_LONG_LONG
mgl@1371
 30407
+#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
mgl@1371
 30408
+#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
mgl@1371
 30409
+#else
mgl@1371
 30410
+#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
mgl@1371
 30411
+#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
mgl@1371
 30412
+#define fprintf_vma(s,x) \
mgl@1371
 30413
+  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
mgl@1371
 30414
+#define sprintf_vma(s,x) \
mgl@1371
 30415
+  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
mgl@1371
 30416
+#endif
mgl@1371
 30417
+#endif
mgl@1371
 30418
+
mgl@1371
 30419
+#else /* not BFD64  */
mgl@1371
 30420
+
mgl@1371
 30421
+/* Represent a target address.  Also used as a generic unsigned type
mgl@1371
 30422
+   which is guaranteed to be big enough to hold any arithmetic types
mgl@1371
 30423
+   we need to deal with.  */
mgl@1371
 30424
+typedef unsigned long bfd_vma;
mgl@1371
 30425
+
mgl@1371
 30426
+/* A generic signed type which is guaranteed to be big enough to hold any
mgl@1371
 30427
+   arithmetic types we need to deal with.  Can be assumed to be compatible
mgl@1371
 30428
+   with bfd_vma in the same way that signed and unsigned ints are compatible
mgl@1371
 30429
+   (as parameters, in assignment, etc).  */
mgl@1371
 30430
+typedef long bfd_signed_vma;
mgl@1371
 30431
+
mgl@1371
 30432
+typedef unsigned long symvalue;
mgl@1371
 30433
+typedef unsigned long bfd_size_type;
mgl@1371
 30434
+
mgl@1371
 30435
+/* Print a bfd_vma x on stream s.  */
mgl@1371
 30436
+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
mgl@1371
 30437
+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
mgl@1371
 30438
+
mgl@1371
 30439
+#endif /* not BFD64  */
mgl@1371
 30440
+
mgl@1371
 30441
+#define HALF_BFD_SIZE_TYPE \
mgl@1371
 30442
+  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
mgl@1371
 30443
+
mgl@1371
 30444
+#ifndef BFD_HOST_64_BIT
mgl@1371
 30445
+/* Fall back on a 32 bit type.  The idea is to make these types always
mgl@1371
 30446
+   available for function return types, but in the case that
mgl@1371
 30447
+   BFD_HOST_64_BIT is undefined such a function should abort or
mgl@1371
 30448
+   otherwise signal an error.  */
mgl@1371
 30449
+typedef bfd_signed_vma bfd_int64_t;
mgl@1371
 30450
+typedef bfd_vma bfd_uint64_t;
mgl@1371
 30451
+#endif
mgl@1371
 30452
+
mgl@1371
 30453
+/* An offset into a file.  BFD always uses the largest possible offset
mgl@1371
 30454
+   based on the build time availability of fseek, fseeko, or fseeko64.  */
mgl@1371
 30455
+typedef BFD_HOST_64_BIT file_ptr;
mgl@1371
 30456
+typedef unsigned BFD_HOST_64_BIT ufile_ptr;
mgl@1371
 30457
+
mgl@1371
 30458
+extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
mgl@1371
 30459
+extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
mgl@1371
 30460
+
mgl@1371
 30461
+#define printf_vma(x) fprintf_vma(stdout,x)
mgl@1371
 30462
+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
mgl@1371
 30463
+
mgl@1371
 30464
+typedef unsigned int flagword;	/* 32 bits of flags */
mgl@1371
 30465
+typedef unsigned char bfd_byte;
mgl@1371
 30466
+
mgl@1371
 30467
+/* File formats.  */
mgl@1371
 30468
+
mgl@1371
 30469
+typedef enum bfd_format
mgl@1371
 30470
+{
mgl@1371
 30471
+  bfd_unknown = 0,	/* File format is unknown.  */
mgl@1371
 30472
+  bfd_object,		/* Linker/assembler/compiler output.  */
mgl@1371
 30473
+  bfd_archive,		/* Object archive file.  */
mgl@1371
 30474
+  bfd_core,		/* Core dump.  */
mgl@1371
 30475
+  bfd_type_end		/* Marks the end; don't use it!  */
mgl@1371
 30476
+}
mgl@1371
 30477
+bfd_format;
mgl@1371
 30478
+
mgl@1371
 30479
+/* Values that may appear in the flags field of a BFD.  These also
mgl@1371
 30480
+   appear in the object_flags field of the bfd_target structure, where
mgl@1371
 30481
+   they indicate the set of flags used by that backend (not all flags
mgl@1371
 30482
+   are meaningful for all object file formats) (FIXME: at the moment,
mgl@1371
 30483
+   the object_flags values have mostly just been copied from backend
mgl@1371
 30484
+   to another, and are not necessarily correct).  */
mgl@1371
 30485
+
mgl@1371
 30486
+/* No flags.  */
mgl@1371
 30487
+#define BFD_NO_FLAGS   	0x00
mgl@1371
 30488
+
mgl@1371
 30489
+/* BFD contains relocation entries.  */
mgl@1371
 30490
+#define HAS_RELOC   	0x01
mgl@1371
 30491
+
mgl@1371
 30492
+/* BFD is directly executable.  */
mgl@1371
 30493
+#define EXEC_P      	0x02
mgl@1371
 30494
+
mgl@1371
 30495
+/* BFD has line number information (basically used for F_LNNO in a
mgl@1371
 30496
+   COFF header).  */
mgl@1371
 30497
+#define HAS_LINENO  	0x04
mgl@1371
 30498
+
mgl@1371
 30499
+/* BFD has debugging information.  */
mgl@1371
 30500
+#define HAS_DEBUG   	0x08
mgl@1371
 30501
+
mgl@1371
 30502
+/* BFD has symbols.  */
mgl@1371
 30503
+#define HAS_SYMS    	0x10
mgl@1371
 30504
+
mgl@1371
 30505
+/* BFD has local symbols (basically used for F_LSYMS in a COFF
mgl@1371
 30506
+   header).  */
mgl@1371
 30507
+#define HAS_LOCALS  	0x20
mgl@1371
 30508
+
mgl@1371
 30509
+/* BFD is a dynamic object.  */
mgl@1371
 30510
+#define DYNAMIC     	0x40
mgl@1371
 30511
+
mgl@1371
 30512
+/* Text section is write protected (if D_PAGED is not set, this is
mgl@1371
 30513
+   like an a.out NMAGIC file) (the linker sets this by default, but
mgl@1371
 30514
+   clears it for -r or -N).  */
mgl@1371
 30515
+#define WP_TEXT     	0x80
mgl@1371
 30516
+
mgl@1371
 30517
+/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
mgl@1371
 30518
+   linker sets this by default, but clears it for -r or -n or -N).  */
mgl@1371
 30519
+#define D_PAGED     	0x100
mgl@1371
 30520
+
mgl@1371
 30521
+/* BFD is relaxable (this means that bfd_relax_section may be able to
mgl@1371
 30522
+   do something) (sometimes bfd_relax_section can do something even if
mgl@1371
 30523
+   this is not set).  */
mgl@1371
 30524
+#define BFD_IS_RELAXABLE 0x200
mgl@1371
 30525
+
mgl@1371
 30526
+/* This may be set before writing out a BFD to request using a
mgl@1371
 30527
+   traditional format.  For example, this is used to request that when
mgl@1371
 30528
+   writing out an a.out object the symbols not be hashed to eliminate
mgl@1371
 30529
+   duplicates.  */
mgl@1371
 30530
+#define BFD_TRADITIONAL_FORMAT 0x400
mgl@1371
 30531
+
mgl@1371
 30532
+/* This flag indicates that the BFD contents are actually cached in
mgl@1371
 30533
+   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
mgl@1371
 30534
+#define BFD_IN_MEMORY 0x800
mgl@1371
 30535
+
mgl@1371
 30536
+/* The sections in this BFD specify a memory page.  */
mgl@1371
 30537
+#define HAS_LOAD_PAGE 0x1000
mgl@1371
 30538
+
mgl@1371
 30539
+/* This BFD has been created by the linker and doesn't correspond
mgl@1371
 30540
+   to any input file.  */
mgl@1371
 30541
+#define BFD_LINKER_CREATED 0x2000
mgl@1371
 30542
+
mgl@1371
 30543
+/* Symbols and relocation.  */
mgl@1371
 30544
+
mgl@1371
 30545
+/* A count of carsyms (canonical archive symbols).  */
mgl@1371
 30546
+typedef unsigned long symindex;
mgl@1371
 30547
+
mgl@1371
 30548
+/* How to perform a relocation.  */
mgl@1371
 30549
+typedef const struct reloc_howto_struct reloc_howto_type;
mgl@1371
 30550
+
mgl@1371
 30551
+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
mgl@1371
 30552
+
mgl@1371
 30553
+/* General purpose part of a symbol X;
mgl@1371
 30554
+   target specific parts are in libcoff.h, libaout.h, etc.  */
mgl@1371
 30555
+
mgl@1371
 30556
+#define bfd_get_section(x) ((x)->section)
mgl@1371
 30557
+#define bfd_get_output_section(x) ((x)->section->output_section)
mgl@1371
 30558
+#define bfd_set_section(x,y) ((x)->section) = (y)
mgl@1371
 30559
+#define bfd_asymbol_base(x) ((x)->section->vma)
mgl@1371
 30560
+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
mgl@1371
 30561
+#define bfd_asymbol_name(x) ((x)->name)
mgl@1371
 30562
+/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
mgl@1371
 30563
+#define bfd_asymbol_bfd(x) ((x)->the_bfd)
mgl@1371
 30564
+#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
mgl@1371
 30565
+
mgl@1371
 30566
+/* A canonical archive symbol.  */
mgl@1371
 30567
+/* This is a type pun with struct ranlib on purpose!  */
mgl@1371
 30568
+typedef struct carsym
mgl@1371
 30569
+{
mgl@1371
 30570
+  char *name;
mgl@1371
 30571
+  file_ptr file_offset;	/* Look here to find the file.  */
mgl@1371
 30572
+}
mgl@1371
 30573
+carsym;			/* To make these you call a carsymogen.  */
mgl@1371
 30574
+
mgl@1371
 30575
+/* Used in generating armaps (archive tables of contents).
mgl@1371
 30576
+   Perhaps just a forward definition would do?  */
mgl@1371
 30577
+struct orl 			/* Output ranlib.  */
mgl@1371
 30578
+{
mgl@1371
 30579
+  char **name;		/* Symbol name.  */
mgl@1371
 30580
+  union
mgl@1371
 30581
+  {
mgl@1371
 30582
+    file_ptr pos;
mgl@1371
 30583
+    bfd *abfd;
mgl@1371
 30584
+  } u;			/* bfd* or file position.  */
mgl@1371
 30585
+  int namidx;		/* Index into string table.  */
mgl@1371
 30586
+};
mgl@1371
 30587
+
mgl@1371
 30588
+/* Linenumber stuff.  */
mgl@1371
 30589
+typedef struct lineno_cache_entry
mgl@1371
 30590
+{
mgl@1371
 30591
+  unsigned int line_number;	/* Linenumber from start of function.  */
mgl@1371
 30592
+  union
mgl@1371
 30593
+  {
mgl@1371
 30594
+    struct bfd_symbol *sym;	/* Function name.  */
mgl@1371
 30595
+    bfd_vma offset;	    		/* Offset into section.  */
mgl@1371
 30596
+  } u;
mgl@1371
 30597
+}
mgl@1371
 30598
+alent;
mgl@1371
 30599
+
mgl@1371
 30600
+/* Object and core file sections.  */
mgl@1371
 30601
+
mgl@1371
 30602
+#define	align_power(addr, align)	\
mgl@1371
 30603
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
mgl@1371
 30604
+
mgl@1371
 30605
+typedef struct bfd_section *sec_ptr;
mgl@1371
 30606
+
mgl@1371
 30607
+#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
mgl@1371
 30608
+#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
mgl@1371
 30609
+#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
mgl@1371
 30610
+#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
mgl@1371
 30611
+#define bfd_section_name(bfd, ptr) ((ptr)->name)
mgl@1371
 30612
+#define bfd_section_size(bfd, ptr) ((ptr)->size)
mgl@1371
 30613
+#define bfd_get_section_size(ptr) ((ptr)->size)
mgl@1371
 30614
+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
mgl@1371
 30615
+#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
mgl@1371
 30616
+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
mgl@1371
 30617
+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
mgl@1371
 30618
+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
mgl@1371
 30619
+
mgl@1371
 30620
+#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
mgl@1371
 30621
+
mgl@1371
 30622
+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
mgl@1371
 30623
+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
mgl@1371
 30624
+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
mgl@1371
 30625
+/* Find the address one past the end of SEC.  */
mgl@1371
 30626
+#define bfd_get_section_limit(bfd, sec) \
mgl@1371
 30627
+  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
mgl@1371
 30628
+   / bfd_octets_per_byte (bfd))
mgl@1371
 30629
+
mgl@1371
 30630
+/* Return TRUE if section has been discarded.  */
mgl@1371
 30631
+#define elf_discarded_section(sec)				\
mgl@1371
 30632
+  (!bfd_is_abs_section (sec)					\
mgl@1371
 30633
+   && bfd_is_abs_section ((sec)->output_section)		\
mgl@1371
 30634
+   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
mgl@1371
 30635
+   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
mgl@1371
 30636
+
mgl@1371
 30637
+/* Forward define.  */
mgl@1371
 30638
+struct stat;
mgl@1371
 30639
+
mgl@1371
 30640
+typedef enum bfd_print_symbol
mgl@1371
 30641
+{
mgl@1371
 30642
+  bfd_print_symbol_name,
mgl@1371
 30643
+  bfd_print_symbol_more,
mgl@1371
 30644
+  bfd_print_symbol_all
mgl@1371
 30645
+} bfd_print_symbol_type;
mgl@1371
 30646
+
mgl@1371
 30647
+/* Information about a symbol that nm needs.  */
mgl@1371
 30648
+
mgl@1371
 30649
+typedef struct _symbol_info
mgl@1371
 30650
+{
mgl@1371
 30651
+  symvalue value;
mgl@1371
 30652
+  char type;
mgl@1371
 30653
+  const char *name;            /* Symbol name.  */
mgl@1371
 30654
+  unsigned char stab_type;     /* Stab type.  */
mgl@1371
 30655
+  char stab_other;             /* Stab other.  */
mgl@1371
 30656
+  short stab_desc;             /* Stab desc.  */
mgl@1371
 30657
+  const char *stab_name;       /* String for stab type.  */
mgl@1371
 30658
+} symbol_info;
mgl@1371
 30659
+
mgl@1371
 30660
+/* Get the name of a stabs type code.  */
mgl@1371
 30661
+
mgl@1371
 30662
+extern const char *bfd_get_stab_name (int);
mgl@1371
 30663
+
mgl@1371
 30664
+/* Hash table routines.  There is no way to free up a hash table.  */
mgl@1371
 30665
+
mgl@1371
 30666
+/* An element in the hash table.  Most uses will actually use a larger
mgl@1371
 30667
+   structure, and an instance of this will be the first field.  */
mgl@1371
 30668
+
mgl@1371
 30669
+struct bfd_hash_entry
mgl@1371
 30670
+{
mgl@1371
 30671
+  /* Next entry for this hash code.  */
mgl@1371
 30672
+  struct bfd_hash_entry *next;
mgl@1371
 30673
+  /* String being hashed.  */
mgl@1371
 30674
+  const char *string;
mgl@1371
 30675
+  /* Hash code.  This is the full hash code, not the index into the
mgl@1371
 30676
+     table.  */
mgl@1371
 30677
+  unsigned long hash;
mgl@1371
 30678
+};
mgl@1371
 30679
+
mgl@1371
 30680
+/* A hash table.  */
mgl@1371
 30681
+
mgl@1371
 30682
+struct bfd_hash_table
mgl@1371
 30683
+{
mgl@1371
 30684
+  /* The hash array.  */
mgl@1371
 30685
+  struct bfd_hash_entry **table;
mgl@1371
 30686
+  /* A function used to create new elements in the hash table.  The
mgl@1371
 30687
+     first entry is itself a pointer to an element.  When this
mgl@1371
 30688
+     function is first invoked, this pointer will be NULL.  However,
mgl@1371
 30689
+     having the pointer permits a hierarchy of method functions to be
mgl@1371
 30690
+     built each of which calls the function in the superclass.  Thus
mgl@1371
 30691
+     each function should be written to allocate a new block of memory
mgl@1371
 30692
+     only if the argument is NULL.  */
mgl@1371
 30693
+  struct bfd_hash_entry *(*newfunc)
mgl@1371
 30694
+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 30695
+   /* An objalloc for this hash table.  This is a struct objalloc *,
mgl@1371
 30696
+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
mgl@1371
 30697
+  void *memory;
mgl@1371
 30698
+  /* The number of slots in the hash table.  */
mgl@1371
 30699
+  unsigned int size;
mgl@1371
 30700
+  /* The number of entries in the hash table.  */
mgl@1371
 30701
+  unsigned int count;
mgl@1371
 30702
+  /* The size of elements.  */
mgl@1371
 30703
+  unsigned int entsize;
mgl@1371
 30704
+  /* If non-zero, don't grow the hash table.  */
mgl@1371
 30705
+  unsigned int frozen:1;
mgl@1371
 30706
+};
mgl@1371
 30707
+
mgl@1371
 30708
+/* Initialize a hash table.  */
mgl@1371
 30709
+extern bfd_boolean bfd_hash_table_init
mgl@1371
 30710
+  (struct bfd_hash_table *,
mgl@1371
 30711
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 30712
+			       struct bfd_hash_table *,
mgl@1371
 30713
+			       const char *),
mgl@1371
 30714
+   unsigned int);
mgl@1371
 30715
+
mgl@1371
 30716
+/* Initialize a hash table specifying a size.  */
mgl@1371
 30717
+extern bfd_boolean bfd_hash_table_init_n
mgl@1371
 30718
+  (struct bfd_hash_table *,
mgl@1371
 30719
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 30720
+			       struct bfd_hash_table *,
mgl@1371
 30721
+			       const char *),
mgl@1371
 30722
+   unsigned int, unsigned int);
mgl@1371
 30723
+
mgl@1371
 30724
+/* Free up a hash table.  */
mgl@1371
 30725
+extern void bfd_hash_table_free
mgl@1371
 30726
+  (struct bfd_hash_table *);
mgl@1371
 30727
+
mgl@1371
 30728
+/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
mgl@1371
 30729
+   will be created for this string if one does not already exist.  The
mgl@1371
 30730
+   COPY argument must be TRUE if this routine should copy the string
mgl@1371
 30731
+   into newly allocated memory when adding an entry.  */
mgl@1371
 30732
+extern struct bfd_hash_entry *bfd_hash_lookup
mgl@1371
 30733
+  (struct bfd_hash_table *, const char *, bfd_boolean create,
mgl@1371
 30734
+   bfd_boolean copy);
mgl@1371
 30735
+
mgl@1371
 30736
+/* Replace an entry in a hash table.  */
mgl@1371
 30737
+extern void bfd_hash_replace
mgl@1371
 30738
+  (struct bfd_hash_table *, struct bfd_hash_entry *old,
mgl@1371
 30739
+   struct bfd_hash_entry *nw);
mgl@1371
 30740
+
mgl@1371
 30741
+/* Base method for creating a hash table entry.  */
mgl@1371
 30742
+extern struct bfd_hash_entry *bfd_hash_newfunc
mgl@1371
 30743
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 30744
+
mgl@1371
 30745
+/* Grab some space for a hash table entry.  */
mgl@1371
 30746
+extern void *bfd_hash_allocate
mgl@1371
 30747
+  (struct bfd_hash_table *, unsigned int);
mgl@1371
 30748
+
mgl@1371
 30749
+/* Traverse a hash table in a random order, calling a function on each
mgl@1371
 30750
+   element.  If the function returns FALSE, the traversal stops.  The
mgl@1371
 30751
+   INFO argument is passed to the function.  */
mgl@1371
 30752
+extern void bfd_hash_traverse
mgl@1371
 30753
+  (struct bfd_hash_table *,
mgl@1371
 30754
+   bfd_boolean (*) (struct bfd_hash_entry *, void *),
mgl@1371
 30755
+   void *info);
mgl@1371
 30756
+
mgl@1371
 30757
+/* Allows the default size of a hash table to be configured. New hash
mgl@1371
 30758
+   tables allocated using bfd_hash_table_init will be created with
mgl@1371
 30759
+   this size.  */
mgl@1371
 30760
+extern void bfd_hash_set_default_size (bfd_size_type);
mgl@1371
 30761
+
mgl@1371
 30762
+/* This structure is used to keep track of stabs in sections
mgl@1371
 30763
+   information while linking.  */
mgl@1371
 30764
+
mgl@1371
 30765
+struct stab_info
mgl@1371
 30766
+{
mgl@1371
 30767
+  /* A hash table used to hold stabs strings.  */
mgl@1371
 30768
+  struct bfd_strtab_hash *strings;
mgl@1371
 30769
+  /* The header file hash table.  */
mgl@1371
 30770
+  struct bfd_hash_table includes;
mgl@1371
 30771
+  /* The first .stabstr section.  */
mgl@1371
 30772
+  struct bfd_section *stabstr;
mgl@1371
 30773
+};
mgl@1371
 30774
+
mgl@1371
 30775
+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
mgl@1371
 30776
+
mgl@1371
 30777
+/* User program access to BFD facilities.  */
mgl@1371
 30778
+
mgl@1371
 30779
+/* Direct I/O routines, for programs which know more about the object
mgl@1371
 30780
+   file than BFD does.  Use higher level routines if possible.  */
mgl@1371
 30781
+
mgl@1371
 30782
+extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
mgl@1371
 30783
+extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
mgl@1371
 30784
+extern int bfd_seek (bfd *, file_ptr, int);
mgl@1371
 30785
+extern file_ptr bfd_tell (bfd *);
mgl@1371
 30786
+extern int bfd_flush (bfd *);
mgl@1371
 30787
+extern int bfd_stat (bfd *, struct stat *);
mgl@1371
 30788
+
mgl@1371
 30789
+/* Deprecated old routines.  */
mgl@1371
 30790
+#if __GNUC__
mgl@1371
 30791
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 30792
+  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
mgl@1371
 30793
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 30794
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 30795
+  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
mgl@1371
 30796
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 30797
+#else
mgl@1371
 30798
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 30799
+  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
mgl@1371
 30800
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 30801
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 30802
+  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
mgl@1371
 30803
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 30804
+#endif
mgl@1371
 30805
+extern void warn_deprecated (const char *, const char *, int, const char *);
mgl@1371
 30806
+
mgl@1371
 30807
+/* Cast from const char * to char * so that caller can assign to
mgl@1371
 30808
+   a char * without a warning.  */
mgl@1371
 30809
+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
mgl@1371
 30810
+#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
mgl@1371
 30811
+#define bfd_get_format(abfd) ((abfd)->format)
mgl@1371
 30812
+#define bfd_get_target(abfd) ((abfd)->xvec->name)
mgl@1371
 30813
+#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
mgl@1371
 30814
+#define bfd_family_coff(abfd) \
mgl@1371
 30815
+  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
mgl@1371
 30816
+   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
mgl@1371
 30817
+#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
mgl@1371
 30818
+#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
mgl@1371
 30819
+#define bfd_header_big_endian(abfd) \
mgl@1371
 30820
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
mgl@1371
 30821
+#define bfd_header_little_endian(abfd) \
mgl@1371
 30822
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
mgl@1371
 30823
+#define bfd_get_file_flags(abfd) ((abfd)->flags)
mgl@1371
 30824
+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
mgl@1371
 30825
+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
mgl@1371
 30826
+#define bfd_my_archive(abfd) ((abfd)->my_archive)
mgl@1371
 30827
+#define bfd_has_map(abfd) ((abfd)->has_armap)
mgl@1371
 30828
+
mgl@1371
 30829
+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
mgl@1371
 30830
+#define bfd_usrdata(abfd) ((abfd)->usrdata)
mgl@1371
 30831
+
mgl@1371
 30832
+#define bfd_get_start_address(abfd) ((abfd)->start_address)
mgl@1371
 30833
+#define bfd_get_symcount(abfd) ((abfd)->symcount)
mgl@1371
 30834
+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
mgl@1371
 30835
+#define bfd_count_sections(abfd) ((abfd)->section_count)
mgl@1371
 30836
+
mgl@1371
 30837
+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
mgl@1371
 30838
+
mgl@1371
 30839
+#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
mgl@1371
 30840
+
mgl@1371
 30841
+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
mgl@1371
 30842
+
mgl@1371
 30843
+extern bfd_boolean bfd_cache_close
mgl@1371
 30844
+  (bfd *abfd);
mgl@1371
 30845
+/* NB: This declaration should match the autogenerated one in libbfd.h.  */
mgl@1371
 30846
+
mgl@1371
 30847
+extern bfd_boolean bfd_cache_close_all (void);
mgl@1371
 30848
+
mgl@1371
 30849
+extern bfd_boolean bfd_record_phdr
mgl@1371
 30850
+  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
mgl@1371
 30851
+   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
mgl@1371
 30852
+
mgl@1371
 30853
+/* Byte swapping routines.  */
mgl@1371
 30854
+
mgl@1371
 30855
+bfd_uint64_t bfd_getb64 (const void *);
mgl@1371
 30856
+bfd_uint64_t bfd_getl64 (const void *);
mgl@1371
 30857
+bfd_int64_t bfd_getb_signed_64 (const void *);
mgl@1371
 30858
+bfd_int64_t bfd_getl_signed_64 (const void *);
mgl@1371
 30859
+bfd_vma bfd_getb32 (const void *);
mgl@1371
 30860
+bfd_vma bfd_getl32 (const void *);
mgl@1371
 30861
+bfd_signed_vma bfd_getb_signed_32 (const void *);
mgl@1371
 30862
+bfd_signed_vma bfd_getl_signed_32 (const void *);
mgl@1371
 30863
+bfd_vma bfd_getb16 (const void *);
mgl@1371
 30864
+bfd_vma bfd_getl16 (const void *);
mgl@1371
 30865
+bfd_signed_vma bfd_getb_signed_16 (const void *);
mgl@1371
 30866
+bfd_signed_vma bfd_getl_signed_16 (const void *);
mgl@1371
 30867
+void bfd_putb64 (bfd_uint64_t, void *);
mgl@1371
 30868
+void bfd_putl64 (bfd_uint64_t, void *);
mgl@1371
 30869
+void bfd_putb32 (bfd_vma, void *);
mgl@1371
 30870
+void bfd_putl32 (bfd_vma, void *);
mgl@1371
 30871
+void bfd_putb16 (bfd_vma, void *);
mgl@1371
 30872
+void bfd_putl16 (bfd_vma, void *);
mgl@1371
 30873
+
mgl@1371
 30874
+/* Byte swapping routines which take size and endiannes as arguments.  */
mgl@1371
 30875
+
mgl@1371
 30876
+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
mgl@1371
 30877
+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
mgl@1371
 30878
+
mgl@1371
 30879
+extern bfd_boolean bfd_section_already_linked_table_init (void);
mgl@1371
 30880
+extern void bfd_section_already_linked_table_free (void);
mgl@1371
 30881
+
mgl@1371
 30882
+/* Externally visible ECOFF routines.  */
mgl@1371
 30883
+
mgl@1371
 30884
+#if defined(__STDC__) || defined(ALMOST_STDC)
mgl@1371
 30885
+struct ecoff_debug_info;
mgl@1371
 30886
+struct ecoff_debug_swap;
mgl@1371
 30887
+struct ecoff_extr;
mgl@1371
 30888
+struct bfd_symbol;
mgl@1371
 30889
+struct bfd_link_info;
mgl@1371
 30890
+struct bfd_link_hash_entry;
mgl@1371
 30891
+struct bfd_elf_version_tree;
mgl@1371
 30892
+#endif
mgl@1371
 30893
+extern bfd_vma bfd_ecoff_get_gp_value
mgl@1371
 30894
+  (bfd * abfd);
mgl@1371
 30895
+extern bfd_boolean bfd_ecoff_set_gp_value
mgl@1371
 30896
+  (bfd *abfd, bfd_vma gp_value);
mgl@1371
 30897
+extern bfd_boolean bfd_ecoff_set_regmasks
mgl@1371
 30898
+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
mgl@1371
 30899
+   unsigned long *cprmask);
mgl@1371
 30900
+extern void *bfd_ecoff_debug_init
mgl@1371
 30901
+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 30902
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
mgl@1371
 30903
+extern void bfd_ecoff_debug_free
mgl@1371
 30904
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 30905
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
mgl@1371
 30906
+extern bfd_boolean bfd_ecoff_debug_accumulate
mgl@1371
 30907
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 30908
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
mgl@1371
 30909
+   struct ecoff_debug_info *input_debug,
mgl@1371
 30910
+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
mgl@1371
 30911
+extern bfd_boolean bfd_ecoff_debug_accumulate_other
mgl@1371
 30912
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 30913
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
mgl@1371
 30914
+   struct bfd_link_info *);
mgl@1371
 30915
+extern bfd_boolean bfd_ecoff_debug_externals
mgl@1371
 30916
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 30917
+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
mgl@1371
 30918
+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
mgl@1371
 30919
+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
mgl@1371
 30920
+extern bfd_boolean bfd_ecoff_debug_one_external
mgl@1371
 30921
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 30922
+   const struct ecoff_debug_swap *swap, const char *name,
mgl@1371
 30923
+   struct ecoff_extr *esym);
mgl@1371
 30924
+extern bfd_size_type bfd_ecoff_debug_size
mgl@1371
 30925
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 30926
+   const struct ecoff_debug_swap *swap);
mgl@1371
 30927
+extern bfd_boolean bfd_ecoff_write_debug
mgl@1371
 30928
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 30929
+   const struct ecoff_debug_swap *swap, file_ptr where);
mgl@1371
 30930
+extern bfd_boolean bfd_ecoff_write_accumulated_debug
mgl@1371
 30931
+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 30932
+   const struct ecoff_debug_swap *swap,
mgl@1371
 30933
+   struct bfd_link_info *info, file_ptr where);
mgl@1371
 30934
+
mgl@1371
 30935
+/* Externally visible ELF routines.  */
mgl@1371
 30936
+
mgl@1371
 30937
+struct bfd_link_needed_list
mgl@1371
 30938
+{
mgl@1371
 30939
+  struct bfd_link_needed_list *next;
mgl@1371
 30940
+  bfd *by;
mgl@1371
 30941
+  const char *name;
mgl@1371
 30942
+};
mgl@1371
 30943
+
mgl@1371
 30944
+enum dynamic_lib_link_class {
mgl@1371
 30945
+  DYN_NORMAL = 0,
mgl@1371
 30946
+  DYN_AS_NEEDED = 1,
mgl@1371
 30947
+  DYN_DT_NEEDED = 2,
mgl@1371
 30948
+  DYN_NO_ADD_NEEDED = 4,
mgl@1371
 30949
+  DYN_NO_NEEDED = 8
mgl@1371
 30950
+};
mgl@1371
 30951
+
mgl@1371
 30952
+enum notice_asneeded_action {
mgl@1371
 30953
+  notice_as_needed,
mgl@1371
 30954
+  notice_not_needed,
mgl@1371
 30955
+  notice_needed
mgl@1371
 30956
+};
mgl@1371
 30957
+
mgl@1371
 30958
+extern bfd_boolean bfd_elf_record_link_assignment
mgl@1371
 30959
+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
mgl@1371
 30960
+   bfd_boolean);
mgl@1371
 30961
+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
mgl@1371
 30962
+  (bfd *, struct bfd_link_info *);
mgl@1371
 30963
+extern bfd_boolean bfd_elf_get_bfd_needed_list
mgl@1371
 30964
+  (bfd *, struct bfd_link_needed_list **);
mgl@1371
 30965
+extern bfd_boolean bfd_elf_size_dynamic_sections
mgl@1371
 30966
+  (bfd *, const char *, const char *, const char *, const char * const *,
mgl@1371
 30967
+   struct bfd_link_info *, struct bfd_section **,
mgl@1371
 30968
+   struct bfd_elf_version_tree *);
mgl@1371
 30969
+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
mgl@1371
 30970
+  (bfd *, struct bfd_link_info *);
mgl@1371
 30971
+extern void bfd_elf_set_dt_needed_name
mgl@1371
 30972
+  (bfd *, const char *);
mgl@1371
 30973
+extern const char *bfd_elf_get_dt_soname
mgl@1371
 30974
+  (bfd *);
mgl@1371
 30975
+extern void bfd_elf_set_dyn_lib_class
mgl@1371
 30976
+  (bfd *, enum dynamic_lib_link_class);
mgl@1371
 30977
+extern int bfd_elf_get_dyn_lib_class
mgl@1371
 30978
+  (bfd *);
mgl@1371
 30979
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
mgl@1371
 30980
+  (bfd *, struct bfd_link_info *);
mgl@1371
 30981
+extern bfd_boolean bfd_elf_discard_info
mgl@1371
 30982
+  (bfd *, struct bfd_link_info *);
mgl@1371
 30983
+extern unsigned int _bfd_elf_default_action_discarded
mgl@1371
 30984
+  (struct bfd_section *);
mgl@1371
 30985
+
mgl@1371
 30986
+/* Return an upper bound on the number of bytes required to store a
mgl@1371
 30987
+   copy of ABFD's program header table entries.  Return -1 if an error
mgl@1371
 30988
+   occurs; bfd_get_error will return an appropriate code.  */
mgl@1371
 30989
+extern long bfd_get_elf_phdr_upper_bound
mgl@1371
 30990
+  (bfd *abfd);
mgl@1371
 30991
+
mgl@1371
 30992
+/* Copy ABFD's program header table entries to *PHDRS.  The entries
mgl@1371
 30993
+   will be stored as an array of Elf_Internal_Phdr structures, as
mgl@1371
 30994
+   defined in include/elf/internal.h.  To find out how large the
mgl@1371
 30995
+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
mgl@1371
 30996
+
mgl@1371
 30997
+   Return the number of program header table entries read, or -1 if an
mgl@1371
 30998
+   error occurs; bfd_get_error will return an appropriate code.  */
mgl@1371
 30999
+extern int bfd_get_elf_phdrs
mgl@1371
 31000
+  (bfd *abfd, void *phdrs);
mgl@1371
 31001
+
mgl@1371
 31002
+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
mgl@1371
 31003
+   reconstruct an ELF file by reading the segments out of remote memory
mgl@1371
 31004
+   based on the ELF file header at EHDR_VMA and the ELF program headers it
mgl@1371
 31005
+   points to.  If not null, *LOADBASEP is filled in with the difference
mgl@1371
 31006
+   between the VMAs from which the segments were read, and the VMAs the
mgl@1371
 31007
+   file headers (and hence BFD's idea of each section's VMA) put them at.
mgl@1371
 31008
+
mgl@1371
 31009
+   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
mgl@1371
 31010
+   remote memory at target address VMA into the local buffer at MYADDR; it
mgl@1371
 31011
+   should return zero on success or an `errno' code on failure.  TEMPL must
mgl@1371
 31012
+   be a BFD for an ELF target with the word size and byte order found in
mgl@1371
 31013
+   the remote memory.  */
mgl@1371
 31014
+extern bfd *bfd_elf_bfd_from_remote_memory
mgl@1371
 31015
+  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
mgl@1371
 31016
+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
mgl@1371
 31017
+
mgl@1371
 31018
+/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
mgl@1371
 31019
+extern int bfd_get_arch_size
mgl@1371
 31020
+  (bfd *);
mgl@1371
 31021
+
mgl@1371
 31022
+/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
mgl@1371
 31023
+extern int bfd_get_sign_extend_vma
mgl@1371
 31024
+  (bfd *);
mgl@1371
 31025
+
mgl@1371
 31026
+extern struct bfd_section *_bfd_elf_tls_setup
mgl@1371
 31027
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31028
+
mgl@1371
 31029
+extern void _bfd_fix_excluded_sec_syms
mgl@1371
 31030
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31031
+
mgl@1371
 31032
+extern unsigned bfd_m68k_mach_to_features (int);
mgl@1371
 31033
+
mgl@1371
 31034
+extern int bfd_m68k_features_to_mach (unsigned);
mgl@1371
 31035
+
mgl@1371
 31036
+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
mgl@1371
 31037
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
mgl@1371
 31038
+   char **);
mgl@1371
 31039
+
mgl@1371
 31040
+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
mgl@1371
 31041
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
mgl@1371
 31042
+   char **);
mgl@1371
 31043
+
mgl@1371
 31044
+/* SunOS shared library support routines for the linker.  */
mgl@1371
 31045
+
mgl@1371
 31046
+extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
mgl@1371
 31047
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31048
+extern bfd_boolean bfd_sunos_record_link_assignment
mgl@1371
 31049
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 31050
+extern bfd_boolean bfd_sunos_size_dynamic_sections
mgl@1371
 31051
+  (bfd *, struct bfd_link_info *, struct bfd_section **,
mgl@1371
 31052
+   struct bfd_section **, struct bfd_section **);
mgl@1371
 31053
+
mgl@1371
 31054
+/* Linux shared library support routines for the linker.  */
mgl@1371
 31055
+
mgl@1371
 31056
+extern bfd_boolean bfd_i386linux_size_dynamic_sections
mgl@1371
 31057
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31058
+extern bfd_boolean bfd_m68klinux_size_dynamic_sections
mgl@1371
 31059
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31060
+extern bfd_boolean bfd_sparclinux_size_dynamic_sections
mgl@1371
 31061
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31062
+
mgl@1371
 31063
+/* mmap hacks */
mgl@1371
 31064
+
mgl@1371
 31065
+struct _bfd_window_internal;
mgl@1371
 31066
+typedef struct _bfd_window_internal bfd_window_internal;
mgl@1371
 31067
+
mgl@1371
 31068
+typedef struct _bfd_window
mgl@1371
 31069
+{
mgl@1371
 31070
+  /* What the user asked for.  */
mgl@1371
 31071
+  void *data;
mgl@1371
 31072
+  bfd_size_type size;
mgl@1371
 31073
+  /* The actual window used by BFD.  Small user-requested read-only
mgl@1371
 31074
+     regions sharing a page may share a single window into the object
mgl@1371
 31075
+     file.  Read-write versions shouldn't until I've fixed things to
mgl@1371
 31076
+     keep track of which portions have been claimed by the
mgl@1371
 31077
+     application; don't want to give the same region back when the
mgl@1371
 31078
+     application wants two writable copies!  */
mgl@1371
 31079
+  struct _bfd_window_internal *i;
mgl@1371
 31080
+}
mgl@1371
 31081
+bfd_window;
mgl@1371
 31082
+
mgl@1371
 31083
+extern void bfd_init_window
mgl@1371
 31084
+  (bfd_window *);
mgl@1371
 31085
+extern void bfd_free_window
mgl@1371
 31086
+  (bfd_window *);
mgl@1371
 31087
+extern bfd_boolean bfd_get_file_window
mgl@1371
 31088
+  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
mgl@1371
 31089
+
mgl@1371
 31090
+/* XCOFF support routines for the linker.  */
mgl@1371
 31091
+
mgl@1371
 31092
+extern bfd_boolean bfd_xcoff_link_record_set
mgl@1371
 31093
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
mgl@1371
 31094
+extern bfd_boolean bfd_xcoff_import_symbol
mgl@1371
 31095
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
mgl@1371
 31096
+   const char *, const char *, const char *, unsigned int);
mgl@1371
 31097
+extern bfd_boolean bfd_xcoff_export_symbol
mgl@1371
 31098
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
mgl@1371
 31099
+extern bfd_boolean bfd_xcoff_link_count_reloc
mgl@1371
 31100
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 31101
+extern bfd_boolean bfd_xcoff_record_link_assignment
mgl@1371
 31102
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 31103
+extern bfd_boolean bfd_xcoff_size_dynamic_sections
mgl@1371
 31104
+  (bfd *, struct bfd_link_info *, const char *, const char *,
mgl@1371
 31105
+   unsigned long, unsigned long, unsigned long, bfd_boolean,
mgl@1371
 31106
+   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
mgl@1371
 31107
+extern bfd_boolean bfd_xcoff_link_generate_rtinit
mgl@1371
 31108
+  (bfd *, const char *, const char *, bfd_boolean);
mgl@1371
 31109
+
mgl@1371
 31110
+/* XCOFF support routines for ar.  */
mgl@1371
 31111
+extern bfd_boolean bfd_xcoff_ar_archive_set_magic
mgl@1371
 31112
+  (bfd *, char *);
mgl@1371
 31113
+
mgl@1371
 31114
+/* Externally visible COFF routines.  */
mgl@1371
 31115
+
mgl@1371
 31116
+#if defined(__STDC__) || defined(ALMOST_STDC)
mgl@1371
 31117
+struct internal_syment;
mgl@1371
 31118
+union internal_auxent;
mgl@1371
 31119
+#endif
mgl@1371
 31120
+
mgl@1371
 31121
+extern bfd_boolean bfd_coff_get_syment
mgl@1371
 31122
+  (bfd *, struct bfd_symbol *, struct internal_syment *);
mgl@1371
 31123
+
mgl@1371
 31124
+extern bfd_boolean bfd_coff_get_auxent
mgl@1371
 31125
+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
mgl@1371
 31126
+
mgl@1371
 31127
+extern bfd_boolean bfd_coff_set_symbol_class
mgl@1371
 31128
+  (bfd *, struct bfd_symbol *, unsigned int);
mgl@1371
 31129
+
mgl@1371
 31130
+extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
mgl@1371
 31131
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
mgl@1371
 31132
+
mgl@1371
 31133
+/* ARM VFP11 erratum workaround support.  */
mgl@1371
 31134
+typedef enum
mgl@1371
 31135
+{
mgl@1371
 31136
+  BFD_ARM_VFP11_FIX_DEFAULT,
mgl@1371
 31137
+  BFD_ARM_VFP11_FIX_NONE,
mgl@1371
 31138
+  BFD_ARM_VFP11_FIX_SCALAR,
mgl@1371
 31139
+  BFD_ARM_VFP11_FIX_VECTOR
mgl@1371
 31140
+} bfd_arm_vfp11_fix;
mgl@1371
 31141
+
mgl@1371
 31142
+extern void bfd_elf32_arm_init_maps
mgl@1371
 31143
+  (bfd *);
mgl@1371
 31144
+
mgl@1371
 31145
+extern void bfd_elf32_arm_set_vfp11_fix
mgl@1371
 31146
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31147
+
mgl@1371
 31148
+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
mgl@1371
 31149
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31150
+
mgl@1371
 31151
+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
mgl@1371
 31152
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31153
+
mgl@1371
 31154
+/* ARM Interworking support.  Called from linker.  */
mgl@1371
 31155
+extern bfd_boolean bfd_arm_allocate_interworking_sections
mgl@1371
 31156
+  (struct bfd_link_info *);
mgl@1371
 31157
+
mgl@1371
 31158
+extern bfd_boolean bfd_arm_process_before_allocation
mgl@1371
 31159
+  (bfd *, struct bfd_link_info *, int);
mgl@1371
 31160
+
mgl@1371
 31161
+extern bfd_boolean bfd_arm_get_bfd_for_interworking
mgl@1371
 31162
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31163
+
mgl@1371
 31164
+/* PE ARM Interworking support.  Called from linker.  */
mgl@1371
 31165
+extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
mgl@1371
 31166
+  (struct bfd_link_info *);
mgl@1371
 31167
+
mgl@1371
 31168
+extern bfd_boolean bfd_arm_pe_process_before_allocation
mgl@1371
 31169
+  (bfd *, struct bfd_link_info *, int);
mgl@1371
 31170
+
mgl@1371
 31171
+extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
mgl@1371
 31172
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31173
+
mgl@1371
 31174
+/* ELF ARM Interworking support.  Called from linker.  */
mgl@1371
 31175
+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
mgl@1371
 31176
+  (struct bfd_link_info *);
mgl@1371
 31177
+
mgl@1371
 31178
+extern bfd_boolean bfd_elf32_arm_process_before_allocation
mgl@1371
 31179
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31180
+
mgl@1371
 31181
+void bfd_elf32_arm_set_target_relocs
mgl@1371
 31182
+  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
mgl@1371
 31183
+   int, int);
mgl@1371
 31184
+
mgl@1371
 31185
+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
mgl@1371
 31186
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31187
+
mgl@1371
 31188
+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
mgl@1371
 31189
+  (bfd *, struct bfd_link_info *);
mgl@1371
 31190
+
mgl@1371
 31191
+/* ELF ARM mapping symbol support */
mgl@1371
 31192
+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
mgl@1371
 31193
+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
mgl@1371
 31194
+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
mgl@1371
 31195
+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
mgl@1371
 31196
+extern bfd_boolean bfd_is_arm_special_symbol_name
mgl@1371
 31197
+  (const char * name, int type);
mgl@1371
 31198
+
mgl@1371
 31199
+extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
mgl@1371
 31200
+
mgl@1371
 31201
+/* ARM Note section processing.  */
mgl@1371
 31202
+extern bfd_boolean bfd_arm_merge_machines
mgl@1371
 31203
+  (bfd *, bfd *);
mgl@1371
 31204
+
mgl@1371
 31205
+extern bfd_boolean bfd_arm_update_notes
mgl@1371
 31206
+  (bfd *, const char *);
mgl@1371
 31207
+
mgl@1371
 31208
+extern unsigned int bfd_arm_get_mach_from_notes
mgl@1371
 31209
+  (bfd *, const char *);
mgl@1371
 31210
+
mgl@1371
 31211
+/* TI COFF load page support.  */
mgl@1371
 31212
+extern void bfd_ticoff_set_section_load_page
mgl@1371
 31213
+  (struct bfd_section *, int);
mgl@1371
 31214
+
mgl@1371
 31215
+extern int bfd_ticoff_get_section_load_page
mgl@1371
 31216
+  (struct bfd_section *);
mgl@1371
 31217
+
mgl@1371
 31218
+/* H8/300 functions.  */
mgl@1371
 31219
+extern bfd_vma bfd_h8300_pad_address
mgl@1371
 31220
+  (bfd *, bfd_vma);
mgl@1371
 31221
+
mgl@1371
 31222
+/* IA64 Itanium code generation.  Called from linker.  */
mgl@1371
 31223
+extern void bfd_elf32_ia64_after_parse
mgl@1371
 31224
+  (int);
mgl@1371
 31225
+
mgl@1371
 31226
+extern void bfd_elf64_ia64_after_parse
mgl@1371
 31227
+  (int);
mgl@1371
 31228
+
mgl@1371
 31229
+/* This structure is used for a comdat section, as in PE.  A comdat
mgl@1371
 31230
+   section is associated with a particular symbol.  When the linker
mgl@1371
 31231
+   sees a comdat section, it keeps only one of the sections with a
mgl@1371
 31232
+   given name and associated with a given symbol.  */
mgl@1371
 31233
+
mgl@1371
 31234
+struct coff_comdat_info
mgl@1371
 31235
+{
mgl@1371
 31236
+  /* The name of the symbol associated with a comdat section.  */
mgl@1371
 31237
+  const char *name;
mgl@1371
 31238
+
mgl@1371
 31239
+  /* The local symbol table index of the symbol associated with a
mgl@1371
 31240
+     comdat section.  This is only meaningful to the object file format
mgl@1371
 31241
+     specific code; it is not an index into the list returned by
mgl@1371
 31242
+     bfd_canonicalize_symtab.  */
mgl@1371
 31243
+  long symbol;
mgl@1371
 31244
+};
mgl@1371
 31245
+
mgl@1371
 31246
+extern struct coff_comdat_info *bfd_coff_get_comdat_section
mgl@1371
 31247
+  (bfd *, struct bfd_section *);
mgl@1371
 31248
+
mgl@1371
 31249
+/* Extracted from init.c.  */
mgl@1371
 31250
+void bfd_init (void);
mgl@1371
 31251
+
mgl@1371
 31252
+/* Extracted from opncls.c.  */
mgl@1371
 31253
+bfd *bfd_fopen (const char *filename, const char *target,
mgl@1371
 31254
+    const char *mode, int fd);
mgl@1371
 31255
+
mgl@1371
 31256
+bfd *bfd_openr (const char *filename, const char *target);
mgl@1371
 31257
+
mgl@1371
 31258
+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
mgl@1371
 31259
+
mgl@1371
 31260
+bfd *bfd_openstreamr (const char *, const char *, void *);
mgl@1371
 31261
+
mgl@1371
 31262
+bfd *bfd_openr_iovec (const char *filename, const char *target,
mgl@1371
 31263
+    void *(*open) (struct bfd *nbfd,
mgl@1371
 31264
+    void *open_closure),
mgl@1371
 31265
+    void *open_closure,
mgl@1371
 31266
+    file_ptr (*pread) (struct bfd *nbfd,
mgl@1371
 31267
+    void *stream,
mgl@1371
 31268
+    void *buf,
mgl@1371
 31269
+    file_ptr nbytes,
mgl@1371
 31270
+    file_ptr offset),
mgl@1371
 31271
+    int (*close) (struct bfd *nbfd,
mgl@1371
 31272
+    void *stream),
mgl@1371
 31273
+    int (*stat) (struct bfd *abfd,
mgl@1371
 31274
+    void *stream,
mgl@1371
 31275
+    struct stat *sb));
mgl@1371
 31276
+
mgl@1371
 31277
+bfd *bfd_openw (const char *filename, const char *target);
mgl@1371
 31278
+
mgl@1371
 31279
+bfd_boolean bfd_close (bfd *abfd);
mgl@1371
 31280
+
mgl@1371
 31281
+bfd_boolean bfd_close_all_done (bfd *);
mgl@1371
 31282
+
mgl@1371
 31283
+bfd *bfd_create (const char *filename, bfd *templ);
mgl@1371
 31284
+
mgl@1371
 31285
+bfd_boolean bfd_make_writable (bfd *abfd);
mgl@1371
 31286
+
mgl@1371
 31287
+bfd_boolean bfd_make_readable (bfd *abfd);
mgl@1371
 31288
+
mgl@1371
 31289
+unsigned long bfd_calc_gnu_debuglink_crc32
mgl@1371
 31290
+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
mgl@1371
 31291
+
mgl@1371
 31292
+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
mgl@1371
 31293
+
mgl@1371
 31294
+struct bfd_section *bfd_create_gnu_debuglink_section
mgl@1371
 31295
+   (bfd *abfd, const char *filename);
mgl@1371
 31296
+
mgl@1371
 31297
+bfd_boolean bfd_fill_in_gnu_debuglink_section
mgl@1371
 31298
+   (bfd *abfd, struct bfd_section *sect, const char *filename);
mgl@1371
 31299
+
mgl@1371
 31300
+/* Extracted from libbfd.c.  */
mgl@1371
 31301
+
mgl@1371
 31302
+/* Byte swapping macros for user section data.  */
mgl@1371
 31303
+
mgl@1371
 31304
+#define bfd_put_8(abfd, val, ptr) \
mgl@1371
 31305
+  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
mgl@1371
 31306
+#define bfd_put_signed_8 \
mgl@1371
 31307
+  bfd_put_8
mgl@1371
 31308
+#define bfd_get_8(abfd, ptr) \
mgl@1371
 31309
+  (*(unsigned char *) (ptr) & 0xff)
mgl@1371
 31310
+#define bfd_get_signed_8(abfd, ptr) \
mgl@1371
 31311
+  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
mgl@1371
 31312
+
mgl@1371
 31313
+#define bfd_put_16(abfd, val, ptr) \
mgl@1371
 31314
+  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
mgl@1371
 31315
+#define bfd_put_signed_16 \
mgl@1371
 31316
+  bfd_put_16
mgl@1371
 31317
+#define bfd_get_16(abfd, ptr) \
mgl@1371
 31318
+  BFD_SEND (abfd, bfd_getx16, (ptr))
mgl@1371
 31319
+#define bfd_get_signed_16(abfd, ptr) \
mgl@1371
 31320
+  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
mgl@1371
 31321
+
mgl@1371
 31322
+#define bfd_put_32(abfd, val, ptr) \
mgl@1371
 31323
+  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
mgl@1371
 31324
+#define bfd_put_signed_32 \
mgl@1371
 31325
+  bfd_put_32
mgl@1371
 31326
+#define bfd_get_32(abfd, ptr) \
mgl@1371
 31327
+  BFD_SEND (abfd, bfd_getx32, (ptr))
mgl@1371
 31328
+#define bfd_get_signed_32(abfd, ptr) \
mgl@1371
 31329
+  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
mgl@1371
 31330
+
mgl@1371
 31331
+#define bfd_put_64(abfd, val, ptr) \
mgl@1371
 31332
+  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
mgl@1371
 31333
+#define bfd_put_signed_64 \
mgl@1371
 31334
+  bfd_put_64
mgl@1371
 31335
+#define bfd_get_64(abfd, ptr) \
mgl@1371
 31336
+  BFD_SEND (abfd, bfd_getx64, (ptr))
mgl@1371
 31337
+#define bfd_get_signed_64(abfd, ptr) \
mgl@1371
 31338
+  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
mgl@1371
 31339
+
mgl@1371
 31340
+#define bfd_get(bits, abfd, ptr)                       \
mgl@1371
 31341
+  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
mgl@1371
 31342
+   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
mgl@1371
 31343
+   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
mgl@1371
 31344
+   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
mgl@1371
 31345
+   : (abort (), (bfd_vma) - 1))
mgl@1371
 31346
+
mgl@1371
 31347
+#define bfd_put(bits, abfd, val, ptr)                  \
mgl@1371
 31348
+  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
mgl@1371
 31349
+   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
mgl@1371
 31350
+   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
mgl@1371
 31351
+   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
mgl@1371
 31352
+   : (abort (), (void) 0))
mgl@1371
 31353
+
mgl@1371
 31354
+
mgl@1371
 31355
+/* Byte swapping macros for file header data.  */
mgl@1371
 31356
+
mgl@1371
 31357
+#define bfd_h_put_8(abfd, val, ptr) \
mgl@1371
 31358
+  bfd_put_8 (abfd, val, ptr)
mgl@1371
 31359
+#define bfd_h_put_signed_8(abfd, val, ptr) \
mgl@1371
 31360
+  bfd_put_8 (abfd, val, ptr)
mgl@1371
 31361
+#define bfd_h_get_8(abfd, ptr) \
mgl@1371
 31362
+  bfd_get_8 (abfd, ptr)
mgl@1371
 31363
+#define bfd_h_get_signed_8(abfd, ptr) \
mgl@1371
 31364
+  bfd_get_signed_8 (abfd, ptr)
mgl@1371
 31365
+
mgl@1371
 31366
+#define bfd_h_put_16(abfd, val, ptr) \
mgl@1371
 31367
+  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
mgl@1371
 31368
+#define bfd_h_put_signed_16 \
mgl@1371
 31369
+  bfd_h_put_16
mgl@1371
 31370
+#define bfd_h_get_16(abfd, ptr) \
mgl@1371
 31371
+  BFD_SEND (abfd, bfd_h_getx16, (ptr))
mgl@1371
 31372
+#define bfd_h_get_signed_16(abfd, ptr) \
mgl@1371
 31373
+  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
mgl@1371
 31374
+
mgl@1371
 31375
+#define bfd_h_put_32(abfd, val, ptr) \
mgl@1371
 31376
+  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
mgl@1371
 31377
+#define bfd_h_put_signed_32 \
mgl@1371
 31378
+  bfd_h_put_32
mgl@1371
 31379
+#define bfd_h_get_32(abfd, ptr) \
mgl@1371
 31380
+  BFD_SEND (abfd, bfd_h_getx32, (ptr))
mgl@1371
 31381
+#define bfd_h_get_signed_32(abfd, ptr) \
mgl@1371
 31382
+  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
mgl@1371
 31383
+
mgl@1371
 31384
+#define bfd_h_put_64(abfd, val, ptr) \
mgl@1371
 31385
+  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
mgl@1371
 31386
+#define bfd_h_put_signed_64 \
mgl@1371
 31387
+  bfd_h_put_64
mgl@1371
 31388
+#define bfd_h_get_64(abfd, ptr) \
mgl@1371
 31389
+  BFD_SEND (abfd, bfd_h_getx64, (ptr))
mgl@1371
 31390
+#define bfd_h_get_signed_64(abfd, ptr) \
mgl@1371
 31391
+  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
mgl@1371
 31392
+
mgl@1371
 31393
+/* Aliases for the above, which should eventually go away.  */
mgl@1371
 31394
+
mgl@1371
 31395
+#define H_PUT_64  bfd_h_put_64
mgl@1371
 31396
+#define H_PUT_32  bfd_h_put_32
mgl@1371
 31397
+#define H_PUT_16  bfd_h_put_16
mgl@1371
 31398
+#define H_PUT_8   bfd_h_put_8
mgl@1371
 31399
+#define H_PUT_S64 bfd_h_put_signed_64
mgl@1371
 31400
+#define H_PUT_S32 bfd_h_put_signed_32
mgl@1371
 31401
+#define H_PUT_S16 bfd_h_put_signed_16
mgl@1371
 31402
+#define H_PUT_S8  bfd_h_put_signed_8
mgl@1371
 31403
+#define H_GET_64  bfd_h_get_64
mgl@1371
 31404
+#define H_GET_32  bfd_h_get_32
mgl@1371
 31405
+#define H_GET_16  bfd_h_get_16
mgl@1371
 31406
+#define H_GET_8   bfd_h_get_8
mgl@1371
 31407
+#define H_GET_S64 bfd_h_get_signed_64
mgl@1371
 31408
+#define H_GET_S32 bfd_h_get_signed_32
mgl@1371
 31409
+#define H_GET_S16 bfd_h_get_signed_16
mgl@1371
 31410
+#define H_GET_S8  bfd_h_get_signed_8
mgl@1371
 31411
+
mgl@1371
 31412
+
mgl@1371
 31413
+/* Extracted from bfdio.c.  */
mgl@1371
 31414
+long bfd_get_mtime (bfd *abfd);
mgl@1371
 31415
+
mgl@1371
 31416
+file_ptr bfd_get_size (bfd *abfd);
mgl@1371
 31417
+
mgl@1371
 31418
+/* Extracted from bfdwin.c.  */
mgl@1371
 31419
+/* Extracted from section.c.  */
mgl@1371
 31420
+typedef struct bfd_section
mgl@1371
 31421
+{
mgl@1371
 31422
+  /* The name of the section; the name isn't a copy, the pointer is
mgl@1371
 31423
+     the same as that passed to bfd_make_section.  */
mgl@1371
 31424
+  const char *name;
mgl@1371
 31425
+
mgl@1371
 31426
+  /* A unique sequence number.  */
mgl@1371
 31427
+  int id;
mgl@1371
 31428
+
mgl@1371
 31429
+  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
mgl@1371
 31430
+  int index;
mgl@1371
 31431
+
mgl@1371
 31432
+  /* The next section in the list belonging to the BFD, or NULL.  */
mgl@1371
 31433
+  struct bfd_section *next;
mgl@1371
 31434
+
mgl@1371
 31435
+  /* The previous section in the list belonging to the BFD, or NULL.  */
mgl@1371
 31436
+  struct bfd_section *prev;
mgl@1371
 31437
+
mgl@1371
 31438
+  /* The field flags contains attributes of the section. Some
mgl@1371
 31439
+     flags are read in from the object file, and some are
mgl@1371
 31440
+     synthesized from other information.  */
mgl@1371
 31441
+  flagword flags;
mgl@1371
 31442
+
mgl@1371
 31443
+#define SEC_NO_FLAGS   0x000
mgl@1371
 31444
+
mgl@1371
 31445
+  /* Tells the OS to allocate space for this section when loading.
mgl@1371
 31446
+     This is clear for a section containing debug information only.  */
mgl@1371
 31447
+#define SEC_ALLOC      0x001
mgl@1371
 31448
+
mgl@1371
 31449
+  /* Tells the OS to load the section from the file when loading.
mgl@1371
 31450
+     This is clear for a .bss section.  */
mgl@1371
 31451
+#define SEC_LOAD       0x002
mgl@1371
 31452
+
mgl@1371
 31453
+  /* The section contains data still to be relocated, so there is
mgl@1371
 31454
+     some relocation information too.  */
mgl@1371
 31455
+#define SEC_RELOC      0x004
mgl@1371
 31456
+
mgl@1371
 31457
+  /* A signal to the OS that the section contains read only data.  */
mgl@1371
 31458
+#define SEC_READONLY   0x008
mgl@1371
 31459
+
mgl@1371
 31460
+  /* The section contains code only.  */
mgl@1371
 31461
+#define SEC_CODE       0x010
mgl@1371
 31462
+
mgl@1371
 31463
+  /* The section contains data only.  */
mgl@1371
 31464
+#define SEC_DATA       0x020
mgl@1371
 31465
+
mgl@1371
 31466
+  /* The section will reside in ROM.  */
mgl@1371
 31467
+#define SEC_ROM        0x040
mgl@1371
 31468
+
mgl@1371
 31469
+  /* The section contains constructor information. This section
mgl@1371
 31470
+     type is used by the linker to create lists of constructors and
mgl@1371
 31471
+     destructors used by <<g++>>. When a back end sees a symbol
mgl@1371
 31472
+     which should be used in a constructor list, it creates a new
mgl@1371
 31473
+     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
mgl@1371
 31474
+     the symbol to it, and builds a relocation. To build the lists
mgl@1371
 31475
+     of constructors, all the linker has to do is catenate all the
mgl@1371
 31476
+     sections called <<__CTOR_LIST__>> and relocate the data
mgl@1371
 31477
+     contained within - exactly the operations it would peform on
mgl@1371
 31478
+     standard data.  */
mgl@1371
 31479
+#define SEC_CONSTRUCTOR 0x080
mgl@1371
 31480
+
mgl@1371
 31481
+  /* The section has contents - a data section could be
mgl@1371
 31482
+     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
mgl@1371
 31483
+     <<SEC_HAS_CONTENTS>>  */
mgl@1371
 31484
+#define SEC_HAS_CONTENTS 0x100
mgl@1371
 31485
+
mgl@1371
 31486
+  /* An instruction to the linker to not output the section
mgl@1371
 31487
+     even if it has information which would normally be written.  */
mgl@1371
 31488
+#define SEC_NEVER_LOAD 0x200
mgl@1371
 31489
+
mgl@1371
 31490
+  /* The section contains thread local data.  */
mgl@1371
 31491
+#define SEC_THREAD_LOCAL 0x400
mgl@1371
 31492
+
mgl@1371
 31493
+  /* The section has GOT references.  This flag is only for the
mgl@1371
 31494
+     linker, and is currently only used by the elf32-hppa back end.
mgl@1371
 31495
+     It will be set if global offset table references were detected
mgl@1371
 31496
+     in this section, which indicate to the linker that the section
mgl@1371
 31497
+     contains PIC code, and must be handled specially when doing a
mgl@1371
 31498
+     static link.  */
mgl@1371
 31499
+#define SEC_HAS_GOT_REF 0x800
mgl@1371
 31500
+
mgl@1371
 31501
+  /* The section contains common symbols (symbols may be defined
mgl@1371
 31502
+     multiple times, the value of a symbol is the amount of
mgl@1371
 31503
+     space it requires, and the largest symbol value is the one
mgl@1371
 31504
+     used).  Most targets have exactly one of these (which we
mgl@1371
 31505
+     translate to bfd_com_section_ptr), but ECOFF has two.  */
mgl@1371
 31506
+#define SEC_IS_COMMON 0x1000
mgl@1371
 31507
+
mgl@1371
 31508
+  /* The section contains only debugging information.  For
mgl@1371
 31509
+     example, this is set for ELF .debug and .stab sections.
mgl@1371
 31510
+     strip tests this flag to see if a section can be
mgl@1371
 31511
+     discarded.  */
mgl@1371
 31512
+#define SEC_DEBUGGING 0x2000
mgl@1371
 31513
+
mgl@1371
 31514
+  /* The contents of this section are held in memory pointed to
mgl@1371
 31515
+     by the contents field.  This is checked by bfd_get_section_contents,
mgl@1371
 31516
+     and the data is retrieved from memory if appropriate.  */
mgl@1371
 31517
+#define SEC_IN_MEMORY 0x4000
mgl@1371
 31518
+
mgl@1371
 31519
+  /* The contents of this section are to be excluded by the
mgl@1371
 31520
+     linker for executable and shared objects unless those
mgl@1371
 31521
+     objects are to be further relocated.  */
mgl@1371
 31522
+#define SEC_EXCLUDE 0x8000
mgl@1371
 31523
+
mgl@1371
 31524
+  /* The contents of this section are to be sorted based on the sum of
mgl@1371
 31525
+     the symbol and addend values specified by the associated relocation
mgl@1371
 31526
+     entries.  Entries without associated relocation entries will be
mgl@1371
 31527
+     appended to the end of the section in an unspecified order.  */
mgl@1371
 31528
+#define SEC_SORT_ENTRIES 0x10000
mgl@1371
 31529
+
mgl@1371
 31530
+  /* When linking, duplicate sections of the same name should be
mgl@1371
 31531
+     discarded, rather than being combined into a single section as
mgl@1371
 31532
+     is usually done.  This is similar to how common symbols are
mgl@1371
 31533
+     handled.  See SEC_LINK_DUPLICATES below.  */
mgl@1371
 31534
+#define SEC_LINK_ONCE 0x20000
mgl@1371
 31535
+
mgl@1371
 31536
+  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
mgl@1371
 31537
+     should handle duplicate sections.  */
mgl@1371
 31538
+#define SEC_LINK_DUPLICATES 0x40000
mgl@1371
 31539
+
mgl@1371
 31540
+  /* This value for SEC_LINK_DUPLICATES means that duplicate
mgl@1371
 31541
+     sections with the same name should simply be discarded.  */
mgl@1371
 31542
+#define SEC_LINK_DUPLICATES_DISCARD 0x0
mgl@1371
 31543
+
mgl@1371
 31544
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 31545
+     should warn if there are any duplicate sections, although
mgl@1371
 31546
+     it should still only link one copy.  */
mgl@1371
 31547
+#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
mgl@1371
 31548
+
mgl@1371
 31549
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 31550
+     should warn if any duplicate sections are a different size.  */
mgl@1371
 31551
+#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
mgl@1371
 31552
+
mgl@1371
 31553
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 31554
+     should warn if any duplicate sections contain different
mgl@1371
 31555
+     contents.  */
mgl@1371
 31556
+#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
mgl@1371
 31557
+  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
mgl@1371
 31558
+
mgl@1371
 31559
+  /* This section was created by the linker as part of dynamic
mgl@1371
 31560
+     relocation or other arcane processing.  It is skipped when
mgl@1371
 31561
+     going through the first-pass output, trusting that someone
mgl@1371
 31562
+     else up the line will take care of it later.  */
mgl@1371
 31563
+#define SEC_LINKER_CREATED 0x200000
mgl@1371
 31564
+
mgl@1371
 31565
+  /* This section should not be subject to garbage collection.
mgl@1371
 31566
+     Also set to inform the linker that this section should not be
mgl@1371
 31567
+     listed in the link map as discarded.  */
mgl@1371
 31568
+#define SEC_KEEP 0x400000
mgl@1371
 31569
+
mgl@1371
 31570
+  /* This section contains "short" data, and should be placed
mgl@1371
 31571
+     "near" the GP.  */
mgl@1371
 31572
+#define SEC_SMALL_DATA 0x800000
mgl@1371
 31573
+
mgl@1371
 31574
+  /* Attempt to merge identical entities in the section.
mgl@1371
 31575
+     Entity size is given in the entsize field.  */
mgl@1371
 31576
+#define SEC_MERGE 0x1000000
mgl@1371
 31577
+
mgl@1371
 31578
+  /* If given with SEC_MERGE, entities to merge are zero terminated
mgl@1371
 31579
+     strings where entsize specifies character size instead of fixed
mgl@1371
 31580
+     size entries.  */
mgl@1371
 31581
+#define SEC_STRINGS 0x2000000
mgl@1371
 31582
+
mgl@1371
 31583
+  /* This section contains data about section groups.  */
mgl@1371
 31584
+#define SEC_GROUP 0x4000000
mgl@1371
 31585
+
mgl@1371
 31586
+  /* The section is a COFF shared library section.  This flag is
mgl@1371
 31587
+     only for the linker.  If this type of section appears in
mgl@1371
 31588
+     the input file, the linker must copy it to the output file
mgl@1371
 31589
+     without changing the vma or size.  FIXME: Although this
mgl@1371
 31590
+     was originally intended to be general, it really is COFF
mgl@1371
 31591
+     specific (and the flag was renamed to indicate this).  It
mgl@1371
 31592
+     might be cleaner to have some more general mechanism to
mgl@1371
 31593
+     allow the back end to control what the linker does with
mgl@1371
 31594
+     sections.  */
mgl@1371
 31595
+#define SEC_COFF_SHARED_LIBRARY 0x10000000
mgl@1371
 31596
+
mgl@1371
 31597
+  /* This section contains data which may be shared with other
mgl@1371
 31598
+     executables or shared objects. This is for COFF only.  */
mgl@1371
 31599
+#define SEC_COFF_SHARED 0x20000000
mgl@1371
 31600
+
mgl@1371
 31601
+  /* When a section with this flag is being linked, then if the size of
mgl@1371
 31602
+     the input section is less than a page, it should not cross a page
mgl@1371
 31603
+     boundary.  If the size of the input section is one page or more,
mgl@1371
 31604
+     it should be aligned on a page boundary.  This is for TI
mgl@1371
 31605
+     TMS320C54X only.  */
mgl@1371
 31606
+#define SEC_TIC54X_BLOCK 0x40000000
mgl@1371
 31607
+
mgl@1371
 31608
+  /* Conditionally link this section; do not link if there are no
mgl@1371
 31609
+     references found to any symbol in the section.  This is for TI
mgl@1371
 31610
+     TMS320C54X only.  */
mgl@1371
 31611
+#define SEC_TIC54X_CLINK 0x80000000
mgl@1371
 31612
+
mgl@1371
 31613
+  /*  End of section flags.  */
mgl@1371
 31614
+
mgl@1371
 31615
+  /* Some internal packed boolean fields.  */
mgl@1371
 31616
+
mgl@1371
 31617
+  /* See the vma field.  */
mgl@1371
 31618
+  unsigned int user_set_vma : 1;
mgl@1371
 31619
+
mgl@1371
 31620
+  /* A mark flag used by some of the linker backends.  */
mgl@1371
 31621
+  unsigned int linker_mark : 1;
mgl@1371
 31622
+
mgl@1371
 31623
+  /* Another mark flag used by some of the linker backends.  Set for
mgl@1371
 31624
+     output sections that have an input section.  */
mgl@1371
 31625
+  unsigned int linker_has_input : 1;
mgl@1371
 31626
+
mgl@1371
 31627
+  /* Mark flags used by some linker backends for garbage collection.  */
mgl@1371
 31628
+  unsigned int gc_mark : 1;
mgl@1371
 31629
+  unsigned int gc_mark_from_eh : 1;
mgl@1371
 31630
+
mgl@1371
 31631
+  /* The following flags are used by the ELF linker. */
mgl@1371
 31632
+
mgl@1371
 31633
+  /* Mark sections which have been allocated to segments.  */
mgl@1371
 31634
+  unsigned int segment_mark : 1;
mgl@1371
 31635
+
mgl@1371
 31636
+  /* Type of sec_info information.  */
mgl@1371
 31637
+  unsigned int sec_info_type:3;
mgl@1371
 31638
+#define ELF_INFO_TYPE_NONE      0
mgl@1371
 31639
+#define ELF_INFO_TYPE_STABS     1
mgl@1371
 31640
+#define ELF_INFO_TYPE_MERGE     2
mgl@1371
 31641
+#define ELF_INFO_TYPE_EH_FRAME  3
mgl@1371
 31642
+#define ELF_INFO_TYPE_JUST_SYMS 4
mgl@1371
 31643
+
mgl@1371
 31644
+  /* Nonzero if this section uses RELA relocations, rather than REL.  */
mgl@1371
 31645
+  unsigned int use_rela_p:1;
mgl@1371
 31646
+
mgl@1371
 31647
+  /* Bits used by various backends.  The generic code doesn't touch
mgl@1371
 31648
+     these fields.  */
mgl@1371
 31649
+
mgl@1371
 31650
+  /* Nonzero if this section has TLS related relocations.  */
mgl@1371
 31651
+  unsigned int has_tls_reloc:1;
mgl@1371
 31652
+
mgl@1371
 31653
+  /* Nonzero if this section has a gp reloc.  */
mgl@1371
 31654
+  unsigned int has_gp_reloc:1;
mgl@1371
 31655
+
mgl@1371
 31656
+  /* Nonzero if this section needs the relax finalize pass.  */
mgl@1371
 31657
+  unsigned int need_finalize_relax:1;
mgl@1371
 31658
+
mgl@1371
 31659
+  /* Whether relocations have been processed.  */
mgl@1371
 31660
+  unsigned int reloc_done : 1;
mgl@1371
 31661
+
mgl@1371
 31662
+  /* End of internal packed boolean fields.  */
mgl@1371
 31663
+
mgl@1371
 31664
+  /*  The virtual memory address of the section - where it will be
mgl@1371
 31665
+      at run time.  The symbols are relocated against this.  The
mgl@1371
 31666
+      user_set_vma flag is maintained by bfd; if it's not set, the
mgl@1371
 31667
+      backend can assign addresses (for example, in <<a.out>>, where
mgl@1371
 31668
+      the default address for <<.data>> is dependent on the specific
mgl@1371
 31669
+      target and various flags).  */
mgl@1371
 31670
+  bfd_vma vma;
mgl@1371
 31671
+
mgl@1371
 31672
+  /*  The load address of the section - where it would be in a
mgl@1371
 31673
+      rom image; really only used for writing section header
mgl@1371
 31674
+      information.  */
mgl@1371
 31675
+  bfd_vma lma;
mgl@1371
 31676
+
mgl@1371
 31677
+  /* The size of the section in octets, as it will be output.
mgl@1371
 31678
+     Contains a value even if the section has no contents (e.g., the
mgl@1371
 31679
+     size of <<.bss>>).  */
mgl@1371
 31680
+  bfd_size_type size;
mgl@1371
 31681
+
mgl@1371
 31682
+  /* For input sections, the original size on disk of the section, in
mgl@1371
 31683
+     octets.  This field is used by the linker relaxation code.  It is
mgl@1371
 31684
+     currently only set for sections where the linker relaxation scheme
mgl@1371
 31685
+     doesn't cache altered section and reloc contents (stabs, eh_frame,
mgl@1371
 31686
+     SEC_MERGE, some coff relaxing targets), and thus the original size
mgl@1371
 31687
+     needs to be kept to read the section multiple times.
mgl@1371
 31688
+     For output sections, rawsize holds the section size calculated on
mgl@1371
 31689
+     a previous linker relaxation pass.  */
mgl@1371
 31690
+  bfd_size_type rawsize;
mgl@1371
 31691
+
mgl@1371
 31692
+  /* If this section is going to be output, then this value is the
mgl@1371
 31693
+     offset in *bytes* into the output section of the first byte in the
mgl@1371
 31694
+     input section (byte ==> smallest addressable unit on the
mgl@1371
 31695
+     target).  In most cases, if this was going to start at the
mgl@1371
 31696
+     100th octet (8-bit quantity) in the output section, this value
mgl@1371
 31697
+     would be 100.  However, if the target byte size is 16 bits
mgl@1371
 31698
+     (bfd_octets_per_byte is "2"), this value would be 50.  */
mgl@1371
 31699
+  bfd_vma output_offset;
mgl@1371
 31700
+
mgl@1371
 31701
+  /* The output section through which to map on output.  */
mgl@1371
 31702
+  struct bfd_section *output_section;
mgl@1371
 31703
+
mgl@1371
 31704
+  /* The alignment requirement of the section, as an exponent of 2 -
mgl@1371
 31705
+     e.g., 3 aligns to 2^3 (or 8).  */
mgl@1371
 31706
+  unsigned int alignment_power;
mgl@1371
 31707
+
mgl@1371
 31708
+  /* If an input section, a pointer to a vector of relocation
mgl@1371
 31709
+     records for the data in this section.  */
mgl@1371
 31710
+  struct reloc_cache_entry *relocation;
mgl@1371
 31711
+
mgl@1371
 31712
+  /* If an output section, a pointer to a vector of pointers to
mgl@1371
 31713
+     relocation records for the data in this section.  */
mgl@1371
 31714
+  struct reloc_cache_entry **orelocation;
mgl@1371
 31715
+
mgl@1371
 31716
+  /* The number of relocation records in one of the above.  */
mgl@1371
 31717
+  unsigned reloc_count;
mgl@1371
 31718
+
mgl@1371
 31719
+  /* Information below is back end specific - and not always used
mgl@1371
 31720
+     or updated.  */
mgl@1371
 31721
+
mgl@1371
 31722
+  /* File position of section data.  */
mgl@1371
 31723
+  file_ptr filepos;
mgl@1371
 31724
+
mgl@1371
 31725
+  /* File position of relocation info.  */
mgl@1371
 31726
+  file_ptr rel_filepos;
mgl@1371
 31727
+
mgl@1371
 31728
+  /* File position of line data.  */
mgl@1371
 31729
+  file_ptr line_filepos;
mgl@1371
 31730
+
mgl@1371
 31731
+  /* Pointer to data for applications.  */
mgl@1371
 31732
+  void *userdata;
mgl@1371
 31733
+
mgl@1371
 31734
+  /* If the SEC_IN_MEMORY flag is set, this points to the actual
mgl@1371
 31735
+     contents.  */
mgl@1371
 31736
+  unsigned char *contents;
mgl@1371
 31737
+
mgl@1371
 31738
+  /* Attached line number information.  */
mgl@1371
 31739
+  alent *lineno;
mgl@1371
 31740
+
mgl@1371
 31741
+  /* Number of line number records.  */
mgl@1371
 31742
+  unsigned int lineno_count;
mgl@1371
 31743
+
mgl@1371
 31744
+  /* Entity size for merging purposes.  */
mgl@1371
 31745
+  unsigned int entsize;
mgl@1371
 31746
+
mgl@1371
 31747
+  /* Points to the kept section if this section is a link-once section,
mgl@1371
 31748
+     and is discarded.  */
mgl@1371
 31749
+  struct bfd_section *kept_section;
mgl@1371
 31750
+
mgl@1371
 31751
+  /* When a section is being output, this value changes as more
mgl@1371
 31752
+     linenumbers are written out.  */
mgl@1371
 31753
+  file_ptr moving_line_filepos;
mgl@1371
 31754
+
mgl@1371
 31755
+  /* What the section number is in the target world.  */
mgl@1371
 31756
+  int target_index;
mgl@1371
 31757
+
mgl@1371
 31758
+  void *used_by_bfd;
mgl@1371
 31759
+
mgl@1371
 31760
+  /* If this is a constructor section then here is a list of the
mgl@1371
 31761
+     relocations created to relocate items within it.  */
mgl@1371
 31762
+  struct relent_chain *constructor_chain;
mgl@1371
 31763
+
mgl@1371
 31764
+  /* The BFD which owns the section.  */
mgl@1371
 31765
+  bfd *owner;
mgl@1371
 31766
+
mgl@1371
 31767
+  /* A symbol which points at this section only.  */
mgl@1371
 31768
+  struct bfd_symbol *symbol;
mgl@1371
 31769
+  struct bfd_symbol **symbol_ptr_ptr;
mgl@1371
 31770
+
mgl@1371
 31771
+  /* Early in the link process, map_head and map_tail are used to build
mgl@1371
 31772
+     a list of input sections attached to an output section.  Later,
mgl@1371
 31773
+     output sections use these fields for a list of bfd_link_order
mgl@1371
 31774
+     structs.  */
mgl@1371
 31775
+  union {
mgl@1371
 31776
+    struct bfd_link_order *link_order;
mgl@1371
 31777
+    struct bfd_section *s;
mgl@1371
 31778
+  } map_head, map_tail;
mgl@1371
 31779
+} asection;
mgl@1371
 31780
+
mgl@1371
 31781
+/* These sections are global, and are managed by BFD.  The application
mgl@1371
 31782
+   and target back end are not permitted to change the values in
mgl@1371
 31783
+   these sections.  New code should use the section_ptr macros rather
mgl@1371
 31784
+   than referring directly to the const sections.  The const sections
mgl@1371
 31785
+   may eventually vanish.  */
mgl@1371
 31786
+#define BFD_ABS_SECTION_NAME "*ABS*"
mgl@1371
 31787
+#define BFD_UND_SECTION_NAME "*UND*"
mgl@1371
 31788
+#define BFD_COM_SECTION_NAME "*COM*"
mgl@1371
 31789
+#define BFD_IND_SECTION_NAME "*IND*"
mgl@1371
 31790
+
mgl@1371
 31791
+/* The absolute section.  */
mgl@1371
 31792
+extern asection bfd_abs_section;
mgl@1371
 31793
+#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
mgl@1371
 31794
+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
mgl@1371
 31795
+/* Pointer to the undefined section.  */
mgl@1371
 31796
+extern asection bfd_und_section;
mgl@1371
 31797
+#define bfd_und_section_ptr ((asection *) &bfd_und_section)
mgl@1371
 31798
+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
mgl@1371
 31799
+/* Pointer to the common section.  */
mgl@1371
 31800
+extern asection bfd_com_section;
mgl@1371
 31801
+#define bfd_com_section_ptr ((asection *) &bfd_com_section)
mgl@1371
 31802
+/* Pointer to the indirect section.  */
mgl@1371
 31803
+extern asection bfd_ind_section;
mgl@1371
 31804
+#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
mgl@1371
 31805
+#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
mgl@1371
 31806
+
mgl@1371
 31807
+#define bfd_is_const_section(SEC)              \
mgl@1371
 31808
+ (   ((SEC) == bfd_abs_section_ptr)            \
mgl@1371
 31809
+  || ((SEC) == bfd_und_section_ptr)            \
mgl@1371
 31810
+  || ((SEC) == bfd_com_section_ptr)            \
mgl@1371
 31811
+  || ((SEC) == bfd_ind_section_ptr))
mgl@1371
 31812
+
mgl@1371
 31813
+/* Macros to handle insertion and deletion of a bfd's sections.  These
mgl@1371
 31814
+   only handle the list pointers, ie. do not adjust section_count,
mgl@1371
 31815
+   target_index etc.  */
mgl@1371
 31816
+#define bfd_section_list_remove(ABFD, S) \
mgl@1371
 31817
+  do                                                   \
mgl@1371
 31818
+    {                                                  \
mgl@1371
 31819
+      asection *_s = S;                                \
mgl@1371
 31820
+      asection *_next = _s->next;                      \
mgl@1371
 31821
+      asection *_prev = _s->prev;                      \
mgl@1371
 31822
+      if (_prev)                                       \
mgl@1371
 31823
+        _prev->next = _next;                           \
mgl@1371
 31824
+      else                                             \
mgl@1371
 31825
+        (ABFD)->sections = _next;                      \
mgl@1371
 31826
+      if (_next)                                       \
mgl@1371
 31827
+        _next->prev = _prev;                           \
mgl@1371
 31828
+      else                                             \
mgl@1371
 31829
+        (ABFD)->section_last = _prev;                  \
mgl@1371
 31830
+    }                                                  \
mgl@1371
 31831
+  while (0)
mgl@1371
 31832
+#define bfd_section_list_append(ABFD, S) \
mgl@1371
 31833
+  do                                                   \
mgl@1371
 31834
+    {                                                  \
mgl@1371
 31835
+      asection *_s = S;                                \
mgl@1371
 31836
+      bfd *_abfd = ABFD;                               \
mgl@1371
 31837
+      _s->next = NULL;                                 \
mgl@1371
 31838
+      if (_abfd->section_last)                         \
mgl@1371
 31839
+        {                                              \
mgl@1371
 31840
+          _s->prev = _abfd->section_last;              \
mgl@1371
 31841
+          _abfd->section_last->next = _s;              \
mgl@1371
 31842
+        }                                              \
mgl@1371
 31843
+      else                                             \
mgl@1371
 31844
+        {                                              \
mgl@1371
 31845
+          _s->prev = NULL;                             \
mgl@1371
 31846
+          _abfd->sections = _s;                        \
mgl@1371
 31847
+        }                                              \
mgl@1371
 31848
+      _abfd->section_last = _s;                        \
mgl@1371
 31849
+    }                                                  \
mgl@1371
 31850
+  while (0)
mgl@1371
 31851
+#define bfd_section_list_prepend(ABFD, S) \
mgl@1371
 31852
+  do                                                   \
mgl@1371
 31853
+    {                                                  \
mgl@1371
 31854
+      asection *_s = S;                                \
mgl@1371
 31855
+      bfd *_abfd = ABFD;                               \
mgl@1371
 31856
+      _s->prev = NULL;                                 \
mgl@1371
 31857
+      if (_abfd->sections)                             \
mgl@1371
 31858
+        {                                              \
mgl@1371
 31859
+          _s->next = _abfd->sections;                  \
mgl@1371
 31860
+          _abfd->sections->prev = _s;                  \
mgl@1371
 31861
+        }                                              \
mgl@1371
 31862
+      else                                             \
mgl@1371
 31863
+        {                                              \
mgl@1371
 31864
+          _s->next = NULL;                             \
mgl@1371
 31865
+          _abfd->section_last = _s;                    \
mgl@1371
 31866
+        }                                              \
mgl@1371
 31867
+      _abfd->sections = _s;                            \
mgl@1371
 31868
+    }                                                  \
mgl@1371
 31869
+  while (0)
mgl@1371
 31870
+#define bfd_section_list_insert_after(ABFD, A, S) \
mgl@1371
 31871
+  do                                                   \
mgl@1371
 31872
+    {                                                  \
mgl@1371
 31873
+      asection *_a = A;                                \
mgl@1371
 31874
+      asection *_s = S;                                \
mgl@1371
 31875
+      asection *_next = _a->next;                      \
mgl@1371
 31876
+      _s->next = _next;                                \
mgl@1371
 31877
+      _s->prev = _a;                                   \
mgl@1371
 31878
+      _a->next = _s;                                   \
mgl@1371
 31879
+      if (_next)                                       \
mgl@1371
 31880
+        _next->prev = _s;                              \
mgl@1371
 31881
+      else                                             \
mgl@1371
 31882
+        (ABFD)->section_last = _s;                     \
mgl@1371
 31883
+    }                                                  \
mgl@1371
 31884
+  while (0)
mgl@1371
 31885
+#define bfd_section_list_insert_before(ABFD, B, S) \
mgl@1371
 31886
+  do                                                   \
mgl@1371
 31887
+    {                                                  \
mgl@1371
 31888
+      asection *_b = B;                                \
mgl@1371
 31889
+      asection *_s = S;                                \
mgl@1371
 31890
+      asection *_prev = _b->prev;                      \
mgl@1371
 31891
+      _s->prev = _prev;                                \
mgl@1371
 31892
+      _s->next = _b;                                   \
mgl@1371
 31893
+      _b->prev = _s;                                   \
mgl@1371
 31894
+      if (_prev)                                       \
mgl@1371
 31895
+        _prev->next = _s;                              \
mgl@1371
 31896
+      else                                             \
mgl@1371
 31897
+        (ABFD)->sections = _s;                         \
mgl@1371
 31898
+    }                                                  \
mgl@1371
 31899
+  while (0)
mgl@1371
 31900
+#define bfd_section_removed_from_list(ABFD, S) \
mgl@1371
 31901
+  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
mgl@1371
 31902
+
mgl@1371
 31903
+#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
mgl@1371
 31904
+  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
mgl@1371
 31905
+  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
mgl@1371
 31906
+                                                                       \
mgl@1371
 31907
+  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
mgl@1371
 31908
+     0,           0,                1,       0,                        \
mgl@1371
 31909
+                                                                       \
mgl@1371
 31910
+  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
mgl@1371
 31911
+     0,            0,             0,          0,                       \
mgl@1371
 31912
+                                                                       \
mgl@1371
 31913
+  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
mgl@1371
 31914
+     0,            0,                   0,                             \
mgl@1371
 31915
+                                                                       \
mgl@1371
 31916
+  /* vma, lma, size, rawsize                                       */  \
mgl@1371
 31917
+     0,   0,   0,    0,                                                \
mgl@1371
 31918
+                                                                       \
mgl@1371
 31919
+  /* output_offset, output_section,              alignment_power,  */  \
mgl@1371
 31920
+     0,             (struct bfd_section *) &SEC, 0,                    \
mgl@1371
 31921
+                                                                       \
mgl@1371
 31922
+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
mgl@1371
 31923
+     NULL,       NULL,        0,           0,       0,                 \
mgl@1371
 31924
+                                                                       \
mgl@1371
 31925
+  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
mgl@1371
 31926
+     0,            NULL,     NULL,     NULL,   0,                      \
mgl@1371
 31927
+                                                                       \
mgl@1371
 31928
+  /* entsize, kept_section, moving_line_filepos,                    */ \
mgl@1371
 31929
+     0,       NULL,          0,                                        \
mgl@1371
 31930
+                                                                       \
mgl@1371
 31931
+  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
mgl@1371
 31932
+     0,            NULL,        NULL,              NULL,               \
mgl@1371
 31933
+                                                                       \
mgl@1371
 31934
+  /* symbol,                    symbol_ptr_ptr,                    */  \
mgl@1371
 31935
+     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
mgl@1371
 31936
+                                                                       \
mgl@1371
 31937
+  /* map_head, map_tail                                            */  \
mgl@1371
 31938
+     { NULL }, { NULL }                                                \
mgl@1371
 31939
+    }
mgl@1371
 31940
+
mgl@1371
 31941
+void bfd_section_list_clear (bfd *);
mgl@1371
 31942
+
mgl@1371
 31943
+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
mgl@1371
 31944
+
mgl@1371
 31945
+asection *bfd_get_section_by_name_if
mgl@1371
 31946
+   (bfd *abfd,
mgl@1371
 31947
+    const char *name,
mgl@1371
 31948
+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 31949
+    void *obj);
mgl@1371
 31950
+
mgl@1371
 31951
+char *bfd_get_unique_section_name
mgl@1371
 31952
+   (bfd *abfd, const char *templat, int *count);
mgl@1371
 31953
+
mgl@1371
 31954
+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
mgl@1371
 31955
+
mgl@1371
 31956
+asection *bfd_make_section_anyway_with_flags
mgl@1371
 31957
+   (bfd *abfd, const char *name, flagword flags);
mgl@1371
 31958
+
mgl@1371
 31959
+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
mgl@1371
 31960
+
mgl@1371
 31961
+asection *bfd_make_section_with_flags
mgl@1371
 31962
+   (bfd *, const char *name, flagword flags);
mgl@1371
 31963
+
mgl@1371
 31964
+asection *bfd_make_section (bfd *, const char *name);
mgl@1371
 31965
+
mgl@1371
 31966
+bfd_boolean bfd_set_section_flags
mgl@1371
 31967
+   (bfd *abfd, asection *sec, flagword flags);
mgl@1371
 31968
+
mgl@1371
 31969
+void bfd_map_over_sections
mgl@1371
 31970
+   (bfd *abfd,
mgl@1371
 31971
+    void (*func) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 31972
+    void *obj);
mgl@1371
 31973
+
mgl@1371
 31974
+asection *bfd_sections_find_if
mgl@1371
 31975
+   (bfd *abfd,
mgl@1371
 31976
+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 31977
+    void *obj);
mgl@1371
 31978
+
mgl@1371
 31979
+bfd_boolean bfd_set_section_size
mgl@1371
 31980
+   (bfd *abfd, asection *sec, bfd_size_type val);
mgl@1371
 31981
+
mgl@1371
 31982
+bfd_boolean bfd_set_section_contents
mgl@1371
 31983
+   (bfd *abfd, asection *section, const void *data,
mgl@1371
 31984
+    file_ptr offset, bfd_size_type count);
mgl@1371
 31985
+
mgl@1371
 31986
+bfd_boolean bfd_get_section_contents
mgl@1371
 31987
+   (bfd *abfd, asection *section, void *location, file_ptr offset,
mgl@1371
 31988
+    bfd_size_type count);
mgl@1371
 31989
+
mgl@1371
 31990
+bfd_boolean bfd_malloc_and_get_section
mgl@1371
 31991
+   (bfd *abfd, asection *section, bfd_byte **buf);
mgl@1371
 31992
+
mgl@1371
 31993
+bfd_boolean bfd_copy_private_section_data
mgl@1371
 31994
+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
mgl@1371
 31995
+
mgl@1371
 31996
+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
mgl@1371
 31997
+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
mgl@1371
 31998
+               (ibfd, isection, obfd, osection))
mgl@1371
 31999
+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
mgl@1371
 32000
+
mgl@1371
 32001
+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
mgl@1371
 32002
+
mgl@1371
 32003
+/* Extracted from archures.c.  */
mgl@1371
 32004
+enum bfd_architecture
mgl@1371
 32005
+{
mgl@1371
 32006
+  bfd_arch_unknown,   /* File arch not known.  */
mgl@1371
 32007
+  bfd_arch_obscure,   /* Arch known, not one of these.  */
mgl@1371
 32008
+  bfd_arch_m68k,      /* Motorola 68xxx */
mgl@1371
 32009
+#define bfd_mach_m68000 1
mgl@1371
 32010
+#define bfd_mach_m68008 2
mgl@1371
 32011
+#define bfd_mach_m68010 3
mgl@1371
 32012
+#define bfd_mach_m68020 4
mgl@1371
 32013
+#define bfd_mach_m68030 5
mgl@1371
 32014
+#define bfd_mach_m68040 6
mgl@1371
 32015
+#define bfd_mach_m68060 7
mgl@1371
 32016
+#define bfd_mach_cpu32  8
mgl@1371
 32017
+#define bfd_mach_fido   9
mgl@1371
 32018
+#define bfd_mach_mcf_isa_a_nodiv 10
mgl@1371
 32019
+#define bfd_mach_mcf_isa_a 11
mgl@1371
 32020
+#define bfd_mach_mcf_isa_a_mac 12
mgl@1371
 32021
+#define bfd_mach_mcf_isa_a_emac 13
mgl@1371
 32022
+#define bfd_mach_mcf_isa_aplus 14
mgl@1371
 32023
+#define bfd_mach_mcf_isa_aplus_mac 15
mgl@1371
 32024
+#define bfd_mach_mcf_isa_aplus_emac 16
mgl@1371
 32025
+#define bfd_mach_mcf_isa_b_nousp 17
mgl@1371
 32026
+#define bfd_mach_mcf_isa_b_nousp_mac 18
mgl@1371
 32027
+#define bfd_mach_mcf_isa_b_nousp_emac 19
mgl@1371
 32028
+#define bfd_mach_mcf_isa_b 20
mgl@1371
 32029
+#define bfd_mach_mcf_isa_b_mac 21
mgl@1371
 32030
+#define bfd_mach_mcf_isa_b_emac 22
mgl@1371
 32031
+#define bfd_mach_mcf_isa_b_float 23
mgl@1371
 32032
+#define bfd_mach_mcf_isa_b_float_mac 24
mgl@1371
 32033
+#define bfd_mach_mcf_isa_b_float_emac 25
mgl@1371
 32034
+#define bfd_mach_mcf_isa_c 26
mgl@1371
 32035
+#define bfd_mach_mcf_isa_c_mac 27
mgl@1371
 32036
+#define bfd_mach_mcf_isa_c_emac 28
mgl@1371
 32037
+  bfd_arch_vax,       /* DEC Vax */
mgl@1371
 32038
+  bfd_arch_i960,      /* Intel 960 */
mgl@1371
 32039
+    /* The order of the following is important.
mgl@1371
 32040
+       lower number indicates a machine type that
mgl@1371
 32041
+       only accepts a subset of the instructions
mgl@1371
 32042
+       available to machines with higher numbers.
mgl@1371
 32043
+       The exception is the "ca", which is
mgl@1371
 32044
+       incompatible with all other machines except
mgl@1371
 32045
+       "core".  */
mgl@1371
 32046
+
mgl@1371
 32047
+#define bfd_mach_i960_core      1
mgl@1371
 32048
+#define bfd_mach_i960_ka_sa     2
mgl@1371
 32049
+#define bfd_mach_i960_kb_sb     3
mgl@1371
 32050
+#define bfd_mach_i960_mc        4
mgl@1371
 32051
+#define bfd_mach_i960_xa        5
mgl@1371
 32052
+#define bfd_mach_i960_ca        6
mgl@1371
 32053
+#define bfd_mach_i960_jx        7
mgl@1371
 32054
+#define bfd_mach_i960_hx        8
mgl@1371
 32055
+
mgl@1371
 32056
+  bfd_arch_or32,      /* OpenRISC 32 */
mgl@1371
 32057
+
mgl@1371
 32058
+  bfd_arch_sparc,     /* SPARC */
mgl@1371
 32059
+#define bfd_mach_sparc                 1
mgl@1371
 32060
+/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
mgl@1371
 32061
+#define bfd_mach_sparc_sparclet        2
mgl@1371
 32062
+#define bfd_mach_sparc_sparclite       3
mgl@1371
 32063
+#define bfd_mach_sparc_v8plus          4
mgl@1371
 32064
+#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
mgl@1371
 32065
+#define bfd_mach_sparc_sparclite_le    6
mgl@1371
 32066
+#define bfd_mach_sparc_v9              7
mgl@1371
 32067
+#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
mgl@1371
 32068
+#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
mgl@1371
 32069
+#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
mgl@1371
 32070
+/* Nonzero if MACH has the v9 instruction set.  */
mgl@1371
 32071
+#define bfd_mach_sparc_v9_p(mach) \
mgl@1371
 32072
+  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
mgl@1371
 32073
+   && (mach) != bfd_mach_sparc_sparclite_le)
mgl@1371
 32074
+/* Nonzero if MACH is a 64 bit sparc architecture.  */
mgl@1371
 32075
+#define bfd_mach_sparc_64bit_p(mach) \
mgl@1371
 32076
+  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
mgl@1371
 32077
+  bfd_arch_spu,       /* PowerPC SPU */
mgl@1371
 32078
+#define bfd_mach_spu           256 
mgl@1371
 32079
+  bfd_arch_mips,      /* MIPS Rxxxx */
mgl@1371
 32080
+#define bfd_mach_mips3000              3000
mgl@1371
 32081
+#define bfd_mach_mips3900              3900
mgl@1371
 32082
+#define bfd_mach_mips4000              4000
mgl@1371
 32083
+#define bfd_mach_mips4010              4010
mgl@1371
 32084
+#define bfd_mach_mips4100              4100
mgl@1371
 32085
+#define bfd_mach_mips4111              4111
mgl@1371
 32086
+#define bfd_mach_mips4120              4120
mgl@1371
 32087
+#define bfd_mach_mips4300              4300
mgl@1371
 32088
+#define bfd_mach_mips4400              4400
mgl@1371
 32089
+#define bfd_mach_mips4600              4600
mgl@1371
 32090
+#define bfd_mach_mips4650              4650
mgl@1371
 32091
+#define bfd_mach_mips5000              5000
mgl@1371
 32092
+#define bfd_mach_mips5400              5400
mgl@1371
 32093
+#define bfd_mach_mips5500              5500
mgl@1371
 32094
+#define bfd_mach_mips6000              6000
mgl@1371
 32095
+#define bfd_mach_mips7000              7000
mgl@1371
 32096
+#define bfd_mach_mips8000              8000
mgl@1371
 32097
+#define bfd_mach_mips9000              9000
mgl@1371
 32098
+#define bfd_mach_mips10000             10000
mgl@1371
 32099
+#define bfd_mach_mips12000             12000
mgl@1371
 32100
+#define bfd_mach_mips16                16
mgl@1371
 32101
+#define bfd_mach_mips5                 5
mgl@1371
 32102
+#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
mgl@1371
 32103
+#define bfd_mach_mipsisa32             32
mgl@1371
 32104
+#define bfd_mach_mipsisa32r2           33
mgl@1371
 32105
+#define bfd_mach_mipsisa64             64
mgl@1371
 32106
+#define bfd_mach_mipsisa64r2           65
mgl@1371
 32107
+  bfd_arch_i386,      /* Intel 386 */
mgl@1371
 32108
+#define bfd_mach_i386_i386 1
mgl@1371
 32109
+#define bfd_mach_i386_i8086 2
mgl@1371
 32110
+#define bfd_mach_i386_i386_intel_syntax 3
mgl@1371
 32111
+#define bfd_mach_x86_64 64
mgl@1371
 32112
+#define bfd_mach_x86_64_intel_syntax 65
mgl@1371
 32113
+  bfd_arch_we32k,     /* AT&T WE32xxx */
mgl@1371
 32114
+  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
mgl@1371
 32115
+  bfd_arch_i860,      /* Intel 860 */
mgl@1371
 32116
+  bfd_arch_i370,      /* IBM 360/370 Mainframes */
mgl@1371
 32117
+  bfd_arch_romp,      /* IBM ROMP PC/RT */
mgl@1371
 32118
+  bfd_arch_convex,    /* Convex */
mgl@1371
 32119
+  bfd_arch_m88k,      /* Motorola 88xxx */
mgl@1371
 32120
+  bfd_arch_m98k,      /* Motorola 98xxx */
mgl@1371
 32121
+  bfd_arch_pyramid,   /* Pyramid Technology */
mgl@1371
 32122
+  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
mgl@1371
 32123
+#define bfd_mach_h8300    1
mgl@1371
 32124
+#define bfd_mach_h8300h   2
mgl@1371
 32125
+#define bfd_mach_h8300s   3
mgl@1371
 32126
+#define bfd_mach_h8300hn  4
mgl@1371
 32127
+#define bfd_mach_h8300sn  5
mgl@1371
 32128
+#define bfd_mach_h8300sx  6
mgl@1371
 32129
+#define bfd_mach_h8300sxn 7
mgl@1371
 32130
+  bfd_arch_pdp11,     /* DEC PDP-11 */
mgl@1371
 32131
+  bfd_arch_powerpc,   /* PowerPC */
mgl@1371
 32132
+#define bfd_mach_ppc           32
mgl@1371
 32133
+#define bfd_mach_ppc64         64
mgl@1371
 32134
+#define bfd_mach_ppc_403       403
mgl@1371
 32135
+#define bfd_mach_ppc_403gc     4030
mgl@1371
 32136
+#define bfd_mach_ppc_505       505
mgl@1371
 32137
+#define bfd_mach_ppc_601       601
mgl@1371
 32138
+#define bfd_mach_ppc_602       602
mgl@1371
 32139
+#define bfd_mach_ppc_603       603
mgl@1371
 32140
+#define bfd_mach_ppc_ec603e    6031
mgl@1371
 32141
+#define bfd_mach_ppc_604       604
mgl@1371
 32142
+#define bfd_mach_ppc_620       620
mgl@1371
 32143
+#define bfd_mach_ppc_630       630
mgl@1371
 32144
+#define bfd_mach_ppc_750       750
mgl@1371
 32145
+#define bfd_mach_ppc_860       860
mgl@1371
 32146
+#define bfd_mach_ppc_a35       35
mgl@1371
 32147
+#define bfd_mach_ppc_rs64ii    642
mgl@1371
 32148
+#define bfd_mach_ppc_rs64iii   643
mgl@1371
 32149
+#define bfd_mach_ppc_7400      7400
mgl@1371
 32150
+#define bfd_mach_ppc_e500      500
mgl@1371
 32151
+  bfd_arch_rs6000,    /* IBM RS/6000 */
mgl@1371
 32152
+#define bfd_mach_rs6k          6000
mgl@1371
 32153
+#define bfd_mach_rs6k_rs1      6001
mgl@1371
 32154
+#define bfd_mach_rs6k_rsc      6003
mgl@1371
 32155
+#define bfd_mach_rs6k_rs2      6002
mgl@1371
 32156
+  bfd_arch_hppa,      /* HP PA RISC */
mgl@1371
 32157
+#define bfd_mach_hppa10        10
mgl@1371
 32158
+#define bfd_mach_hppa11        11
mgl@1371
 32159
+#define bfd_mach_hppa20        20
mgl@1371
 32160
+#define bfd_mach_hppa20w       25
mgl@1371
 32161
+  bfd_arch_d10v,      /* Mitsubishi D10V */
mgl@1371
 32162
+#define bfd_mach_d10v          1
mgl@1371
 32163
+#define bfd_mach_d10v_ts2      2
mgl@1371
 32164
+#define bfd_mach_d10v_ts3      3
mgl@1371
 32165
+  bfd_arch_d30v,      /* Mitsubishi D30V */
mgl@1371
 32166
+  bfd_arch_dlx,       /* DLX */
mgl@1371
 32167
+  bfd_arch_m68hc11,   /* Motorola 68HC11 */
mgl@1371
 32168
+  bfd_arch_m68hc12,   /* Motorola 68HC12 */
mgl@1371
 32169
+#define bfd_mach_m6812_default 0
mgl@1371
 32170
+#define bfd_mach_m6812         1
mgl@1371
 32171
+#define bfd_mach_m6812s        2
mgl@1371
 32172
+  bfd_arch_z8k,       /* Zilog Z8000 */
mgl@1371
 32173
+#define bfd_mach_z8001         1
mgl@1371
 32174
+#define bfd_mach_z8002         2
mgl@1371
 32175
+  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
mgl@1371
 32176
+  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
mgl@1371
 32177
+#define bfd_mach_sh            1
mgl@1371
 32178
+#define bfd_mach_sh2        0x20
mgl@1371
 32179
+#define bfd_mach_sh_dsp     0x2d
mgl@1371
 32180
+#define bfd_mach_sh2a       0x2a
mgl@1371
 32181
+#define bfd_mach_sh2a_nofpu 0x2b
mgl@1371
 32182
+#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
mgl@1371
 32183
+#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
mgl@1371
 32184
+#define bfd_mach_sh2a_or_sh4  0x2a3
mgl@1371
 32185
+#define bfd_mach_sh2a_or_sh3e 0x2a4
mgl@1371
 32186
+#define bfd_mach_sh2e       0x2e
mgl@1371
 32187
+#define bfd_mach_sh3        0x30
mgl@1371
 32188
+#define bfd_mach_sh3_nommu  0x31
mgl@1371
 32189
+#define bfd_mach_sh3_dsp    0x3d
mgl@1371
 32190
+#define bfd_mach_sh3e       0x3e
mgl@1371
 32191
+#define bfd_mach_sh4        0x40
mgl@1371
 32192
+#define bfd_mach_sh4_nofpu  0x41
mgl@1371
 32193
+#define bfd_mach_sh4_nommu_nofpu  0x42
mgl@1371
 32194
+#define bfd_mach_sh4a       0x4a
mgl@1371
 32195
+#define bfd_mach_sh4a_nofpu 0x4b
mgl@1371
 32196
+#define bfd_mach_sh4al_dsp  0x4d
mgl@1371
 32197
+#define bfd_mach_sh5        0x50
mgl@1371
 32198
+  bfd_arch_alpha,     /* Dec Alpha */
mgl@1371
 32199
+#define bfd_mach_alpha_ev4  0x10
mgl@1371
 32200
+#define bfd_mach_alpha_ev5  0x20
mgl@1371
 32201
+#define bfd_mach_alpha_ev6  0x30
mgl@1371
 32202
+  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
mgl@1371
 32203
+#define bfd_mach_arm_unknown   0
mgl@1371
 32204
+#define bfd_mach_arm_2         1
mgl@1371
 32205
+#define bfd_mach_arm_2a        2
mgl@1371
 32206
+#define bfd_mach_arm_3         3
mgl@1371
 32207
+#define bfd_mach_arm_3M        4
mgl@1371
 32208
+#define bfd_mach_arm_4         5
mgl@1371
 32209
+#define bfd_mach_arm_4T        6
mgl@1371
 32210
+#define bfd_mach_arm_5         7
mgl@1371
 32211
+#define bfd_mach_arm_5T        8
mgl@1371
 32212
+#define bfd_mach_arm_5TE       9
mgl@1371
 32213
+#define bfd_mach_arm_XScale    10
mgl@1371
 32214
+#define bfd_mach_arm_ep9312    11
mgl@1371
 32215
+#define bfd_mach_arm_iWMMXt    12
mgl@1371
 32216
+#define bfd_mach_arm_iWMMXt2   13
mgl@1371
 32217
+  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
mgl@1371
 32218
+  bfd_arch_w65,       /* WDC 65816 */
mgl@1371
 32219
+  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
mgl@1371
 32220
+  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
mgl@1371
 32221
+#define bfd_mach_tic3x         30
mgl@1371
 32222
+#define bfd_mach_tic4x         40
mgl@1371
 32223
+  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
mgl@1371
 32224
+  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
mgl@1371
 32225
+  bfd_arch_v850,      /* NEC V850 */
mgl@1371
 32226
+#define bfd_mach_v850          1
mgl@1371
 32227
+#define bfd_mach_v850e         'E'
mgl@1371
 32228
+#define bfd_mach_v850e1        '1'
mgl@1371
 32229
+  bfd_arch_arc,       /* ARC Cores */
mgl@1371
 32230
+#define bfd_mach_arc_5         5
mgl@1371
 32231
+#define bfd_mach_arc_6         6
mgl@1371
 32232
+#define bfd_mach_arc_7         7
mgl@1371
 32233
+#define bfd_mach_arc_8         8
mgl@1371
 32234
+ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
mgl@1371
 32235
+#define bfd_mach_m16c        0x75
mgl@1371
 32236
+#define bfd_mach_m32c        0x78
mgl@1371
 32237
+  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
mgl@1371
 32238
+#define bfd_mach_m32r          1 /* For backwards compatibility.  */
mgl@1371
 32239
+#define bfd_mach_m32rx         'x'
mgl@1371
 32240
+#define bfd_mach_m32r2         '2'
mgl@1371
 32241
+  bfd_arch_mn10200,   /* Matsushita MN10200 */
mgl@1371
 32242
+  bfd_arch_mn10300,   /* Matsushita MN10300 */
mgl@1371
 32243
+#define bfd_mach_mn10300               300
mgl@1371
 32244
+#define bfd_mach_am33          330
mgl@1371
 32245
+#define bfd_mach_am33_2        332
mgl@1371
 32246
+  bfd_arch_fr30,
mgl@1371
 32247
+#define bfd_mach_fr30          0x46523330
mgl@1371
 32248
+  bfd_arch_frv,
mgl@1371
 32249
+#define bfd_mach_frv           1
mgl@1371
 32250
+#define bfd_mach_frvsimple     2
mgl@1371
 32251
+#define bfd_mach_fr300         300
mgl@1371
 32252
+#define bfd_mach_fr400         400
mgl@1371
 32253
+#define bfd_mach_fr450         450
mgl@1371
 32254
+#define bfd_mach_frvtomcat     499     /* fr500 prototype */
mgl@1371
 32255
+#define bfd_mach_fr500         500
mgl@1371
 32256
+#define bfd_mach_fr550         550
mgl@1371
 32257
+  bfd_arch_mcore,
mgl@1371
 32258
+  bfd_arch_mep,
mgl@1371
 32259
+#define bfd_mach_mep           1
mgl@1371
 32260
+#define bfd_mach_mep_h1        0x6831
mgl@1371
 32261
+  bfd_arch_ia64,      /* HP/Intel ia64 */
mgl@1371
 32262
+#define bfd_mach_ia64_elf64    64
mgl@1371
 32263
+#define bfd_mach_ia64_elf32    32
mgl@1371
 32264
+  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
mgl@1371
 32265
+#define bfd_mach_ip2022        1
mgl@1371
 32266
+#define bfd_mach_ip2022ext     2
mgl@1371
 32267
+ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
mgl@1371
 32268
+#define bfd_mach_iq2000        1
mgl@1371
 32269
+#define bfd_mach_iq10          2
mgl@1371
 32270
+  bfd_arch_mt,
mgl@1371
 32271
+#define bfd_mach_ms1           1
mgl@1371
 32272
+#define bfd_mach_mrisc2        2
mgl@1371
 32273
+#define bfd_mach_ms2           3
mgl@1371
 32274
+  bfd_arch_pj,
mgl@1371
 32275
+  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
mgl@1371
 32276
+#define bfd_mach_avr1          1
mgl@1371
 32277
+#define bfd_mach_avr2          2
mgl@1371
 32278
+#define bfd_mach_avr3          3
mgl@1371
 32279
+#define bfd_mach_avr4          4
mgl@1371
 32280
+#define bfd_mach_avr5          5
mgl@1371
 32281
+#define bfd_mach_avr6          6
mgl@1371
 32282
+  bfd_arch_bfin,        /* ADI Blackfin */
mgl@1371
 32283
+#define bfd_mach_bfin          1
mgl@1371
 32284
+  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
mgl@1371
 32285
+#define bfd_mach_cr16          1
mgl@1371
 32286
+  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
mgl@1371
 32287
+#define bfd_mach_cr16c         1
mgl@1371
 32288
+  bfd_arch_crx,       /*  National Semiconductor CRX.  */
mgl@1371
 32289
+#define bfd_mach_crx           1
mgl@1371
 32290
+  bfd_arch_cris,      /* Axis CRIS */
mgl@1371
 32291
+#define bfd_mach_cris_v0_v10   255
mgl@1371
 32292
+#define bfd_mach_cris_v32      32
mgl@1371
 32293
+#define bfd_mach_cris_v10_v32  1032
mgl@1371
 32294
+  bfd_arch_s390,      /* IBM s390 */
mgl@1371
 32295
+#define bfd_mach_s390_31       31
mgl@1371
 32296
+#define bfd_mach_s390_64       64
mgl@1371
 32297
+  bfd_arch_score,     /* Sunplus score */ 
mgl@1371
 32298
+  bfd_arch_openrisc,  /* OpenRISC */
mgl@1371
 32299
+  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
mgl@1371
 32300
+  bfd_arch_xstormy16,
mgl@1371
 32301
+#define bfd_mach_xstormy16     1
mgl@1371
 32302
+  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
mgl@1371
 32303
+#define bfd_mach_msp11          11
mgl@1371
 32304
+#define bfd_mach_msp110         110
mgl@1371
 32305
+#define bfd_mach_msp12          12
mgl@1371
 32306
+#define bfd_mach_msp13          13
mgl@1371
 32307
+#define bfd_mach_msp14          14
mgl@1371
 32308
+#define bfd_mach_msp15          15
mgl@1371
 32309
+#define bfd_mach_msp16          16
mgl@1371
 32310
+#define bfd_mach_msp21          21
mgl@1371
 32311
+#define bfd_mach_msp31          31
mgl@1371
 32312
+#define bfd_mach_msp32          32
mgl@1371
 32313
+#define bfd_mach_msp33          33
mgl@1371
 32314
+#define bfd_mach_msp41          41
mgl@1371
 32315
+#define bfd_mach_msp42          42
mgl@1371
 32316
+#define bfd_mach_msp43          43
mgl@1371
 32317
+#define bfd_mach_msp44          44
mgl@1371
 32318
+  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
mgl@1371
 32319
+#define bfd_mach_xc16x         1
mgl@1371
 32320
+#define bfd_mach_xc16xl        2
mgl@1371
 32321
+#define bfd_mach_xc16xs         3
mgl@1371
 32322
+  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
mgl@1371
 32323
+#define bfd_mach_xtensa        1
mgl@1371
 32324
+   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
mgl@1371
 32325
+#define bfd_mach_maxq10    10
mgl@1371
 32326
+#define bfd_mach_maxq20    20
mgl@1371
 32327
+  bfd_arch_z80,
mgl@1371
 32328
+#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
mgl@1371
 32329
+#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
mgl@1371
 32330
+#define bfd_mach_z80full        7 /* All undocumented instructions.  */
mgl@1371
 32331
+#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
mgl@1371
 32332
+  bfd_arch_last
mgl@1371
 32333
+  };
mgl@1371
 32334
+
mgl@1371
 32335
+typedef struct bfd_arch_info
mgl@1371
 32336
+{
mgl@1371
 32337
+  int bits_per_word;
mgl@1371
 32338
+  int bits_per_address;
mgl@1371
 32339
+  int bits_per_byte;
mgl@1371
 32340
+  enum bfd_architecture arch;
mgl@1371
 32341
+  unsigned long mach;
mgl@1371
 32342
+  const char *arch_name;
mgl@1371
 32343
+  const char *printable_name;
mgl@1371
 32344
+  unsigned int section_align_power;
mgl@1371
 32345
+  /* TRUE if this is the default machine for the architecture.
mgl@1371
 32346
+     The default arch should be the first entry for an arch so that
mgl@1371
 32347
+     all the entries for that arch can be accessed via <<next>>.  */
mgl@1371
 32348
+  bfd_boolean the_default;
mgl@1371
 32349
+  const struct bfd_arch_info * (*compatible)
mgl@1371
 32350
+    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
mgl@1371
 32351
+
mgl@1371
 32352
+  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
mgl@1371
 32353
+
mgl@1371
 32354
+  const struct bfd_arch_info *next;
mgl@1371
 32355
+}
mgl@1371
 32356
+bfd_arch_info_type;
mgl@1371
 32357
+
mgl@1371
 32358
+const char *bfd_printable_name (bfd *abfd);
mgl@1371
 32359
+
mgl@1371
 32360
+const bfd_arch_info_type *bfd_scan_arch (const char *string);
mgl@1371
 32361
+
mgl@1371
 32362
+const char **bfd_arch_list (void);
mgl@1371
 32363
+
mgl@1371
 32364
+const bfd_arch_info_type *bfd_arch_get_compatible
mgl@1371
 32365
+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
mgl@1371
 32366
+
mgl@1371
 32367
+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
mgl@1371
 32368
+
mgl@1371
 32369
+enum bfd_architecture bfd_get_arch (bfd *abfd);
mgl@1371
 32370
+
mgl@1371
 32371
+unsigned long bfd_get_mach (bfd *abfd);
mgl@1371
 32372
+
mgl@1371
 32373
+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
mgl@1371
 32374
+
mgl@1371
 32375
+unsigned int bfd_arch_bits_per_address (bfd *abfd);
mgl@1371
 32376
+
mgl@1371
 32377
+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
mgl@1371
 32378
+
mgl@1371
 32379
+const bfd_arch_info_type *bfd_lookup_arch
mgl@1371
 32380
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 32381
+
mgl@1371
 32382
+const char *bfd_printable_arch_mach
mgl@1371
 32383
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 32384
+
mgl@1371
 32385
+unsigned int bfd_octets_per_byte (bfd *abfd);
mgl@1371
 32386
+
mgl@1371
 32387
+unsigned int bfd_arch_mach_octets_per_byte
mgl@1371
 32388
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 32389
+
mgl@1371
 32390
+/* Extracted from reloc.c.  */
mgl@1371
 32391
+typedef enum bfd_reloc_status
mgl@1371
 32392
+{
mgl@1371
 32393
+  /* No errors detected.  */
mgl@1371
 32394
+  bfd_reloc_ok,
mgl@1371
 32395
+
mgl@1371
 32396
+  /* The relocation was performed, but there was an overflow.  */
mgl@1371
 32397
+  bfd_reloc_overflow,
mgl@1371
 32398
+
mgl@1371
 32399
+  /* The address to relocate was not within the section supplied.  */
mgl@1371
 32400
+  bfd_reloc_outofrange,
mgl@1371
 32401
+
mgl@1371
 32402
+  /* Used by special functions.  */
mgl@1371
 32403
+  bfd_reloc_continue,
mgl@1371
 32404
+
mgl@1371
 32405
+  /* Unsupported relocation size requested.  */
mgl@1371
 32406
+  bfd_reloc_notsupported,
mgl@1371
 32407
+
mgl@1371
 32408
+  /* Unused.  */
mgl@1371
 32409
+  bfd_reloc_other,
mgl@1371
 32410
+
mgl@1371
 32411
+  /* The symbol to relocate against was undefined.  */
mgl@1371
 32412
+  bfd_reloc_undefined,
mgl@1371
 32413
+
mgl@1371
 32414
+  /* The relocation was performed, but may not be ok - presently
mgl@1371
 32415
+     generated only when linking i960 coff files with i960 b.out
mgl@1371
 32416
+     symbols.  If this type is returned, the error_message argument
mgl@1371
 32417
+     to bfd_perform_relocation will be set.  */
mgl@1371
 32418
+  bfd_reloc_dangerous
mgl@1371
 32419
+ }
mgl@1371
 32420
+ bfd_reloc_status_type;
mgl@1371
 32421
+
mgl@1371
 32422
+
mgl@1371
 32423
+typedef struct reloc_cache_entry
mgl@1371
 32424
+{
mgl@1371
 32425
+  /* A pointer into the canonical table of pointers.  */
mgl@1371
 32426
+  struct bfd_symbol **sym_ptr_ptr;
mgl@1371
 32427
+
mgl@1371
 32428
+  /* offset in section.  */
mgl@1371
 32429
+  bfd_size_type address;
mgl@1371
 32430
+
mgl@1371
 32431
+  /* addend for relocation value.  */
mgl@1371
 32432
+  bfd_vma addend;
mgl@1371
 32433
+
mgl@1371
 32434
+  /* Pointer to how to perform the required relocation.  */
mgl@1371
 32435
+  reloc_howto_type *howto;
mgl@1371
 32436
+
mgl@1371
 32437
+}
mgl@1371
 32438
+arelent;
mgl@1371
 32439
+
mgl@1371
 32440
+enum complain_overflow
mgl@1371
 32441
+{
mgl@1371
 32442
+  /* Do not complain on overflow.  */
mgl@1371
 32443
+  complain_overflow_dont,
mgl@1371
 32444
+
mgl@1371
 32445
+  /* Complain if the value overflows when considered as a signed
mgl@1371
 32446
+     number one bit larger than the field.  ie. A bitfield of N bits
mgl@1371
 32447
+     is allowed to represent -2**n to 2**n-1.  */
mgl@1371
 32448
+  complain_overflow_bitfield,
mgl@1371
 32449
+
mgl@1371
 32450
+  /* Complain if the value overflows when considered as a signed
mgl@1371
 32451
+     number.  */
mgl@1371
 32452
+  complain_overflow_signed,
mgl@1371
 32453
+
mgl@1371
 32454
+  /* Complain if the value overflows when considered as an
mgl@1371
 32455
+     unsigned number.  */
mgl@1371
 32456
+  complain_overflow_unsigned
mgl@1371
 32457
+};
mgl@1371
 32458
+
mgl@1371
 32459
+struct reloc_howto_struct
mgl@1371
 32460
+{
mgl@1371
 32461
+  /*  The type field has mainly a documentary use - the back end can
mgl@1371
 32462
+      do what it wants with it, though normally the back end's
mgl@1371
 32463
+      external idea of what a reloc number is stored
mgl@1371
 32464
+      in this field.  For example, a PC relative word relocation
mgl@1371
 32465
+      in a coff environment has the type 023 - because that's
mgl@1371
 32466
+      what the outside world calls a R_PCRWORD reloc.  */
mgl@1371
 32467
+  unsigned int type;
mgl@1371
 32468
+
mgl@1371
 32469
+  /*  The value the final relocation is shifted right by.  This drops
mgl@1371
 32470
+      unwanted data from the relocation.  */
mgl@1371
 32471
+  unsigned int rightshift;
mgl@1371
 32472
+
mgl@1371
 32473
+  /*  The size of the item to be relocated.  This is *not* a
mgl@1371
 32474
+      power-of-two measure.  To get the number of bytes operated
mgl@1371
 32475
+      on by a type of relocation, use bfd_get_reloc_size.  */
mgl@1371
 32476
+  int size;
mgl@1371
 32477
+
mgl@1371
 32478
+  /*  The number of bits in the item to be relocated.  This is used
mgl@1371
 32479
+      when doing overflow checking.  */
mgl@1371
 32480
+  unsigned int bitsize;
mgl@1371
 32481
+
mgl@1371
 32482
+  /*  Notes that the relocation is relative to the location in the
mgl@1371
 32483
+      data section of the addend.  The relocation function will
mgl@1371
 32484
+      subtract from the relocation value the address of the location
mgl@1371
 32485
+      being relocated.  */
mgl@1371
 32486
+  bfd_boolean pc_relative;
mgl@1371
 32487
+
mgl@1371
 32488
+  /*  The bit position of the reloc value in the destination.
mgl@1371
 32489
+      The relocated value is left shifted by this amount.  */
mgl@1371
 32490
+  unsigned int bitpos;
mgl@1371
 32491
+
mgl@1371
 32492
+  /* What type of overflow error should be checked for when
mgl@1371
 32493
+     relocating.  */
mgl@1371
 32494
+  enum complain_overflow complain_on_overflow;
mgl@1371
 32495
+
mgl@1371
 32496
+  /* If this field is non null, then the supplied function is
mgl@1371
 32497
+     called rather than the normal function.  This allows really
mgl@1371
 32498
+     strange relocation methods to be accommodated (e.g., i960 callj
mgl@1371
 32499
+     instructions).  */
mgl@1371
 32500
+  bfd_reloc_status_type (*special_function)
mgl@1371
 32501
+    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
mgl@1371
 32502
+     bfd *, char **);
mgl@1371
 32503
+
mgl@1371
 32504
+  /* The textual name of the relocation type.  */
mgl@1371
 32505
+  char *name;
mgl@1371
 32506
+
mgl@1371
 32507
+  /* Some formats record a relocation addend in the section contents
mgl@1371
 32508
+     rather than with the relocation.  For ELF formats this is the
mgl@1371
 32509
+     distinction between USE_REL and USE_RELA (though the code checks
mgl@1371
 32510
+     for USE_REL == 1/0).  The value of this field is TRUE if the
mgl@1371
 32511
+     addend is recorded with the section contents; when performing a
mgl@1371
 32512
+     partial link (ld -r) the section contents (the data) will be
mgl@1371
 32513
+     modified.  The value of this field is FALSE if addends are
mgl@1371
 32514
+     recorded with the relocation (in arelent.addend); when performing
mgl@1371
 32515
+     a partial link the relocation will be modified.
mgl@1371
 32516
+     All relocations for all ELF USE_RELA targets should set this field
mgl@1371
 32517
+     to FALSE (values of TRUE should be looked on with suspicion).
mgl@1371
 32518
+     However, the converse is not true: not all relocations of all ELF
mgl@1371
 32519
+     USE_REL targets set this field to TRUE.  Why this is so is peculiar
mgl@1371
 32520
+     to each particular target.  For relocs that aren't used in partial
mgl@1371
 32521
+     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
mgl@1371
 32522
+  bfd_boolean partial_inplace;
mgl@1371
 32523
+
mgl@1371
 32524
+  /* src_mask selects the part of the instruction (or data) to be used
mgl@1371
 32525
+     in the relocation sum.  If the target relocations don't have an
mgl@1371
 32526
+     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
mgl@1371
 32527
+     dst_mask to extract the addend from the section contents.  If
mgl@1371
 32528
+     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
mgl@1371
 32529
+     field should be zero.  Non-zero values for ELF USE_RELA targets are
mgl@1371
 32530
+     bogus as in those cases the value in the dst_mask part of the
mgl@1371
 32531
+     section contents should be treated as garbage.  */
mgl@1371
 32532
+  bfd_vma src_mask;
mgl@1371
 32533
+
mgl@1371
 32534
+  /* dst_mask selects which parts of the instruction (or data) are
mgl@1371
 32535
+     replaced with a relocated value.  */
mgl@1371
 32536
+  bfd_vma dst_mask;
mgl@1371
 32537
+
mgl@1371
 32538
+  /* When some formats create PC relative instructions, they leave
mgl@1371
 32539
+     the value of the pc of the place being relocated in the offset
mgl@1371
 32540
+     slot of the instruction, so that a PC relative relocation can
mgl@1371
 32541
+     be made just by adding in an ordinary offset (e.g., sun3 a.out).
mgl@1371
 32542
+     Some formats leave the displacement part of an instruction
mgl@1371
 32543
+     empty (e.g., m88k bcs); this flag signals the fact.  */
mgl@1371
 32544
+  bfd_boolean pcrel_offset;
mgl@1371
 32545
+};
mgl@1371
 32546
+
mgl@1371
 32547
+#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
mgl@1371
 32548
+  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
mgl@1371
 32549
+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
mgl@1371
 32550
+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
mgl@1371
 32551
+         NAME, FALSE, 0, 0, IN)
mgl@1371
 32552
+
mgl@1371
 32553
+#define EMPTY_HOWTO(C) \
mgl@1371
 32554
+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
mgl@1371
 32555
+         NULL, FALSE, 0, 0, FALSE)
mgl@1371
 32556
+
mgl@1371
 32557
+#define HOWTO_PREPARE(relocation, symbol)               \
mgl@1371
 32558
+  {                                                     \
mgl@1371
 32559
+    if (symbol != NULL)                                 \
mgl@1371
 32560
+      {                                                 \
mgl@1371
 32561
+        if (bfd_is_com_section (symbol->section))       \
mgl@1371
 32562
+          {                                             \
mgl@1371
 32563
+            relocation = 0;                             \
mgl@1371
 32564
+          }                                             \
mgl@1371
 32565
+        else                                            \
mgl@1371
 32566
+          {                                             \
mgl@1371
 32567
+            relocation = symbol->value;                 \
mgl@1371
 32568
+          }                                             \
mgl@1371
 32569
+      }                                                 \
mgl@1371
 32570
+  }
mgl@1371
 32571
+
mgl@1371
 32572
+unsigned int bfd_get_reloc_size (reloc_howto_type *);
mgl@1371
 32573
+
mgl@1371
 32574
+typedef struct relent_chain
mgl@1371
 32575
+{
mgl@1371
 32576
+  arelent relent;
mgl@1371
 32577
+  struct relent_chain *next;
mgl@1371
 32578
+}
mgl@1371
 32579
+arelent_chain;
mgl@1371
 32580
+
mgl@1371
 32581
+bfd_reloc_status_type bfd_check_overflow
mgl@1371
 32582
+   (enum complain_overflow how,
mgl@1371
 32583
+    unsigned int bitsize,
mgl@1371
 32584
+    unsigned int rightshift,
mgl@1371
 32585
+    unsigned int addrsize,
mgl@1371
 32586
+    bfd_vma relocation);
mgl@1371
 32587
+
mgl@1371
 32588
+bfd_reloc_status_type bfd_perform_relocation
mgl@1371
 32589
+   (bfd *abfd,
mgl@1371
 32590
+    arelent *reloc_entry,
mgl@1371
 32591
+    void *data,
mgl@1371
 32592
+    asection *input_section,
mgl@1371
 32593
+    bfd *output_bfd,
mgl@1371
 32594
+    char **error_message);
mgl@1371
 32595
+
mgl@1371
 32596
+bfd_reloc_status_type bfd_install_relocation
mgl@1371
 32597
+   (bfd *abfd,
mgl@1371
 32598
+    arelent *reloc_entry,
mgl@1371
 32599
+    void *data, bfd_vma data_start,
mgl@1371
 32600
+    asection *input_section,
mgl@1371
 32601
+    char **error_message);
mgl@1371
 32602
+
mgl@1371
 32603
+enum bfd_reloc_code_real {
mgl@1371
 32604
+  _dummy_first_bfd_reloc_code_real,
mgl@1371
 32605
+
mgl@1371
 32606
+
mgl@1371
 32607
+/* Basic absolute relocations of N bits.  */
mgl@1371
 32608
+  BFD_RELOC_64,
mgl@1371
 32609
+  BFD_RELOC_32,
mgl@1371
 32610
+  BFD_RELOC_26,
mgl@1371
 32611
+  BFD_RELOC_24,
mgl@1371
 32612
+  BFD_RELOC_16,
mgl@1371
 32613
+  BFD_RELOC_14,
mgl@1371
 32614
+  BFD_RELOC_8,
mgl@1371
 32615
+
mgl@1371
 32616
+/* PC-relative relocations.  Sometimes these are relative to the address
mgl@1371
 32617
+of the relocation itself; sometimes they are relative to the start of
mgl@1371
 32618
+the section containing the relocation.  It depends on the specific target.
mgl@1371
 32619
+
mgl@1371
 32620
+The 24-bit relocation is used in some Intel 960 configurations.  */
mgl@1371
 32621
+  BFD_RELOC_64_PCREL,
mgl@1371
 32622
+  BFD_RELOC_32_PCREL,
mgl@1371
 32623
+  BFD_RELOC_24_PCREL,
mgl@1371
 32624
+  BFD_RELOC_16_PCREL,
mgl@1371
 32625
+  BFD_RELOC_12_PCREL,
mgl@1371
 32626
+  BFD_RELOC_8_PCREL,
mgl@1371
 32627
+
mgl@1371
 32628
+/* Section relative relocations.  Some targets need this for DWARF2.  */
mgl@1371
 32629
+  BFD_RELOC_32_SECREL,
mgl@1371
 32630
+
mgl@1371
 32631
+/* For ELF.  */
mgl@1371
 32632
+  BFD_RELOC_32_GOT_PCREL,
mgl@1371
 32633
+  BFD_RELOC_16_GOT_PCREL,
mgl@1371
 32634
+  BFD_RELOC_8_GOT_PCREL,
mgl@1371
 32635
+  BFD_RELOC_32_GOTOFF,
mgl@1371
 32636
+  BFD_RELOC_16_GOTOFF,
mgl@1371
 32637
+  BFD_RELOC_LO16_GOTOFF,
mgl@1371
 32638
+  BFD_RELOC_HI16_GOTOFF,
mgl@1371
 32639
+  BFD_RELOC_HI16_S_GOTOFF,
mgl@1371
 32640
+  BFD_RELOC_8_GOTOFF,
mgl@1371
 32641
+  BFD_RELOC_64_PLT_PCREL,
mgl@1371
 32642
+  BFD_RELOC_32_PLT_PCREL,
mgl@1371
 32643
+  BFD_RELOC_24_PLT_PCREL,
mgl@1371
 32644
+  BFD_RELOC_16_PLT_PCREL,
mgl@1371
 32645
+  BFD_RELOC_8_PLT_PCREL,
mgl@1371
 32646
+  BFD_RELOC_64_PLTOFF,
mgl@1371
 32647
+  BFD_RELOC_32_PLTOFF,
mgl@1371
 32648
+  BFD_RELOC_16_PLTOFF,
mgl@1371
 32649
+  BFD_RELOC_LO16_PLTOFF,
mgl@1371
 32650
+  BFD_RELOC_HI16_PLTOFF,
mgl@1371
 32651
+  BFD_RELOC_HI16_S_PLTOFF,
mgl@1371
 32652
+  BFD_RELOC_8_PLTOFF,
mgl@1371
 32653
+
mgl@1371
 32654
+/* Relocations used by 68K ELF.  */
mgl@1371
 32655
+  BFD_RELOC_68K_GLOB_DAT,
mgl@1371
 32656
+  BFD_RELOC_68K_JMP_SLOT,
mgl@1371
 32657
+  BFD_RELOC_68K_RELATIVE,
mgl@1371
 32658
+
mgl@1371
 32659
+/* Linkage-table relative.  */
mgl@1371
 32660
+  BFD_RELOC_32_BASEREL,
mgl@1371
 32661
+  BFD_RELOC_16_BASEREL,
mgl@1371
 32662
+  BFD_RELOC_LO16_BASEREL,
mgl@1371
 32663
+  BFD_RELOC_HI16_BASEREL,
mgl@1371
 32664
+  BFD_RELOC_HI16_S_BASEREL,
mgl@1371
 32665
+  BFD_RELOC_8_BASEREL,
mgl@1371
 32666
+  BFD_RELOC_RVA,
mgl@1371
 32667
+
mgl@1371
 32668
+/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
mgl@1371
 32669
+  BFD_RELOC_8_FFnn,
mgl@1371
 32670
+
mgl@1371
 32671
+/* These PC-relative relocations are stored as word displacements --
mgl@1371
 32672
+i.e., byte displacements shifted right two bits.  The 30-bit word
mgl@1371
 32673
+displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
mgl@1371
 32674
+SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
mgl@1371
 32675
+signed 16-bit displacement is used on the MIPS, and the 23-bit
mgl@1371
 32676
+displacement is used on the Alpha.  */
mgl@1371
 32677
+  BFD_RELOC_32_PCREL_S2,
mgl@1371
 32678
+  BFD_RELOC_16_PCREL_S2,
mgl@1371
 32679
+  BFD_RELOC_23_PCREL_S2,
mgl@1371
 32680
+
mgl@1371
 32681
+/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
mgl@1371
 32682
+the target word.  These are used on the SPARC.  */
mgl@1371
 32683
+  BFD_RELOC_HI22,
mgl@1371
 32684
+  BFD_RELOC_LO10,
mgl@1371
 32685
+
mgl@1371
 32686
+/* For systems that allocate a Global Pointer register, these are
mgl@1371
 32687
+displacements off that register.  These relocation types are
mgl@1371
 32688
+handled specially, because the value the register will have is
mgl@1371
 32689
+decided relatively late.  */
mgl@1371
 32690
+  BFD_RELOC_GPREL16,
mgl@1371
 32691
+  BFD_RELOC_GPREL32,
mgl@1371
 32692
+
mgl@1371
 32693
+/* Reloc types used for i960/b.out.  */
mgl@1371
 32694
+  BFD_RELOC_I960_CALLJ,
mgl@1371
 32695
+
mgl@1371
 32696
+/* SPARC ELF relocations.  There is probably some overlap with other
mgl@1371
 32697
+relocation types already defined.  */
mgl@1371
 32698
+  BFD_RELOC_NONE,
mgl@1371
 32699
+  BFD_RELOC_SPARC_WDISP22,
mgl@1371
 32700
+  BFD_RELOC_SPARC22,
mgl@1371
 32701
+  BFD_RELOC_SPARC13,
mgl@1371
 32702
+  BFD_RELOC_SPARC_GOT10,
mgl@1371
 32703
+  BFD_RELOC_SPARC_GOT13,
mgl@1371
 32704
+  BFD_RELOC_SPARC_GOT22,
mgl@1371
 32705
+  BFD_RELOC_SPARC_PC10,
mgl@1371
 32706
+  BFD_RELOC_SPARC_PC22,
mgl@1371
 32707
+  BFD_RELOC_SPARC_WPLT30,
mgl@1371
 32708
+  BFD_RELOC_SPARC_COPY,
mgl@1371
 32709
+  BFD_RELOC_SPARC_GLOB_DAT,
mgl@1371
 32710
+  BFD_RELOC_SPARC_JMP_SLOT,
mgl@1371
 32711
+  BFD_RELOC_SPARC_RELATIVE,
mgl@1371
 32712
+  BFD_RELOC_SPARC_UA16,
mgl@1371
 32713
+  BFD_RELOC_SPARC_UA32,
mgl@1371
 32714
+  BFD_RELOC_SPARC_UA64,
mgl@1371
 32715
+
mgl@1371
 32716
+/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
mgl@1371
 32717
+  BFD_RELOC_SPARC_BASE13,
mgl@1371
 32718
+  BFD_RELOC_SPARC_BASE22,
mgl@1371
 32719
+
mgl@1371
 32720
+/* SPARC64 relocations  */
mgl@1371
 32721
+#define BFD_RELOC_SPARC_64 BFD_RELOC_64
mgl@1371
 32722
+  BFD_RELOC_SPARC_10,
mgl@1371
 32723
+  BFD_RELOC_SPARC_11,
mgl@1371
 32724
+  BFD_RELOC_SPARC_OLO10,
mgl@1371
 32725
+  BFD_RELOC_SPARC_HH22,
mgl@1371
 32726
+  BFD_RELOC_SPARC_HM10,
mgl@1371
 32727
+  BFD_RELOC_SPARC_LM22,
mgl@1371
 32728
+  BFD_RELOC_SPARC_PC_HH22,
mgl@1371
 32729
+  BFD_RELOC_SPARC_PC_HM10,
mgl@1371
 32730
+  BFD_RELOC_SPARC_PC_LM22,
mgl@1371
 32731
+  BFD_RELOC_SPARC_WDISP16,
mgl@1371
 32732
+  BFD_RELOC_SPARC_WDISP19,
mgl@1371
 32733
+  BFD_RELOC_SPARC_7,
mgl@1371
 32734
+  BFD_RELOC_SPARC_6,
mgl@1371
 32735
+  BFD_RELOC_SPARC_5,
mgl@1371
 32736
+#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
mgl@1371
 32737
+  BFD_RELOC_SPARC_PLT32,
mgl@1371
 32738
+  BFD_RELOC_SPARC_PLT64,
mgl@1371
 32739
+  BFD_RELOC_SPARC_HIX22,
mgl@1371
 32740
+  BFD_RELOC_SPARC_LOX10,
mgl@1371
 32741
+  BFD_RELOC_SPARC_H44,
mgl@1371
 32742
+  BFD_RELOC_SPARC_M44,
mgl@1371
 32743
+  BFD_RELOC_SPARC_L44,
mgl@1371
 32744
+  BFD_RELOC_SPARC_REGISTER,
mgl@1371
 32745
+
mgl@1371
 32746
+/* SPARC little endian relocation  */
mgl@1371
 32747
+  BFD_RELOC_SPARC_REV32,
mgl@1371
 32748
+
mgl@1371
 32749
+/* SPARC TLS relocations  */
mgl@1371
 32750
+  BFD_RELOC_SPARC_TLS_GD_HI22,
mgl@1371
 32751
+  BFD_RELOC_SPARC_TLS_GD_LO10,
mgl@1371
 32752
+  BFD_RELOC_SPARC_TLS_GD_ADD,
mgl@1371
 32753
+  BFD_RELOC_SPARC_TLS_GD_CALL,
mgl@1371
 32754
+  BFD_RELOC_SPARC_TLS_LDM_HI22,
mgl@1371
 32755
+  BFD_RELOC_SPARC_TLS_LDM_LO10,
mgl@1371
 32756
+  BFD_RELOC_SPARC_TLS_LDM_ADD,
mgl@1371
 32757
+  BFD_RELOC_SPARC_TLS_LDM_CALL,
mgl@1371
 32758
+  BFD_RELOC_SPARC_TLS_LDO_HIX22,
mgl@1371
 32759
+  BFD_RELOC_SPARC_TLS_LDO_LOX10,
mgl@1371
 32760
+  BFD_RELOC_SPARC_TLS_LDO_ADD,
mgl@1371
 32761
+  BFD_RELOC_SPARC_TLS_IE_HI22,
mgl@1371
 32762
+  BFD_RELOC_SPARC_TLS_IE_LO10,
mgl@1371
 32763
+  BFD_RELOC_SPARC_TLS_IE_LD,
mgl@1371
 32764
+  BFD_RELOC_SPARC_TLS_IE_LDX,
mgl@1371
 32765
+  BFD_RELOC_SPARC_TLS_IE_ADD,
mgl@1371
 32766
+  BFD_RELOC_SPARC_TLS_LE_HIX22,
mgl@1371
 32767
+  BFD_RELOC_SPARC_TLS_LE_LOX10,
mgl@1371
 32768
+  BFD_RELOC_SPARC_TLS_DTPMOD32,
mgl@1371
 32769
+  BFD_RELOC_SPARC_TLS_DTPMOD64,
mgl@1371
 32770
+  BFD_RELOC_SPARC_TLS_DTPOFF32,
mgl@1371
 32771
+  BFD_RELOC_SPARC_TLS_DTPOFF64,
mgl@1371
 32772
+  BFD_RELOC_SPARC_TLS_TPOFF32,
mgl@1371
 32773
+  BFD_RELOC_SPARC_TLS_TPOFF64,
mgl@1371
 32774
+
mgl@1371
 32775
+/* SPU Relocations.  */
mgl@1371
 32776
+  BFD_RELOC_SPU_IMM7,
mgl@1371
 32777
+  BFD_RELOC_SPU_IMM8,
mgl@1371
 32778
+  BFD_RELOC_SPU_IMM10,
mgl@1371
 32779
+  BFD_RELOC_SPU_IMM10W,
mgl@1371
 32780
+  BFD_RELOC_SPU_IMM16,
mgl@1371
 32781
+  BFD_RELOC_SPU_IMM16W,
mgl@1371
 32782
+  BFD_RELOC_SPU_IMM18,
mgl@1371
 32783
+  BFD_RELOC_SPU_PCREL9a,
mgl@1371
 32784
+  BFD_RELOC_SPU_PCREL9b,
mgl@1371
 32785
+  BFD_RELOC_SPU_PCREL16,
mgl@1371
 32786
+  BFD_RELOC_SPU_LO16,
mgl@1371
 32787
+  BFD_RELOC_SPU_HI16,
mgl@1371
 32788
+  BFD_RELOC_SPU_PPU32,
mgl@1371
 32789
+  BFD_RELOC_SPU_PPU64,
mgl@1371
 32790
+
mgl@1371
 32791
+/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
mgl@1371
 32792
+"addend" in some special way.
mgl@1371
 32793
+For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
mgl@1371
 32794
+writing; when reading, it will be the absolute section symbol.  The
mgl@1371
 32795
+addend is the displacement in bytes of the "lda" instruction from
mgl@1371
 32796
+the "ldah" instruction (which is at the address of this reloc).  */
mgl@1371
 32797
+  BFD_RELOC_ALPHA_GPDISP_HI16,
mgl@1371
 32798
+
mgl@1371
 32799
+/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
mgl@1371
 32800
+with GPDISP_HI16 relocs.  The addend is ignored when writing the
mgl@1371
 32801
+relocations out, and is filled in with the file's GP value on
mgl@1371
 32802
+reading, for convenience.  */
mgl@1371
 32803
+  BFD_RELOC_ALPHA_GPDISP_LO16,
mgl@1371
 32804
+
mgl@1371
 32805
+/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
mgl@1371
 32806
+relocation except that there is no accompanying GPDISP_LO16
mgl@1371
 32807
+relocation.  */
mgl@1371
 32808
+  BFD_RELOC_ALPHA_GPDISP,
mgl@1371
 32809
+
mgl@1371
 32810
+/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
mgl@1371
 32811
+the assembler turns it into a LDQ instruction to load the address of
mgl@1371
 32812
+the symbol, and then fills in a register in the real instruction.
mgl@1371
 32813
+
mgl@1371
 32814
+The LITERAL reloc, at the LDQ instruction, refers to the .lita
mgl@1371
 32815
+section symbol.  The addend is ignored when writing, but is filled
mgl@1371
 32816
+in with the file's GP value on reading, for convenience, as with the
mgl@1371
 32817
+GPDISP_LO16 reloc.
mgl@1371
 32818
+
mgl@1371
 32819
+The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
mgl@1371
 32820
+It should refer to the symbol to be referenced, as with 16_GOTOFF,
mgl@1371
 32821
+but it generates output not based on the position within the .got
mgl@1371
 32822
+section, but relative to the GP value chosen for the file during the
mgl@1371
 32823
+final link stage.
mgl@1371
 32824
+
mgl@1371
 32825
+The LITUSE reloc, on the instruction using the loaded address, gives
mgl@1371
 32826
+information to the linker that it might be able to use to optimize
mgl@1371
 32827
+away some literal section references.  The symbol is ignored (read
mgl@1371
 32828
+as the absolute section symbol), and the "addend" indicates the type
mgl@1371
 32829
+of instruction using the register:
mgl@1371
 32830
+1 - "memory" fmt insn
mgl@1371
 32831
+2 - byte-manipulation (byte offset reg)
mgl@1371
 32832
+3 - jsr (target of branch)  */
mgl@1371
 32833
+  BFD_RELOC_ALPHA_LITERAL,
mgl@1371
 32834
+  BFD_RELOC_ALPHA_ELF_LITERAL,
mgl@1371
 32835
+  BFD_RELOC_ALPHA_LITUSE,
mgl@1371
 32836
+
mgl@1371
 32837
+/* The HINT relocation indicates a value that should be filled into the
mgl@1371
 32838
+"hint" field of a jmp/jsr/ret instruction, for possible branch-
mgl@1371
 32839
+prediction logic which may be provided on some processors.  */
mgl@1371
 32840
+  BFD_RELOC_ALPHA_HINT,
mgl@1371
 32841
+
mgl@1371
 32842
+/* The LINKAGE relocation outputs a linkage pair in the object file,
mgl@1371
 32843
+which is filled by the linker.  */
mgl@1371
 32844
+  BFD_RELOC_ALPHA_LINKAGE,
mgl@1371
 32845
+
mgl@1371
 32846
+/* The CODEADDR relocation outputs a STO_CA in the object file,
mgl@1371
 32847
+which is filled by the linker.  */
mgl@1371
 32848
+  BFD_RELOC_ALPHA_CODEADDR,
mgl@1371
 32849
+
mgl@1371
 32850
+/* The GPREL_HI/LO relocations together form a 32-bit offset from the
mgl@1371
 32851
+GP register.  */
mgl@1371
 32852
+  BFD_RELOC_ALPHA_GPREL_HI16,
mgl@1371
 32853
+  BFD_RELOC_ALPHA_GPREL_LO16,
mgl@1371
 32854
+
mgl@1371
 32855
+/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
mgl@1371
 32856
+share a common GP, and the target address is adjusted for
mgl@1371
 32857
+STO_ALPHA_STD_GPLOAD.  */
mgl@1371
 32858
+  BFD_RELOC_ALPHA_BRSGP,
mgl@1371
 32859
+
mgl@1371
 32860
+/* Alpha thread-local storage relocations.  */
mgl@1371
 32861
+  BFD_RELOC_ALPHA_TLSGD,
mgl@1371
 32862
+  BFD_RELOC_ALPHA_TLSLDM,
mgl@1371
 32863
+  BFD_RELOC_ALPHA_DTPMOD64,
mgl@1371
 32864
+  BFD_RELOC_ALPHA_GOTDTPREL16,
mgl@1371
 32865
+  BFD_RELOC_ALPHA_DTPREL64,
mgl@1371
 32866
+  BFD_RELOC_ALPHA_DTPREL_HI16,
mgl@1371
 32867
+  BFD_RELOC_ALPHA_DTPREL_LO16,
mgl@1371
 32868
+  BFD_RELOC_ALPHA_DTPREL16,
mgl@1371
 32869
+  BFD_RELOC_ALPHA_GOTTPREL16,
mgl@1371
 32870
+  BFD_RELOC_ALPHA_TPREL64,
mgl@1371
 32871
+  BFD_RELOC_ALPHA_TPREL_HI16,
mgl@1371
 32872
+  BFD_RELOC_ALPHA_TPREL_LO16,
mgl@1371
 32873
+  BFD_RELOC_ALPHA_TPREL16,
mgl@1371
 32874
+
mgl@1371
 32875
+/* Bits 27..2 of the relocation address shifted right 2 bits;
mgl@1371
 32876
+simple reloc otherwise.  */
mgl@1371
 32877
+  BFD_RELOC_MIPS_JMP,
mgl@1371
 32878
+
mgl@1371
 32879
+/* The MIPS16 jump instruction.  */
mgl@1371
 32880
+  BFD_RELOC_MIPS16_JMP,
mgl@1371
 32881
+
mgl@1371
 32882
+/* MIPS16 GP relative reloc.  */
mgl@1371
 32883
+  BFD_RELOC_MIPS16_GPREL,
mgl@1371
 32884
+
mgl@1371
 32885
+/* High 16 bits of 32-bit value; simple reloc.  */
mgl@1371
 32886
+  BFD_RELOC_HI16,
mgl@1371
 32887
+
mgl@1371
 32888
+/* High 16 bits of 32-bit value but the low 16 bits will be sign
mgl@1371
 32889
+extended and added to form the final result.  If the low 16
mgl@1371
 32890
+bits form a negative number, we need to add one to the high value
mgl@1371
 32891
+to compensate for the borrow when the low bits are added.  */
mgl@1371
 32892
+  BFD_RELOC_HI16_S,
mgl@1371
 32893
+
mgl@1371
 32894
+/* Low 16 bits.  */
mgl@1371
 32895
+  BFD_RELOC_LO16,
mgl@1371
 32896
+
mgl@1371
 32897
+/* High 16 bits of 32-bit pc-relative value  */
mgl@1371
 32898
+  BFD_RELOC_HI16_PCREL,
mgl@1371
 32899
+
mgl@1371
 32900
+/* High 16 bits of 32-bit pc-relative value, adjusted  */
mgl@1371
 32901
+  BFD_RELOC_HI16_S_PCREL,
mgl@1371
 32902
+
mgl@1371
 32903
+/* Low 16 bits of pc-relative value  */
mgl@1371
 32904
+  BFD_RELOC_LO16_PCREL,
mgl@1371
 32905
+
mgl@1371
 32906
+/* MIPS16 high 16 bits of 32-bit value.  */
mgl@1371
 32907
+  BFD_RELOC_MIPS16_HI16,
mgl@1371
 32908
+
mgl@1371
 32909
+/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
mgl@1371
 32910
+extended and added to form the final result.  If the low 16
mgl@1371
 32911
+bits form a negative number, we need to add one to the high value
mgl@1371
 32912
+to compensate for the borrow when the low bits are added.  */
mgl@1371
 32913
+  BFD_RELOC_MIPS16_HI16_S,
mgl@1371
 32914
+
mgl@1371
 32915
+/* MIPS16 low 16 bits.  */
mgl@1371
 32916
+  BFD_RELOC_MIPS16_LO16,
mgl@1371
 32917
+
mgl@1371
 32918
+/* Relocation against a MIPS literal section.  */
mgl@1371
 32919
+  BFD_RELOC_MIPS_LITERAL,
mgl@1371
 32920
+
mgl@1371
 32921
+/* MIPS ELF relocations.  */
mgl@1371
 32922
+  BFD_RELOC_MIPS_GOT16,
mgl@1371
 32923
+  BFD_RELOC_MIPS_CALL16,
mgl@1371
 32924
+  BFD_RELOC_MIPS_GOT_HI16,
mgl@1371
 32925
+  BFD_RELOC_MIPS_GOT_LO16,
mgl@1371
 32926
+  BFD_RELOC_MIPS_CALL_HI16,
mgl@1371
 32927
+  BFD_RELOC_MIPS_CALL_LO16,
mgl@1371
 32928
+  BFD_RELOC_MIPS_SUB,
mgl@1371
 32929
+  BFD_RELOC_MIPS_GOT_PAGE,
mgl@1371
 32930
+  BFD_RELOC_MIPS_GOT_OFST,
mgl@1371
 32931
+  BFD_RELOC_MIPS_GOT_DISP,
mgl@1371
 32932
+  BFD_RELOC_MIPS_SHIFT5,
mgl@1371
 32933
+  BFD_RELOC_MIPS_SHIFT6,
mgl@1371
 32934
+  BFD_RELOC_MIPS_INSERT_A,
mgl@1371
 32935
+  BFD_RELOC_MIPS_INSERT_B,
mgl@1371
 32936
+  BFD_RELOC_MIPS_DELETE,
mgl@1371
 32937
+  BFD_RELOC_MIPS_HIGHEST,
mgl@1371
 32938
+  BFD_RELOC_MIPS_HIGHER,
mgl@1371
 32939
+  BFD_RELOC_MIPS_SCN_DISP,
mgl@1371
 32940
+  BFD_RELOC_MIPS_REL16,
mgl@1371
 32941
+  BFD_RELOC_MIPS_RELGOT,
mgl@1371
 32942
+  BFD_RELOC_MIPS_JALR,
mgl@1371
 32943
+  BFD_RELOC_MIPS_TLS_DTPMOD32,
mgl@1371
 32944
+  BFD_RELOC_MIPS_TLS_DTPREL32,
mgl@1371
 32945
+  BFD_RELOC_MIPS_TLS_DTPMOD64,
mgl@1371
 32946
+  BFD_RELOC_MIPS_TLS_DTPREL64,
mgl@1371
 32947
+  BFD_RELOC_MIPS_TLS_GD,
mgl@1371
 32948
+  BFD_RELOC_MIPS_TLS_LDM,
mgl@1371
 32949
+  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
mgl@1371
 32950
+  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
mgl@1371
 32951
+  BFD_RELOC_MIPS_TLS_GOTTPREL,
mgl@1371
 32952
+  BFD_RELOC_MIPS_TLS_TPREL32,
mgl@1371
 32953
+  BFD_RELOC_MIPS_TLS_TPREL64,
mgl@1371
 32954
+  BFD_RELOC_MIPS_TLS_TPREL_HI16,
mgl@1371
 32955
+  BFD_RELOC_MIPS_TLS_TPREL_LO16,
mgl@1371
 32956
+
mgl@1371
 32957
+
mgl@1371
 32958
+/* MIPS ELF relocations (VxWorks extensions).  */
mgl@1371
 32959
+  BFD_RELOC_MIPS_COPY,
mgl@1371
 32960
+  BFD_RELOC_MIPS_JUMP_SLOT,
mgl@1371
 32961
+
mgl@1371
 32962
+
mgl@1371
 32963
+/* Fujitsu Frv Relocations.  */
mgl@1371
 32964
+  BFD_RELOC_FRV_LABEL16,
mgl@1371
 32965
+  BFD_RELOC_FRV_LABEL24,
mgl@1371
 32966
+  BFD_RELOC_FRV_LO16,
mgl@1371
 32967
+  BFD_RELOC_FRV_HI16,
mgl@1371
 32968
+  BFD_RELOC_FRV_GPREL12,
mgl@1371
 32969
+  BFD_RELOC_FRV_GPRELU12,
mgl@1371
 32970
+  BFD_RELOC_FRV_GPREL32,
mgl@1371
 32971
+  BFD_RELOC_FRV_GPRELHI,
mgl@1371
 32972
+  BFD_RELOC_FRV_GPRELLO,
mgl@1371
 32973
+  BFD_RELOC_FRV_GOT12,
mgl@1371
 32974
+  BFD_RELOC_FRV_GOTHI,
mgl@1371
 32975
+  BFD_RELOC_FRV_GOTLO,
mgl@1371
 32976
+  BFD_RELOC_FRV_FUNCDESC,
mgl@1371
 32977
+  BFD_RELOC_FRV_FUNCDESC_GOT12,
mgl@1371
 32978
+  BFD_RELOC_FRV_FUNCDESC_GOTHI,
mgl@1371
 32979
+  BFD_RELOC_FRV_FUNCDESC_GOTLO,
mgl@1371
 32980
+  BFD_RELOC_FRV_FUNCDESC_VALUE,
mgl@1371
 32981
+  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
mgl@1371
 32982
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
mgl@1371
 32983
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
mgl@1371
 32984
+  BFD_RELOC_FRV_GOTOFF12,
mgl@1371
 32985
+  BFD_RELOC_FRV_GOTOFFHI,
mgl@1371
 32986
+  BFD_RELOC_FRV_GOTOFFLO,
mgl@1371
 32987
+  BFD_RELOC_FRV_GETTLSOFF,
mgl@1371
 32988
+  BFD_RELOC_FRV_TLSDESC_VALUE,
mgl@1371
 32989
+  BFD_RELOC_FRV_GOTTLSDESC12,
mgl@1371
 32990
+  BFD_RELOC_FRV_GOTTLSDESCHI,
mgl@1371
 32991
+  BFD_RELOC_FRV_GOTTLSDESCLO,
mgl@1371
 32992
+  BFD_RELOC_FRV_TLSMOFF12,
mgl@1371
 32993
+  BFD_RELOC_FRV_TLSMOFFHI,
mgl@1371
 32994
+  BFD_RELOC_FRV_TLSMOFFLO,
mgl@1371
 32995
+  BFD_RELOC_FRV_GOTTLSOFF12,
mgl@1371
 32996
+  BFD_RELOC_FRV_GOTTLSOFFHI,
mgl@1371
 32997
+  BFD_RELOC_FRV_GOTTLSOFFLO,
mgl@1371
 32998
+  BFD_RELOC_FRV_TLSOFF,
mgl@1371
 32999
+  BFD_RELOC_FRV_TLSDESC_RELAX,
mgl@1371
 33000
+  BFD_RELOC_FRV_GETTLSOFF_RELAX,
mgl@1371
 33001
+  BFD_RELOC_FRV_TLSOFF_RELAX,
mgl@1371
 33002
+  BFD_RELOC_FRV_TLSMOFF,
mgl@1371
 33003
+
mgl@1371
 33004
+
mgl@1371
 33005
+/* This is a 24bit GOT-relative reloc for the mn10300.  */
mgl@1371
 33006
+  BFD_RELOC_MN10300_GOTOFF24,
mgl@1371
 33007
+
mgl@1371
 33008
+/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 33009
+in the instruction.  */
mgl@1371
 33010
+  BFD_RELOC_MN10300_GOT32,
mgl@1371
 33011
+
mgl@1371
 33012
+/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 33013
+in the instruction.  */
mgl@1371
 33014
+  BFD_RELOC_MN10300_GOT24,
mgl@1371
 33015
+
mgl@1371
 33016
+/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 33017
+in the instruction.  */
mgl@1371
 33018
+  BFD_RELOC_MN10300_GOT16,
mgl@1371
 33019
+
mgl@1371
 33020
+/* Copy symbol at runtime.  */
mgl@1371
 33021
+  BFD_RELOC_MN10300_COPY,
mgl@1371
 33022
+
mgl@1371
 33023
+/* Create GOT entry.  */
mgl@1371
 33024
+  BFD_RELOC_MN10300_GLOB_DAT,
mgl@1371
 33025
+
mgl@1371
 33026
+/* Create PLT entry.  */
mgl@1371
 33027
+  BFD_RELOC_MN10300_JMP_SLOT,
mgl@1371
 33028
+
mgl@1371
 33029
+/* Adjust by program base.  */
mgl@1371
 33030
+  BFD_RELOC_MN10300_RELATIVE,
mgl@1371
 33031
+
mgl@1371
 33032
+
mgl@1371
 33033
+/* i386/elf relocations  */
mgl@1371
 33034
+  BFD_RELOC_386_GOT32,
mgl@1371
 33035
+  BFD_RELOC_386_PLT32,
mgl@1371
 33036
+  BFD_RELOC_386_COPY,
mgl@1371
 33037
+  BFD_RELOC_386_GLOB_DAT,
mgl@1371
 33038
+  BFD_RELOC_386_JUMP_SLOT,
mgl@1371
 33039
+  BFD_RELOC_386_RELATIVE,
mgl@1371
 33040
+  BFD_RELOC_386_GOTOFF,
mgl@1371
 33041
+  BFD_RELOC_386_GOTPC,
mgl@1371
 33042
+  BFD_RELOC_386_TLS_TPOFF,
mgl@1371
 33043
+  BFD_RELOC_386_TLS_IE,
mgl@1371
 33044
+  BFD_RELOC_386_TLS_GOTIE,
mgl@1371
 33045
+  BFD_RELOC_386_TLS_LE,
mgl@1371
 33046
+  BFD_RELOC_386_TLS_GD,
mgl@1371
 33047
+  BFD_RELOC_386_TLS_LDM,
mgl@1371
 33048
+  BFD_RELOC_386_TLS_LDO_32,
mgl@1371
 33049
+  BFD_RELOC_386_TLS_IE_32,
mgl@1371
 33050
+  BFD_RELOC_386_TLS_LE_32,
mgl@1371
 33051
+  BFD_RELOC_386_TLS_DTPMOD32,
mgl@1371
 33052
+  BFD_RELOC_386_TLS_DTPOFF32,
mgl@1371
 33053
+  BFD_RELOC_386_TLS_TPOFF32,
mgl@1371
 33054
+  BFD_RELOC_386_TLS_GOTDESC,
mgl@1371
 33055
+  BFD_RELOC_386_TLS_DESC_CALL,
mgl@1371
 33056
+  BFD_RELOC_386_TLS_DESC,
mgl@1371
 33057
+
mgl@1371
 33058
+/* x86-64/elf relocations  */
mgl@1371
 33059
+  BFD_RELOC_X86_64_GOT32,
mgl@1371
 33060
+  BFD_RELOC_X86_64_PLT32,
mgl@1371
 33061
+  BFD_RELOC_X86_64_COPY,
mgl@1371
 33062
+  BFD_RELOC_X86_64_GLOB_DAT,
mgl@1371
 33063
+  BFD_RELOC_X86_64_JUMP_SLOT,
mgl@1371
 33064
+  BFD_RELOC_X86_64_RELATIVE,
mgl@1371
 33065
+  BFD_RELOC_X86_64_GOTPCREL,
mgl@1371
 33066
+  BFD_RELOC_X86_64_32S,
mgl@1371
 33067
+  BFD_RELOC_X86_64_DTPMOD64,
mgl@1371
 33068
+  BFD_RELOC_X86_64_DTPOFF64,
mgl@1371
 33069
+  BFD_RELOC_X86_64_TPOFF64,
mgl@1371
 33070
+  BFD_RELOC_X86_64_TLSGD,
mgl@1371
 33071
+  BFD_RELOC_X86_64_TLSLD,
mgl@1371
 33072
+  BFD_RELOC_X86_64_DTPOFF32,
mgl@1371
 33073
+  BFD_RELOC_X86_64_GOTTPOFF,
mgl@1371
 33074
+  BFD_RELOC_X86_64_TPOFF32,
mgl@1371
 33075
+  BFD_RELOC_X86_64_GOTOFF64,
mgl@1371
 33076
+  BFD_RELOC_X86_64_GOTPC32,
mgl@1371
 33077
+  BFD_RELOC_X86_64_GOT64,
mgl@1371
 33078
+  BFD_RELOC_X86_64_GOTPCREL64,
mgl@1371
 33079
+  BFD_RELOC_X86_64_GOTPC64,
mgl@1371
 33080
+  BFD_RELOC_X86_64_GOTPLT64,
mgl@1371
 33081
+  BFD_RELOC_X86_64_PLTOFF64,
mgl@1371
 33082
+  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
mgl@1371
 33083
+  BFD_RELOC_X86_64_TLSDESC_CALL,
mgl@1371
 33084
+  BFD_RELOC_X86_64_TLSDESC,
mgl@1371
 33085
+
mgl@1371
 33086
+/* ns32k relocations  */
mgl@1371
 33087
+  BFD_RELOC_NS32K_IMM_8,
mgl@1371
 33088
+  BFD_RELOC_NS32K_IMM_16,
mgl@1371
 33089
+  BFD_RELOC_NS32K_IMM_32,
mgl@1371
 33090
+  BFD_RELOC_NS32K_IMM_8_PCREL,
mgl@1371
 33091
+  BFD_RELOC_NS32K_IMM_16_PCREL,
mgl@1371
 33092
+  BFD_RELOC_NS32K_IMM_32_PCREL,
mgl@1371
 33093
+  BFD_RELOC_NS32K_DISP_8,
mgl@1371
 33094
+  BFD_RELOC_NS32K_DISP_16,
mgl@1371
 33095
+  BFD_RELOC_NS32K_DISP_32,
mgl@1371
 33096
+  BFD_RELOC_NS32K_DISP_8_PCREL,
mgl@1371
 33097
+  BFD_RELOC_NS32K_DISP_16_PCREL,
mgl@1371
 33098
+  BFD_RELOC_NS32K_DISP_32_PCREL,
mgl@1371
 33099
+
mgl@1371
 33100
+/* PDP11 relocations  */
mgl@1371
 33101
+  BFD_RELOC_PDP11_DISP_8_PCREL,
mgl@1371
 33102
+  BFD_RELOC_PDP11_DISP_6_PCREL,
mgl@1371
 33103
+
mgl@1371
 33104
+/* Picojava relocs.  Not all of these appear in object files.  */
mgl@1371
 33105
+  BFD_RELOC_PJ_CODE_HI16,
mgl@1371
 33106
+  BFD_RELOC_PJ_CODE_LO16,
mgl@1371
 33107
+  BFD_RELOC_PJ_CODE_DIR16,
mgl@1371
 33108
+  BFD_RELOC_PJ_CODE_DIR32,
mgl@1371
 33109
+  BFD_RELOC_PJ_CODE_REL16,
mgl@1371
 33110
+  BFD_RELOC_PJ_CODE_REL32,
mgl@1371
 33111
+
mgl@1371
 33112
+/* Power(rs6000) and PowerPC relocations.  */
mgl@1371
 33113
+  BFD_RELOC_PPC_B26,
mgl@1371
 33114
+  BFD_RELOC_PPC_BA26,
mgl@1371
 33115
+  BFD_RELOC_PPC_TOC16,
mgl@1371
 33116
+  BFD_RELOC_PPC_B16,
mgl@1371
 33117
+  BFD_RELOC_PPC_B16_BRTAKEN,
mgl@1371
 33118
+  BFD_RELOC_PPC_B16_BRNTAKEN,
mgl@1371
 33119
+  BFD_RELOC_PPC_BA16,
mgl@1371
 33120
+  BFD_RELOC_PPC_BA16_BRTAKEN,
mgl@1371
 33121
+  BFD_RELOC_PPC_BA16_BRNTAKEN,
mgl@1371
 33122
+  BFD_RELOC_PPC_COPY,
mgl@1371
 33123
+  BFD_RELOC_PPC_GLOB_DAT,
mgl@1371
 33124
+  BFD_RELOC_PPC_JMP_SLOT,
mgl@1371
 33125
+  BFD_RELOC_PPC_RELATIVE,
mgl@1371
 33126
+  BFD_RELOC_PPC_LOCAL24PC,
mgl@1371
 33127
+  BFD_RELOC_PPC_EMB_NADDR32,
mgl@1371
 33128
+  BFD_RELOC_PPC_EMB_NADDR16,
mgl@1371
 33129
+  BFD_RELOC_PPC_EMB_NADDR16_LO,
mgl@1371
 33130
+  BFD_RELOC_PPC_EMB_NADDR16_HI,
mgl@1371
 33131
+  BFD_RELOC_PPC_EMB_NADDR16_HA,
mgl@1371
 33132
+  BFD_RELOC_PPC_EMB_SDAI16,
mgl@1371
 33133
+  BFD_RELOC_PPC_EMB_SDA2I16,
mgl@1371
 33134
+  BFD_RELOC_PPC_EMB_SDA2REL,
mgl@1371
 33135
+  BFD_RELOC_PPC_EMB_SDA21,
mgl@1371
 33136
+  BFD_RELOC_PPC_EMB_MRKREF,
mgl@1371
 33137
+  BFD_RELOC_PPC_EMB_RELSEC16,
mgl@1371
 33138
+  BFD_RELOC_PPC_EMB_RELST_LO,
mgl@1371
 33139
+  BFD_RELOC_PPC_EMB_RELST_HI,
mgl@1371
 33140
+  BFD_RELOC_PPC_EMB_RELST_HA,
mgl@1371
 33141
+  BFD_RELOC_PPC_EMB_BIT_FLD,
mgl@1371
 33142
+  BFD_RELOC_PPC_EMB_RELSDA,
mgl@1371
 33143
+  BFD_RELOC_PPC64_HIGHER,
mgl@1371
 33144
+  BFD_RELOC_PPC64_HIGHER_S,
mgl@1371
 33145
+  BFD_RELOC_PPC64_HIGHEST,
mgl@1371
 33146
+  BFD_RELOC_PPC64_HIGHEST_S,
mgl@1371
 33147
+  BFD_RELOC_PPC64_TOC16_LO,
mgl@1371
 33148
+  BFD_RELOC_PPC64_TOC16_HI,
mgl@1371
 33149
+  BFD_RELOC_PPC64_TOC16_HA,
mgl@1371
 33150
+  BFD_RELOC_PPC64_TOC,
mgl@1371
 33151
+  BFD_RELOC_PPC64_PLTGOT16,
mgl@1371
 33152
+  BFD_RELOC_PPC64_PLTGOT16_LO,
mgl@1371
 33153
+  BFD_RELOC_PPC64_PLTGOT16_HI,
mgl@1371
 33154
+  BFD_RELOC_PPC64_PLTGOT16_HA,
mgl@1371
 33155
+  BFD_RELOC_PPC64_ADDR16_DS,
mgl@1371
 33156
+  BFD_RELOC_PPC64_ADDR16_LO_DS,
mgl@1371
 33157
+  BFD_RELOC_PPC64_GOT16_DS,
mgl@1371
 33158
+  BFD_RELOC_PPC64_GOT16_LO_DS,
mgl@1371
 33159
+  BFD_RELOC_PPC64_PLT16_LO_DS,
mgl@1371
 33160
+  BFD_RELOC_PPC64_SECTOFF_DS,
mgl@1371
 33161
+  BFD_RELOC_PPC64_SECTOFF_LO_DS,
mgl@1371
 33162
+  BFD_RELOC_PPC64_TOC16_DS,
mgl@1371
 33163
+  BFD_RELOC_PPC64_TOC16_LO_DS,
mgl@1371
 33164
+  BFD_RELOC_PPC64_PLTGOT16_DS,
mgl@1371
 33165
+  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
mgl@1371
 33166
+
mgl@1371
 33167
+/* PowerPC and PowerPC64 thread-local storage relocations.  */
mgl@1371
 33168
+  BFD_RELOC_PPC_TLS,
mgl@1371
 33169
+  BFD_RELOC_PPC_DTPMOD,
mgl@1371
 33170
+  BFD_RELOC_PPC_TPREL16,
mgl@1371
 33171
+  BFD_RELOC_PPC_TPREL16_LO,
mgl@1371
 33172
+  BFD_RELOC_PPC_TPREL16_HI,
mgl@1371
 33173
+  BFD_RELOC_PPC_TPREL16_HA,
mgl@1371
 33174
+  BFD_RELOC_PPC_TPREL,
mgl@1371
 33175
+  BFD_RELOC_PPC_DTPREL16,
mgl@1371
 33176
+  BFD_RELOC_PPC_DTPREL16_LO,
mgl@1371
 33177
+  BFD_RELOC_PPC_DTPREL16_HI,
mgl@1371
 33178
+  BFD_RELOC_PPC_DTPREL16_HA,
mgl@1371
 33179
+  BFD_RELOC_PPC_DTPREL,
mgl@1371
 33180
+  BFD_RELOC_PPC_GOT_TLSGD16,
mgl@1371
 33181
+  BFD_RELOC_PPC_GOT_TLSGD16_LO,
mgl@1371
 33182
+  BFD_RELOC_PPC_GOT_TLSGD16_HI,
mgl@1371
 33183
+  BFD_RELOC_PPC_GOT_TLSGD16_HA,
mgl@1371
 33184
+  BFD_RELOC_PPC_GOT_TLSLD16,
mgl@1371
 33185
+  BFD_RELOC_PPC_GOT_TLSLD16_LO,
mgl@1371
 33186
+  BFD_RELOC_PPC_GOT_TLSLD16_HI,
mgl@1371
 33187
+  BFD_RELOC_PPC_GOT_TLSLD16_HA,
mgl@1371
 33188
+  BFD_RELOC_PPC_GOT_TPREL16,
mgl@1371
 33189
+  BFD_RELOC_PPC_GOT_TPREL16_LO,
mgl@1371
 33190
+  BFD_RELOC_PPC_GOT_TPREL16_HI,
mgl@1371
 33191
+  BFD_RELOC_PPC_GOT_TPREL16_HA,
mgl@1371
 33192
+  BFD_RELOC_PPC_GOT_DTPREL16,
mgl@1371
 33193
+  BFD_RELOC_PPC_GOT_DTPREL16_LO,
mgl@1371
 33194
+  BFD_RELOC_PPC_GOT_DTPREL16_HI,
mgl@1371
 33195
+  BFD_RELOC_PPC_GOT_DTPREL16_HA,
mgl@1371
 33196
+  BFD_RELOC_PPC64_TPREL16_DS,
mgl@1371
 33197
+  BFD_RELOC_PPC64_TPREL16_LO_DS,
mgl@1371
 33198
+  BFD_RELOC_PPC64_TPREL16_HIGHER,
mgl@1371
 33199
+  BFD_RELOC_PPC64_TPREL16_HIGHERA,
mgl@1371
 33200
+  BFD_RELOC_PPC64_TPREL16_HIGHEST,
mgl@1371
 33201
+  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
mgl@1371
 33202
+  BFD_RELOC_PPC64_DTPREL16_DS,
mgl@1371
 33203
+  BFD_RELOC_PPC64_DTPREL16_LO_DS,
mgl@1371
 33204
+  BFD_RELOC_PPC64_DTPREL16_HIGHER,
mgl@1371
 33205
+  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
mgl@1371
 33206
+  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
mgl@1371
 33207
+  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
mgl@1371
 33208
+
mgl@1371
 33209
+/* IBM 370/390 relocations  */
mgl@1371
 33210
+  BFD_RELOC_I370_D12,
mgl@1371
 33211
+
mgl@1371
 33212
+/* The type of reloc used to build a constructor table - at the moment
mgl@1371
 33213
+probably a 32 bit wide absolute relocation, but the target can choose.
mgl@1371
 33214
+It generally does map to one of the other relocation types.  */
mgl@1371
 33215
+  BFD_RELOC_CTOR,
mgl@1371
 33216
+
mgl@1371
 33217
+/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
mgl@1371
 33218
+not stored in the instruction.  */
mgl@1371
 33219
+  BFD_RELOC_ARM_PCREL_BRANCH,
mgl@1371
 33220
+
mgl@1371
 33221
+/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
mgl@1371
 33222
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
mgl@1371
 33223
+field in the instruction.  */
mgl@1371
 33224
+  BFD_RELOC_ARM_PCREL_BLX,
mgl@1371
 33225
+
mgl@1371
 33226
+/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
mgl@1371
 33227
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
mgl@1371
 33228
+field in the instruction.  */
mgl@1371
 33229
+  BFD_RELOC_THUMB_PCREL_BLX,
mgl@1371
 33230
+
mgl@1371
 33231
+/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
mgl@1371
 33232
+  BFD_RELOC_ARM_PCREL_CALL,
mgl@1371
 33233
+
mgl@1371
 33234
+/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
mgl@1371
 33235
+  BFD_RELOC_ARM_PCREL_JUMP,
mgl@1371
 33236
+
mgl@1371
 33237
+/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
mgl@1371
 33238
+The lowest bit must be zero and is not stored in the instruction.
mgl@1371
 33239
+Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
mgl@1371
 33240
+"nn" one smaller in all cases.  Note further that BRANCH23
mgl@1371
 33241
+corresponds to R_ARM_THM_CALL.  */
mgl@1371
 33242
+  BFD_RELOC_THUMB_PCREL_BRANCH7,
mgl@1371
 33243
+  BFD_RELOC_THUMB_PCREL_BRANCH9,
mgl@1371
 33244
+  BFD_RELOC_THUMB_PCREL_BRANCH12,
mgl@1371
 33245
+  BFD_RELOC_THUMB_PCREL_BRANCH20,
mgl@1371
 33246
+  BFD_RELOC_THUMB_PCREL_BRANCH23,
mgl@1371
 33247
+  BFD_RELOC_THUMB_PCREL_BRANCH25,
mgl@1371
 33248
+
mgl@1371
 33249
+/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
mgl@1371
 33250
+  BFD_RELOC_ARM_OFFSET_IMM,
mgl@1371
 33251
+
mgl@1371
 33252
+/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
mgl@1371
 33253
+  BFD_RELOC_ARM_THUMB_OFFSET,
mgl@1371
 33254
+
mgl@1371
 33255
+/* Pc-relative or absolute relocation depending on target.  Used for
mgl@1371
 33256
+entries in .init_array sections.  */
mgl@1371
 33257
+  BFD_RELOC_ARM_TARGET1,
mgl@1371
 33258
+
mgl@1371
 33259
+/* Read-only segment base relative address.  */
mgl@1371
 33260
+  BFD_RELOC_ARM_ROSEGREL32,
mgl@1371
 33261
+
mgl@1371
 33262
+/* Data segment base relative address.  */
mgl@1371
 33263
+  BFD_RELOC_ARM_SBREL32,
mgl@1371
 33264
+
mgl@1371
 33265
+/* This reloc is used for references to RTTI data from exception handling
mgl@1371
 33266
+tables.  The actual definition depends on the target.  It may be a
mgl@1371
 33267
+pc-relative or some form of GOT-indirect relocation.  */
mgl@1371
 33268
+  BFD_RELOC_ARM_TARGET2,
mgl@1371
 33269
+
mgl@1371
 33270
+/* 31-bit PC relative address.  */
mgl@1371
 33271
+  BFD_RELOC_ARM_PREL31,
mgl@1371
 33272
+
mgl@1371
 33273
+/* Low and High halfword relocations for MOVW and MOVT instructions.  */
mgl@1371
 33274
+  BFD_RELOC_ARM_MOVW,
mgl@1371
 33275
+  BFD_RELOC_ARM_MOVT,
mgl@1371
 33276
+  BFD_RELOC_ARM_MOVW_PCREL,
mgl@1371
 33277
+  BFD_RELOC_ARM_MOVT_PCREL,
mgl@1371
 33278
+  BFD_RELOC_ARM_THUMB_MOVW,
mgl@1371
 33279
+  BFD_RELOC_ARM_THUMB_MOVT,
mgl@1371
 33280
+  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
mgl@1371
 33281
+  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
mgl@1371
 33282
+
mgl@1371
 33283
+/* Relocations for setting up GOTs and PLTs for shared libraries.  */
mgl@1371
 33284
+  BFD_RELOC_ARM_JUMP_SLOT,
mgl@1371
 33285
+  BFD_RELOC_ARM_GLOB_DAT,
mgl@1371
 33286
+  BFD_RELOC_ARM_GOT32,
mgl@1371
 33287
+  BFD_RELOC_ARM_PLT32,
mgl@1371
 33288
+  BFD_RELOC_ARM_RELATIVE,
mgl@1371
 33289
+  BFD_RELOC_ARM_GOTOFF,
mgl@1371
 33290
+  BFD_RELOC_ARM_GOTPC,
mgl@1371
 33291
+
mgl@1371
 33292
+/* ARM thread-local storage relocations.  */
mgl@1371
 33293
+  BFD_RELOC_ARM_TLS_GD32,
mgl@1371
 33294
+  BFD_RELOC_ARM_TLS_LDO32,
mgl@1371
 33295
+  BFD_RELOC_ARM_TLS_LDM32,
mgl@1371
 33296
+  BFD_RELOC_ARM_TLS_DTPOFF32,
mgl@1371
 33297
+  BFD_RELOC_ARM_TLS_DTPMOD32,
mgl@1371
 33298
+  BFD_RELOC_ARM_TLS_TPOFF32,
mgl@1371
 33299
+  BFD_RELOC_ARM_TLS_IE32,
mgl@1371
 33300
+  BFD_RELOC_ARM_TLS_LE32,
mgl@1371
 33301
+
mgl@1371
 33302
+/* ARM group relocations.  */
mgl@1371
 33303
+  BFD_RELOC_ARM_ALU_PC_G0_NC,
mgl@1371
 33304
+  BFD_RELOC_ARM_ALU_PC_G0,
mgl@1371
 33305
+  BFD_RELOC_ARM_ALU_PC_G1_NC,
mgl@1371
 33306
+  BFD_RELOC_ARM_ALU_PC_G1,
mgl@1371
 33307
+  BFD_RELOC_ARM_ALU_PC_G2,
mgl@1371
 33308
+  BFD_RELOC_ARM_LDR_PC_G0,
mgl@1371
 33309
+  BFD_RELOC_ARM_LDR_PC_G1,
mgl@1371
 33310
+  BFD_RELOC_ARM_LDR_PC_G2,
mgl@1371
 33311
+  BFD_RELOC_ARM_LDRS_PC_G0,
mgl@1371
 33312
+  BFD_RELOC_ARM_LDRS_PC_G1,
mgl@1371
 33313
+  BFD_RELOC_ARM_LDRS_PC_G2,
mgl@1371
 33314
+  BFD_RELOC_ARM_LDC_PC_G0,
mgl@1371
 33315
+  BFD_RELOC_ARM_LDC_PC_G1,
mgl@1371
 33316
+  BFD_RELOC_ARM_LDC_PC_G2,
mgl@1371
 33317
+  BFD_RELOC_ARM_ALU_SB_G0_NC,
mgl@1371
 33318
+  BFD_RELOC_ARM_ALU_SB_G0,
mgl@1371
 33319
+  BFD_RELOC_ARM_ALU_SB_G1_NC,
mgl@1371
 33320
+  BFD_RELOC_ARM_ALU_SB_G1,
mgl@1371
 33321
+  BFD_RELOC_ARM_ALU_SB_G2,
mgl@1371
 33322
+  BFD_RELOC_ARM_LDR_SB_G0,
mgl@1371
 33323
+  BFD_RELOC_ARM_LDR_SB_G1,
mgl@1371
 33324
+  BFD_RELOC_ARM_LDR_SB_G2,
mgl@1371
 33325
+  BFD_RELOC_ARM_LDRS_SB_G0,
mgl@1371
 33326
+  BFD_RELOC_ARM_LDRS_SB_G1,
mgl@1371
 33327
+  BFD_RELOC_ARM_LDRS_SB_G2,
mgl@1371
 33328
+  BFD_RELOC_ARM_LDC_SB_G0,
mgl@1371
 33329
+  BFD_RELOC_ARM_LDC_SB_G1,
mgl@1371
 33330
+  BFD_RELOC_ARM_LDC_SB_G2,
mgl@1371
 33331
+
mgl@1371
 33332
+/* These relocs are only used within the ARM assembler.  They are not
mgl@1371
 33333
+(at present) written to any object files.  */
mgl@1371
 33334
+  BFD_RELOC_ARM_IMMEDIATE,
mgl@1371
 33335
+  BFD_RELOC_ARM_ADRL_IMMEDIATE,
mgl@1371
 33336
+  BFD_RELOC_ARM_T32_IMMEDIATE,
mgl@1371
 33337
+  BFD_RELOC_ARM_T32_ADD_IMM,
mgl@1371
 33338
+  BFD_RELOC_ARM_T32_IMM12,
mgl@1371
 33339
+  BFD_RELOC_ARM_T32_ADD_PC12,
mgl@1371
 33340
+  BFD_RELOC_ARM_SHIFT_IMM,
mgl@1371
 33341
+  BFD_RELOC_ARM_SMC,
mgl@1371
 33342
+  BFD_RELOC_ARM_SWI,
mgl@1371
 33343
+  BFD_RELOC_ARM_MULTI,
mgl@1371
 33344
+  BFD_RELOC_ARM_CP_OFF_IMM,
mgl@1371
 33345
+  BFD_RELOC_ARM_CP_OFF_IMM_S2,
mgl@1371
 33346
+  BFD_RELOC_ARM_T32_CP_OFF_IMM,
mgl@1371
 33347
+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
mgl@1371
 33348
+  BFD_RELOC_ARM_ADR_IMM,
mgl@1371
 33349
+  BFD_RELOC_ARM_LDR_IMM,
mgl@1371
 33350
+  BFD_RELOC_ARM_LITERAL,
mgl@1371
 33351
+  BFD_RELOC_ARM_IN_POOL,
mgl@1371
 33352
+  BFD_RELOC_ARM_OFFSET_IMM8,
mgl@1371
 33353
+  BFD_RELOC_ARM_T32_OFFSET_U8,
mgl@1371
 33354
+  BFD_RELOC_ARM_T32_OFFSET_IMM,
mgl@1371
 33355
+  BFD_RELOC_ARM_HWLITERAL,
mgl@1371
 33356
+  BFD_RELOC_ARM_THUMB_ADD,
mgl@1371
 33357
+  BFD_RELOC_ARM_THUMB_IMM,
mgl@1371
 33358
+  BFD_RELOC_ARM_THUMB_SHIFT,
mgl@1371
 33359
+
mgl@1371
 33360
+/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
mgl@1371
 33361
+  BFD_RELOC_SH_PCDISP8BY2,
mgl@1371
 33362
+  BFD_RELOC_SH_PCDISP12BY2,
mgl@1371
 33363
+  BFD_RELOC_SH_IMM3,
mgl@1371
 33364
+  BFD_RELOC_SH_IMM3U,
mgl@1371
 33365
+  BFD_RELOC_SH_DISP12,
mgl@1371
 33366
+  BFD_RELOC_SH_DISP12BY2,
mgl@1371
 33367
+  BFD_RELOC_SH_DISP12BY4,
mgl@1371
 33368
+  BFD_RELOC_SH_DISP12BY8,
mgl@1371
 33369
+  BFD_RELOC_SH_DISP20,
mgl@1371
 33370
+  BFD_RELOC_SH_DISP20BY8,
mgl@1371
 33371
+  BFD_RELOC_SH_IMM4,
mgl@1371
 33372
+  BFD_RELOC_SH_IMM4BY2,
mgl@1371
 33373
+  BFD_RELOC_SH_IMM4BY4,
mgl@1371
 33374
+  BFD_RELOC_SH_IMM8,
mgl@1371
 33375
+  BFD_RELOC_SH_IMM8BY2,
mgl@1371
 33376
+  BFD_RELOC_SH_IMM8BY4,
mgl@1371
 33377
+  BFD_RELOC_SH_PCRELIMM8BY2,
mgl@1371
 33378
+  BFD_RELOC_SH_PCRELIMM8BY4,
mgl@1371
 33379
+  BFD_RELOC_SH_SWITCH16,
mgl@1371
 33380
+  BFD_RELOC_SH_SWITCH32,
mgl@1371
 33381
+  BFD_RELOC_SH_USES,
mgl@1371
 33382
+  BFD_RELOC_SH_COUNT,
mgl@1371
 33383
+  BFD_RELOC_SH_ALIGN,
mgl@1371
 33384
+  BFD_RELOC_SH_CODE,
mgl@1371
 33385
+  BFD_RELOC_SH_DATA,
mgl@1371
 33386
+  BFD_RELOC_SH_LABEL,
mgl@1371
 33387
+  BFD_RELOC_SH_LOOP_START,
mgl@1371
 33388
+  BFD_RELOC_SH_LOOP_END,
mgl@1371
 33389
+  BFD_RELOC_SH_COPY,
mgl@1371
 33390
+  BFD_RELOC_SH_GLOB_DAT,
mgl@1371
 33391
+  BFD_RELOC_SH_JMP_SLOT,
mgl@1371
 33392
+  BFD_RELOC_SH_RELATIVE,
mgl@1371
 33393
+  BFD_RELOC_SH_GOTPC,
mgl@1371
 33394
+  BFD_RELOC_SH_GOT_LOW16,
mgl@1371
 33395
+  BFD_RELOC_SH_GOT_MEDLOW16,
mgl@1371
 33396
+  BFD_RELOC_SH_GOT_MEDHI16,
mgl@1371
 33397
+  BFD_RELOC_SH_GOT_HI16,
mgl@1371
 33398
+  BFD_RELOC_SH_GOTPLT_LOW16,
mgl@1371
 33399
+  BFD_RELOC_SH_GOTPLT_MEDLOW16,
mgl@1371
 33400
+  BFD_RELOC_SH_GOTPLT_MEDHI16,
mgl@1371
 33401
+  BFD_RELOC_SH_GOTPLT_HI16,
mgl@1371
 33402
+  BFD_RELOC_SH_PLT_LOW16,
mgl@1371
 33403
+  BFD_RELOC_SH_PLT_MEDLOW16,
mgl@1371
 33404
+  BFD_RELOC_SH_PLT_MEDHI16,
mgl@1371
 33405
+  BFD_RELOC_SH_PLT_HI16,
mgl@1371
 33406
+  BFD_RELOC_SH_GOTOFF_LOW16,
mgl@1371
 33407
+  BFD_RELOC_SH_GOTOFF_MEDLOW16,
mgl@1371
 33408
+  BFD_RELOC_SH_GOTOFF_MEDHI16,
mgl@1371
 33409
+  BFD_RELOC_SH_GOTOFF_HI16,
mgl@1371
 33410
+  BFD_RELOC_SH_GOTPC_LOW16,
mgl@1371
 33411
+  BFD_RELOC_SH_GOTPC_MEDLOW16,
mgl@1371
 33412
+  BFD_RELOC_SH_GOTPC_MEDHI16,
mgl@1371
 33413
+  BFD_RELOC_SH_GOTPC_HI16,
mgl@1371
 33414
+  BFD_RELOC_SH_COPY64,
mgl@1371
 33415
+  BFD_RELOC_SH_GLOB_DAT64,
mgl@1371
 33416
+  BFD_RELOC_SH_JMP_SLOT64,
mgl@1371
 33417
+  BFD_RELOC_SH_RELATIVE64,
mgl@1371
 33418
+  BFD_RELOC_SH_GOT10BY4,
mgl@1371
 33419
+  BFD_RELOC_SH_GOT10BY8,
mgl@1371
 33420
+  BFD_RELOC_SH_GOTPLT10BY4,
mgl@1371
 33421
+  BFD_RELOC_SH_GOTPLT10BY8,
mgl@1371
 33422
+  BFD_RELOC_SH_GOTPLT32,
mgl@1371
 33423
+  BFD_RELOC_SH_SHMEDIA_CODE,
mgl@1371
 33424
+  BFD_RELOC_SH_IMMU5,
mgl@1371
 33425
+  BFD_RELOC_SH_IMMS6,
mgl@1371
 33426
+  BFD_RELOC_SH_IMMS6BY32,
mgl@1371
 33427
+  BFD_RELOC_SH_IMMU6,
mgl@1371
 33428
+  BFD_RELOC_SH_IMMS10,
mgl@1371
 33429
+  BFD_RELOC_SH_IMMS10BY2,
mgl@1371
 33430
+  BFD_RELOC_SH_IMMS10BY4,
mgl@1371
 33431
+  BFD_RELOC_SH_IMMS10BY8,
mgl@1371
 33432
+  BFD_RELOC_SH_IMMS16,
mgl@1371
 33433
+  BFD_RELOC_SH_IMMU16,
mgl@1371
 33434
+  BFD_RELOC_SH_IMM_LOW16,
mgl@1371
 33435
+  BFD_RELOC_SH_IMM_LOW16_PCREL,
mgl@1371
 33436
+  BFD_RELOC_SH_IMM_MEDLOW16,
mgl@1371
 33437
+  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
mgl@1371
 33438
+  BFD_RELOC_SH_IMM_MEDHI16,
mgl@1371
 33439
+  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
mgl@1371
 33440
+  BFD_RELOC_SH_IMM_HI16,
mgl@1371
 33441
+  BFD_RELOC_SH_IMM_HI16_PCREL,
mgl@1371
 33442
+  BFD_RELOC_SH_PT_16,
mgl@1371
 33443
+  BFD_RELOC_SH_TLS_GD_32,
mgl@1371
 33444
+  BFD_RELOC_SH_TLS_LD_32,
mgl@1371
 33445
+  BFD_RELOC_SH_TLS_LDO_32,
mgl@1371
 33446
+  BFD_RELOC_SH_TLS_IE_32,
mgl@1371
 33447
+  BFD_RELOC_SH_TLS_LE_32,
mgl@1371
 33448
+  BFD_RELOC_SH_TLS_DTPMOD32,
mgl@1371
 33449
+  BFD_RELOC_SH_TLS_DTPOFF32,
mgl@1371
 33450
+  BFD_RELOC_SH_TLS_TPOFF32,
mgl@1371
 33451
+
mgl@1371
 33452
+/* ARC Cores relocs.
mgl@1371
 33453
+ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
mgl@1371
 33454
+not stored in the instruction.  The high 20 bits are installed in bits 26
mgl@1371
 33455
+through 7 of the instruction.  */
mgl@1371
 33456
+  BFD_RELOC_ARC_B22_PCREL,
mgl@1371
 33457
+
mgl@1371
 33458
+/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
mgl@1371
 33459
+stored in the instruction.  The high 24 bits are installed in bits 23
mgl@1371
 33460
+through 0.  */
mgl@1371
 33461
+  BFD_RELOC_ARC_B26,
mgl@1371
 33462
+
mgl@1371
 33463
+/* ADI Blackfin 16 bit immediate absolute reloc.  */
mgl@1371
 33464
+  BFD_RELOC_BFIN_16_IMM,
mgl@1371
 33465
+
mgl@1371
 33466
+/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
mgl@1371
 33467
+  BFD_RELOC_BFIN_16_HIGH,
mgl@1371
 33468
+
mgl@1371
 33469
+/* ADI Blackfin 'a' part of LSETUP.  */
mgl@1371
 33470
+  BFD_RELOC_BFIN_4_PCREL,
mgl@1371
 33471
+
mgl@1371
 33472
+/* ADI Blackfin.  */
mgl@1371
 33473
+  BFD_RELOC_BFIN_5_PCREL,
mgl@1371
 33474
+
mgl@1371
 33475
+/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
mgl@1371
 33476
+  BFD_RELOC_BFIN_16_LOW,
mgl@1371
 33477
+
mgl@1371
 33478
+/* ADI Blackfin.  */
mgl@1371
 33479
+  BFD_RELOC_BFIN_10_PCREL,
mgl@1371
 33480
+
mgl@1371
 33481
+/* ADI Blackfin 'b' part of LSETUP.  */
mgl@1371
 33482
+  BFD_RELOC_BFIN_11_PCREL,
mgl@1371
 33483
+
mgl@1371
 33484
+/* ADI Blackfin.  */
mgl@1371
 33485
+  BFD_RELOC_BFIN_12_PCREL_JUMP,
mgl@1371
 33486
+
mgl@1371
 33487
+/* ADI Blackfin Short jump, pcrel.  */
mgl@1371
 33488
+  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
mgl@1371
 33489
+
mgl@1371
 33490
+/* ADI Blackfin Call.x not implemented.  */
mgl@1371
 33491
+  BFD_RELOC_BFIN_24_PCREL_CALL_X,
mgl@1371
 33492
+
mgl@1371
 33493
+/* ADI Blackfin Long Jump pcrel.  */
mgl@1371
 33494
+  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
mgl@1371
 33495
+
mgl@1371
 33496
+/* ADI Blackfin FD-PIC relocations.  */
mgl@1371
 33497
+  BFD_RELOC_BFIN_GOT17M4,
mgl@1371
 33498
+  BFD_RELOC_BFIN_GOTHI,
mgl@1371
 33499
+  BFD_RELOC_BFIN_GOTLO,
mgl@1371
 33500
+  BFD_RELOC_BFIN_FUNCDESC,
mgl@1371
 33501
+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
mgl@1371
 33502
+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
mgl@1371
 33503
+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
mgl@1371
 33504
+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
mgl@1371
 33505
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
mgl@1371
 33506
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
mgl@1371
 33507
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
mgl@1371
 33508
+  BFD_RELOC_BFIN_GOTOFF17M4,
mgl@1371
 33509
+  BFD_RELOC_BFIN_GOTOFFHI,
mgl@1371
 33510
+  BFD_RELOC_BFIN_GOTOFFLO,
mgl@1371
 33511
+
mgl@1371
 33512
+/* ADI Blackfin GOT relocation.  */
mgl@1371
 33513
+  BFD_RELOC_BFIN_GOT,
mgl@1371
 33514
+
mgl@1371
 33515
+/* ADI Blackfin PLTPC relocation.  */
mgl@1371
 33516
+  BFD_RELOC_BFIN_PLTPC,
mgl@1371
 33517
+
mgl@1371
 33518
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33519
+  BFD_ARELOC_BFIN_PUSH,
mgl@1371
 33520
+
mgl@1371
 33521
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33522
+  BFD_ARELOC_BFIN_CONST,
mgl@1371
 33523
+
mgl@1371
 33524
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33525
+  BFD_ARELOC_BFIN_ADD,
mgl@1371
 33526
+
mgl@1371
 33527
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33528
+  BFD_ARELOC_BFIN_SUB,
mgl@1371
 33529
+
mgl@1371
 33530
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33531
+  BFD_ARELOC_BFIN_MULT,
mgl@1371
 33532
+
mgl@1371
 33533
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33534
+  BFD_ARELOC_BFIN_DIV,
mgl@1371
 33535
+
mgl@1371
 33536
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33537
+  BFD_ARELOC_BFIN_MOD,
mgl@1371
 33538
+
mgl@1371
 33539
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33540
+  BFD_ARELOC_BFIN_LSHIFT,
mgl@1371
 33541
+
mgl@1371
 33542
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33543
+  BFD_ARELOC_BFIN_RSHIFT,
mgl@1371
 33544
+
mgl@1371
 33545
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33546
+  BFD_ARELOC_BFIN_AND,
mgl@1371
 33547
+
mgl@1371
 33548
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33549
+  BFD_ARELOC_BFIN_OR,
mgl@1371
 33550
+
mgl@1371
 33551
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33552
+  BFD_ARELOC_BFIN_XOR,
mgl@1371
 33553
+
mgl@1371
 33554
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33555
+  BFD_ARELOC_BFIN_LAND,
mgl@1371
 33556
+
mgl@1371
 33557
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33558
+  BFD_ARELOC_BFIN_LOR,
mgl@1371
 33559
+
mgl@1371
 33560
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33561
+  BFD_ARELOC_BFIN_LEN,
mgl@1371
 33562
+
mgl@1371
 33563
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33564
+  BFD_ARELOC_BFIN_NEG,
mgl@1371
 33565
+
mgl@1371
 33566
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33567
+  BFD_ARELOC_BFIN_COMP,
mgl@1371
 33568
+
mgl@1371
 33569
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33570
+  BFD_ARELOC_BFIN_PAGE,
mgl@1371
 33571
+
mgl@1371
 33572
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33573
+  BFD_ARELOC_BFIN_HWPAGE,
mgl@1371
 33574
+
mgl@1371
 33575
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 33576
+  BFD_ARELOC_BFIN_ADDR,
mgl@1371
 33577
+
mgl@1371
 33578
+/* Mitsubishi D10V relocs.
mgl@1371
 33579
+This is a 10-bit reloc with the right 2 bits
mgl@1371
 33580
+assumed to be 0.  */
mgl@1371
 33581
+  BFD_RELOC_D10V_10_PCREL_R,
mgl@1371
 33582
+
mgl@1371
 33583
+/* Mitsubishi D10V relocs.
mgl@1371
 33584
+This is a 10-bit reloc with the right 2 bits
mgl@1371
 33585
+assumed to be 0.  This is the same as the previous reloc
mgl@1371
 33586
+except it is in the left container, i.e.,
mgl@1371
 33587
+shifted left 15 bits.  */
mgl@1371
 33588
+  BFD_RELOC_D10V_10_PCREL_L,
mgl@1371
 33589
+
mgl@1371
 33590
+/* This is an 18-bit reloc with the right 2 bits
mgl@1371
 33591
+assumed to be 0.  */
mgl@1371
 33592
+  BFD_RELOC_D10V_18,
mgl@1371
 33593
+
mgl@1371
 33594
+/* This is an 18-bit reloc with the right 2 bits
mgl@1371
 33595
+assumed to be 0.  */
mgl@1371
 33596
+  BFD_RELOC_D10V_18_PCREL,
mgl@1371
 33597
+
mgl@1371
 33598
+/* Mitsubishi D30V relocs.
mgl@1371
 33599
+This is a 6-bit absolute reloc.  */
mgl@1371
 33600
+  BFD_RELOC_D30V_6,
mgl@1371
 33601
+
mgl@1371
 33602
+/* This is a 6-bit pc-relative reloc with
mgl@1371
 33603
+the right 3 bits assumed to be 0.  */
mgl@1371
 33604
+  BFD_RELOC_D30V_9_PCREL,
mgl@1371
 33605
+
mgl@1371
 33606
+/* This is a 6-bit pc-relative reloc with
mgl@1371
 33607
+the right 3 bits assumed to be 0. Same
mgl@1371
 33608
+as the previous reloc but on the right side
mgl@1371
 33609
+of the container.  */
mgl@1371
 33610
+  BFD_RELOC_D30V_9_PCREL_R,
mgl@1371
 33611
+
mgl@1371
 33612
+/* This is a 12-bit absolute reloc with the
mgl@1371
 33613
+right 3 bitsassumed to be 0.  */
mgl@1371
 33614
+  BFD_RELOC_D30V_15,
mgl@1371
 33615
+
mgl@1371
 33616
+/* This is a 12-bit pc-relative reloc with
mgl@1371
 33617
+the right 3 bits assumed to be 0.  */
mgl@1371
 33618
+  BFD_RELOC_D30V_15_PCREL,
mgl@1371
 33619
+
mgl@1371
 33620
+/* This is a 12-bit pc-relative reloc with
mgl@1371
 33621
+the right 3 bits assumed to be 0. Same
mgl@1371
 33622
+as the previous reloc but on the right side
mgl@1371
 33623
+of the container.  */
mgl@1371
 33624
+  BFD_RELOC_D30V_15_PCREL_R,
mgl@1371
 33625
+
mgl@1371
 33626
+/* This is an 18-bit absolute reloc with
mgl@1371
 33627
+the right 3 bits assumed to be 0.  */
mgl@1371
 33628
+  BFD_RELOC_D30V_21,
mgl@1371
 33629
+
mgl@1371
 33630
+/* This is an 18-bit pc-relative reloc with
mgl@1371
 33631
+the right 3 bits assumed to be 0.  */
mgl@1371
 33632
+  BFD_RELOC_D30V_21_PCREL,
mgl@1371
 33633
+
mgl@1371
 33634
+/* This is an 18-bit pc-relative reloc with
mgl@1371
 33635
+the right 3 bits assumed to be 0. Same
mgl@1371
 33636
+as the previous reloc but on the right side
mgl@1371
 33637
+of the container.  */
mgl@1371
 33638
+  BFD_RELOC_D30V_21_PCREL_R,
mgl@1371
 33639
+
mgl@1371
 33640
+/* This is a 32-bit absolute reloc.  */
mgl@1371
 33641
+  BFD_RELOC_D30V_32,
mgl@1371
 33642
+
mgl@1371
 33643
+/* This is a 32-bit pc-relative reloc.  */
mgl@1371
 33644
+  BFD_RELOC_D30V_32_PCREL,
mgl@1371
 33645
+
mgl@1371
 33646
+/* DLX relocs  */
mgl@1371
 33647
+  BFD_RELOC_DLX_HI16_S,
mgl@1371
 33648
+
mgl@1371
 33649
+/* DLX relocs  */
mgl@1371
 33650
+  BFD_RELOC_DLX_LO16,
mgl@1371
 33651
+
mgl@1371
 33652
+/* DLX relocs  */
mgl@1371
 33653
+  BFD_RELOC_DLX_JMP26,
mgl@1371
 33654
+
mgl@1371
 33655
+/* Renesas M16C/M32C Relocations.  */
mgl@1371
 33656
+  BFD_RELOC_M32C_HI8,
mgl@1371
 33657
+  BFD_RELOC_M32C_RL_JUMP,
mgl@1371
 33658
+  BFD_RELOC_M32C_RL_1ADDR,
mgl@1371
 33659
+  BFD_RELOC_M32C_RL_2ADDR,
mgl@1371
 33660
+
mgl@1371
 33661
+/* Renesas M32R (formerly Mitsubishi M32R) relocs.
mgl@1371
 33662
+This is a 24 bit absolute address.  */
mgl@1371
 33663
+  BFD_RELOC_M32R_24,
mgl@1371
 33664
+
mgl@1371
 33665
+/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 33666
+  BFD_RELOC_M32R_10_PCREL,
mgl@1371
 33667
+
mgl@1371
 33668
+/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 33669
+  BFD_RELOC_M32R_18_PCREL,
mgl@1371
 33670
+
mgl@1371
 33671
+/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 33672
+  BFD_RELOC_M32R_26_PCREL,
mgl@1371
 33673
+
mgl@1371
 33674
+/* This is a 16-bit reloc containing the high 16 bits of an address
mgl@1371
 33675
+used when the lower 16 bits are treated as unsigned.  */
mgl@1371
 33676
+  BFD_RELOC_M32R_HI16_ULO,
mgl@1371
 33677
+
mgl@1371
 33678
+/* This is a 16-bit reloc containing the high 16 bits of an address
mgl@1371
 33679
+used when the lower 16 bits are treated as signed.  */
mgl@1371
 33680
+  BFD_RELOC_M32R_HI16_SLO,
mgl@1371
 33681
+
mgl@1371
 33682
+/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
mgl@1371
 33683
+  BFD_RELOC_M32R_LO16,
mgl@1371
 33684
+
mgl@1371
 33685
+/* This is a 16-bit reloc containing the small data area offset for use in
mgl@1371
 33686
+add3, load, and store instructions.  */
mgl@1371
 33687
+  BFD_RELOC_M32R_SDA16,
mgl@1371
 33688
+
mgl@1371
 33689
+/* For PIC.  */
mgl@1371
 33690
+  BFD_RELOC_M32R_GOT24,
mgl@1371
 33691
+  BFD_RELOC_M32R_26_PLTREL,
mgl@1371
 33692
+  BFD_RELOC_M32R_COPY,
mgl@1371
 33693
+  BFD_RELOC_M32R_GLOB_DAT,
mgl@1371
 33694
+  BFD_RELOC_M32R_JMP_SLOT,
mgl@1371
 33695
+  BFD_RELOC_M32R_RELATIVE,
mgl@1371
 33696
+  BFD_RELOC_M32R_GOTOFF,
mgl@1371
 33697
+  BFD_RELOC_M32R_GOTOFF_HI_ULO,
mgl@1371
 33698
+  BFD_RELOC_M32R_GOTOFF_HI_SLO,
mgl@1371
 33699
+  BFD_RELOC_M32R_GOTOFF_LO,
mgl@1371
 33700
+  BFD_RELOC_M32R_GOTPC24,
mgl@1371
 33701
+  BFD_RELOC_M32R_GOT16_HI_ULO,
mgl@1371
 33702
+  BFD_RELOC_M32R_GOT16_HI_SLO,
mgl@1371
 33703
+  BFD_RELOC_M32R_GOT16_LO,
mgl@1371
 33704
+  BFD_RELOC_M32R_GOTPC_HI_ULO,
mgl@1371
 33705
+  BFD_RELOC_M32R_GOTPC_HI_SLO,
mgl@1371
 33706
+  BFD_RELOC_M32R_GOTPC_LO,
mgl@1371
 33707
+
mgl@1371
 33708
+/* This is a 9-bit reloc  */
mgl@1371
 33709
+  BFD_RELOC_V850_9_PCREL,
mgl@1371
 33710
+
mgl@1371
 33711
+/* This is a 22-bit reloc  */
mgl@1371
 33712
+  BFD_RELOC_V850_22_PCREL,
mgl@1371
 33713
+
mgl@1371
 33714
+/* This is a 16 bit offset from the short data area pointer.  */
mgl@1371
 33715
+  BFD_RELOC_V850_SDA_16_16_OFFSET,
mgl@1371
 33716
+
mgl@1371
 33717
+/* This is a 16 bit offset (of which only 15 bits are used) from the
mgl@1371
 33718
+short data area pointer.  */
mgl@1371
 33719
+  BFD_RELOC_V850_SDA_15_16_OFFSET,
mgl@1371
 33720
+
mgl@1371
 33721
+/* This is a 16 bit offset from the zero data area pointer.  */
mgl@1371
 33722
+  BFD_RELOC_V850_ZDA_16_16_OFFSET,
mgl@1371
 33723
+
mgl@1371
 33724
+/* This is a 16 bit offset (of which only 15 bits are used) from the
mgl@1371
 33725
+zero data area pointer.  */
mgl@1371
 33726
+  BFD_RELOC_V850_ZDA_15_16_OFFSET,
mgl@1371
 33727
+
mgl@1371
 33728
+/* This is an 8 bit offset (of which only 6 bits are used) from the
mgl@1371
 33729
+tiny data area pointer.  */
mgl@1371
 33730
+  BFD_RELOC_V850_TDA_6_8_OFFSET,
mgl@1371
 33731
+
mgl@1371
 33732
+/* This is an 8bit offset (of which only 7 bits are used) from the tiny
mgl@1371
 33733
+data area pointer.  */
mgl@1371
 33734
+  BFD_RELOC_V850_TDA_7_8_OFFSET,
mgl@1371
 33735
+
mgl@1371
 33736
+/* This is a 7 bit offset from the tiny data area pointer.  */
mgl@1371
 33737
+  BFD_RELOC_V850_TDA_7_7_OFFSET,
mgl@1371
 33738
+
mgl@1371
 33739
+/* This is a 16 bit offset from the tiny data area pointer.  */
mgl@1371
 33740
+  BFD_RELOC_V850_TDA_16_16_OFFSET,
mgl@1371
 33741
+
mgl@1371
 33742
+/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
mgl@1371
 33743
+data area pointer.  */
mgl@1371
 33744
+  BFD_RELOC_V850_TDA_4_5_OFFSET,
mgl@1371
 33745
+
mgl@1371
 33746
+/* This is a 4 bit offset from the tiny data area pointer.  */
mgl@1371
 33747
+  BFD_RELOC_V850_TDA_4_4_OFFSET,
mgl@1371
 33748
+
mgl@1371
 33749
+/* This is a 16 bit offset from the short data area pointer, with the
mgl@1371
 33750
+bits placed non-contiguously in the instruction.  */
mgl@1371
 33751
+  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
mgl@1371
 33752
+
mgl@1371
 33753
+/* This is a 16 bit offset from the zero data area pointer, with the
mgl@1371
 33754
+bits placed non-contiguously in the instruction.  */
mgl@1371
 33755
+  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
mgl@1371
 33756
+
mgl@1371
 33757
+/* This is a 6 bit offset from the call table base pointer.  */
mgl@1371
 33758
+  BFD_RELOC_V850_CALLT_6_7_OFFSET,
mgl@1371
 33759
+
mgl@1371
 33760
+/* This is a 16 bit offset from the call table base pointer.  */
mgl@1371
 33761
+  BFD_RELOC_V850_CALLT_16_16_OFFSET,
mgl@1371
 33762
+
mgl@1371
 33763
+/* Used for relaxing indirect function calls.  */
mgl@1371
 33764
+  BFD_RELOC_V850_LONGCALL,
mgl@1371
 33765
+
mgl@1371
 33766
+/* Used for relaxing indirect jumps.  */
mgl@1371
 33767
+  BFD_RELOC_V850_LONGJUMP,
mgl@1371
 33768
+
mgl@1371
 33769
+/* Used to maintain alignment whilst relaxing.  */
mgl@1371
 33770
+  BFD_RELOC_V850_ALIGN,
mgl@1371
 33771
+
mgl@1371
 33772
+/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
mgl@1371
 33773
+instructions.  */
mgl@1371
 33774
+  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
mgl@1371
 33775
+
mgl@1371
 33776
+/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
mgl@1371
 33777
+instruction.  */
mgl@1371
 33778
+  BFD_RELOC_MN10300_32_PCREL,
mgl@1371
 33779
+
mgl@1371
 33780
+/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
mgl@1371
 33781
+instruction.  */
mgl@1371
 33782
+  BFD_RELOC_MN10300_16_PCREL,
mgl@1371
 33783
+
mgl@1371
 33784
+/* This is a 8bit DP reloc for the tms320c30, where the most
mgl@1371
 33785
+significant 8 bits of a 24 bit word are placed into the least
mgl@1371
 33786
+significant 8 bits of the opcode.  */
mgl@1371
 33787
+  BFD_RELOC_TIC30_LDP,
mgl@1371
 33788
+
mgl@1371
 33789
+/* This is a 7bit reloc for the tms320c54x, where the least
mgl@1371
 33790
+significant 7 bits of a 16 bit word are placed into the least
mgl@1371
 33791
+significant 7 bits of the opcode.  */
mgl@1371
 33792
+  BFD_RELOC_TIC54X_PARTLS7,
mgl@1371
 33793
+
mgl@1371
 33794
+/* This is a 9bit DP reloc for the tms320c54x, where the most
mgl@1371
 33795
+significant 9 bits of a 16 bit word are placed into the least
mgl@1371
 33796
+significant 9 bits of the opcode.  */
mgl@1371
 33797
+  BFD_RELOC_TIC54X_PARTMS9,
mgl@1371
 33798
+
mgl@1371
 33799
+/* This is an extended address 23-bit reloc for the tms320c54x.  */
mgl@1371
 33800
+  BFD_RELOC_TIC54X_23,
mgl@1371
 33801
+
mgl@1371
 33802
+/* This is a 16-bit reloc for the tms320c54x, where the least
mgl@1371
 33803
+significant 16 bits of a 23-bit extended address are placed into
mgl@1371
 33804
+the opcode.  */
mgl@1371
 33805
+  BFD_RELOC_TIC54X_16_OF_23,
mgl@1371
 33806
+
mgl@1371
 33807
+/* This is a reloc for the tms320c54x, where the most
mgl@1371
 33808
+significant 7 bits of a 23-bit extended address are placed into
mgl@1371
 33809
+the opcode.  */
mgl@1371
 33810
+  BFD_RELOC_TIC54X_MS7_OF_23,
mgl@1371
 33811
+
mgl@1371
 33812
+/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
mgl@1371
 33813
+  BFD_RELOC_FR30_48,
mgl@1371
 33814
+
mgl@1371
 33815
+/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
mgl@1371
 33816
+two sections.  */
mgl@1371
 33817
+  BFD_RELOC_FR30_20,
mgl@1371
 33818
+
mgl@1371
 33819
+/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
mgl@1371
 33820
+4 bits.  */
mgl@1371
 33821
+  BFD_RELOC_FR30_6_IN_4,
mgl@1371
 33822
+
mgl@1371
 33823
+/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
mgl@1371
 33824
+into 8 bits.  */
mgl@1371
 33825
+  BFD_RELOC_FR30_8_IN_8,
mgl@1371
 33826
+
mgl@1371
 33827
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
mgl@1371
 33828
+into 8 bits.  */
mgl@1371
 33829
+  BFD_RELOC_FR30_9_IN_8,
mgl@1371
 33830
+
mgl@1371
 33831
+/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
mgl@1371
 33832
+into 8 bits.  */
mgl@1371
 33833
+  BFD_RELOC_FR30_10_IN_8,
mgl@1371
 33834
+
mgl@1371
 33835
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
mgl@1371
 33836
+short offset into 8 bits.  */
mgl@1371
 33837
+  BFD_RELOC_FR30_9_PCREL,
mgl@1371
 33838
+
mgl@1371
 33839
+/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
mgl@1371
 33840
+short offset into 11 bits.  */
mgl@1371
 33841
+  BFD_RELOC_FR30_12_PCREL,
mgl@1371
 33842
+
mgl@1371
 33843
+/* Motorola Mcore relocations.  */
mgl@1371
 33844
+  BFD_RELOC_MCORE_PCREL_IMM8BY4,
mgl@1371
 33845
+  BFD_RELOC_MCORE_PCREL_IMM11BY2,
mgl@1371
 33846
+  BFD_RELOC_MCORE_PCREL_IMM4BY2,
mgl@1371
 33847
+  BFD_RELOC_MCORE_PCREL_32,
mgl@1371
 33848
+  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
mgl@1371
 33849
+  BFD_RELOC_MCORE_RVA,
mgl@1371
 33850
+
mgl@1371
 33851
+/* Toshiba Media Processor Relocations.  */
mgl@1371
 33852
+  BFD_RELOC_MEP_8,
mgl@1371
 33853
+  BFD_RELOC_MEP_16,
mgl@1371
 33854
+  BFD_RELOC_MEP_32,
mgl@1371
 33855
+  BFD_RELOC_MEP_PCREL8A2,
mgl@1371
 33856
+  BFD_RELOC_MEP_PCREL12A2,
mgl@1371
 33857
+  BFD_RELOC_MEP_PCREL17A2,
mgl@1371
 33858
+  BFD_RELOC_MEP_PCREL24A2,
mgl@1371
 33859
+  BFD_RELOC_MEP_PCABS24A2,
mgl@1371
 33860
+  BFD_RELOC_MEP_LOW16,
mgl@1371
 33861
+  BFD_RELOC_MEP_HI16U,
mgl@1371
 33862
+  BFD_RELOC_MEP_HI16S,
mgl@1371
 33863
+  BFD_RELOC_MEP_GPREL,
mgl@1371
 33864
+  BFD_RELOC_MEP_TPREL,
mgl@1371
 33865
+  BFD_RELOC_MEP_TPREL7,
mgl@1371
 33866
+  BFD_RELOC_MEP_TPREL7A2,
mgl@1371
 33867
+  BFD_RELOC_MEP_TPREL7A4,
mgl@1371
 33868
+  BFD_RELOC_MEP_UIMM24,
mgl@1371
 33869
+  BFD_RELOC_MEP_ADDR24A4,
mgl@1371
 33870
+  BFD_RELOC_MEP_GNU_VTINHERIT,
mgl@1371
 33871
+  BFD_RELOC_MEP_GNU_VTENTRY,
mgl@1371
 33872
+
mgl@1371
 33873
+
mgl@1371
 33874
+/* These are relocations for the GETA instruction.  */
mgl@1371
 33875
+  BFD_RELOC_MMIX_GETA,
mgl@1371
 33876
+  BFD_RELOC_MMIX_GETA_1,
mgl@1371
 33877
+  BFD_RELOC_MMIX_GETA_2,
mgl@1371
 33878
+  BFD_RELOC_MMIX_GETA_3,
mgl@1371
 33879
+
mgl@1371
 33880
+/* These are relocations for a conditional branch instruction.  */
mgl@1371
 33881
+  BFD_RELOC_MMIX_CBRANCH,
mgl@1371
 33882
+  BFD_RELOC_MMIX_CBRANCH_J,
mgl@1371
 33883
+  BFD_RELOC_MMIX_CBRANCH_1,
mgl@1371
 33884
+  BFD_RELOC_MMIX_CBRANCH_2,
mgl@1371
 33885
+  BFD_RELOC_MMIX_CBRANCH_3,
mgl@1371
 33886
+
mgl@1371
 33887
+/* These are relocations for the PUSHJ instruction.  */
mgl@1371
 33888
+  BFD_RELOC_MMIX_PUSHJ,
mgl@1371
 33889
+  BFD_RELOC_MMIX_PUSHJ_1,
mgl@1371
 33890
+  BFD_RELOC_MMIX_PUSHJ_2,
mgl@1371
 33891
+  BFD_RELOC_MMIX_PUSHJ_3,
mgl@1371
 33892
+  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
mgl@1371
 33893
+
mgl@1371
 33894
+/* These are relocations for the JMP instruction.  */
mgl@1371
 33895
+  BFD_RELOC_MMIX_JMP,
mgl@1371
 33896
+  BFD_RELOC_MMIX_JMP_1,
mgl@1371
 33897
+  BFD_RELOC_MMIX_JMP_2,
mgl@1371
 33898
+  BFD_RELOC_MMIX_JMP_3,
mgl@1371
 33899
+
mgl@1371
 33900
+/* This is a relocation for a relative address as in a GETA instruction or
mgl@1371
 33901
+a branch.  */
mgl@1371
 33902
+  BFD_RELOC_MMIX_ADDR19,
mgl@1371
 33903
+
mgl@1371
 33904
+/* This is a relocation for a relative address as in a JMP instruction.  */
mgl@1371
 33905
+  BFD_RELOC_MMIX_ADDR27,
mgl@1371
 33906
+
mgl@1371
 33907
+/* This is a relocation for an instruction field that may be a general
mgl@1371
 33908
+register or a value 0..255.  */
mgl@1371
 33909
+  BFD_RELOC_MMIX_REG_OR_BYTE,
mgl@1371
 33910
+
mgl@1371
 33911
+/* This is a relocation for an instruction field that may be a general
mgl@1371
 33912
+register.  */
mgl@1371
 33913
+  BFD_RELOC_MMIX_REG,
mgl@1371
 33914
+
mgl@1371
 33915
+/* This is a relocation for two instruction fields holding a register and
mgl@1371
 33916
+an offset, the equivalent of the relocation.  */
mgl@1371
 33917
+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
mgl@1371
 33918
+
mgl@1371
 33919
+/* This relocation is an assertion that the expression is not allocated as
mgl@1371
 33920
+a global register.  It does not modify contents.  */
mgl@1371
 33921
+  BFD_RELOC_MMIX_LOCAL,
mgl@1371
 33922
+
mgl@1371
 33923
+/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
mgl@1371
 33924
+short offset into 7 bits.  */
mgl@1371
 33925
+  BFD_RELOC_AVR_7_PCREL,
mgl@1371
 33926
+
mgl@1371
 33927
+/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
mgl@1371
 33928
+short offset into 12 bits.  */
mgl@1371
 33929
+  BFD_RELOC_AVR_13_PCREL,
mgl@1371
 33930
+
mgl@1371
 33931
+/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
mgl@1371
 33932
+program memory address) into 16 bits.  */
mgl@1371
 33933
+  BFD_RELOC_AVR_16_PM,
mgl@1371
 33934
+
mgl@1371
 33935
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
mgl@1371
 33936
+data memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33937
+  BFD_RELOC_AVR_LO8_LDI,
mgl@1371
 33938
+
mgl@1371
 33939
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 33940
+of data memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33941
+  BFD_RELOC_AVR_HI8_LDI,
mgl@1371
 33942
+
mgl@1371
 33943
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 33944
+of program memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33945
+  BFD_RELOC_AVR_HH8_LDI,
mgl@1371
 33946
+
mgl@1371
 33947
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 33948
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33949
+  BFD_RELOC_AVR_MS8_LDI,
mgl@1371
 33950
+
mgl@1371
 33951
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 33952
+(usually data memory address) into 8 bit immediate value of SUBI insn.  */
mgl@1371
 33953
+  BFD_RELOC_AVR_LO8_LDI_NEG,
mgl@1371
 33954
+
mgl@1371
 33955
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 33956
+(high 8 bit of data memory address) into 8 bit immediate value of
mgl@1371
 33957
+SUBI insn.  */
mgl@1371
 33958
+  BFD_RELOC_AVR_HI8_LDI_NEG,
mgl@1371
 33959
+
mgl@1371
 33960
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 33961
+(most high 8 bit of program memory address) into 8 bit immediate value
mgl@1371
 33962
+of LDI or SUBI insn.  */
mgl@1371
 33963
+  BFD_RELOC_AVR_HH8_LDI_NEG,
mgl@1371
 33964
+
mgl@1371
 33965
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
mgl@1371
 33966
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33967
+  BFD_RELOC_AVR_MS8_LDI_NEG,
mgl@1371
 33968
+
mgl@1371
 33969
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
mgl@1371
 33970
+command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33971
+  BFD_RELOC_AVR_LO8_LDI_PM,
mgl@1371
 33972
+
mgl@1371
 33973
+/* This is a 16 bit reloc for the AVR that stores 8 bit value 
mgl@1371
 33974
+(command address) into 8 bit immediate value of LDI insn. If the address
mgl@1371
 33975
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
mgl@1371
 33976
+in the lower 128k.  */
mgl@1371
 33977
+  BFD_RELOC_AVR_LO8_LDI_GS,
mgl@1371
 33978
+
mgl@1371
 33979
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 33980
+of command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33981
+  BFD_RELOC_AVR_HI8_LDI_PM,
mgl@1371
 33982
+
mgl@1371
 33983
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 33984
+of command address) into 8 bit immediate value of LDI insn.  If the address
mgl@1371
 33985
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
mgl@1371
 33986
+below 128k.  */
mgl@1371
 33987
+  BFD_RELOC_AVR_HI8_LDI_GS,
mgl@1371
 33988
+
mgl@1371
 33989
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 33990
+of command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 33991
+  BFD_RELOC_AVR_HH8_LDI_PM,
mgl@1371
 33992
+
mgl@1371
 33993
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 33994
+(usually command address) into 8 bit immediate value of SUBI insn.  */
mgl@1371
 33995
+  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
mgl@1371
 33996
+
mgl@1371
 33997
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 33998
+(high 8 bit of 16 bit command address) into 8 bit immediate value
mgl@1371
 33999
+of SUBI insn.  */
mgl@1371
 34000
+  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
mgl@1371
 34001
+
mgl@1371
 34002
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 34003
+(high 6 bit of 22 bit command address) into 8 bit immediate
mgl@1371
 34004
+value of SUBI insn.  */
mgl@1371
 34005
+  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
mgl@1371
 34006
+
mgl@1371
 34007
+/* This is a 32 bit reloc for the AVR that stores 23 bit value
mgl@1371
 34008
+into 22 bits.  */
mgl@1371
 34009
+  BFD_RELOC_AVR_CALL,
mgl@1371
 34010
+
mgl@1371
 34011
+/* This is a 16 bit reloc for the AVR that stores all needed bits
mgl@1371
 34012
+for absolute addressing with ldi with overflow check to linktime  */
mgl@1371
 34013
+  BFD_RELOC_AVR_LDI,
mgl@1371
 34014
+
mgl@1371
 34015
+/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
mgl@1371
 34016
+instructions  */
mgl@1371
 34017
+  BFD_RELOC_AVR_6,
mgl@1371
 34018
+
mgl@1371
 34019
+/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
mgl@1371
 34020
+instructions  */
mgl@1371
 34021
+  BFD_RELOC_AVR_6_ADIW,
mgl@1371
 34022
+
mgl@1371
 34023
+/* Direct 12 bit.  */
mgl@1371
 34024
+  BFD_RELOC_390_12,
mgl@1371
 34025
+
mgl@1371
 34026
+/* 12 bit GOT offset.  */
mgl@1371
 34027
+  BFD_RELOC_390_GOT12,
mgl@1371
 34028
+
mgl@1371
 34029
+/* 32 bit PC relative PLT address.  */
mgl@1371
 34030
+  BFD_RELOC_390_PLT32,
mgl@1371
 34031
+
mgl@1371
 34032
+/* Copy symbol at runtime.  */
mgl@1371
 34033
+  BFD_RELOC_390_COPY,
mgl@1371
 34034
+
mgl@1371
 34035
+/* Create GOT entry.  */
mgl@1371
 34036
+  BFD_RELOC_390_GLOB_DAT,
mgl@1371
 34037
+
mgl@1371
 34038
+/* Create PLT entry.  */
mgl@1371
 34039
+  BFD_RELOC_390_JMP_SLOT,
mgl@1371
 34040
+
mgl@1371
 34041
+/* Adjust by program base.  */
mgl@1371
 34042
+  BFD_RELOC_390_RELATIVE,
mgl@1371
 34043
+
mgl@1371
 34044
+/* 32 bit PC relative offset to GOT.  */
mgl@1371
 34045
+  BFD_RELOC_390_GOTPC,
mgl@1371
 34046
+
mgl@1371
 34047
+/* 16 bit GOT offset.  */
mgl@1371
 34048
+  BFD_RELOC_390_GOT16,
mgl@1371
 34049
+
mgl@1371
 34050
+/* PC relative 16 bit shifted by 1.  */
mgl@1371
 34051
+  BFD_RELOC_390_PC16DBL,
mgl@1371
 34052
+
mgl@1371
 34053
+/* 16 bit PC rel. PLT shifted by 1.  */
mgl@1371
 34054
+  BFD_RELOC_390_PLT16DBL,
mgl@1371
 34055
+
mgl@1371
 34056
+/* PC relative 32 bit shifted by 1.  */
mgl@1371
 34057
+  BFD_RELOC_390_PC32DBL,
mgl@1371
 34058
+
mgl@1371
 34059
+/* 32 bit PC rel. PLT shifted by 1.  */
mgl@1371
 34060
+  BFD_RELOC_390_PLT32DBL,
mgl@1371
 34061
+
mgl@1371
 34062
+/* 32 bit PC rel. GOT shifted by 1.  */
mgl@1371
 34063
+  BFD_RELOC_390_GOTPCDBL,
mgl@1371
 34064
+
mgl@1371
 34065
+/* 64 bit GOT offset.  */
mgl@1371
 34066
+  BFD_RELOC_390_GOT64,
mgl@1371
 34067
+
mgl@1371
 34068
+/* 64 bit PC relative PLT address.  */
mgl@1371
 34069
+  BFD_RELOC_390_PLT64,
mgl@1371
 34070
+
mgl@1371
 34071
+/* 32 bit rel. offset to GOT entry.  */
mgl@1371
 34072
+  BFD_RELOC_390_GOTENT,
mgl@1371
 34073
+
mgl@1371
 34074
+/* 64 bit offset to GOT.  */
mgl@1371
 34075
+  BFD_RELOC_390_GOTOFF64,
mgl@1371
 34076
+
mgl@1371
 34077
+/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34078
+  BFD_RELOC_390_GOTPLT12,
mgl@1371
 34079
+
mgl@1371
 34080
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34081
+  BFD_RELOC_390_GOTPLT16,
mgl@1371
 34082
+
mgl@1371
 34083
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34084
+  BFD_RELOC_390_GOTPLT32,
mgl@1371
 34085
+
mgl@1371
 34086
+/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34087
+  BFD_RELOC_390_GOTPLT64,
mgl@1371
 34088
+
mgl@1371
 34089
+/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34090
+  BFD_RELOC_390_GOTPLTENT,
mgl@1371
 34091
+
mgl@1371
 34092
+/* 16-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 34093
+  BFD_RELOC_390_PLTOFF16,
mgl@1371
 34094
+
mgl@1371
 34095
+/* 32-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 34096
+  BFD_RELOC_390_PLTOFF32,
mgl@1371
 34097
+
mgl@1371
 34098
+/* 64-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 34099
+  BFD_RELOC_390_PLTOFF64,
mgl@1371
 34100
+
mgl@1371
 34101
+/* s390 tls relocations.  */
mgl@1371
 34102
+  BFD_RELOC_390_TLS_LOAD,
mgl@1371
 34103
+  BFD_RELOC_390_TLS_GDCALL,
mgl@1371
 34104
+  BFD_RELOC_390_TLS_LDCALL,
mgl@1371
 34105
+  BFD_RELOC_390_TLS_GD32,
mgl@1371
 34106
+  BFD_RELOC_390_TLS_GD64,
mgl@1371
 34107
+  BFD_RELOC_390_TLS_GOTIE12,
mgl@1371
 34108
+  BFD_RELOC_390_TLS_GOTIE32,
mgl@1371
 34109
+  BFD_RELOC_390_TLS_GOTIE64,
mgl@1371
 34110
+  BFD_RELOC_390_TLS_LDM32,
mgl@1371
 34111
+  BFD_RELOC_390_TLS_LDM64,
mgl@1371
 34112
+  BFD_RELOC_390_TLS_IE32,
mgl@1371
 34113
+  BFD_RELOC_390_TLS_IE64,
mgl@1371
 34114
+  BFD_RELOC_390_TLS_IEENT,
mgl@1371
 34115
+  BFD_RELOC_390_TLS_LE32,
mgl@1371
 34116
+  BFD_RELOC_390_TLS_LE64,
mgl@1371
 34117
+  BFD_RELOC_390_TLS_LDO32,
mgl@1371
 34118
+  BFD_RELOC_390_TLS_LDO64,
mgl@1371
 34119
+  BFD_RELOC_390_TLS_DTPMOD,
mgl@1371
 34120
+  BFD_RELOC_390_TLS_DTPOFF,
mgl@1371
 34121
+  BFD_RELOC_390_TLS_TPOFF,
mgl@1371
 34122
+
mgl@1371
 34123
+/* Long displacement extension.  */
mgl@1371
 34124
+  BFD_RELOC_390_20,
mgl@1371
 34125
+  BFD_RELOC_390_GOT20,
mgl@1371
 34126
+  BFD_RELOC_390_GOTPLT20,
mgl@1371
 34127
+  BFD_RELOC_390_TLS_GOTIE20,
mgl@1371
 34128
+
mgl@1371
 34129
+/* Score relocations  */
mgl@1371
 34130
+  BFD_RELOC_SCORE_DUMMY1,
mgl@1371
 34131
+
mgl@1371
 34132
+/* Low 16 bit for load/store  */
mgl@1371
 34133
+  BFD_RELOC_SCORE_GPREL15,
mgl@1371
 34134
+
mgl@1371
 34135
+/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 34136
+  BFD_RELOC_SCORE_DUMMY2,
mgl@1371
 34137
+  BFD_RELOC_SCORE_JMP,
mgl@1371
 34138
+
mgl@1371
 34139
+/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 34140
+  BFD_RELOC_SCORE_BRANCH,
mgl@1371
 34141
+
mgl@1371
 34142
+/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 34143
+  BFD_RELOC_SCORE16_JMP,
mgl@1371
 34144
+
mgl@1371
 34145
+/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 34146
+  BFD_RELOC_SCORE16_BRANCH,
mgl@1371
 34147
+
mgl@1371
 34148
+/* Undocumented Score relocs  */
mgl@1371
 34149
+  BFD_RELOC_SCORE_GOT15,
mgl@1371
 34150
+  BFD_RELOC_SCORE_GOT_LO16,
mgl@1371
 34151
+  BFD_RELOC_SCORE_CALL15,
mgl@1371
 34152
+  BFD_RELOC_SCORE_DUMMY_HI16,
mgl@1371
 34153
+
mgl@1371
 34154
+/* Scenix IP2K - 9-bit register number / data address  */
mgl@1371
 34155
+  BFD_RELOC_IP2K_FR9,
mgl@1371
 34156
+
mgl@1371
 34157
+/* Scenix IP2K - 4-bit register/data bank number  */
mgl@1371
 34158
+  BFD_RELOC_IP2K_BANK,
mgl@1371
 34159
+
mgl@1371
 34160
+/* Scenix IP2K - low 13 bits of instruction word address  */
mgl@1371
 34161
+  BFD_RELOC_IP2K_ADDR16CJP,
mgl@1371
 34162
+
mgl@1371
 34163
+/* Scenix IP2K - high 3 bits of instruction word address  */
mgl@1371
 34164
+  BFD_RELOC_IP2K_PAGE3,
mgl@1371
 34165
+
mgl@1371
 34166
+/* Scenix IP2K - ext/low/high 8 bits of data address  */
mgl@1371
 34167
+  BFD_RELOC_IP2K_LO8DATA,
mgl@1371
 34168
+  BFD_RELOC_IP2K_HI8DATA,
mgl@1371
 34169
+  BFD_RELOC_IP2K_EX8DATA,
mgl@1371
 34170
+
mgl@1371
 34171
+/* Scenix IP2K - low/high 8 bits of instruction word address  */
mgl@1371
 34172
+  BFD_RELOC_IP2K_LO8INSN,
mgl@1371
 34173
+  BFD_RELOC_IP2K_HI8INSN,
mgl@1371
 34174
+
mgl@1371
 34175
+/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
mgl@1371
 34176
+  BFD_RELOC_IP2K_PC_SKIP,
mgl@1371
 34177
+
mgl@1371
 34178
+/* Scenix IP2K - 16 bit word address in text section.  */
mgl@1371
 34179
+  BFD_RELOC_IP2K_TEXT,
mgl@1371
 34180
+
mgl@1371
 34181
+/* Scenix IP2K - 7-bit sp or dp offset  */
mgl@1371
 34182
+  BFD_RELOC_IP2K_FR_OFFSET,
mgl@1371
 34183
+
mgl@1371
 34184
+/* Scenix VPE4K coprocessor - data/insn-space addressing  */
mgl@1371
 34185
+  BFD_RELOC_VPE4KMATH_DATA,
mgl@1371
 34186
+  BFD_RELOC_VPE4KMATH_INSN,
mgl@1371
 34187
+
mgl@1371
 34188
+/* These two relocations are used by the linker to determine which of
mgl@1371
 34189
+the entries in a C++ virtual function table are actually used.  When
mgl@1371
 34190
+the --gc-sections option is given, the linker will zero out the entries
mgl@1371
 34191
+that are not used, so that the code for those functions need not be
mgl@1371
 34192
+included in the output.
mgl@1371
 34193
+
mgl@1371
 34194
+VTABLE_INHERIT is a zero-space relocation used to describe to the
mgl@1371
 34195
+linker the inheritance tree of a C++ virtual function table.  The
mgl@1371
 34196
+relocation's symbol should be the parent class' vtable, and the
mgl@1371
 34197
+relocation should be located at the child vtable.
mgl@1371
 34198
+
mgl@1371
 34199
+VTABLE_ENTRY is a zero-space relocation that describes the use of a
mgl@1371
 34200
+virtual function table entry.  The reloc's symbol should refer to the
mgl@1371
 34201
+table of the class mentioned in the code.  Off of that base, an offset
mgl@1371
 34202
+describes the entry that is being used.  For Rela hosts, this offset
mgl@1371
 34203
+is stored in the reloc's addend.  For Rel hosts, we are forced to put
mgl@1371
 34204
+this offset in the reloc's section offset.  */
mgl@1371
 34205
+  BFD_RELOC_VTABLE_INHERIT,
mgl@1371
 34206
+  BFD_RELOC_VTABLE_ENTRY,
mgl@1371
 34207
+
mgl@1371
 34208
+/* Intel IA64 Relocations.  */
mgl@1371
 34209
+  BFD_RELOC_IA64_IMM14,
mgl@1371
 34210
+  BFD_RELOC_IA64_IMM22,
mgl@1371
 34211
+  BFD_RELOC_IA64_IMM64,
mgl@1371
 34212
+  BFD_RELOC_IA64_DIR32MSB,
mgl@1371
 34213
+  BFD_RELOC_IA64_DIR32LSB,
mgl@1371
 34214
+  BFD_RELOC_IA64_DIR64MSB,
mgl@1371
 34215
+  BFD_RELOC_IA64_DIR64LSB,
mgl@1371
 34216
+  BFD_RELOC_IA64_GPREL22,
mgl@1371
 34217
+  BFD_RELOC_IA64_GPREL64I,
mgl@1371
 34218
+  BFD_RELOC_IA64_GPREL32MSB,
mgl@1371
 34219
+  BFD_RELOC_IA64_GPREL32LSB,
mgl@1371
 34220
+  BFD_RELOC_IA64_GPREL64MSB,
mgl@1371
 34221
+  BFD_RELOC_IA64_GPREL64LSB,
mgl@1371
 34222
+  BFD_RELOC_IA64_LTOFF22,
mgl@1371
 34223
+  BFD_RELOC_IA64_LTOFF64I,
mgl@1371
 34224
+  BFD_RELOC_IA64_PLTOFF22,
mgl@1371
 34225
+  BFD_RELOC_IA64_PLTOFF64I,
mgl@1371
 34226
+  BFD_RELOC_IA64_PLTOFF64MSB,
mgl@1371
 34227
+  BFD_RELOC_IA64_PLTOFF64LSB,
mgl@1371
 34228
+  BFD_RELOC_IA64_FPTR64I,
mgl@1371
 34229
+  BFD_RELOC_IA64_FPTR32MSB,
mgl@1371
 34230
+  BFD_RELOC_IA64_FPTR32LSB,
mgl@1371
 34231
+  BFD_RELOC_IA64_FPTR64MSB,
mgl@1371
 34232
+  BFD_RELOC_IA64_FPTR64LSB,
mgl@1371
 34233
+  BFD_RELOC_IA64_PCREL21B,
mgl@1371
 34234
+  BFD_RELOC_IA64_PCREL21BI,
mgl@1371
 34235
+  BFD_RELOC_IA64_PCREL21M,
mgl@1371
 34236
+  BFD_RELOC_IA64_PCREL21F,
mgl@1371
 34237
+  BFD_RELOC_IA64_PCREL22,
mgl@1371
 34238
+  BFD_RELOC_IA64_PCREL60B,
mgl@1371
 34239
+  BFD_RELOC_IA64_PCREL64I,
mgl@1371
 34240
+  BFD_RELOC_IA64_PCREL32MSB,
mgl@1371
 34241
+  BFD_RELOC_IA64_PCREL32LSB,
mgl@1371
 34242
+  BFD_RELOC_IA64_PCREL64MSB,
mgl@1371
 34243
+  BFD_RELOC_IA64_PCREL64LSB,
mgl@1371
 34244
+  BFD_RELOC_IA64_LTOFF_FPTR22,
mgl@1371
 34245
+  BFD_RELOC_IA64_LTOFF_FPTR64I,
mgl@1371
 34246
+  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
mgl@1371
 34247
+  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
mgl@1371
 34248
+  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
mgl@1371
 34249
+  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
mgl@1371
 34250
+  BFD_RELOC_IA64_SEGREL32MSB,
mgl@1371
 34251
+  BFD_RELOC_IA64_SEGREL32LSB,
mgl@1371
 34252
+  BFD_RELOC_IA64_SEGREL64MSB,
mgl@1371
 34253
+  BFD_RELOC_IA64_SEGREL64LSB,
mgl@1371
 34254
+  BFD_RELOC_IA64_SECREL32MSB,
mgl@1371
 34255
+  BFD_RELOC_IA64_SECREL32LSB,
mgl@1371
 34256
+  BFD_RELOC_IA64_SECREL64MSB,
mgl@1371
 34257
+  BFD_RELOC_IA64_SECREL64LSB,
mgl@1371
 34258
+  BFD_RELOC_IA64_REL32MSB,
mgl@1371
 34259
+  BFD_RELOC_IA64_REL32LSB,
mgl@1371
 34260
+  BFD_RELOC_IA64_REL64MSB,
mgl@1371
 34261
+  BFD_RELOC_IA64_REL64LSB,
mgl@1371
 34262
+  BFD_RELOC_IA64_LTV32MSB,
mgl@1371
 34263
+  BFD_RELOC_IA64_LTV32LSB,
mgl@1371
 34264
+  BFD_RELOC_IA64_LTV64MSB,
mgl@1371
 34265
+  BFD_RELOC_IA64_LTV64LSB,
mgl@1371
 34266
+  BFD_RELOC_IA64_IPLTMSB,
mgl@1371
 34267
+  BFD_RELOC_IA64_IPLTLSB,
mgl@1371
 34268
+  BFD_RELOC_IA64_COPY,
mgl@1371
 34269
+  BFD_RELOC_IA64_LTOFF22X,
mgl@1371
 34270
+  BFD_RELOC_IA64_LDXMOV,
mgl@1371
 34271
+  BFD_RELOC_IA64_TPREL14,
mgl@1371
 34272
+  BFD_RELOC_IA64_TPREL22,
mgl@1371
 34273
+  BFD_RELOC_IA64_TPREL64I,
mgl@1371
 34274
+  BFD_RELOC_IA64_TPREL64MSB,
mgl@1371
 34275
+  BFD_RELOC_IA64_TPREL64LSB,
mgl@1371
 34276
+  BFD_RELOC_IA64_LTOFF_TPREL22,
mgl@1371
 34277
+  BFD_RELOC_IA64_DTPMOD64MSB,
mgl@1371
 34278
+  BFD_RELOC_IA64_DTPMOD64LSB,
mgl@1371
 34279
+  BFD_RELOC_IA64_LTOFF_DTPMOD22,
mgl@1371
 34280
+  BFD_RELOC_IA64_DTPREL14,
mgl@1371
 34281
+  BFD_RELOC_IA64_DTPREL22,
mgl@1371
 34282
+  BFD_RELOC_IA64_DTPREL64I,
mgl@1371
 34283
+  BFD_RELOC_IA64_DTPREL32MSB,
mgl@1371
 34284
+  BFD_RELOC_IA64_DTPREL32LSB,
mgl@1371
 34285
+  BFD_RELOC_IA64_DTPREL64MSB,
mgl@1371
 34286
+  BFD_RELOC_IA64_DTPREL64LSB,
mgl@1371
 34287
+  BFD_RELOC_IA64_LTOFF_DTPREL22,
mgl@1371
 34288
+
mgl@1371
 34289
+/* Motorola 68HC11 reloc.
mgl@1371
 34290
+This is the 8 bit high part of an absolute address.  */
mgl@1371
 34291
+  BFD_RELOC_M68HC11_HI8,
mgl@1371
 34292
+
mgl@1371
 34293
+/* Motorola 68HC11 reloc.
mgl@1371
 34294
+This is the 8 bit low part of an absolute address.  */
mgl@1371
 34295
+  BFD_RELOC_M68HC11_LO8,
mgl@1371
 34296
+
mgl@1371
 34297
+/* Motorola 68HC11 reloc.
mgl@1371
 34298
+This is the 3 bit of a value.  */
mgl@1371
 34299
+  BFD_RELOC_M68HC11_3B,
mgl@1371
 34300
+
mgl@1371
 34301
+/* Motorola 68HC11 reloc.
mgl@1371
 34302
+This reloc marks the beginning of a jump/call instruction.
mgl@1371
 34303
+It is used for linker relaxation to correctly identify beginning
mgl@1371
 34304
+of instruction and change some branches to use PC-relative
mgl@1371
 34305
+addressing mode.  */
mgl@1371
 34306
+  BFD_RELOC_M68HC11_RL_JUMP,
mgl@1371
 34307
+
mgl@1371
 34308
+/* Motorola 68HC11 reloc.
mgl@1371
 34309
+This reloc marks a group of several instructions that gcc generates
mgl@1371
 34310
+and for which the linker relaxation pass can modify and/or remove
mgl@1371
 34311
+some of them.  */
mgl@1371
 34312
+  BFD_RELOC_M68HC11_RL_GROUP,
mgl@1371
 34313
+
mgl@1371
 34314
+/* Motorola 68HC11 reloc.
mgl@1371
 34315
+This is the 16-bit lower part of an address.  It is used for 'call'
mgl@1371
 34316
+instruction to specify the symbol address without any special
mgl@1371
 34317
+transformation (due to memory bank window).  */
mgl@1371
 34318
+  BFD_RELOC_M68HC11_LO16,
mgl@1371
 34319
+
mgl@1371
 34320
+/* Motorola 68HC11 reloc.
mgl@1371
 34321
+This is a 8-bit reloc that specifies the page number of an address.
mgl@1371
 34322
+It is used by 'call' instruction to specify the page number of
mgl@1371
 34323
+the symbol.  */
mgl@1371
 34324
+  BFD_RELOC_M68HC11_PAGE,
mgl@1371
 34325
+
mgl@1371
 34326
+/* Motorola 68HC11 reloc.
mgl@1371
 34327
+This is a 24-bit reloc that represents the address with a 16-bit
mgl@1371
 34328
+value and a 8-bit page number.  The symbol address is transformed
mgl@1371
 34329
+to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
mgl@1371
 34330
+  BFD_RELOC_M68HC11_24,
mgl@1371
 34331
+
mgl@1371
 34332
+/* Motorola 68HC12 reloc.
mgl@1371
 34333
+This is the 5 bits of a value.  */
mgl@1371
 34334
+  BFD_RELOC_M68HC12_5B,
mgl@1371
 34335
+
mgl@1371
 34336
+/* NS CR16C Relocations.  */
mgl@1371
 34337
+  BFD_RELOC_16C_NUM08,
mgl@1371
 34338
+  BFD_RELOC_16C_NUM08_C,
mgl@1371
 34339
+  BFD_RELOC_16C_NUM16,
mgl@1371
 34340
+  BFD_RELOC_16C_NUM16_C,
mgl@1371
 34341
+  BFD_RELOC_16C_NUM32,
mgl@1371
 34342
+  BFD_RELOC_16C_NUM32_C,
mgl@1371
 34343
+  BFD_RELOC_16C_DISP04,
mgl@1371
 34344
+  BFD_RELOC_16C_DISP04_C,
mgl@1371
 34345
+  BFD_RELOC_16C_DISP08,
mgl@1371
 34346
+  BFD_RELOC_16C_DISP08_C,
mgl@1371
 34347
+  BFD_RELOC_16C_DISP16,
mgl@1371
 34348
+  BFD_RELOC_16C_DISP16_C,
mgl@1371
 34349
+  BFD_RELOC_16C_DISP24,
mgl@1371
 34350
+  BFD_RELOC_16C_DISP24_C,
mgl@1371
 34351
+  BFD_RELOC_16C_DISP24a,
mgl@1371
 34352
+  BFD_RELOC_16C_DISP24a_C,
mgl@1371
 34353
+  BFD_RELOC_16C_REG04,
mgl@1371
 34354
+  BFD_RELOC_16C_REG04_C,
mgl@1371
 34355
+  BFD_RELOC_16C_REG04a,
mgl@1371
 34356
+  BFD_RELOC_16C_REG04a_C,
mgl@1371
 34357
+  BFD_RELOC_16C_REG14,
mgl@1371
 34358
+  BFD_RELOC_16C_REG14_C,
mgl@1371
 34359
+  BFD_RELOC_16C_REG16,
mgl@1371
 34360
+  BFD_RELOC_16C_REG16_C,
mgl@1371
 34361
+  BFD_RELOC_16C_REG20,
mgl@1371
 34362
+  BFD_RELOC_16C_REG20_C,
mgl@1371
 34363
+  BFD_RELOC_16C_ABS20,
mgl@1371
 34364
+  BFD_RELOC_16C_ABS20_C,
mgl@1371
 34365
+  BFD_RELOC_16C_ABS24,
mgl@1371
 34366
+  BFD_RELOC_16C_ABS24_C,
mgl@1371
 34367
+  BFD_RELOC_16C_IMM04,
mgl@1371
 34368
+  BFD_RELOC_16C_IMM04_C,
mgl@1371
 34369
+  BFD_RELOC_16C_IMM16,
mgl@1371
 34370
+  BFD_RELOC_16C_IMM16_C,
mgl@1371
 34371
+  BFD_RELOC_16C_IMM20,
mgl@1371
 34372
+  BFD_RELOC_16C_IMM20_C,
mgl@1371
 34373
+  BFD_RELOC_16C_IMM24,
mgl@1371
 34374
+  BFD_RELOC_16C_IMM24_C,
mgl@1371
 34375
+  BFD_RELOC_16C_IMM32,
mgl@1371
 34376
+  BFD_RELOC_16C_IMM32_C,
mgl@1371
 34377
+
mgl@1371
 34378
+/* NS CR16 Relocations.  */
mgl@1371
 34379
+  BFD_RELOC_CR16_NUM8,
mgl@1371
 34380
+  BFD_RELOC_CR16_NUM16,
mgl@1371
 34381
+  BFD_RELOC_CR16_NUM32,
mgl@1371
 34382
+  BFD_RELOC_CR16_NUM32a,
mgl@1371
 34383
+  BFD_RELOC_CR16_REGREL0,
mgl@1371
 34384
+  BFD_RELOC_CR16_REGREL4,
mgl@1371
 34385
+  BFD_RELOC_CR16_REGREL4a,
mgl@1371
 34386
+  BFD_RELOC_CR16_REGREL14,
mgl@1371
 34387
+  BFD_RELOC_CR16_REGREL14a,
mgl@1371
 34388
+  BFD_RELOC_CR16_REGREL16,
mgl@1371
 34389
+  BFD_RELOC_CR16_REGREL20,
mgl@1371
 34390
+  BFD_RELOC_CR16_REGREL20a,
mgl@1371
 34391
+  BFD_RELOC_CR16_ABS20,
mgl@1371
 34392
+  BFD_RELOC_CR16_ABS24,
mgl@1371
 34393
+  BFD_RELOC_CR16_IMM4,
mgl@1371
 34394
+  BFD_RELOC_CR16_IMM8,
mgl@1371
 34395
+  BFD_RELOC_CR16_IMM16,
mgl@1371
 34396
+  BFD_RELOC_CR16_IMM20,
mgl@1371
 34397
+  BFD_RELOC_CR16_IMM24,
mgl@1371
 34398
+  BFD_RELOC_CR16_IMM32,
mgl@1371
 34399
+  BFD_RELOC_CR16_IMM32a,
mgl@1371
 34400
+  BFD_RELOC_CR16_DISP4,
mgl@1371
 34401
+  BFD_RELOC_CR16_DISP8,
mgl@1371
 34402
+  BFD_RELOC_CR16_DISP16,
mgl@1371
 34403
+  BFD_RELOC_CR16_DISP20,
mgl@1371
 34404
+  BFD_RELOC_CR16_DISP24,
mgl@1371
 34405
+  BFD_RELOC_CR16_DISP24a,
mgl@1371
 34406
+
mgl@1371
 34407
+/* NS CRX Relocations.  */
mgl@1371
 34408
+  BFD_RELOC_CRX_REL4,
mgl@1371
 34409
+  BFD_RELOC_CRX_REL8,
mgl@1371
 34410
+  BFD_RELOC_CRX_REL8_CMP,
mgl@1371
 34411
+  BFD_RELOC_CRX_REL16,
mgl@1371
 34412
+  BFD_RELOC_CRX_REL24,
mgl@1371
 34413
+  BFD_RELOC_CRX_REL32,
mgl@1371
 34414
+  BFD_RELOC_CRX_REGREL12,
mgl@1371
 34415
+  BFD_RELOC_CRX_REGREL22,
mgl@1371
 34416
+  BFD_RELOC_CRX_REGREL28,
mgl@1371
 34417
+  BFD_RELOC_CRX_REGREL32,
mgl@1371
 34418
+  BFD_RELOC_CRX_ABS16,
mgl@1371
 34419
+  BFD_RELOC_CRX_ABS32,
mgl@1371
 34420
+  BFD_RELOC_CRX_NUM8,
mgl@1371
 34421
+  BFD_RELOC_CRX_NUM16,
mgl@1371
 34422
+  BFD_RELOC_CRX_NUM32,
mgl@1371
 34423
+  BFD_RELOC_CRX_IMM16,
mgl@1371
 34424
+  BFD_RELOC_CRX_IMM32,
mgl@1371
 34425
+  BFD_RELOC_CRX_SWITCH8,
mgl@1371
 34426
+  BFD_RELOC_CRX_SWITCH16,
mgl@1371
 34427
+  BFD_RELOC_CRX_SWITCH32,
mgl@1371
 34428
+
mgl@1371
 34429
+/* These relocs are only used within the CRIS assembler.  They are not
mgl@1371
 34430
+(at present) written to any object files.  */
mgl@1371
 34431
+  BFD_RELOC_CRIS_BDISP8,
mgl@1371
 34432
+  BFD_RELOC_CRIS_UNSIGNED_5,
mgl@1371
 34433
+  BFD_RELOC_CRIS_SIGNED_6,
mgl@1371
 34434
+  BFD_RELOC_CRIS_UNSIGNED_6,
mgl@1371
 34435
+  BFD_RELOC_CRIS_SIGNED_8,
mgl@1371
 34436
+  BFD_RELOC_CRIS_UNSIGNED_8,
mgl@1371
 34437
+  BFD_RELOC_CRIS_SIGNED_16,
mgl@1371
 34438
+  BFD_RELOC_CRIS_UNSIGNED_16,
mgl@1371
 34439
+  BFD_RELOC_CRIS_LAPCQ_OFFSET,
mgl@1371
 34440
+  BFD_RELOC_CRIS_UNSIGNED_4,
mgl@1371
 34441
+
mgl@1371
 34442
+/* Relocs used in ELF shared libraries for CRIS.  */
mgl@1371
 34443
+  BFD_RELOC_CRIS_COPY,
mgl@1371
 34444
+  BFD_RELOC_CRIS_GLOB_DAT,
mgl@1371
 34445
+  BFD_RELOC_CRIS_JUMP_SLOT,
mgl@1371
 34446
+  BFD_RELOC_CRIS_RELATIVE,
mgl@1371
 34447
+
mgl@1371
 34448
+/* 32-bit offset to symbol-entry within GOT.  */
mgl@1371
 34449
+  BFD_RELOC_CRIS_32_GOT,
mgl@1371
 34450
+
mgl@1371
 34451
+/* 16-bit offset to symbol-entry within GOT.  */
mgl@1371
 34452
+  BFD_RELOC_CRIS_16_GOT,
mgl@1371
 34453
+
mgl@1371
 34454
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34455
+  BFD_RELOC_CRIS_32_GOTPLT,
mgl@1371
 34456
+
mgl@1371
 34457
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 34458
+  BFD_RELOC_CRIS_16_GOTPLT,
mgl@1371
 34459
+
mgl@1371
 34460
+/* 32-bit offset to symbol, relative to GOT.  */
mgl@1371
 34461
+  BFD_RELOC_CRIS_32_GOTREL,
mgl@1371
 34462
+
mgl@1371
 34463
+/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
mgl@1371
 34464
+  BFD_RELOC_CRIS_32_PLT_GOTREL,
mgl@1371
 34465
+
mgl@1371
 34466
+/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
mgl@1371
 34467
+  BFD_RELOC_CRIS_32_PLT_PCREL,
mgl@1371
 34468
+
mgl@1371
 34469
+/* Intel i860 Relocations.  */
mgl@1371
 34470
+  BFD_RELOC_860_COPY,
mgl@1371
 34471
+  BFD_RELOC_860_GLOB_DAT,
mgl@1371
 34472
+  BFD_RELOC_860_JUMP_SLOT,
mgl@1371
 34473
+  BFD_RELOC_860_RELATIVE,
mgl@1371
 34474
+  BFD_RELOC_860_PC26,
mgl@1371
 34475
+  BFD_RELOC_860_PLT26,
mgl@1371
 34476
+  BFD_RELOC_860_PC16,
mgl@1371
 34477
+  BFD_RELOC_860_LOW0,
mgl@1371
 34478
+  BFD_RELOC_860_SPLIT0,
mgl@1371
 34479
+  BFD_RELOC_860_LOW1,
mgl@1371
 34480
+  BFD_RELOC_860_SPLIT1,
mgl@1371
 34481
+  BFD_RELOC_860_LOW2,
mgl@1371
 34482
+  BFD_RELOC_860_SPLIT2,
mgl@1371
 34483
+  BFD_RELOC_860_LOW3,
mgl@1371
 34484
+  BFD_RELOC_860_LOGOT0,
mgl@1371
 34485
+  BFD_RELOC_860_SPGOT0,
mgl@1371
 34486
+  BFD_RELOC_860_LOGOT1,
mgl@1371
 34487
+  BFD_RELOC_860_SPGOT1,
mgl@1371
 34488
+  BFD_RELOC_860_LOGOTOFF0,
mgl@1371
 34489
+  BFD_RELOC_860_SPGOTOFF0,
mgl@1371
 34490
+  BFD_RELOC_860_LOGOTOFF1,
mgl@1371
 34491
+  BFD_RELOC_860_SPGOTOFF1,
mgl@1371
 34492
+  BFD_RELOC_860_LOGOTOFF2,
mgl@1371
 34493
+  BFD_RELOC_860_LOGOTOFF3,
mgl@1371
 34494
+  BFD_RELOC_860_LOPC,
mgl@1371
 34495
+  BFD_RELOC_860_HIGHADJ,
mgl@1371
 34496
+  BFD_RELOC_860_HAGOT,
mgl@1371
 34497
+  BFD_RELOC_860_HAGOTOFF,
mgl@1371
 34498
+  BFD_RELOC_860_HAPC,
mgl@1371
 34499
+  BFD_RELOC_860_HIGH,
mgl@1371
 34500
+  BFD_RELOC_860_HIGOT,
mgl@1371
 34501
+  BFD_RELOC_860_HIGOTOFF,
mgl@1371
 34502
+
mgl@1371
 34503
+/* OpenRISC Relocations.  */
mgl@1371
 34504
+  BFD_RELOC_OPENRISC_ABS_26,
mgl@1371
 34505
+  BFD_RELOC_OPENRISC_REL_26,
mgl@1371
 34506
+
mgl@1371
 34507
+/* H8 elf Relocations.  */
mgl@1371
 34508
+  BFD_RELOC_H8_DIR16A8,
mgl@1371
 34509
+  BFD_RELOC_H8_DIR16R8,
mgl@1371
 34510
+  BFD_RELOC_H8_DIR24A8,
mgl@1371
 34511
+  BFD_RELOC_H8_DIR24R8,
mgl@1371
 34512
+  BFD_RELOC_H8_DIR32A16,
mgl@1371
 34513
+
mgl@1371
 34514
+/* Sony Xstormy16 Relocations.  */
mgl@1371
 34515
+  BFD_RELOC_XSTORMY16_REL_12,
mgl@1371
 34516
+  BFD_RELOC_XSTORMY16_12,
mgl@1371
 34517
+  BFD_RELOC_XSTORMY16_24,
mgl@1371
 34518
+  BFD_RELOC_XSTORMY16_FPTR16,
mgl@1371
 34519
+
mgl@1371
 34520
+/* Self-describing complex relocations.  */
mgl@1371
 34521
+  BFD_RELOC_RELC,
mgl@1371
 34522
+
mgl@1371
 34523
+
mgl@1371
 34524
+/* Infineon Relocations.  */
mgl@1371
 34525
+  BFD_RELOC_XC16X_PAG,
mgl@1371
 34526
+  BFD_RELOC_XC16X_POF,
mgl@1371
 34527
+  BFD_RELOC_XC16X_SEG,
mgl@1371
 34528
+  BFD_RELOC_XC16X_SOF,
mgl@1371
 34529
+
mgl@1371
 34530
+/* Relocations used by VAX ELF.  */
mgl@1371
 34531
+  BFD_RELOC_VAX_GLOB_DAT,
mgl@1371
 34532
+  BFD_RELOC_VAX_JMP_SLOT,
mgl@1371
 34533
+  BFD_RELOC_VAX_RELATIVE,
mgl@1371
 34534
+
mgl@1371
 34535
+/* Morpho MT - 16 bit immediate relocation.  */
mgl@1371
 34536
+  BFD_RELOC_MT_PC16,
mgl@1371
 34537
+
mgl@1371
 34538
+/* Morpho MT - Hi 16 bits of an address.  */
mgl@1371
 34539
+  BFD_RELOC_MT_HI16,
mgl@1371
 34540
+
mgl@1371
 34541
+/* Morpho MT - Low 16 bits of an address.  */
mgl@1371
 34542
+  BFD_RELOC_MT_LO16,
mgl@1371
 34543
+
mgl@1371
 34544
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
mgl@1371
 34545
+  BFD_RELOC_MT_GNU_VTINHERIT,
mgl@1371
 34546
+
mgl@1371
 34547
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
mgl@1371
 34548
+  BFD_RELOC_MT_GNU_VTENTRY,
mgl@1371
 34549
+
mgl@1371
 34550
+/* Morpho MT - 8 bit immediate relocation.  */
mgl@1371
 34551
+  BFD_RELOC_MT_PCINSN8,
mgl@1371
 34552
+
mgl@1371
 34553
+/* msp430 specific relocation codes  */
mgl@1371
 34554
+  BFD_RELOC_MSP430_10_PCREL,
mgl@1371
 34555
+  BFD_RELOC_MSP430_16_PCREL,
mgl@1371
 34556
+  BFD_RELOC_MSP430_16,
mgl@1371
 34557
+  BFD_RELOC_MSP430_16_PCREL_BYTE,
mgl@1371
 34558
+  BFD_RELOC_MSP430_16_BYTE,
mgl@1371
 34559
+  BFD_RELOC_MSP430_2X_PCREL,
mgl@1371
 34560
+  BFD_RELOC_MSP430_RL_PCREL,
mgl@1371
 34561
+
mgl@1371
 34562
+/* IQ2000 Relocations.  */
mgl@1371
 34563
+  BFD_RELOC_IQ2000_OFFSET_16,
mgl@1371
 34564
+  BFD_RELOC_IQ2000_OFFSET_21,
mgl@1371
 34565
+  BFD_RELOC_IQ2000_UHI16,
mgl@1371
 34566
+
mgl@1371
 34567
+/* Special Xtensa relocation used only by PLT entries in ELF shared
mgl@1371
 34568
+objects to indicate that the runtime linker should set the value
mgl@1371
 34569
+to one of its own internal functions or data structures.  */
mgl@1371
 34570
+  BFD_RELOC_XTENSA_RTLD,
mgl@1371
 34571
+
mgl@1371
 34572
+/* Xtensa relocations for ELF shared objects.  */
mgl@1371
 34573
+  BFD_RELOC_XTENSA_GLOB_DAT,
mgl@1371
 34574
+  BFD_RELOC_XTENSA_JMP_SLOT,
mgl@1371
 34575
+  BFD_RELOC_XTENSA_RELATIVE,
mgl@1371
 34576
+
mgl@1371
 34577
+/* Xtensa relocation used in ELF object files for symbols that may require
mgl@1371
 34578
+PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
mgl@1371
 34579
+  BFD_RELOC_XTENSA_PLT,
mgl@1371
 34580
+
mgl@1371
 34581
+/* Xtensa relocations to mark the difference of two local symbols.
mgl@1371
 34582
+These are only needed to support linker relaxation and can be ignored
mgl@1371
 34583
+when not relaxing.  The field is set to the value of the difference
mgl@1371
 34584
+assuming no relaxation.  The relocation encodes the position of the
mgl@1371
 34585
+first symbol so the linker can determine whether to adjust the field
mgl@1371
 34586
+value.  */
mgl@1371
 34587
+  BFD_RELOC_XTENSA_DIFF8,
mgl@1371
 34588
+  BFD_RELOC_XTENSA_DIFF16,
mgl@1371
 34589
+  BFD_RELOC_XTENSA_DIFF32,
mgl@1371
 34590
+
mgl@1371
 34591
+/* Generic Xtensa relocations for instruction operands.  Only the slot
mgl@1371
 34592
+number is encoded in the relocation.  The relocation applies to the
mgl@1371
 34593
+last PC-relative immediate operand, or if there are no PC-relative
mgl@1371
 34594
+immediates, to the last immediate operand.  */
mgl@1371
 34595
+  BFD_RELOC_XTENSA_SLOT0_OP,
mgl@1371
 34596
+  BFD_RELOC_XTENSA_SLOT1_OP,
mgl@1371
 34597
+  BFD_RELOC_XTENSA_SLOT2_OP,
mgl@1371
 34598
+  BFD_RELOC_XTENSA_SLOT3_OP,
mgl@1371
 34599
+  BFD_RELOC_XTENSA_SLOT4_OP,
mgl@1371
 34600
+  BFD_RELOC_XTENSA_SLOT5_OP,
mgl@1371
 34601
+  BFD_RELOC_XTENSA_SLOT6_OP,
mgl@1371
 34602
+  BFD_RELOC_XTENSA_SLOT7_OP,
mgl@1371
 34603
+  BFD_RELOC_XTENSA_SLOT8_OP,
mgl@1371
 34604
+  BFD_RELOC_XTENSA_SLOT9_OP,
mgl@1371
 34605
+  BFD_RELOC_XTENSA_SLOT10_OP,
mgl@1371
 34606
+  BFD_RELOC_XTENSA_SLOT11_OP,
mgl@1371
 34607
+  BFD_RELOC_XTENSA_SLOT12_OP,
mgl@1371
 34608
+  BFD_RELOC_XTENSA_SLOT13_OP,
mgl@1371
 34609
+  BFD_RELOC_XTENSA_SLOT14_OP,
mgl@1371
 34610
+
mgl@1371
 34611
+/* Alternate Xtensa relocations.  Only the slot is encoded in the
mgl@1371
 34612
+relocation.  The meaning of these relocations is opcode-specific.  */
mgl@1371
 34613
+  BFD_RELOC_XTENSA_SLOT0_ALT,
mgl@1371
 34614
+  BFD_RELOC_XTENSA_SLOT1_ALT,
mgl@1371
 34615
+  BFD_RELOC_XTENSA_SLOT2_ALT,
mgl@1371
 34616
+  BFD_RELOC_XTENSA_SLOT3_ALT,
mgl@1371
 34617
+  BFD_RELOC_XTENSA_SLOT4_ALT,
mgl@1371
 34618
+  BFD_RELOC_XTENSA_SLOT5_ALT,
mgl@1371
 34619
+  BFD_RELOC_XTENSA_SLOT6_ALT,
mgl@1371
 34620
+  BFD_RELOC_XTENSA_SLOT7_ALT,
mgl@1371
 34621
+  BFD_RELOC_XTENSA_SLOT8_ALT,
mgl@1371
 34622
+  BFD_RELOC_XTENSA_SLOT9_ALT,
mgl@1371
 34623
+  BFD_RELOC_XTENSA_SLOT10_ALT,
mgl@1371
 34624
+  BFD_RELOC_XTENSA_SLOT11_ALT,
mgl@1371
 34625
+  BFD_RELOC_XTENSA_SLOT12_ALT,
mgl@1371
 34626
+  BFD_RELOC_XTENSA_SLOT13_ALT,
mgl@1371
 34627
+  BFD_RELOC_XTENSA_SLOT14_ALT,
mgl@1371
 34628
+
mgl@1371
 34629
+/* Xtensa relocations for backward compatibility.  These have all been
mgl@1371
 34630
+replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
mgl@1371
 34631
+  BFD_RELOC_XTENSA_OP0,
mgl@1371
 34632
+  BFD_RELOC_XTENSA_OP1,
mgl@1371
 34633
+  BFD_RELOC_XTENSA_OP2,
mgl@1371
 34634
+
mgl@1371
 34635
+/* Xtensa relocation to mark that the assembler expanded the
mgl@1371
 34636
+instructions from an original target.  The expansion size is
mgl@1371
 34637
+encoded in the reloc size.  */
mgl@1371
 34638
+  BFD_RELOC_XTENSA_ASM_EXPAND,
mgl@1371
 34639
+
mgl@1371
 34640
+/* Xtensa relocation to mark that the linker should simplify
mgl@1371
 34641
+assembler-expanded instructions.  This is commonly used
mgl@1371
 34642
+internally by the linker after analysis of a
mgl@1371
 34643
+BFD_RELOC_XTENSA_ASM_EXPAND.  */
mgl@1371
 34644
+  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
mgl@1371
 34645
+
mgl@1371
 34646
+/* 8 bit signed offset in (ix+d) or (iy+d).  */
mgl@1371
 34647
+  BFD_RELOC_Z80_DISP8,
mgl@1371
 34648
+
mgl@1371
 34649
+/* DJNZ offset.  */
mgl@1371
 34650
+  BFD_RELOC_Z8K_DISP7,
mgl@1371
 34651
+
mgl@1371
 34652
+/* CALR offset.  */
mgl@1371
 34653
+  BFD_RELOC_Z8K_CALLR,
mgl@1371
 34654
+
mgl@1371
 34655
+/* 4 bit value.  */
mgl@1371
 34656
+  BFD_RELOC_Z8K_IMM4L,
mgl@1371
 34657
+  BFD_RELOC_UNUSED };
mgl@1371
 34658
+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
mgl@1371
 34659
+reloc_howto_type *bfd_reloc_type_lookup
mgl@1371
 34660
+   (bfd *abfd, bfd_reloc_code_real_type code);
mgl@1371
 34661
+reloc_howto_type *bfd_reloc_name_lookup
mgl@1371
 34662
+   (bfd *abfd, const char *reloc_name);
mgl@1371
 34663
+
mgl@1371
 34664
+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
mgl@1371
 34665
+
mgl@1371
 34666
+/* Extracted from syms.c.  */
mgl@1371
 34667
+
mgl@1371
 34668
+typedef struct bfd_symbol
mgl@1371
 34669
+{
mgl@1371
 34670
+  /* A pointer to the BFD which owns the symbol. This information
mgl@1371
 34671
+     is necessary so that a back end can work out what additional
mgl@1371
 34672
+     information (invisible to the application writer) is carried
mgl@1371
 34673
+     with the symbol.
mgl@1371
 34674
+
mgl@1371
 34675
+     This field is *almost* redundant, since you can use section->owner
mgl@1371
 34676
+     instead, except that some symbols point to the global sections
mgl@1371
 34677
+     bfd_{abs,com,und}_section.  This could be fixed by making
mgl@1371
 34678
+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
mgl@1371
 34679
+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
mgl@1371
 34680
+
mgl@1371
 34681
+  /* The text of the symbol. The name is left alone, and not copied; the
mgl@1371
 34682
+     application may not alter it.  */
mgl@1371
 34683
+  const char *name;
mgl@1371
 34684
+
mgl@1371
 34685
+  /* The value of the symbol.  This really should be a union of a
mgl@1371
 34686
+     numeric value with a pointer, since some flags indicate that
mgl@1371
 34687
+     a pointer to another symbol is stored here.  */
mgl@1371
 34688
+  symvalue value;
mgl@1371
 34689
+
mgl@1371
 34690
+  /* Attributes of a symbol.  */
mgl@1371
 34691
+#define BSF_NO_FLAGS    0x00
mgl@1371
 34692
+
mgl@1371
 34693
+  /* The symbol has local scope; <<static>> in <<C>>. The value
mgl@1371
 34694
+     is the offset into the section of the data.  */
mgl@1371
 34695
+#define BSF_LOCAL      0x01
mgl@1371
 34696
+
mgl@1371
 34697
+  /* The symbol has global scope; initialized data in <<C>>. The
mgl@1371
 34698
+     value is the offset into the section of the data.  */
mgl@1371
 34699
+#define BSF_GLOBAL     0x02
mgl@1371
 34700
+
mgl@1371
 34701
+  /* The symbol has global scope and is exported. The value is
mgl@1371
 34702
+     the offset into the section of the data.  */
mgl@1371
 34703
+#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
mgl@1371
 34704
+
mgl@1371
 34705
+  /* A normal C symbol would be one of:
mgl@1371
 34706
+     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
mgl@1371
 34707
+     <<BSF_GLOBAL>>.  */
mgl@1371
 34708
+
mgl@1371
 34709
+  /* The symbol is a debugging record. The value has an arbitrary
mgl@1371
 34710
+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
mgl@1371
 34711
+#define BSF_DEBUGGING  0x08
mgl@1371
 34712
+
mgl@1371
 34713
+  /* The symbol denotes a function entry point.  Used in ELF,
mgl@1371
 34714
+     perhaps others someday.  */
mgl@1371
 34715
+#define BSF_FUNCTION    0x10
mgl@1371
 34716
+
mgl@1371
 34717
+  /* Used by the linker.  */
mgl@1371
 34718
+#define BSF_KEEP        0x20
mgl@1371
 34719
+#define BSF_KEEP_G      0x40
mgl@1371
 34720
+
mgl@1371
 34721
+  /* A weak global symbol, overridable without warnings by
mgl@1371
 34722
+     a regular global symbol of the same name.  */
mgl@1371
 34723
+#define BSF_WEAK        0x80
mgl@1371
 34724
+
mgl@1371
 34725
+  /* This symbol was created to point to a section, e.g. ELF's
mgl@1371
 34726
+     STT_SECTION symbols.  */
mgl@1371
 34727
+#define BSF_SECTION_SYM 0x100
mgl@1371
 34728
+
mgl@1371
 34729
+  /* The symbol used to be a common symbol, but now it is
mgl@1371
 34730
+     allocated.  */
mgl@1371
 34731
+#define BSF_OLD_COMMON  0x200
mgl@1371
 34732
+
mgl@1371
 34733
+  /* The default value for common data.  */
mgl@1371
 34734
+#define BFD_FORT_COMM_DEFAULT_VALUE 0
mgl@1371
 34735
+
mgl@1371
 34736
+  /* In some files the type of a symbol sometimes alters its
mgl@1371
 34737
+     location in an output file - ie in coff a <<ISFCN>> symbol
mgl@1371
 34738
+     which is also <<C_EXT>> symbol appears where it was
mgl@1371
 34739
+     declared and not at the end of a section.  This bit is set
mgl@1371
 34740
+     by the target BFD part to convey this information.  */
mgl@1371
 34741
+#define BSF_NOT_AT_END    0x400
mgl@1371
 34742
+
mgl@1371
 34743
+  /* Signal that the symbol is the label of constructor section.  */
mgl@1371
 34744
+#define BSF_CONSTRUCTOR   0x800
mgl@1371
 34745
+
mgl@1371
 34746
+  /* Signal that the symbol is a warning symbol.  The name is a
mgl@1371
 34747
+     warning.  The name of the next symbol is the one to warn about;
mgl@1371
 34748
+     if a reference is made to a symbol with the same name as the next
mgl@1371
 34749
+     symbol, a warning is issued by the linker.  */
mgl@1371
 34750
+#define BSF_WARNING       0x1000
mgl@1371
 34751
+
mgl@1371
 34752
+  /* Signal that the symbol is indirect.  This symbol is an indirect
mgl@1371
 34753
+     pointer to the symbol with the same name as the next symbol.  */
mgl@1371
 34754
+#define BSF_INDIRECT      0x2000
mgl@1371
 34755
+
mgl@1371
 34756
+  /* BSF_FILE marks symbols that contain a file name.  This is used
mgl@1371
 34757
+     for ELF STT_FILE symbols.  */
mgl@1371
 34758
+#define BSF_FILE          0x4000
mgl@1371
 34759
+
mgl@1371
 34760
+  /* Symbol is from dynamic linking information.  */
mgl@1371
 34761
+#define BSF_DYNAMIC       0x8000
mgl@1371
 34762
+
mgl@1371
 34763
+  /* The symbol denotes a data object.  Used in ELF, and perhaps
mgl@1371
 34764
+     others someday.  */
mgl@1371
 34765
+#define BSF_OBJECT        0x10000
mgl@1371
 34766
+
mgl@1371
 34767
+  /* This symbol is a debugging symbol.  The value is the offset
mgl@1371
 34768
+     into the section of the data.  BSF_DEBUGGING should be set
mgl@1371
 34769
+     as well.  */
mgl@1371
 34770
+#define BSF_DEBUGGING_RELOC 0x20000
mgl@1371
 34771
+
mgl@1371
 34772
+  /* This symbol is thread local.  Used in ELF.  */
mgl@1371
 34773
+#define BSF_THREAD_LOCAL  0x40000
mgl@1371
 34774
+
mgl@1371
 34775
+  /* This symbol represents a complex relocation expression,
mgl@1371
 34776
+     with the expression tree serialized in the symbol name.  */
mgl@1371
 34777
+#define BSF_RELC 0x80000
mgl@1371
 34778
+
mgl@1371
 34779
+  /* This symbol represents a signed complex relocation expression,
mgl@1371
 34780
+     with the expression tree serialized in the symbol name.  */
mgl@1371
 34781
+#define BSF_SRELC 0x100000
mgl@1371
 34782
+
mgl@1371
 34783
+  flagword flags;
mgl@1371
 34784
+
mgl@1371
 34785
+  /* A pointer to the section to which this symbol is
mgl@1371
 34786
+     relative.  This will always be non NULL, there are special
mgl@1371
 34787
+     sections for undefined and absolute symbols.  */
mgl@1371
 34788
+  struct bfd_section *section;
mgl@1371
 34789
+
mgl@1371
 34790
+  /* Back end special data.  */
mgl@1371
 34791
+  union
mgl@1371
 34792
+    {
mgl@1371
 34793
+      void *p;
mgl@1371
 34794
+      bfd_vma i;
mgl@1371
 34795
+    }
mgl@1371
 34796
+  udata;
mgl@1371
 34797
+}
mgl@1371
 34798
+asymbol;
mgl@1371
 34799
+
mgl@1371
 34800
+#define bfd_get_symtab_upper_bound(abfd) \
mgl@1371
 34801
+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
mgl@1371
 34802
+
mgl@1371
 34803
+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
mgl@1371
 34804
+
mgl@1371
 34805
+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
mgl@1371
 34806
+
mgl@1371
 34807
+#define bfd_is_local_label_name(abfd, name) \
mgl@1371
 34808
+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
mgl@1371
 34809
+
mgl@1371
 34810
+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
mgl@1371
 34811
+
mgl@1371
 34812
+#define bfd_is_target_special_symbol(abfd, sym) \
mgl@1371
 34813
+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
mgl@1371
 34814
+
mgl@1371
 34815
+#define bfd_canonicalize_symtab(abfd, location) \
mgl@1371
 34816
+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
mgl@1371
 34817
+
mgl@1371
 34818
+bfd_boolean bfd_set_symtab
mgl@1371
 34819
+   (bfd *abfd, asymbol **location, unsigned int count);
mgl@1371
 34820
+
mgl@1371
 34821
+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
mgl@1371
 34822
+
mgl@1371
 34823
+#define bfd_make_empty_symbol(abfd) \
mgl@1371
 34824
+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
mgl@1371
 34825
+
mgl@1371
 34826
+asymbol *_bfd_generic_make_empty_symbol (bfd *);
mgl@1371
 34827
+
mgl@1371
 34828
+#define bfd_make_debug_symbol(abfd,ptr,size) \
mgl@1371
 34829
+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
mgl@1371
 34830
+
mgl@1371
 34831
+int bfd_decode_symclass (asymbol *symbol);
mgl@1371
 34832
+
mgl@1371
 34833
+bfd_boolean bfd_is_undefined_symclass (int symclass);
mgl@1371
 34834
+
mgl@1371
 34835
+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
mgl@1371
 34836
+
mgl@1371
 34837
+bfd_boolean bfd_copy_private_symbol_data
mgl@1371
 34838
+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
mgl@1371
 34839
+
mgl@1371
 34840
+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
mgl@1371
 34841
+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
mgl@1371
 34842
+            (ibfd, isymbol, obfd, osymbol))
mgl@1371
 34843
+
mgl@1371
 34844
+/* Extracted from bfd.c.  */
mgl@1371
 34845
+struct bfd
mgl@1371
 34846
+{
mgl@1371
 34847
+  /* A unique identifier of the BFD  */
mgl@1371
 34848
+  unsigned int id;
mgl@1371
 34849
+
mgl@1371
 34850
+  /* The filename the application opened the BFD with.  */
mgl@1371
 34851
+  const char *filename;
mgl@1371
 34852
+
mgl@1371
 34853
+  /* A pointer to the target jump table.  */
mgl@1371
 34854
+  const struct bfd_target *xvec;
mgl@1371
 34855
+
mgl@1371
 34856
+  /* The IOSTREAM, and corresponding IO vector that provide access
mgl@1371
 34857
+     to the file backing the BFD.  */
mgl@1371
 34858
+  void *iostream;
mgl@1371
 34859
+  const struct bfd_iovec *iovec;
mgl@1371
 34860
+
mgl@1371
 34861
+  /* Is the file descriptor being cached?  That is, can it be closed as
mgl@1371
 34862
+     needed, and re-opened when accessed later?  */
mgl@1371
 34863
+  bfd_boolean cacheable;
mgl@1371
 34864
+
mgl@1371
 34865
+  /* Marks whether there was a default target specified when the
mgl@1371
 34866
+     BFD was opened. This is used to select which matching algorithm
mgl@1371
 34867
+     to use to choose the back end.  */
mgl@1371
 34868
+  bfd_boolean target_defaulted;
mgl@1371
 34869
+
mgl@1371
 34870
+  /* The caching routines use these to maintain a
mgl@1371
 34871
+     least-recently-used list of BFDs.  */
mgl@1371
 34872
+  struct bfd *lru_prev, *lru_next;
mgl@1371
 34873
+
mgl@1371
 34874
+  /* When a file is closed by the caching routines, BFD retains
mgl@1371
 34875
+     state information on the file here...  */
mgl@1371
 34876
+  ufile_ptr where;
mgl@1371
 34877
+
mgl@1371
 34878
+  /* ... and here: (``once'' means at least once).  */
mgl@1371
 34879
+  bfd_boolean opened_once;
mgl@1371
 34880
+
mgl@1371
 34881
+  /* Set if we have a locally maintained mtime value, rather than
mgl@1371
 34882
+     getting it from the file each time.  */
mgl@1371
 34883
+  bfd_boolean mtime_set;
mgl@1371
 34884
+
mgl@1371
 34885
+  /* File modified time, if mtime_set is TRUE.  */
mgl@1371
 34886
+  long mtime;
mgl@1371
 34887
+
mgl@1371
 34888
+  /* Reserved for an unimplemented file locking extension.  */
mgl@1371
 34889
+  int ifd;
mgl@1371
 34890
+
mgl@1371
 34891
+  /* The format which belongs to the BFD. (object, core, etc.)  */
mgl@1371
 34892
+  bfd_format format;
mgl@1371
 34893
+
mgl@1371
 34894
+  /* The direction with which the BFD was opened.  */
mgl@1371
 34895
+  enum bfd_direction
mgl@1371
 34896
+    {
mgl@1371
 34897
+      no_direction = 0,
mgl@1371
 34898
+      read_direction = 1,
mgl@1371
 34899
+      write_direction = 2,
mgl@1371
 34900
+      both_direction = 3
mgl@1371
 34901
+    }
mgl@1371
 34902
+  direction;
mgl@1371
 34903
+
mgl@1371
 34904
+  /* Format_specific flags.  */
mgl@1371
 34905
+  flagword flags;
mgl@1371
 34906
+
mgl@1371
 34907
+  /* Currently my_archive is tested before adding origin to
mgl@1371
 34908
+     anything. I believe that this can become always an add of
mgl@1371
 34909
+     origin, with origin set to 0 for non archive files.  */
mgl@1371
 34910
+  ufile_ptr origin;
mgl@1371
 34911
+
mgl@1371
 34912
+  /* Remember when output has begun, to stop strange things
mgl@1371
 34913
+     from happening.  */
mgl@1371
 34914
+  bfd_boolean output_has_begun;
mgl@1371
 34915
+
mgl@1371
 34916
+  /* A hash table for section names.  */
mgl@1371
 34917
+  struct bfd_hash_table section_htab;
mgl@1371
 34918
+
mgl@1371
 34919
+  /* Pointer to linked list of sections.  */
mgl@1371
 34920
+  struct bfd_section *sections;
mgl@1371
 34921
+
mgl@1371
 34922
+  /* The last section on the section list.  */
mgl@1371
 34923
+  struct bfd_section *section_last;
mgl@1371
 34924
+
mgl@1371
 34925
+  /* The number of sections.  */
mgl@1371
 34926
+  unsigned int section_count;
mgl@1371
 34927
+
mgl@1371
 34928
+  /* Stuff only useful for object files:
mgl@1371
 34929
+     The start address.  */
mgl@1371
 34930
+  bfd_vma start_address;
mgl@1371
 34931
+
mgl@1371
 34932
+  /* Used for input and output.  */
mgl@1371
 34933
+  unsigned int symcount;
mgl@1371
 34934
+
mgl@1371
 34935
+  /* Symbol table for output BFD (with symcount entries).  */
mgl@1371
 34936
+  struct bfd_symbol  **outsymbols;
mgl@1371
 34937
+
mgl@1371
 34938
+  /* Used for slurped dynamic symbol tables.  */
mgl@1371
 34939
+  unsigned int dynsymcount;
mgl@1371
 34940
+
mgl@1371
 34941
+  /* Pointer to structure which contains architecture information.  */
mgl@1371
 34942
+  const struct bfd_arch_info *arch_info;
mgl@1371
 34943
+
mgl@1371
 34944
+  /* Flag set if symbols from this BFD should not be exported.  */
mgl@1371
 34945
+  bfd_boolean no_export;
mgl@1371
 34946
+
mgl@1371
 34947
+  /* Stuff only useful for archives.  */
mgl@1371
 34948
+  void *arelt_data;
mgl@1371
 34949
+  struct bfd *my_archive;      /* The containing archive BFD.  */
mgl@1371
 34950
+  struct bfd *archive_next;    /* The next BFD in the archive.  */
mgl@1371
 34951
+  struct bfd *archive_head;    /* The first BFD in the archive.  */
mgl@1371
 34952
+  bfd_boolean has_armap;
mgl@1371
 34953
+
mgl@1371
 34954
+  /* A chain of BFD structures involved in a link.  */
mgl@1371
 34955
+  struct bfd *link_next;
mgl@1371
 34956
+
mgl@1371
 34957
+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
mgl@1371
 34958
+     be used only for archive elements.  */
mgl@1371
 34959
+  int archive_pass;
mgl@1371
 34960
+
mgl@1371
 34961
+  /* Used by the back end to hold private data.  */
mgl@1371
 34962
+  union
mgl@1371
 34963
+    {
mgl@1371
 34964
+      struct aout_data_struct *aout_data;
mgl@1371
 34965
+      struct artdata *aout_ar_data;
mgl@1371
 34966
+      struct _oasys_data *oasys_obj_data;
mgl@1371
 34967
+      struct _oasys_ar_data *oasys_ar_data;
mgl@1371
 34968
+      struct coff_tdata *coff_obj_data;
mgl@1371
 34969
+      struct pe_tdata *pe_obj_data;
mgl@1371
 34970
+      struct xcoff_tdata *xcoff_obj_data;
mgl@1371
 34971
+      struct ecoff_tdata *ecoff_obj_data;
mgl@1371
 34972
+      struct ieee_data_struct *ieee_data;
mgl@1371
 34973
+      struct ieee_ar_data_struct *ieee_ar_data;
mgl@1371
 34974
+      struct srec_data_struct *srec_data;
mgl@1371
 34975
+      struct ihex_data_struct *ihex_data;
mgl@1371
 34976
+      struct tekhex_data_struct *tekhex_data;
mgl@1371
 34977
+      struct elf_obj_tdata *elf_obj_data;
mgl@1371
 34978
+      struct nlm_obj_tdata *nlm_obj_data;
mgl@1371
 34979
+      struct bout_data_struct *bout_data;
mgl@1371
 34980
+      struct mmo_data_struct *mmo_data;
mgl@1371
 34981
+      struct sun_core_struct *sun_core_data;
mgl@1371
 34982
+      struct sco5_core_struct *sco5_core_data;
mgl@1371
 34983
+      struct trad_core_struct *trad_core_data;
mgl@1371
 34984
+      struct som_data_struct *som_data;
mgl@1371
 34985
+      struct hpux_core_struct *hpux_core_data;
mgl@1371
 34986
+      struct hppabsd_core_struct *hppabsd_core_data;
mgl@1371
 34987
+      struct sgi_core_struct *sgi_core_data;
mgl@1371
 34988
+      struct lynx_core_struct *lynx_core_data;
mgl@1371
 34989
+      struct osf_core_struct *osf_core_data;
mgl@1371
 34990
+      struct cisco_core_struct *cisco_core_data;
mgl@1371
 34991
+      struct versados_data_struct *versados_data;
mgl@1371
 34992
+      struct netbsd_core_struct *netbsd_core_data;
mgl@1371
 34993
+      struct mach_o_data_struct *mach_o_data;
mgl@1371
 34994
+      struct mach_o_fat_data_struct *mach_o_fat_data;
mgl@1371
 34995
+      struct bfd_pef_data_struct *pef_data;
mgl@1371
 34996
+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
mgl@1371
 34997
+      struct bfd_sym_data_struct *sym_data;
mgl@1371
 34998
+      void *any;
mgl@1371
 34999
+    }
mgl@1371
 35000
+  tdata;
mgl@1371
 35001
+
mgl@1371
 35002
+  /* Used by the application to hold private data.  */
mgl@1371
 35003
+  void *usrdata;
mgl@1371
 35004
+
mgl@1371
 35005
+  /* Where all the allocated stuff under this BFD goes.  This is a
mgl@1371
 35006
+     struct objalloc *, but we use void * to avoid requiring the inclusion
mgl@1371
 35007
+     of objalloc.h.  */
mgl@1371
 35008
+  void *memory;
mgl@1371
 35009
+};
mgl@1371
 35010
+
mgl@1371
 35011
+typedef enum bfd_error
mgl@1371
 35012
+{
mgl@1371
 35013
+  bfd_error_no_error = 0,
mgl@1371
 35014
+  bfd_error_system_call,
mgl@1371
 35015
+  bfd_error_invalid_target,
mgl@1371
 35016
+  bfd_error_wrong_format,
mgl@1371
 35017
+  bfd_error_wrong_object_format,
mgl@1371
 35018
+  bfd_error_invalid_operation,
mgl@1371
 35019
+  bfd_error_no_memory,
mgl@1371
 35020
+  bfd_error_no_symbols,
mgl@1371
 35021
+  bfd_error_no_armap,
mgl@1371
 35022
+  bfd_error_no_more_archived_files,
mgl@1371
 35023
+  bfd_error_malformed_archive,
mgl@1371
 35024
+  bfd_error_file_not_recognized,
mgl@1371
 35025
+  bfd_error_file_ambiguously_recognized,
mgl@1371
 35026
+  bfd_error_no_contents,
mgl@1371
 35027
+  bfd_error_nonrepresentable_section,
mgl@1371
 35028
+  bfd_error_no_debug_section,
mgl@1371
 35029
+  bfd_error_bad_value,
mgl@1371
 35030
+  bfd_error_file_truncated,
mgl@1371
 35031
+  bfd_error_file_too_big,
mgl@1371
 35032
+  bfd_error_on_input,
mgl@1371
 35033
+  bfd_error_invalid_error_code
mgl@1371
 35034
+}
mgl@1371
 35035
+bfd_error_type;
mgl@1371
 35036
+
mgl@1371
 35037
+bfd_error_type bfd_get_error (void);
mgl@1371
 35038
+
mgl@1371
 35039
+void bfd_set_error (bfd_error_type error_tag, ...);
mgl@1371
 35040
+
mgl@1371
 35041
+const char *bfd_errmsg (bfd_error_type error_tag);
mgl@1371
 35042
+
mgl@1371
 35043
+void bfd_perror (const char *message);
mgl@1371
 35044
+
mgl@1371
 35045
+typedef void (*bfd_error_handler_type) (const char *, ...);
mgl@1371
 35046
+
mgl@1371
 35047
+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
mgl@1371
 35048
+
mgl@1371
 35049
+void bfd_set_error_program_name (const char *);
mgl@1371
 35050
+
mgl@1371
 35051
+bfd_error_handler_type bfd_get_error_handler (void);
mgl@1371
 35052
+
mgl@1371
 35053
+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
mgl@1371
 35054
+
mgl@1371
 35055
+long bfd_canonicalize_reloc
mgl@1371
 35056
+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
mgl@1371
 35057
+
mgl@1371
 35058
+void bfd_set_reloc
mgl@1371
 35059
+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
mgl@1371
 35060
+
mgl@1371
 35061
+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
mgl@1371
 35062
+
mgl@1371
 35063
+int bfd_get_arch_size (bfd *abfd);
mgl@1371
 35064
+
mgl@1371
 35065
+int bfd_get_sign_extend_vma (bfd *abfd);
mgl@1371
 35066
+
mgl@1371
 35067
+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
mgl@1371
 35068
+
mgl@1371
 35069
+unsigned int bfd_get_gp_size (bfd *abfd);
mgl@1371
 35070
+
mgl@1371
 35071
+void bfd_set_gp_size (bfd *abfd, unsigned int i);
mgl@1371
 35072
+
mgl@1371
 35073
+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
mgl@1371
 35074
+
mgl@1371
 35075
+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
mgl@1371
 35076
+
mgl@1371
 35077
+#define bfd_copy_private_header_data(ibfd, obfd) \
mgl@1371
 35078
+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
mgl@1371
 35079
+               (ibfd, obfd))
mgl@1371
 35080
+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
mgl@1371
 35081
+
mgl@1371
 35082
+#define bfd_copy_private_bfd_data(ibfd, obfd) \
mgl@1371
 35083
+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
mgl@1371
 35084
+               (ibfd, obfd))
mgl@1371
 35085
+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
mgl@1371
 35086
+
mgl@1371
 35087
+#define bfd_merge_private_bfd_data(ibfd, obfd) \
mgl@1371
 35088
+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
mgl@1371
 35089
+               (ibfd, obfd))
mgl@1371
 35090
+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
mgl@1371
 35091
+
mgl@1371
 35092
+#define bfd_set_private_flags(abfd, flags) \
mgl@1371
 35093
+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
mgl@1371
 35094
+#define bfd_sizeof_headers(abfd, info) \
mgl@1371
 35095
+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
mgl@1371
 35096
+
mgl@1371
 35097
+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
mgl@1371
 35098
+       BFD_SEND (abfd, _bfd_find_nearest_line, \
mgl@1371
 35099
+                 (abfd, sec, syms, off, file, func, line))
mgl@1371
 35100
+
mgl@1371
 35101
+#define bfd_find_line(abfd, syms, sym, file, line) \
mgl@1371
 35102
+       BFD_SEND (abfd, _bfd_find_line, \
mgl@1371
 35103
+                 (abfd, syms, sym, file, line))
mgl@1371
 35104
+
mgl@1371
 35105
+#define bfd_find_inliner_info(abfd, file, func, line) \
mgl@1371
 35106
+       BFD_SEND (abfd, _bfd_find_inliner_info, \
mgl@1371
 35107
+                 (abfd, file, func, line))
mgl@1371
 35108
+
mgl@1371
 35109
+#define bfd_debug_info_start(abfd) \
mgl@1371
 35110
+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
mgl@1371
 35111
+
mgl@1371
 35112
+#define bfd_debug_info_end(abfd) \
mgl@1371
 35113
+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
mgl@1371
 35114
+
mgl@1371
 35115
+#define bfd_debug_info_accumulate(abfd, section) \
mgl@1371
 35116
+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
mgl@1371
 35117
+
mgl@1371
 35118
+#define bfd_stat_arch_elt(abfd, stat) \
mgl@1371
 35119
+       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
mgl@1371
 35120
+
mgl@1371
 35121
+#define bfd_update_armap_timestamp(abfd) \
mgl@1371
 35122
+       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
mgl@1371
 35123
+
mgl@1371
 35124
+#define bfd_set_arch_mach(abfd, arch, mach)\
mgl@1371
 35125
+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
mgl@1371
 35126
+
mgl@1371
 35127
+#define bfd_relax_section(abfd, section, link_info, again) \
mgl@1371
 35128
+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
mgl@1371
 35129
+
mgl@1371
 35130
+#define bfd_gc_sections(abfd, link_info) \
mgl@1371
 35131
+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
mgl@1371
 35132
+
mgl@1371
 35133
+#define bfd_merge_sections(abfd, link_info) \
mgl@1371
 35134
+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
mgl@1371
 35135
+
mgl@1371
 35136
+#define bfd_is_group_section(abfd, sec) \
mgl@1371
 35137
+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
mgl@1371
 35138
+
mgl@1371
 35139
+#define bfd_discard_group(abfd, sec) \
mgl@1371
 35140
+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
mgl@1371
 35141
+
mgl@1371
 35142
+#define bfd_link_hash_table_create(abfd) \
mgl@1371
 35143
+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
mgl@1371
 35144
+
mgl@1371
 35145
+#define bfd_link_hash_table_free(abfd, hash) \
mgl@1371
 35146
+       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
mgl@1371
 35147
+
mgl@1371
 35148
+#define bfd_link_add_symbols(abfd, info) \
mgl@1371
 35149
+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
mgl@1371
 35150
+
mgl@1371
 35151
+#define bfd_link_just_syms(abfd, sec, info) \
mgl@1371
 35152
+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
mgl@1371
 35153
+
mgl@1371
 35154
+#define bfd_final_link(abfd, info) \
mgl@1371
 35155
+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
mgl@1371
 35156
+
mgl@1371
 35157
+#define bfd_free_cached_info(abfd) \
mgl@1371
 35158
+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
mgl@1371
 35159
+
mgl@1371
 35160
+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
mgl@1371
 35161
+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
mgl@1371
 35162
+
mgl@1371
 35163
+#define bfd_print_private_bfd_data(abfd, file)\
mgl@1371
 35164
+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
mgl@1371
 35165
+
mgl@1371
 35166
+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
mgl@1371
 35167
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
mgl@1371
 35168
+
mgl@1371
 35169
+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
mgl@1371
 35170
+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
mgl@1371
 35171
+                                                   dyncount, dynsyms, ret))
mgl@1371
 35172
+
mgl@1371
 35173
+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
mgl@1371
 35174
+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
mgl@1371
 35175
+
mgl@1371
 35176
+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
mgl@1371
 35177
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
mgl@1371
 35178
+
mgl@1371
 35179
+extern bfd_byte *bfd_get_relocated_section_contents
mgl@1371
 35180
+  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
mgl@1371
 35181
+   bfd_boolean, asymbol **);
mgl@1371
 35182
+
mgl@1371
 35183
+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
mgl@1371
 35184
+
mgl@1371
 35185
+struct bfd_preserve
mgl@1371
 35186
+{
mgl@1371
 35187
+  void *marker;
mgl@1371
 35188
+  void *tdata;
mgl@1371
 35189
+  flagword flags;
mgl@1371
 35190
+  const struct bfd_arch_info *arch_info;
mgl@1371
 35191
+  struct bfd_section *sections;
mgl@1371
 35192
+  struct bfd_section *section_last;
mgl@1371
 35193
+  unsigned int section_count;
mgl@1371
 35194
+  struct bfd_hash_table section_htab;
mgl@1371
 35195
+};
mgl@1371
 35196
+
mgl@1371
 35197
+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
mgl@1371
 35198
+
mgl@1371
 35199
+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
mgl@1371
 35200
+
mgl@1371
 35201
+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
mgl@1371
 35202
+
mgl@1371
 35203
+bfd_vma bfd_emul_get_maxpagesize (const char *);
mgl@1371
 35204
+
mgl@1371
 35205
+void bfd_emul_set_maxpagesize (const char *, bfd_vma);
mgl@1371
 35206
+
mgl@1371
 35207
+bfd_vma bfd_emul_get_commonpagesize (const char *);
mgl@1371
 35208
+
mgl@1371
 35209
+void bfd_emul_set_commonpagesize (const char *, bfd_vma);
mgl@1371
 35210
+
mgl@1371
 35211
+char *bfd_demangle (bfd *, const char *, int);
mgl@1371
 35212
+
mgl@1371
 35213
+/* Extracted from archive.c.  */
mgl@1371
 35214
+symindex bfd_get_next_mapent
mgl@1371
 35215
+   (bfd *abfd, symindex previous, carsym **sym);
mgl@1371
 35216
+
mgl@1371
 35217
+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
mgl@1371
 35218
+
mgl@1371
 35219
+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
mgl@1371
 35220
+
mgl@1371
 35221
+/* Extracted from corefile.c.  */
mgl@1371
 35222
+const char *bfd_core_file_failing_command (bfd *abfd);
mgl@1371
 35223
+
mgl@1371
 35224
+int bfd_core_file_failing_signal (bfd *abfd);
mgl@1371
 35225
+
mgl@1371
 35226
+bfd_boolean core_file_matches_executable_p
mgl@1371
 35227
+   (bfd *core_bfd, bfd *exec_bfd);
mgl@1371
 35228
+
mgl@1371
 35229
+bfd_boolean generic_core_file_matches_executable_p
mgl@1371
 35230
+   (bfd *core_bfd, bfd *exec_bfd);
mgl@1371
 35231
+
mgl@1371
 35232
+/* Extracted from targets.c.  */
mgl@1371
 35233
+#define BFD_SEND(bfd, message, arglist) \
mgl@1371
 35234
+  ((*((bfd)->xvec->message)) arglist)
mgl@1371
 35235
+
mgl@1371
 35236
+#ifdef DEBUG_BFD_SEND
mgl@1371
 35237
+#undef BFD_SEND
mgl@1371
 35238
+#define BFD_SEND(bfd, message, arglist) \
mgl@1371
 35239
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
mgl@1371
 35240
+    ((*((bfd)->xvec->message)) arglist) : \
mgl@1371
 35241
+    (bfd_assert (__FILE__,__LINE__), NULL))
mgl@1371
 35242
+#endif
mgl@1371
 35243
+#define BFD_SEND_FMT(bfd, message, arglist) \
mgl@1371
 35244
+  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
mgl@1371
 35245
+
mgl@1371
 35246
+#ifdef DEBUG_BFD_SEND
mgl@1371
 35247
+#undef BFD_SEND_FMT
mgl@1371
 35248
+#define BFD_SEND_FMT(bfd, message, arglist) \
mgl@1371
 35249
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
mgl@1371
 35250
+   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
mgl@1371
 35251
+   (bfd_assert (__FILE__,__LINE__), NULL))
mgl@1371
 35252
+#endif
mgl@1371
 35253
+
mgl@1371
 35254
+enum bfd_flavour
mgl@1371
 35255
+{
mgl@1371
 35256
+  bfd_target_unknown_flavour,
mgl@1371
 35257
+  bfd_target_aout_flavour,
mgl@1371
 35258
+  bfd_target_coff_flavour,
mgl@1371
 35259
+  bfd_target_ecoff_flavour,
mgl@1371
 35260
+  bfd_target_xcoff_flavour,
mgl@1371
 35261
+  bfd_target_elf_flavour,
mgl@1371
 35262
+  bfd_target_ieee_flavour,
mgl@1371
 35263
+  bfd_target_nlm_flavour,
mgl@1371
 35264
+  bfd_target_oasys_flavour,
mgl@1371
 35265
+  bfd_target_tekhex_flavour,
mgl@1371
 35266
+  bfd_target_srec_flavour,
mgl@1371
 35267
+  bfd_target_ihex_flavour,
mgl@1371
 35268
+  bfd_target_som_flavour,
mgl@1371
 35269
+  bfd_target_os9k_flavour,
mgl@1371
 35270
+  bfd_target_versados_flavour,
mgl@1371
 35271
+  bfd_target_msdos_flavour,
mgl@1371
 35272
+  bfd_target_ovax_flavour,
mgl@1371
 35273
+  bfd_target_evax_flavour,
mgl@1371
 35274
+  bfd_target_mmo_flavour,
mgl@1371
 35275
+  bfd_target_mach_o_flavour,
mgl@1371
 35276
+  bfd_target_pef_flavour,
mgl@1371
 35277
+  bfd_target_pef_xlib_flavour,
mgl@1371
 35278
+  bfd_target_sym_flavour
mgl@1371
 35279
+};
mgl@1371
 35280
+
mgl@1371
 35281
+enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
mgl@1371
 35282
+
mgl@1371
 35283
+/* Forward declaration.  */
mgl@1371
 35284
+typedef struct bfd_link_info _bfd_link_info;
mgl@1371
 35285
+
mgl@1371
 35286
+typedef struct bfd_target
mgl@1371
 35287
+{
mgl@1371
 35288
+  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
mgl@1371
 35289
+  char *name;
mgl@1371
 35290
+
mgl@1371
 35291
+ /* The "flavour" of a back end is a general indication about
mgl@1371
 35292
+    the contents of a file.  */
mgl@1371
 35293
+  enum bfd_flavour flavour;
mgl@1371
 35294
+
mgl@1371
 35295
+  /* The order of bytes within the data area of a file.  */
mgl@1371
 35296
+  enum bfd_endian byteorder;
mgl@1371
 35297
+
mgl@1371
 35298
+ /* The order of bytes within the header parts of a file.  */
mgl@1371
 35299
+  enum bfd_endian header_byteorder;
mgl@1371
 35300
+
mgl@1371
 35301
+  /* A mask of all the flags which an executable may have set -
mgl@1371
 35302
+     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
mgl@1371
 35303
+  flagword object_flags;
mgl@1371
 35304
+
mgl@1371
 35305
+ /* A mask of all the flags which a section may have set - from
mgl@1371
 35306
+    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
mgl@1371
 35307
+  flagword section_flags;
mgl@1371
 35308
+
mgl@1371
 35309
+ /* The character normally found at the front of a symbol.
mgl@1371
 35310
+    (if any), perhaps `_'.  */
mgl@1371
 35311
+  char symbol_leading_char;
mgl@1371
 35312
+
mgl@1371
 35313
+ /* The pad character for file names within an archive header.  */
mgl@1371
 35314
+  char ar_pad_char;
mgl@1371
 35315
+
mgl@1371
 35316
+  /* The maximum number of characters in an archive header.  */
mgl@1371
 35317
+  unsigned short ar_max_namelen;
mgl@1371
 35318
+
mgl@1371
 35319
+  /* Entries for byte swapping for data. These are different from the
mgl@1371
 35320
+     other entry points, since they don't take a BFD as the first argument.
mgl@1371
 35321
+     Certain other handlers could do the same.  */
mgl@1371
 35322
+  bfd_uint64_t   (*bfd_getx64) (const void *);
mgl@1371
 35323
+  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
mgl@1371
 35324
+  void           (*bfd_putx64) (bfd_uint64_t, void *);
mgl@1371
 35325
+  bfd_vma        (*bfd_getx32) (const void *);
mgl@1371
 35326
+  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
mgl@1371
 35327
+  void           (*bfd_putx32) (bfd_vma, void *);
mgl@1371
 35328
+  bfd_vma        (*bfd_getx16) (const void *);
mgl@1371
 35329
+  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
mgl@1371
 35330
+  void           (*bfd_putx16) (bfd_vma, void *);
mgl@1371
 35331
+
mgl@1371
 35332
+  /* Byte swapping for the headers.  */
mgl@1371
 35333
+  bfd_uint64_t   (*bfd_h_getx64) (const void *);
mgl@1371
 35334
+  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
mgl@1371
 35335
+  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
mgl@1371
 35336
+  bfd_vma        (*bfd_h_getx32) (const void *);
mgl@1371
 35337
+  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
mgl@1371
 35338
+  void           (*bfd_h_putx32) (bfd_vma, void *);
mgl@1371
 35339
+  bfd_vma        (*bfd_h_getx16) (const void *);
mgl@1371
 35340
+  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
mgl@1371
 35341
+  void           (*bfd_h_putx16) (bfd_vma, void *);
mgl@1371
 35342
+
mgl@1371
 35343
+  /* Format dependent routines: these are vectors of entry points
mgl@1371
 35344
+     within the target vector structure, one for each format to check.  */
mgl@1371
 35345
+
mgl@1371
 35346
+  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
mgl@1371
 35347
+  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
mgl@1371
 35348
+
mgl@1371
 35349
+  /* Set the format of a file being written.  */
mgl@1371
 35350
+  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
mgl@1371
 35351
+
mgl@1371
 35352
+  /* Write cached information into a file being written, at <<bfd_close>>.  */
mgl@1371
 35353
+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
mgl@1371
 35354
+
mgl@1371
 35355
+
mgl@1371
 35356
+  /* Generic entry points.  */
mgl@1371
 35357
+#define BFD_JUMP_TABLE_GENERIC(NAME) \
mgl@1371
 35358
+  NAME##_close_and_cleanup, \
mgl@1371
 35359
+  NAME##_bfd_free_cached_info, \
mgl@1371
 35360
+  NAME##_new_section_hook, \
mgl@1371
 35361
+  NAME##_get_section_contents, \
mgl@1371
 35362
+  NAME##_get_section_contents_in_window
mgl@1371
 35363
+
mgl@1371
 35364
+  /* Called when the BFD is being closed to do any necessary cleanup.  */
mgl@1371
 35365
+  bfd_boolean (*_close_and_cleanup) (bfd *);
mgl@1371
 35366
+  /* Ask the BFD to free all cached information.  */
mgl@1371
 35367
+  bfd_boolean (*_bfd_free_cached_info) (bfd *);
mgl@1371
 35368
+  /* Called when a new section is created.  */
mgl@1371
 35369
+  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
mgl@1371
 35370
+  /* Read the contents of a section.  */
mgl@1371
 35371
+  bfd_boolean (*_bfd_get_section_contents)
mgl@1371
 35372
+    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
mgl@1371
 35373
+  bfd_boolean (*_bfd_get_section_contents_in_window)
mgl@1371
 35374
+    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
mgl@1371
 35375
+
mgl@1371
 35376
+  /* Entry points to copy private data.  */
mgl@1371
 35377
+#define BFD_JUMP_TABLE_COPY(NAME) \
mgl@1371
 35378
+  NAME##_bfd_copy_private_bfd_data, \
mgl@1371
 35379
+  NAME##_bfd_merge_private_bfd_data, \
mgl@1371
 35380
+  _bfd_generic_init_private_section_data, \
mgl@1371
 35381
+  NAME##_bfd_copy_private_section_data, \
mgl@1371
 35382
+  NAME##_bfd_copy_private_symbol_data, \
mgl@1371
 35383
+  NAME##_bfd_copy_private_header_data, \
mgl@1371
 35384
+  NAME##_bfd_set_private_flags, \
mgl@1371
 35385
+  NAME##_bfd_print_private_bfd_data
mgl@1371
 35386
+
mgl@1371
 35387
+  /* Called to copy BFD general private data from one object file
mgl@1371
 35388
+     to another.  */
mgl@1371
 35389
+  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
mgl@1371
 35390
+  /* Called to merge BFD general private data from one object file
mgl@1371
 35391
+     to a common output file when linking.  */
mgl@1371
 35392
+  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
mgl@1371
 35393
+  /* Called to initialize BFD private section data from one object file
mgl@1371
 35394
+     to another.  */
mgl@1371
 35395
+#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
mgl@1371
 35396
+  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
mgl@1371
 35397
+  bfd_boolean (*_bfd_init_private_section_data)
mgl@1371
 35398
+    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
mgl@1371
 35399
+  /* Called to copy BFD private section data from one object file
mgl@1371
 35400
+     to another.  */
mgl@1371
 35401
+  bfd_boolean (*_bfd_copy_private_section_data)
mgl@1371
 35402
+    (bfd *, sec_ptr, bfd *, sec_ptr);
mgl@1371
 35403
+  /* Called to copy BFD private symbol data from one symbol
mgl@1371
 35404
+     to another.  */
mgl@1371
 35405
+  bfd_boolean (*_bfd_copy_private_symbol_data)
mgl@1371
 35406
+    (bfd *, asymbol *, bfd *, asymbol *);
mgl@1371
 35407
+  /* Called to copy BFD private header data from one object file
mgl@1371
 35408
+     to another.  */
mgl@1371
 35409
+  bfd_boolean (*_bfd_copy_private_header_data)
mgl@1371
 35410
+    (bfd *, bfd *);
mgl@1371
 35411
+  /* Called to set private backend flags.  */
mgl@1371
 35412
+  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
mgl@1371
 35413
+
mgl@1371
 35414
+  /* Called to print private BFD data.  */
mgl@1371
 35415
+  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
mgl@1371
 35416
+
mgl@1371
 35417
+  /* Core file entry points.  */
mgl@1371
 35418
+#define BFD_JUMP_TABLE_CORE(NAME) \
mgl@1371
 35419
+  NAME##_core_file_failing_command, \
mgl@1371
 35420
+  NAME##_core_file_failing_signal, \
mgl@1371
 35421
+  NAME##_core_file_matches_executable_p
mgl@1371
 35422
+
mgl@1371
 35423
+  char *      (*_core_file_failing_command) (bfd *);
mgl@1371
 35424
+  int         (*_core_file_failing_signal) (bfd *);
mgl@1371
 35425
+  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
mgl@1371
 35426
+
mgl@1371
 35427
+  /* Archive entry points.  */
mgl@1371
 35428
+#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
mgl@1371
 35429
+  NAME##_slurp_armap, \
mgl@1371
 35430
+  NAME##_slurp_extended_name_table, \
mgl@1371
 35431
+  NAME##_construct_extended_name_table, \
mgl@1371
 35432
+  NAME##_truncate_arname, \
mgl@1371
 35433
+  NAME##_write_armap, \
mgl@1371
 35434
+  NAME##_read_ar_hdr, \
mgl@1371
 35435
+  NAME##_openr_next_archived_file, \
mgl@1371
 35436
+  NAME##_get_elt_at_index, \
mgl@1371
 35437
+  NAME##_generic_stat_arch_elt, \
mgl@1371
 35438
+  NAME##_update_armap_timestamp
mgl@1371
 35439
+
mgl@1371
 35440
+  bfd_boolean (*_bfd_slurp_armap) (bfd *);
mgl@1371
 35441
+  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
mgl@1371
 35442
+  bfd_boolean (*_bfd_construct_extended_name_table)
mgl@1371
 35443
+    (bfd *, char **, bfd_size_type *, const char **);
mgl@1371
 35444
+  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
mgl@1371
 35445
+  bfd_boolean (*write_armap)
mgl@1371
 35446
+    (bfd *, unsigned int, struct orl *, unsigned int, int);
mgl@1371
 35447
+  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
mgl@1371
 35448
+  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
mgl@1371
 35449
+#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
mgl@1371
 35450
+  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
mgl@1371
 35451
+  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
mgl@1371
 35452
+  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
mgl@1371
 35453
+
mgl@1371
 35454
+  /* Entry points used for symbols.  */
mgl@1371
 35455
+#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
mgl@1371
 35456
+  NAME##_get_symtab_upper_bound, \
mgl@1371
 35457
+  NAME##_canonicalize_symtab, \
mgl@1371
 35458
+  NAME##_make_empty_symbol, \
mgl@1371
 35459
+  NAME##_print_symbol, \
mgl@1371
 35460
+  NAME##_get_symbol_info, \
mgl@1371
 35461
+  NAME##_bfd_is_local_label_name, \
mgl@1371
 35462
+  NAME##_bfd_is_target_special_symbol, \
mgl@1371
 35463
+  NAME##_get_lineno, \
mgl@1371
 35464
+  NAME##_find_nearest_line, \
mgl@1371
 35465
+  _bfd_generic_find_line, \
mgl@1371
 35466
+  NAME##_find_inliner_info, \
mgl@1371
 35467
+  NAME##_bfd_make_debug_symbol, \
mgl@1371
 35468
+  NAME##_read_minisymbols, \
mgl@1371
 35469
+  NAME##_minisymbol_to_symbol
mgl@1371
 35470
+
mgl@1371
 35471
+  long        (*_bfd_get_symtab_upper_bound) (bfd *);
mgl@1371
 35472
+  long        (*_bfd_canonicalize_symtab)
mgl@1371
 35473
+    (bfd *, struct bfd_symbol **);
mgl@1371
 35474
+  struct bfd_symbol *
mgl@1371
 35475
+              (*_bfd_make_empty_symbol) (bfd *);
mgl@1371
 35476
+  void        (*_bfd_print_symbol)
mgl@1371
 35477
+    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
mgl@1371
 35478
+#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
mgl@1371
 35479
+  void        (*_bfd_get_symbol_info)
mgl@1371
 35480
+    (bfd *, struct bfd_symbol *, symbol_info *);
mgl@1371
 35481
+#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
mgl@1371
 35482
+  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
mgl@1371
 35483
+  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
mgl@1371
 35484
+  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
mgl@1371
 35485
+  bfd_boolean (*_bfd_find_nearest_line)
mgl@1371
 35486
+    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
mgl@1371
 35487
+     const char **, const char **, unsigned int *);
mgl@1371
 35488
+  bfd_boolean (*_bfd_find_line)
mgl@1371
 35489
+    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
mgl@1371
 35490
+     const char **, unsigned int *);
mgl@1371
 35491
+  bfd_boolean (*_bfd_find_inliner_info)
mgl@1371
 35492
+    (bfd *, const char **, const char **, unsigned int *);
mgl@1371
 35493
+ /* Back-door to allow format-aware applications to create debug symbols
mgl@1371
 35494
+    while using BFD for everything else.  Currently used by the assembler
mgl@1371
 35495
+    when creating COFF files.  */
mgl@1371
 35496
+  asymbol *   (*_bfd_make_debug_symbol)
mgl@1371
 35497
+    (bfd *, void *, unsigned long size);
mgl@1371
 35498
+#define bfd_read_minisymbols(b, d, m, s) \
mgl@1371
 35499
+  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
mgl@1371
 35500
+  long        (*_read_minisymbols)
mgl@1371
 35501
+    (bfd *, bfd_boolean, void **, unsigned int *);
mgl@1371
 35502
+#define bfd_minisymbol_to_symbol(b, d, m, f) \
mgl@1371
 35503
+  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
mgl@1371
 35504
+  asymbol *   (*_minisymbol_to_symbol)
mgl@1371
 35505
+    (bfd *, bfd_boolean, const void *, asymbol *);
mgl@1371
 35506
+
mgl@1371
 35507
+  /* Routines for relocs.  */
mgl@1371
 35508
+#define BFD_JUMP_TABLE_RELOCS(NAME) \
mgl@1371
 35509
+  NAME##_get_reloc_upper_bound, \
mgl@1371
 35510
+  NAME##_canonicalize_reloc, \
mgl@1371
 35511
+  NAME##_bfd_reloc_type_lookup, \
mgl@1371
 35512
+  NAME##_bfd_reloc_name_lookup
mgl@1371
 35513
+
mgl@1371
 35514
+  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
mgl@1371
 35515
+  long        (*_bfd_canonicalize_reloc)
mgl@1371
 35516
+    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
mgl@1371
 35517
+  /* See documentation on reloc types.  */
mgl@1371
 35518
+  reloc_howto_type *
mgl@1371
 35519
+              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
mgl@1371
 35520
+  reloc_howto_type *
mgl@1371
 35521
+              (*reloc_name_lookup) (bfd *, const char *);
mgl@1371
 35522
+
mgl@1371
 35523
+
mgl@1371
 35524
+  /* Routines used when writing an object file.  */
mgl@1371
 35525
+#define BFD_JUMP_TABLE_WRITE(NAME) \
mgl@1371
 35526
+  NAME##_set_arch_mach, \
mgl@1371
 35527
+  NAME##_set_section_contents
mgl@1371
 35528
+
mgl@1371
 35529
+  bfd_boolean (*_bfd_set_arch_mach)
mgl@1371
 35530
+    (bfd *, enum bfd_architecture, unsigned long);
mgl@1371
 35531
+  bfd_boolean (*_bfd_set_section_contents)
mgl@1371
 35532
+    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
mgl@1371
 35533
+
mgl@1371
 35534
+  /* Routines used by the linker.  */
mgl@1371
 35535
+#define BFD_JUMP_TABLE_LINK(NAME) \
mgl@1371
 35536
+  NAME##_sizeof_headers, \
mgl@1371
 35537
+  NAME##_bfd_get_relocated_section_contents, \
mgl@1371
 35538
+  NAME##_bfd_relax_section, \
mgl@1371
 35539
+  NAME##_bfd_link_hash_table_create, \
mgl@1371
 35540
+  NAME##_bfd_link_hash_table_free, \
mgl@1371
 35541
+  NAME##_bfd_link_add_symbols, \
mgl@1371
 35542
+  NAME##_bfd_link_just_syms, \
mgl@1371
 35543
+  NAME##_bfd_final_link, \
mgl@1371
 35544
+  NAME##_bfd_link_split_section, \
mgl@1371
 35545
+  NAME##_bfd_gc_sections, \
mgl@1371
 35546
+  NAME##_bfd_merge_sections, \
mgl@1371
 35547
+  NAME##_bfd_is_group_section, \
mgl@1371
 35548
+  NAME##_bfd_discard_group, \
mgl@1371
 35549
+  NAME##_section_already_linked \
mgl@1371
 35550
+
mgl@1371
 35551
+  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
mgl@1371
 35552
+  bfd_byte *  (*_bfd_get_relocated_section_contents)
mgl@1371
 35553
+    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
mgl@1371
 35554
+     bfd_byte *, bfd_boolean, struct bfd_symbol **);
mgl@1371
 35555
+
mgl@1371
 35556
+  bfd_boolean (*_bfd_relax_section)
mgl@1371
 35557
+    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
mgl@1371
 35558
+
mgl@1371
 35559
+  /* Create a hash table for the linker.  Different backends store
mgl@1371
 35560
+     different information in this table.  */
mgl@1371
 35561
+  struct bfd_link_hash_table *
mgl@1371
 35562
+              (*_bfd_link_hash_table_create) (bfd *);
mgl@1371
 35563
+
mgl@1371
 35564
+  /* Release the memory associated with the linker hash table.  */
mgl@1371
 35565
+  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
mgl@1371
 35566
+
mgl@1371
 35567
+  /* Add symbols from this object file into the hash table.  */
mgl@1371
 35568
+  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
mgl@1371
 35569
+
mgl@1371
 35570
+  /* Indicate that we are only retrieving symbol values from this section.  */
mgl@1371
 35571
+  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
mgl@1371
 35572
+
mgl@1371
 35573
+  /* Do a link based on the link_order structures attached to each
mgl@1371
 35574
+     section of the BFD.  */
mgl@1371
 35575
+  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
mgl@1371
 35576
+
mgl@1371
 35577
+  /* Should this section be split up into smaller pieces during linking.  */
mgl@1371
 35578
+  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
mgl@1371
 35579
+
mgl@1371
 35580
+  /* Remove sections that are not referenced from the output.  */
mgl@1371
 35581
+  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
mgl@1371
 35582
+
mgl@1371
 35583
+  /* Attempt to merge SEC_MERGE sections.  */
mgl@1371
 35584
+  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
mgl@1371
 35585
+
mgl@1371
 35586
+  /* Is this section a member of a group?  */
mgl@1371
 35587
+  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
mgl@1371
 35588
+
mgl@1371
 35589
+  /* Discard members of a group.  */
mgl@1371
 35590
+  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
mgl@1371
 35591
+
mgl@1371
 35592
+  /* Check if SEC has been already linked during a reloceatable or
mgl@1371
 35593
+     final link.  */
mgl@1371
 35594
+  void (*_section_already_linked) (bfd *, struct bfd_section *,
mgl@1371
 35595
+                                   struct bfd_link_info *);
mgl@1371
 35596
+
mgl@1371
 35597
+  /* Routines to handle dynamic symbols and relocs.  */
mgl@1371
 35598
+#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
mgl@1371
 35599
+  NAME##_get_dynamic_symtab_upper_bound, \
mgl@1371
 35600
+  NAME##_canonicalize_dynamic_symtab, \
mgl@1371
 35601
+  NAME##_get_synthetic_symtab, \
mgl@1371
 35602
+  NAME##_get_dynamic_reloc_upper_bound, \
mgl@1371
 35603
+  NAME##_canonicalize_dynamic_reloc
mgl@1371
 35604
+
mgl@1371
 35605
+  /* Get the amount of memory required to hold the dynamic symbols.  */
mgl@1371
 35606
+  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
mgl@1371
 35607
+  /* Read in the dynamic symbols.  */
mgl@1371
 35608
+  long        (*_bfd_canonicalize_dynamic_symtab)
mgl@1371
 35609
+    (bfd *, struct bfd_symbol **);
mgl@1371
 35610
+  /* Create synthetized symbols.  */
mgl@1371
 35611
+  long        (*_bfd_get_synthetic_symtab)
mgl@1371
 35612
+    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
mgl@1371
 35613
+     struct bfd_symbol **);
mgl@1371
 35614
+  /* Get the amount of memory required to hold the dynamic relocs.  */
mgl@1371
 35615
+  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
mgl@1371
 35616
+  /* Read in the dynamic relocs.  */
mgl@1371
 35617
+  long        (*_bfd_canonicalize_dynamic_reloc)
mgl@1371
 35618
+    (bfd *, arelent **, struct bfd_symbol **);
mgl@1371
 35619
+
mgl@1371
 35620
+  /* Opposite endian version of this target.  */
mgl@1371
 35621
+  const struct bfd_target * alternative_target;
mgl@1371
 35622
+
mgl@1371
 35623
+  /* Data for use by back-end routines, which isn't
mgl@1371
 35624
+     generic enough to belong in this structure.  */
mgl@1371
 35625
+  const void *backend_data;
mgl@1371
 35626
+
mgl@1371
 35627
+} bfd_target;
mgl@1371
 35628
+
mgl@1371
 35629
+bfd_boolean bfd_set_default_target (const char *name);
mgl@1371
 35630
+
mgl@1371
 35631
+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
mgl@1371
 35632
+
mgl@1371
 35633
+const char ** bfd_target_list (void);
mgl@1371
 35634
+
mgl@1371
 35635
+const bfd_target *bfd_search_for_target
mgl@1371
 35636
+   (int (*search_func) (const bfd_target *, void *),
mgl@1371
 35637
+    void *);
mgl@1371
 35638
+
mgl@1371
 35639
+/* Extracted from format.c.  */
mgl@1371
 35640
+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
mgl@1371
 35641
+
mgl@1371
 35642
+bfd_boolean bfd_check_format_matches
mgl@1371
 35643
+   (bfd *abfd, bfd_format format, char ***matching);
mgl@1371
 35644
+
mgl@1371
 35645
+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
mgl@1371
 35646
+
mgl@1371
 35647
+const char *bfd_format_string (bfd_format format);
mgl@1371
 35648
+
mgl@1371
 35649
+/* Extracted from linker.c.  */
mgl@1371
 35650
+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
mgl@1371
 35651
+
mgl@1371
 35652
+#define bfd_link_split_section(abfd, sec) \
mgl@1371
 35653
+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
mgl@1371
 35654
+
mgl@1371
 35655
+void bfd_section_already_linked (bfd *abfd, asection *sec,
mgl@1371
 35656
+    struct bfd_link_info *info);
mgl@1371
 35657
+
mgl@1371
 35658
+#define bfd_section_already_linked(abfd, sec, info) \
mgl@1371
 35659
+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
mgl@1371
 35660
+
mgl@1371
 35661
+/* Extracted from simple.c.  */
mgl@1371
 35662
+bfd_byte *bfd_simple_get_relocated_section_contents
mgl@1371
 35663
+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
mgl@1371
 35664
+
mgl@1371
 35665
+#ifdef __cplusplus
mgl@1371
 35666
+}
mgl@1371
 35667
+#endif
mgl@1371
 35668
+#endif
mgl@1371
 35669
--- /dev/null
mgl@1371
 35670
+++ b/bfd/bfd_stdint.h
mgl@1371
 35671
@@ -0,0 +1,47 @@
mgl@1371
 35672
+/* generated for  gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
mgl@1371
 35673
+
mgl@1371
 35674
+#ifndef GCC_GENERATED_STDINT_H
mgl@1371
 35675
+#define GCC_GENERATED_STDINT_H 1
mgl@1371
 35676
+
mgl@1371
 35677
+#include <sys/types.h>
mgl@1371
 35678
+#include <stdint.h>
mgl@1371
 35679
+/* glibc uses these symbols as guards to prevent redefinitions.  */
mgl@1371
 35680
+#ifdef __int8_t_defined
mgl@1371
 35681
+#define _INT8_T
mgl@1371
 35682
+#define _INT16_T
mgl@1371
 35683
+#define _INT32_T
mgl@1371
 35684
+#endif
mgl@1371
 35685
+#ifdef __uint32_t_defined
mgl@1371
 35686
+#define _UINT32_T
mgl@1371
 35687
+#endif
mgl@1371
 35688
+
mgl@1371
 35689
+
mgl@1371
 35690
+/* Some systems have guard macros to prevent redefinitions, define them.  */
mgl@1371
 35691
+#ifndef _INT8_T
mgl@1371
 35692
+#define _INT8_T
mgl@1371
 35693
+#endif
mgl@1371
 35694
+#ifndef _INT16_T
mgl@1371
 35695
+#define _INT16_T
mgl@1371
 35696
+#endif
mgl@1371
 35697
+#ifndef _INT32_T
mgl@1371
 35698
+#define _INT32_T
mgl@1371
 35699
+#endif
mgl@1371
 35700
+#ifndef _UINT8_T
mgl@1371
 35701
+#define _UINT8_T
mgl@1371
 35702
+#endif
mgl@1371
 35703
+#ifndef _UINT16_T
mgl@1371
 35704
+#define _UINT16_T
mgl@1371
 35705
+#endif
mgl@1371
 35706
+#ifndef _UINT32_T
mgl@1371
 35707
+#define _UINT32_T
mgl@1371
 35708
+#endif
mgl@1371
 35709
+
mgl@1371
 35710
+/* system headers have good uint64_t and int64_t */
mgl@1371
 35711
+#ifndef _INT64_T
mgl@1371
 35712
+#define _INT64_T
mgl@1371
 35713
+#endif
mgl@1371
 35714
+#ifndef _UINT64_T
mgl@1371
 35715
+#define _UINT64_T
mgl@1371
 35716
+#endif
mgl@1371
 35717
+
mgl@1371
 35718
+#endif /* GCC_GENERATED_STDINT_H */
mgl@1371
 35719
--- a/bfd/configure
mgl@1371
 35720
+++ b/bfd/configure
mgl@1371
 35721
@@ -2994,7 +2994,7 @@ fi
mgl@1371
 35722
 
mgl@1371
 35723
 # Define the identity of the package.
mgl@1371
 35724
  PACKAGE=bfd
mgl@1371
 35725
- VERSION=2.18
mgl@1371
 35726
+ VERSION=2.18.atmel.1.0.1.avr32linux.1
mgl@1371
 35727
 
mgl@1371
 35728
 
mgl@1371
 35729
 cat >>confdefs.h <<_ACEOF
mgl@1371
 35730
@@ -19041,6 +19041,7 @@ do
mgl@1371
 35731
     bfd_efi_app_ia64_vec)	tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
mgl@1371
 35732
     bfd_elf32_am33lin_vec)	tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
mgl@1371
 35733
     bfd_elf32_avr_vec)		tb="$tb elf32-avr.lo elf32.lo $elf" ;;
mgl@1371
 35734
+    bfd_elf32_avr32_vec)	tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
mgl@1371
 35735
     bfd_elf32_bfin_vec)		tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
mgl@1371
 35736
     bfd_elf32_bfinfdpic_vec)	tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
mgl@1371
 35737
     bfd_elf32_big_generic_vec) 	tb="$tb elf32-gen.lo elf32.lo $elf" ;;
mgl@1371
 35738
--- /dev/null
mgl@1371
 35739
+++ b/bfd/doc/bfd.h
mgl@1371
 35740
@@ -0,0 +1,5493 @@
mgl@1371
 35741
+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
mgl@1371
 35742
+   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
mgl@1371
 35743
+   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
mgl@1371
 35744
+   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
mgl@1371
 35745
+   "linker.c" and "simple.c".
mgl@1371
 35746
+   Run "make headers" in your build bfd/ to regenerate.  */
mgl@1371
 35747
+
mgl@1371
 35748
+/* Main header file for the bfd library -- portable access to object files.
mgl@1371
 35749
+
mgl@1371
 35750
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
mgl@1371
 35751
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
mgl@1371
 35752
+   Free Software Foundation, Inc.
mgl@1371
 35753
+
mgl@1371
 35754
+   Contributed by Cygnus Support.
mgl@1371
 35755
+
mgl@1371
 35756
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
 35757
+
mgl@1371
 35758
+   This program is free software; you can redistribute it and/or modify
mgl@1371
 35759
+   it under the terms of the GNU General Public License as published by
mgl@1371
 35760
+   the Free Software Foundation; either version 3 of the License, or
mgl@1371
 35761
+   (at your option) any later version.
mgl@1371
 35762
+
mgl@1371
 35763
+   This program is distributed in the hope that it will be useful,
mgl@1371
 35764
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 35765
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 35766
+   GNU General Public License for more details.
mgl@1371
 35767
+
mgl@1371
 35768
+   You should have received a copy of the GNU General Public License
mgl@1371
 35769
+   along with this program; if not, write to the Free Software
mgl@1371
 35770
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
mgl@1371
 35771
+
mgl@1371
 35772
+#ifndef __BFD_H_SEEN__
mgl@1371
 35773
+#define __BFD_H_SEEN__
mgl@1371
 35774
+
mgl@1371
 35775
+#ifdef __cplusplus
mgl@1371
 35776
+extern "C" {
mgl@1371
 35777
+#endif
mgl@1371
 35778
+
mgl@1371
 35779
+#include "ansidecl.h"
mgl@1371
 35780
+#include "symcat.h"
mgl@1371
 35781
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
mgl@1371
 35782
+#ifndef SABER
mgl@1371
 35783
+/* This hack is to avoid a problem with some strict ANSI C preprocessors.
mgl@1371
 35784
+   The problem is, "32_" is not a valid preprocessing token, and we don't
mgl@1371
 35785
+   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
mgl@1371
 35786
+   cause the inner CONCAT2 macros to be evaluated first, producing
mgl@1371
 35787
+   still-valid pp-tokens.  Then the final concatenation can be done.  */
mgl@1371
 35788
+#undef CONCAT4
mgl@1371
 35789
+#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
mgl@1371
 35790
+#endif
mgl@1371
 35791
+#endif
mgl@1371
 35792
+
mgl@1371
 35793
+/* This is a utility macro to handle the situation where the code
mgl@1371
 35794
+   wants to place a constant string into the code, followed by a
mgl@1371
 35795
+   comma and then the length of the string.  Doing this by hand
mgl@1371
 35796
+   is error prone, so using this macro is safer.  The macro will
mgl@1371
 35797
+   also safely handle the case where a NULL is passed as the arg.  */
mgl@1371
 35798
+#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
mgl@1371
 35799
+/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
mgl@1371
 35800
+   to create the arguments to another macro, since the preprocessor
mgl@1371
 35801
+   will mis-count the number of arguments to the outer macro (by not
mgl@1371
 35802
+   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
mgl@1371
 35803
+   problem for example when trying to use STRING_COMMA_LEN to build
mgl@1371
 35804
+   the arguments to the strncmp() macro.  Hence this alternative
mgl@1371
 35805
+   definition of strncmp is provided here.
mgl@1371
 35806
+   
mgl@1371
 35807
+   Note - these macros do NOT work if STR2 is not a constant string.  */
mgl@1371
 35808
+#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
mgl@1371
 35809
+  /* strcpy() can have a similar problem, but since we know we are
mgl@1371
 35810
+     copying a constant string, we can use memcpy which will be faster
mgl@1371
 35811
+     since there is no need to check for a NUL byte inside STR.  We
mgl@1371
 35812
+     can also save time if we do not need to copy the terminating NUL.  */
mgl@1371
 35813
+#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
mgl@1371
 35814
+#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
mgl@1371
 35815
+
mgl@1371
 35816
+
mgl@1371
 35817
+/* The word size used by BFD on the host.  This may be 64 with a 32
mgl@1371
 35818
+   bit target if the host is 64 bit, or if other 64 bit targets have
mgl@1371
 35819
+   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
mgl@1371
 35820
+#define BFD_ARCH_SIZE @wordsize@
mgl@1371
 35821
+
mgl@1371
 35822
+/* The word size of the default bfd target.  */
mgl@1371
 35823
+#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
mgl@1371
 35824
+
mgl@1371
 35825
+#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
mgl@1371
 35826
+#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
mgl@1371
 35827
+#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
mgl@1371
 35828
+#if @BFD_HOST_64_BIT_DEFINED@
mgl@1371
 35829
+#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
mgl@1371
 35830
+#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
mgl@1371
 35831
+typedef BFD_HOST_64_BIT bfd_int64_t;
mgl@1371
 35832
+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
mgl@1371
 35833
+#endif
mgl@1371
 35834
+
mgl@1371
 35835
+#if BFD_ARCH_SIZE >= 64
mgl@1371
 35836
+#define BFD64
mgl@1371
 35837
+#endif
mgl@1371
 35838
+
mgl@1371
 35839
+#ifndef INLINE
mgl@1371
 35840
+#if __GNUC__ >= 2
mgl@1371
 35841
+#define INLINE __inline__
mgl@1371
 35842
+#else
mgl@1371
 35843
+#define INLINE
mgl@1371
 35844
+#endif
mgl@1371
 35845
+#endif
mgl@1371
 35846
+
mgl@1371
 35847
+/* Declaring a type wide enough to hold a host long and a host pointer.  */
mgl@1371
 35848
+#define BFD_HOSTPTR_T	@BFD_HOSTPTR_T@
mgl@1371
 35849
+typedef BFD_HOSTPTR_T bfd_hostptr_t;
mgl@1371
 35850
+
mgl@1371
 35851
+/* Forward declaration.  */
mgl@1371
 35852
+typedef struct bfd bfd;
mgl@1371
 35853
+
mgl@1371
 35854
+/* Boolean type used in bfd.  Too many systems define their own
mgl@1371
 35855
+   versions of "boolean" for us to safely typedef a "boolean" of
mgl@1371
 35856
+   our own.  Using an enum for "bfd_boolean" has its own set of
mgl@1371
 35857
+   problems, with strange looking casts required to avoid warnings
mgl@1371
 35858
+   on some older compilers.  Thus we just use an int.
mgl@1371
 35859
+
mgl@1371
 35860
+   General rule: Functions which are bfd_boolean return TRUE on
mgl@1371
 35861
+   success and FALSE on failure (unless they're a predicate).  */
mgl@1371
 35862
+
mgl@1371
 35863
+typedef int bfd_boolean;
mgl@1371
 35864
+#undef FALSE
mgl@1371
 35865
+#undef TRUE
mgl@1371
 35866
+#define FALSE 0
mgl@1371
 35867
+#define TRUE 1
mgl@1371
 35868
+
mgl@1371
 35869
+#ifdef BFD64
mgl@1371
 35870
+
mgl@1371
 35871
+#ifndef BFD_HOST_64_BIT
mgl@1371
 35872
+ #error No 64 bit integer type available
mgl@1371
 35873
+#endif /* ! defined (BFD_HOST_64_BIT) */
mgl@1371
 35874
+
mgl@1371
 35875
+typedef BFD_HOST_U_64_BIT bfd_vma;
mgl@1371
 35876
+typedef BFD_HOST_64_BIT bfd_signed_vma;
mgl@1371
 35877
+typedef BFD_HOST_U_64_BIT bfd_size_type;
mgl@1371
 35878
+typedef BFD_HOST_U_64_BIT symvalue;
mgl@1371
 35879
+
mgl@1371
 35880
+#ifndef fprintf_vma
mgl@1371
 35881
+#if BFD_HOST_64BIT_LONG
mgl@1371
 35882
+#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
mgl@1371
 35883
+#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
mgl@1371
 35884
+#elif BFD_HOST_64BIT_LONG_LONG
mgl@1371
 35885
+#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
mgl@1371
 35886
+#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
mgl@1371
 35887
+#else
mgl@1371
 35888
+#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
mgl@1371
 35889
+#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
mgl@1371
 35890
+#define fprintf_vma(s,x) \
mgl@1371
 35891
+  fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
mgl@1371
 35892
+#define sprintf_vma(s,x) \
mgl@1371
 35893
+  sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
mgl@1371
 35894
+#endif
mgl@1371
 35895
+#endif
mgl@1371
 35896
+
mgl@1371
 35897
+#else /* not BFD64  */
mgl@1371
 35898
+
mgl@1371
 35899
+/* Represent a target address.  Also used as a generic unsigned type
mgl@1371
 35900
+   which is guaranteed to be big enough to hold any arithmetic types
mgl@1371
 35901
+   we need to deal with.  */
mgl@1371
 35902
+typedef unsigned long bfd_vma;
mgl@1371
 35903
+
mgl@1371
 35904
+/* A generic signed type which is guaranteed to be big enough to hold any
mgl@1371
 35905
+   arithmetic types we need to deal with.  Can be assumed to be compatible
mgl@1371
 35906
+   with bfd_vma in the same way that signed and unsigned ints are compatible
mgl@1371
 35907
+   (as parameters, in assignment, etc).  */
mgl@1371
 35908
+typedef long bfd_signed_vma;
mgl@1371
 35909
+
mgl@1371
 35910
+typedef unsigned long symvalue;
mgl@1371
 35911
+typedef unsigned long bfd_size_type;
mgl@1371
 35912
+
mgl@1371
 35913
+/* Print a bfd_vma x on stream s.  */
mgl@1371
 35914
+#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
mgl@1371
 35915
+#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
mgl@1371
 35916
+
mgl@1371
 35917
+#endif /* not BFD64  */
mgl@1371
 35918
+
mgl@1371
 35919
+#define HALF_BFD_SIZE_TYPE \
mgl@1371
 35920
+  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
mgl@1371
 35921
+
mgl@1371
 35922
+#ifndef BFD_HOST_64_BIT
mgl@1371
 35923
+/* Fall back on a 32 bit type.  The idea is to make these types always
mgl@1371
 35924
+   available for function return types, but in the case that
mgl@1371
 35925
+   BFD_HOST_64_BIT is undefined such a function should abort or
mgl@1371
 35926
+   otherwise signal an error.  */
mgl@1371
 35927
+typedef bfd_signed_vma bfd_int64_t;
mgl@1371
 35928
+typedef bfd_vma bfd_uint64_t;
mgl@1371
 35929
+#endif
mgl@1371
 35930
+
mgl@1371
 35931
+/* An offset into a file.  BFD always uses the largest possible offset
mgl@1371
 35932
+   based on the build time availability of fseek, fseeko, or fseeko64.  */
mgl@1371
 35933
+typedef @bfd_file_ptr@ file_ptr;
mgl@1371
 35934
+typedef unsigned @bfd_file_ptr@ ufile_ptr;
mgl@1371
 35935
+
mgl@1371
 35936
+extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
mgl@1371
 35937
+extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
mgl@1371
 35938
+
mgl@1371
 35939
+#define printf_vma(x) fprintf_vma(stdout,x)
mgl@1371
 35940
+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
mgl@1371
 35941
+
mgl@1371
 35942
+typedef unsigned int flagword;	/* 32 bits of flags */
mgl@1371
 35943
+typedef unsigned char bfd_byte;
mgl@1371
 35944
+
mgl@1371
 35945
+/* File formats.  */
mgl@1371
 35946
+
mgl@1371
 35947
+typedef enum bfd_format
mgl@1371
 35948
+{
mgl@1371
 35949
+  bfd_unknown = 0,	/* File format is unknown.  */
mgl@1371
 35950
+  bfd_object,		/* Linker/assembler/compiler output.  */
mgl@1371
 35951
+  bfd_archive,		/* Object archive file.  */
mgl@1371
 35952
+  bfd_core,		/* Core dump.  */
mgl@1371
 35953
+  bfd_type_end		/* Marks the end; don't use it!  */
mgl@1371
 35954
+}
mgl@1371
 35955
+bfd_format;
mgl@1371
 35956
+
mgl@1371
 35957
+/* Values that may appear in the flags field of a BFD.  These also
mgl@1371
 35958
+   appear in the object_flags field of the bfd_target structure, where
mgl@1371
 35959
+   they indicate the set of flags used by that backend (not all flags
mgl@1371
 35960
+   are meaningful for all object file formats) (FIXME: at the moment,
mgl@1371
 35961
+   the object_flags values have mostly just been copied from backend
mgl@1371
 35962
+   to another, and are not necessarily correct).  */
mgl@1371
 35963
+
mgl@1371
 35964
+/* No flags.  */
mgl@1371
 35965
+#define BFD_NO_FLAGS   	0x00
mgl@1371
 35966
+
mgl@1371
 35967
+/* BFD contains relocation entries.  */
mgl@1371
 35968
+#define HAS_RELOC   	0x01
mgl@1371
 35969
+
mgl@1371
 35970
+/* BFD is directly executable.  */
mgl@1371
 35971
+#define EXEC_P      	0x02
mgl@1371
 35972
+
mgl@1371
 35973
+/* BFD has line number information (basically used for F_LNNO in a
mgl@1371
 35974
+   COFF header).  */
mgl@1371
 35975
+#define HAS_LINENO  	0x04
mgl@1371
 35976
+
mgl@1371
 35977
+/* BFD has debugging information.  */
mgl@1371
 35978
+#define HAS_DEBUG   	0x08
mgl@1371
 35979
+
mgl@1371
 35980
+/* BFD has symbols.  */
mgl@1371
 35981
+#define HAS_SYMS    	0x10
mgl@1371
 35982
+
mgl@1371
 35983
+/* BFD has local symbols (basically used for F_LSYMS in a COFF
mgl@1371
 35984
+   header).  */
mgl@1371
 35985
+#define HAS_LOCALS  	0x20
mgl@1371
 35986
+
mgl@1371
 35987
+/* BFD is a dynamic object.  */
mgl@1371
 35988
+#define DYNAMIC     	0x40
mgl@1371
 35989
+
mgl@1371
 35990
+/* Text section is write protected (if D_PAGED is not set, this is
mgl@1371
 35991
+   like an a.out NMAGIC file) (the linker sets this by default, but
mgl@1371
 35992
+   clears it for -r or -N).  */
mgl@1371
 35993
+#define WP_TEXT     	0x80
mgl@1371
 35994
+
mgl@1371
 35995
+/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
mgl@1371
 35996
+   linker sets this by default, but clears it for -r or -n or -N).  */
mgl@1371
 35997
+#define D_PAGED     	0x100
mgl@1371
 35998
+
mgl@1371
 35999
+/* BFD is relaxable (this means that bfd_relax_section may be able to
mgl@1371
 36000
+   do something) (sometimes bfd_relax_section can do something even if
mgl@1371
 36001
+   this is not set).  */
mgl@1371
 36002
+#define BFD_IS_RELAXABLE 0x200
mgl@1371
 36003
+
mgl@1371
 36004
+/* This may be set before writing out a BFD to request using a
mgl@1371
 36005
+   traditional format.  For example, this is used to request that when
mgl@1371
 36006
+   writing out an a.out object the symbols not be hashed to eliminate
mgl@1371
 36007
+   duplicates.  */
mgl@1371
 36008
+#define BFD_TRADITIONAL_FORMAT 0x400
mgl@1371
 36009
+
mgl@1371
 36010
+/* This flag indicates that the BFD contents are actually cached in
mgl@1371
 36011
+   memory.  If this is set, iostream points to a bfd_in_memory struct.  */
mgl@1371
 36012
+#define BFD_IN_MEMORY 0x800
mgl@1371
 36013
+
mgl@1371
 36014
+/* The sections in this BFD specify a memory page.  */
mgl@1371
 36015
+#define HAS_LOAD_PAGE 0x1000
mgl@1371
 36016
+
mgl@1371
 36017
+/* This BFD has been created by the linker and doesn't correspond
mgl@1371
 36018
+   to any input file.  */
mgl@1371
 36019
+#define BFD_LINKER_CREATED 0x2000
mgl@1371
 36020
+
mgl@1371
 36021
+/* Symbols and relocation.  */
mgl@1371
 36022
+
mgl@1371
 36023
+/* A count of carsyms (canonical archive symbols).  */
mgl@1371
 36024
+typedef unsigned long symindex;
mgl@1371
 36025
+
mgl@1371
 36026
+/* How to perform a relocation.  */
mgl@1371
 36027
+typedef const struct reloc_howto_struct reloc_howto_type;
mgl@1371
 36028
+
mgl@1371
 36029
+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
mgl@1371
 36030
+
mgl@1371
 36031
+/* General purpose part of a symbol X;
mgl@1371
 36032
+   target specific parts are in libcoff.h, libaout.h, etc.  */
mgl@1371
 36033
+
mgl@1371
 36034
+#define bfd_get_section(x) ((x)->section)
mgl@1371
 36035
+#define bfd_get_output_section(x) ((x)->section->output_section)
mgl@1371
 36036
+#define bfd_set_section(x,y) ((x)->section) = (y)
mgl@1371
 36037
+#define bfd_asymbol_base(x) ((x)->section->vma)
mgl@1371
 36038
+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
mgl@1371
 36039
+#define bfd_asymbol_name(x) ((x)->name)
mgl@1371
 36040
+/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
mgl@1371
 36041
+#define bfd_asymbol_bfd(x) ((x)->the_bfd)
mgl@1371
 36042
+#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
mgl@1371
 36043
+
mgl@1371
 36044
+/* A canonical archive symbol.  */
mgl@1371
 36045
+/* This is a type pun with struct ranlib on purpose!  */
mgl@1371
 36046
+typedef struct carsym
mgl@1371
 36047
+{
mgl@1371
 36048
+  char *name;
mgl@1371
 36049
+  file_ptr file_offset;	/* Look here to find the file.  */
mgl@1371
 36050
+}
mgl@1371
 36051
+carsym;			/* To make these you call a carsymogen.  */
mgl@1371
 36052
+
mgl@1371
 36053
+/* Used in generating armaps (archive tables of contents).
mgl@1371
 36054
+   Perhaps just a forward definition would do?  */
mgl@1371
 36055
+struct orl 			/* Output ranlib.  */
mgl@1371
 36056
+{
mgl@1371
 36057
+  char **name;		/* Symbol name.  */
mgl@1371
 36058
+  union
mgl@1371
 36059
+  {
mgl@1371
 36060
+    file_ptr pos;
mgl@1371
 36061
+    bfd *abfd;
mgl@1371
 36062
+  } u;			/* bfd* or file position.  */
mgl@1371
 36063
+  int namidx;		/* Index into string table.  */
mgl@1371
 36064
+};
mgl@1371
 36065
+
mgl@1371
 36066
+/* Linenumber stuff.  */
mgl@1371
 36067
+typedef struct lineno_cache_entry
mgl@1371
 36068
+{
mgl@1371
 36069
+  unsigned int line_number;	/* Linenumber from start of function.  */
mgl@1371
 36070
+  union
mgl@1371
 36071
+  {
mgl@1371
 36072
+    struct bfd_symbol *sym;	/* Function name.  */
mgl@1371
 36073
+    bfd_vma offset;	    		/* Offset into section.  */
mgl@1371
 36074
+  } u;
mgl@1371
 36075
+}
mgl@1371
 36076
+alent;
mgl@1371
 36077
+
mgl@1371
 36078
+/* Object and core file sections.  */
mgl@1371
 36079
+
mgl@1371
 36080
+#define	align_power(addr, align)	\
mgl@1371
 36081
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
mgl@1371
 36082
+
mgl@1371
 36083
+typedef struct bfd_section *sec_ptr;
mgl@1371
 36084
+
mgl@1371
 36085
+#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
mgl@1371
 36086
+#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
mgl@1371
 36087
+#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
mgl@1371
 36088
+#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
mgl@1371
 36089
+#define bfd_section_name(bfd, ptr) ((ptr)->name)
mgl@1371
 36090
+#define bfd_section_size(bfd, ptr) ((ptr)->size)
mgl@1371
 36091
+#define bfd_get_section_size(ptr) ((ptr)->size)
mgl@1371
 36092
+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
mgl@1371
 36093
+#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
mgl@1371
 36094
+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
mgl@1371
 36095
+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
mgl@1371
 36096
+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
mgl@1371
 36097
+
mgl@1371
 36098
+#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
mgl@1371
 36099
+
mgl@1371
 36100
+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
mgl@1371
 36101
+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
mgl@1371
 36102
+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
mgl@1371
 36103
+/* Find the address one past the end of SEC.  */
mgl@1371
 36104
+#define bfd_get_section_limit(bfd, sec) \
mgl@1371
 36105
+  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
mgl@1371
 36106
+   / bfd_octets_per_byte (bfd))
mgl@1371
 36107
+
mgl@1371
 36108
+/* Return TRUE if section has been discarded.  */
mgl@1371
 36109
+#define elf_discarded_section(sec)				\
mgl@1371
 36110
+  (!bfd_is_abs_section (sec)					\
mgl@1371
 36111
+   && bfd_is_abs_section ((sec)->output_section)		\
mgl@1371
 36112
+   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
mgl@1371
 36113
+   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
mgl@1371
 36114
+
mgl@1371
 36115
+/* Forward define.  */
mgl@1371
 36116
+struct stat;
mgl@1371
 36117
+
mgl@1371
 36118
+typedef enum bfd_print_symbol
mgl@1371
 36119
+{
mgl@1371
 36120
+  bfd_print_symbol_name,
mgl@1371
 36121
+  bfd_print_symbol_more,
mgl@1371
 36122
+  bfd_print_symbol_all
mgl@1371
 36123
+} bfd_print_symbol_type;
mgl@1371
 36124
+
mgl@1371
 36125
+/* Information about a symbol that nm needs.  */
mgl@1371
 36126
+
mgl@1371
 36127
+typedef struct _symbol_info
mgl@1371
 36128
+{
mgl@1371
 36129
+  symvalue value;
mgl@1371
 36130
+  char type;
mgl@1371
 36131
+  const char *name;            /* Symbol name.  */
mgl@1371
 36132
+  unsigned char stab_type;     /* Stab type.  */
mgl@1371
 36133
+  char stab_other;             /* Stab other.  */
mgl@1371
 36134
+  short stab_desc;             /* Stab desc.  */
mgl@1371
 36135
+  const char *stab_name;       /* String for stab type.  */
mgl@1371
 36136
+} symbol_info;
mgl@1371
 36137
+
mgl@1371
 36138
+/* Get the name of a stabs type code.  */
mgl@1371
 36139
+
mgl@1371
 36140
+extern const char *bfd_get_stab_name (int);
mgl@1371
 36141
+
mgl@1371
 36142
+/* Hash table routines.  There is no way to free up a hash table.  */
mgl@1371
 36143
+
mgl@1371
 36144
+/* An element in the hash table.  Most uses will actually use a larger
mgl@1371
 36145
+   structure, and an instance of this will be the first field.  */
mgl@1371
 36146
+
mgl@1371
 36147
+struct bfd_hash_entry
mgl@1371
 36148
+{
mgl@1371
 36149
+  /* Next entry for this hash code.  */
mgl@1371
 36150
+  struct bfd_hash_entry *next;
mgl@1371
 36151
+  /* String being hashed.  */
mgl@1371
 36152
+  const char *string;
mgl@1371
 36153
+  /* Hash code.  This is the full hash code, not the index into the
mgl@1371
 36154
+     table.  */
mgl@1371
 36155
+  unsigned long hash;
mgl@1371
 36156
+};
mgl@1371
 36157
+
mgl@1371
 36158
+/* A hash table.  */
mgl@1371
 36159
+
mgl@1371
 36160
+struct bfd_hash_table
mgl@1371
 36161
+{
mgl@1371
 36162
+  /* The hash array.  */
mgl@1371
 36163
+  struct bfd_hash_entry **table;
mgl@1371
 36164
+  /* A function used to create new elements in the hash table.  The
mgl@1371
 36165
+     first entry is itself a pointer to an element.  When this
mgl@1371
 36166
+     function is first invoked, this pointer will be NULL.  However,
mgl@1371
 36167
+     having the pointer permits a hierarchy of method functions to be
mgl@1371
 36168
+     built each of which calls the function in the superclass.  Thus
mgl@1371
 36169
+     each function should be written to allocate a new block of memory
mgl@1371
 36170
+     only if the argument is NULL.  */
mgl@1371
 36171
+  struct bfd_hash_entry *(*newfunc)
mgl@1371
 36172
+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 36173
+   /* An objalloc for this hash table.  This is a struct objalloc *,
mgl@1371
 36174
+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
mgl@1371
 36175
+  void *memory;
mgl@1371
 36176
+  /* The number of slots in the hash table.  */
mgl@1371
 36177
+  unsigned int size;
mgl@1371
 36178
+  /* The number of entries in the hash table.  */
mgl@1371
 36179
+  unsigned int count;
mgl@1371
 36180
+  /* The size of elements.  */
mgl@1371
 36181
+  unsigned int entsize;
mgl@1371
 36182
+  /* If non-zero, don't grow the hash table.  */
mgl@1371
 36183
+  unsigned int frozen:1;
mgl@1371
 36184
+};
mgl@1371
 36185
+
mgl@1371
 36186
+/* Initialize a hash table.  */
mgl@1371
 36187
+extern bfd_boolean bfd_hash_table_init
mgl@1371
 36188
+  (struct bfd_hash_table *,
mgl@1371
 36189
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 36190
+			       struct bfd_hash_table *,
mgl@1371
 36191
+			       const char *),
mgl@1371
 36192
+   unsigned int);
mgl@1371
 36193
+
mgl@1371
 36194
+/* Initialize a hash table specifying a size.  */
mgl@1371
 36195
+extern bfd_boolean bfd_hash_table_init_n
mgl@1371
 36196
+  (struct bfd_hash_table *,
mgl@1371
 36197
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 36198
+			       struct bfd_hash_table *,
mgl@1371
 36199
+			       const char *),
mgl@1371
 36200
+   unsigned int, unsigned int);
mgl@1371
 36201
+
mgl@1371
 36202
+/* Free up a hash table.  */
mgl@1371
 36203
+extern void bfd_hash_table_free
mgl@1371
 36204
+  (struct bfd_hash_table *);
mgl@1371
 36205
+
mgl@1371
 36206
+/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
mgl@1371
 36207
+   will be created for this string if one does not already exist.  The
mgl@1371
 36208
+   COPY argument must be TRUE if this routine should copy the string
mgl@1371
 36209
+   into newly allocated memory when adding an entry.  */
mgl@1371
 36210
+extern struct bfd_hash_entry *bfd_hash_lookup
mgl@1371
 36211
+  (struct bfd_hash_table *, const char *, bfd_boolean create,
mgl@1371
 36212
+   bfd_boolean copy);
mgl@1371
 36213
+
mgl@1371
 36214
+/* Replace an entry in a hash table.  */
mgl@1371
 36215
+extern void bfd_hash_replace
mgl@1371
 36216
+  (struct bfd_hash_table *, struct bfd_hash_entry *old,
mgl@1371
 36217
+   struct bfd_hash_entry *nw);
mgl@1371
 36218
+
mgl@1371
 36219
+/* Base method for creating a hash table entry.  */
mgl@1371
 36220
+extern struct bfd_hash_entry *bfd_hash_newfunc
mgl@1371
 36221
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 36222
+
mgl@1371
 36223
+/* Grab some space for a hash table entry.  */
mgl@1371
 36224
+extern void *bfd_hash_allocate
mgl@1371
 36225
+  (struct bfd_hash_table *, unsigned int);
mgl@1371
 36226
+
mgl@1371
 36227
+/* Traverse a hash table in a random order, calling a function on each
mgl@1371
 36228
+   element.  If the function returns FALSE, the traversal stops.  The
mgl@1371
 36229
+   INFO argument is passed to the function.  */
mgl@1371
 36230
+extern void bfd_hash_traverse
mgl@1371
 36231
+  (struct bfd_hash_table *,
mgl@1371
 36232
+   bfd_boolean (*) (struct bfd_hash_entry *, void *),
mgl@1371
 36233
+   void *info);
mgl@1371
 36234
+
mgl@1371
 36235
+/* Allows the default size of a hash table to be configured. New hash
mgl@1371
 36236
+   tables allocated using bfd_hash_table_init will be created with
mgl@1371
 36237
+   this size.  */
mgl@1371
 36238
+extern void bfd_hash_set_default_size (bfd_size_type);
mgl@1371
 36239
+
mgl@1371
 36240
+/* This structure is used to keep track of stabs in sections
mgl@1371
 36241
+   information while linking.  */
mgl@1371
 36242
+
mgl@1371
 36243
+struct stab_info
mgl@1371
 36244
+{
mgl@1371
 36245
+  /* A hash table used to hold stabs strings.  */
mgl@1371
 36246
+  struct bfd_strtab_hash *strings;
mgl@1371
 36247
+  /* The header file hash table.  */
mgl@1371
 36248
+  struct bfd_hash_table includes;
mgl@1371
 36249
+  /* The first .stabstr section.  */
mgl@1371
 36250
+  struct bfd_section *stabstr;
mgl@1371
 36251
+};
mgl@1371
 36252
+
mgl@1371
 36253
+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
mgl@1371
 36254
+
mgl@1371
 36255
+/* User program access to BFD facilities.  */
mgl@1371
 36256
+
mgl@1371
 36257
+/* Direct I/O routines, for programs which know more about the object
mgl@1371
 36258
+   file than BFD does.  Use higher level routines if possible.  */
mgl@1371
 36259
+
mgl@1371
 36260
+extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
mgl@1371
 36261
+extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
mgl@1371
 36262
+extern int bfd_seek (bfd *, file_ptr, int);
mgl@1371
 36263
+extern file_ptr bfd_tell (bfd *);
mgl@1371
 36264
+extern int bfd_flush (bfd *);
mgl@1371
 36265
+extern int bfd_stat (bfd *, struct stat *);
mgl@1371
 36266
+
mgl@1371
 36267
+/* Deprecated old routines.  */
mgl@1371
 36268
+#if __GNUC__
mgl@1371
 36269
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 36270
+  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
mgl@1371
 36271
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 36272
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 36273
+  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
mgl@1371
 36274
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 36275
+#else
mgl@1371
 36276
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 36277
+  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
mgl@1371
 36278
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 36279
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
mgl@1371
 36280
+  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
mgl@1371
 36281
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
mgl@1371
 36282
+#endif
mgl@1371
 36283
+extern void warn_deprecated (const char *, const char *, int, const char *);
mgl@1371
 36284
+
mgl@1371
 36285
+/* Cast from const char * to char * so that caller can assign to
mgl@1371
 36286
+   a char * without a warning.  */
mgl@1371
 36287
+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
mgl@1371
 36288
+#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
mgl@1371
 36289
+#define bfd_get_format(abfd) ((abfd)->format)
mgl@1371
 36290
+#define bfd_get_target(abfd) ((abfd)->xvec->name)
mgl@1371
 36291
+#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
mgl@1371
 36292
+#define bfd_family_coff(abfd) \
mgl@1371
 36293
+  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
mgl@1371
 36294
+   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
mgl@1371
 36295
+#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
mgl@1371
 36296
+#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
mgl@1371
 36297
+#define bfd_header_big_endian(abfd) \
mgl@1371
 36298
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
mgl@1371
 36299
+#define bfd_header_little_endian(abfd) \
mgl@1371
 36300
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
mgl@1371
 36301
+#define bfd_get_file_flags(abfd) ((abfd)->flags)
mgl@1371
 36302
+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
mgl@1371
 36303
+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
mgl@1371
 36304
+#define bfd_my_archive(abfd) ((abfd)->my_archive)
mgl@1371
 36305
+#define bfd_has_map(abfd) ((abfd)->has_armap)
mgl@1371
 36306
+
mgl@1371
 36307
+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
mgl@1371
 36308
+#define bfd_usrdata(abfd) ((abfd)->usrdata)
mgl@1371
 36309
+
mgl@1371
 36310
+#define bfd_get_start_address(abfd) ((abfd)->start_address)
mgl@1371
 36311
+#define bfd_get_symcount(abfd) ((abfd)->symcount)
mgl@1371
 36312
+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
mgl@1371
 36313
+#define bfd_count_sections(abfd) ((abfd)->section_count)
mgl@1371
 36314
+
mgl@1371
 36315
+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
mgl@1371
 36316
+
mgl@1371
 36317
+#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
mgl@1371
 36318
+
mgl@1371
 36319
+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
mgl@1371
 36320
+
mgl@1371
 36321
+extern bfd_boolean bfd_cache_close
mgl@1371
 36322
+  (bfd *abfd);
mgl@1371
 36323
+/* NB: This declaration should match the autogenerated one in libbfd.h.  */
mgl@1371
 36324
+
mgl@1371
 36325
+extern bfd_boolean bfd_cache_close_all (void);
mgl@1371
 36326
+
mgl@1371
 36327
+extern bfd_boolean bfd_record_phdr
mgl@1371
 36328
+  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
mgl@1371
 36329
+   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
mgl@1371
 36330
+
mgl@1371
 36331
+/* Byte swapping routines.  */
mgl@1371
 36332
+
mgl@1371
 36333
+bfd_uint64_t bfd_getb64 (const void *);
mgl@1371
 36334
+bfd_uint64_t bfd_getl64 (const void *);
mgl@1371
 36335
+bfd_int64_t bfd_getb_signed_64 (const void *);
mgl@1371
 36336
+bfd_int64_t bfd_getl_signed_64 (const void *);
mgl@1371
 36337
+bfd_vma bfd_getb32 (const void *);
mgl@1371
 36338
+bfd_vma bfd_getl32 (const void *);
mgl@1371
 36339
+bfd_signed_vma bfd_getb_signed_32 (const void *);
mgl@1371
 36340
+bfd_signed_vma bfd_getl_signed_32 (const void *);
mgl@1371
 36341
+bfd_vma bfd_getb16 (const void *);
mgl@1371
 36342
+bfd_vma bfd_getl16 (const void *);
mgl@1371
 36343
+bfd_signed_vma bfd_getb_signed_16 (const void *);
mgl@1371
 36344
+bfd_signed_vma bfd_getl_signed_16 (const void *);
mgl@1371
 36345
+void bfd_putb64 (bfd_uint64_t, void *);
mgl@1371
 36346
+void bfd_putl64 (bfd_uint64_t, void *);
mgl@1371
 36347
+void bfd_putb32 (bfd_vma, void *);
mgl@1371
 36348
+void bfd_putl32 (bfd_vma, void *);
mgl@1371
 36349
+void bfd_putb16 (bfd_vma, void *);
mgl@1371
 36350
+void bfd_putl16 (bfd_vma, void *);
mgl@1371
 36351
+
mgl@1371
 36352
+/* Byte swapping routines which take size and endiannes as arguments.  */
mgl@1371
 36353
+
mgl@1371
 36354
+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
mgl@1371
 36355
+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
mgl@1371
 36356
+
mgl@1371
 36357
+extern bfd_boolean bfd_section_already_linked_table_init (void);
mgl@1371
 36358
+extern void bfd_section_already_linked_table_free (void);
mgl@1371
 36359
+
mgl@1371
 36360
+/* Externally visible ECOFF routines.  */
mgl@1371
 36361
+
mgl@1371
 36362
+#if defined(__STDC__) || defined(ALMOST_STDC)
mgl@1371
 36363
+struct ecoff_debug_info;
mgl@1371
 36364
+struct ecoff_debug_swap;
mgl@1371
 36365
+struct ecoff_extr;
mgl@1371
 36366
+struct bfd_symbol;
mgl@1371
 36367
+struct bfd_link_info;
mgl@1371
 36368
+struct bfd_link_hash_entry;
mgl@1371
 36369
+struct bfd_elf_version_tree;
mgl@1371
 36370
+#endif
mgl@1371
 36371
+extern bfd_vma bfd_ecoff_get_gp_value
mgl@1371
 36372
+  (bfd * abfd);
mgl@1371
 36373
+extern bfd_boolean bfd_ecoff_set_gp_value
mgl@1371
 36374
+  (bfd *abfd, bfd_vma gp_value);
mgl@1371
 36375
+extern bfd_boolean bfd_ecoff_set_regmasks
mgl@1371
 36376
+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
mgl@1371
 36377
+   unsigned long *cprmask);
mgl@1371
 36378
+extern void *bfd_ecoff_debug_init
mgl@1371
 36379
+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 36380
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
mgl@1371
 36381
+extern void bfd_ecoff_debug_free
mgl@1371
 36382
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 36383
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
mgl@1371
 36384
+extern bfd_boolean bfd_ecoff_debug_accumulate
mgl@1371
 36385
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 36386
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
mgl@1371
 36387
+   struct ecoff_debug_info *input_debug,
mgl@1371
 36388
+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
mgl@1371
 36389
+extern bfd_boolean bfd_ecoff_debug_accumulate_other
mgl@1371
 36390
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
mgl@1371
 36391
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
mgl@1371
 36392
+   struct bfd_link_info *);
mgl@1371
 36393
+extern bfd_boolean bfd_ecoff_debug_externals
mgl@1371
 36394
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 36395
+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
mgl@1371
 36396
+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
mgl@1371
 36397
+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
mgl@1371
 36398
+extern bfd_boolean bfd_ecoff_debug_one_external
mgl@1371
 36399
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 36400
+   const struct ecoff_debug_swap *swap, const char *name,
mgl@1371
 36401
+   struct ecoff_extr *esym);
mgl@1371
 36402
+extern bfd_size_type bfd_ecoff_debug_size
mgl@1371
 36403
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 36404
+   const struct ecoff_debug_swap *swap);
mgl@1371
 36405
+extern bfd_boolean bfd_ecoff_write_debug
mgl@1371
 36406
+  (bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 36407
+   const struct ecoff_debug_swap *swap, file_ptr where);
mgl@1371
 36408
+extern bfd_boolean bfd_ecoff_write_accumulated_debug
mgl@1371
 36409
+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
mgl@1371
 36410
+   const struct ecoff_debug_swap *swap,
mgl@1371
 36411
+   struct bfd_link_info *info, file_ptr where);
mgl@1371
 36412
+
mgl@1371
 36413
+/* Externally visible ELF routines.  */
mgl@1371
 36414
+
mgl@1371
 36415
+struct bfd_link_needed_list
mgl@1371
 36416
+{
mgl@1371
 36417
+  struct bfd_link_needed_list *next;
mgl@1371
 36418
+  bfd *by;
mgl@1371
 36419
+  const char *name;
mgl@1371
 36420
+};
mgl@1371
 36421
+
mgl@1371
 36422
+enum dynamic_lib_link_class {
mgl@1371
 36423
+  DYN_NORMAL = 0,
mgl@1371
 36424
+  DYN_AS_NEEDED = 1,
mgl@1371
 36425
+  DYN_DT_NEEDED = 2,
mgl@1371
 36426
+  DYN_NO_ADD_NEEDED = 4,
mgl@1371
 36427
+  DYN_NO_NEEDED = 8
mgl@1371
 36428
+};
mgl@1371
 36429
+
mgl@1371
 36430
+enum notice_asneeded_action {
mgl@1371
 36431
+  notice_as_needed,
mgl@1371
 36432
+  notice_not_needed,
mgl@1371
 36433
+  notice_needed
mgl@1371
 36434
+};
mgl@1371
 36435
+
mgl@1371
 36436
+extern bfd_boolean bfd_elf_record_link_assignment
mgl@1371
 36437
+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
mgl@1371
 36438
+   bfd_boolean);
mgl@1371
 36439
+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
mgl@1371
 36440
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36441
+extern bfd_boolean bfd_elf_get_bfd_needed_list
mgl@1371
 36442
+  (bfd *, struct bfd_link_needed_list **);
mgl@1371
 36443
+extern bfd_boolean bfd_elf_size_dynamic_sections
mgl@1371
 36444
+  (bfd *, const char *, const char *, const char *, const char * const *,
mgl@1371
 36445
+   struct bfd_link_info *, struct bfd_section **,
mgl@1371
 36446
+   struct bfd_elf_version_tree *);
mgl@1371
 36447
+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
mgl@1371
 36448
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36449
+extern void bfd_elf_set_dt_needed_name
mgl@1371
 36450
+  (bfd *, const char *);
mgl@1371
 36451
+extern const char *bfd_elf_get_dt_soname
mgl@1371
 36452
+  (bfd *);
mgl@1371
 36453
+extern void bfd_elf_set_dyn_lib_class
mgl@1371
 36454
+  (bfd *, enum dynamic_lib_link_class);
mgl@1371
 36455
+extern int bfd_elf_get_dyn_lib_class
mgl@1371
 36456
+  (bfd *);
mgl@1371
 36457
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
mgl@1371
 36458
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36459
+extern bfd_boolean bfd_elf_discard_info
mgl@1371
 36460
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36461
+extern unsigned int _bfd_elf_default_action_discarded
mgl@1371
 36462
+  (struct bfd_section *);
mgl@1371
 36463
+
mgl@1371
 36464
+/* Return an upper bound on the number of bytes required to store a
mgl@1371
 36465
+   copy of ABFD's program header table entries.  Return -1 if an error
mgl@1371
 36466
+   occurs; bfd_get_error will return an appropriate code.  */
mgl@1371
 36467
+extern long bfd_get_elf_phdr_upper_bound
mgl@1371
 36468
+  (bfd *abfd);
mgl@1371
 36469
+
mgl@1371
 36470
+/* Copy ABFD's program header table entries to *PHDRS.  The entries
mgl@1371
 36471
+   will be stored as an array of Elf_Internal_Phdr structures, as
mgl@1371
 36472
+   defined in include/elf/internal.h.  To find out how large the
mgl@1371
 36473
+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
mgl@1371
 36474
+
mgl@1371
 36475
+   Return the number of program header table entries read, or -1 if an
mgl@1371
 36476
+   error occurs; bfd_get_error will return an appropriate code.  */
mgl@1371
 36477
+extern int bfd_get_elf_phdrs
mgl@1371
 36478
+  (bfd *abfd, void *phdrs);
mgl@1371
 36479
+
mgl@1371
 36480
+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
mgl@1371
 36481
+   reconstruct an ELF file by reading the segments out of remote memory
mgl@1371
 36482
+   based on the ELF file header at EHDR_VMA and the ELF program headers it
mgl@1371
 36483
+   points to.  If not null, *LOADBASEP is filled in with the difference
mgl@1371
 36484
+   between the VMAs from which the segments were read, and the VMAs the
mgl@1371
 36485
+   file headers (and hence BFD's idea of each section's VMA) put them at.
mgl@1371
 36486
+
mgl@1371
 36487
+   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
mgl@1371
 36488
+   remote memory at target address VMA into the local buffer at MYADDR; it
mgl@1371
 36489
+   should return zero on success or an `errno' code on failure.  TEMPL must
mgl@1371
 36490
+   be a BFD for an ELF target with the word size and byte order found in
mgl@1371
 36491
+   the remote memory.  */
mgl@1371
 36492
+extern bfd *bfd_elf_bfd_from_remote_memory
mgl@1371
 36493
+  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
mgl@1371
 36494
+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
mgl@1371
 36495
+
mgl@1371
 36496
+/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
mgl@1371
 36497
+extern int bfd_get_arch_size
mgl@1371
 36498
+  (bfd *);
mgl@1371
 36499
+
mgl@1371
 36500
+/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
mgl@1371
 36501
+extern int bfd_get_sign_extend_vma
mgl@1371
 36502
+  (bfd *);
mgl@1371
 36503
+
mgl@1371
 36504
+extern struct bfd_section *_bfd_elf_tls_setup
mgl@1371
 36505
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36506
+
mgl@1371
 36507
+extern void _bfd_fix_excluded_sec_syms
mgl@1371
 36508
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36509
+
mgl@1371
 36510
+extern unsigned bfd_m68k_mach_to_features (int);
mgl@1371
 36511
+
mgl@1371
 36512
+extern int bfd_m68k_features_to_mach (unsigned);
mgl@1371
 36513
+
mgl@1371
 36514
+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
mgl@1371
 36515
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
mgl@1371
 36516
+   char **);
mgl@1371
 36517
+
mgl@1371
 36518
+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
mgl@1371
 36519
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
mgl@1371
 36520
+   char **);
mgl@1371
 36521
+
mgl@1371
 36522
+/* SunOS shared library support routines for the linker.  */
mgl@1371
 36523
+
mgl@1371
 36524
+extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
mgl@1371
 36525
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36526
+extern bfd_boolean bfd_sunos_record_link_assignment
mgl@1371
 36527
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 36528
+extern bfd_boolean bfd_sunos_size_dynamic_sections
mgl@1371
 36529
+  (bfd *, struct bfd_link_info *, struct bfd_section **,
mgl@1371
 36530
+   struct bfd_section **, struct bfd_section **);
mgl@1371
 36531
+
mgl@1371
 36532
+/* Linux shared library support routines for the linker.  */
mgl@1371
 36533
+
mgl@1371
 36534
+extern bfd_boolean bfd_i386linux_size_dynamic_sections
mgl@1371
 36535
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36536
+extern bfd_boolean bfd_m68klinux_size_dynamic_sections
mgl@1371
 36537
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36538
+extern bfd_boolean bfd_sparclinux_size_dynamic_sections
mgl@1371
 36539
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36540
+
mgl@1371
 36541
+/* mmap hacks */
mgl@1371
 36542
+
mgl@1371
 36543
+struct _bfd_window_internal;
mgl@1371
 36544
+typedef struct _bfd_window_internal bfd_window_internal;
mgl@1371
 36545
+
mgl@1371
 36546
+typedef struct _bfd_window
mgl@1371
 36547
+{
mgl@1371
 36548
+  /* What the user asked for.  */
mgl@1371
 36549
+  void *data;
mgl@1371
 36550
+  bfd_size_type size;
mgl@1371
 36551
+  /* The actual window used by BFD.  Small user-requested read-only
mgl@1371
 36552
+     regions sharing a page may share a single window into the object
mgl@1371
 36553
+     file.  Read-write versions shouldn't until I've fixed things to
mgl@1371
 36554
+     keep track of which portions have been claimed by the
mgl@1371
 36555
+     application; don't want to give the same region back when the
mgl@1371
 36556
+     application wants two writable copies!  */
mgl@1371
 36557
+  struct _bfd_window_internal *i;
mgl@1371
 36558
+}
mgl@1371
 36559
+bfd_window;
mgl@1371
 36560
+
mgl@1371
 36561
+extern void bfd_init_window
mgl@1371
 36562
+  (bfd_window *);
mgl@1371
 36563
+extern void bfd_free_window
mgl@1371
 36564
+  (bfd_window *);
mgl@1371
 36565
+extern bfd_boolean bfd_get_file_window
mgl@1371
 36566
+  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
mgl@1371
 36567
+
mgl@1371
 36568
+/* XCOFF support routines for the linker.  */
mgl@1371
 36569
+
mgl@1371
 36570
+extern bfd_boolean bfd_xcoff_link_record_set
mgl@1371
 36571
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
mgl@1371
 36572
+extern bfd_boolean bfd_xcoff_import_symbol
mgl@1371
 36573
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
mgl@1371
 36574
+   const char *, const char *, const char *, unsigned int);
mgl@1371
 36575
+extern bfd_boolean bfd_xcoff_export_symbol
mgl@1371
 36576
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
mgl@1371
 36577
+extern bfd_boolean bfd_xcoff_link_count_reloc
mgl@1371
 36578
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 36579
+extern bfd_boolean bfd_xcoff_record_link_assignment
mgl@1371
 36580
+  (bfd *, struct bfd_link_info *, const char *);
mgl@1371
 36581
+extern bfd_boolean bfd_xcoff_size_dynamic_sections
mgl@1371
 36582
+  (bfd *, struct bfd_link_info *, const char *, const char *,
mgl@1371
 36583
+   unsigned long, unsigned long, unsigned long, bfd_boolean,
mgl@1371
 36584
+   int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
mgl@1371
 36585
+extern bfd_boolean bfd_xcoff_link_generate_rtinit
mgl@1371
 36586
+  (bfd *, const char *, const char *, bfd_boolean);
mgl@1371
 36587
+
mgl@1371
 36588
+/* XCOFF support routines for ar.  */
mgl@1371
 36589
+extern bfd_boolean bfd_xcoff_ar_archive_set_magic
mgl@1371
 36590
+  (bfd *, char *);
mgl@1371
 36591
+
mgl@1371
 36592
+/* Externally visible COFF routines.  */
mgl@1371
 36593
+
mgl@1371
 36594
+#if defined(__STDC__) || defined(ALMOST_STDC)
mgl@1371
 36595
+struct internal_syment;
mgl@1371
 36596
+union internal_auxent;
mgl@1371
 36597
+#endif
mgl@1371
 36598
+
mgl@1371
 36599
+extern bfd_boolean bfd_coff_get_syment
mgl@1371
 36600
+  (bfd *, struct bfd_symbol *, struct internal_syment *);
mgl@1371
 36601
+
mgl@1371
 36602
+extern bfd_boolean bfd_coff_get_auxent
mgl@1371
 36603
+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
mgl@1371
 36604
+
mgl@1371
 36605
+extern bfd_boolean bfd_coff_set_symbol_class
mgl@1371
 36606
+  (bfd *, struct bfd_symbol *, unsigned int);
mgl@1371
 36607
+
mgl@1371
 36608
+extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
mgl@1371
 36609
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
mgl@1371
 36610
+
mgl@1371
 36611
+/* ARM VFP11 erratum workaround support.  */
mgl@1371
 36612
+typedef enum
mgl@1371
 36613
+{
mgl@1371
 36614
+  BFD_ARM_VFP11_FIX_DEFAULT,
mgl@1371
 36615
+  BFD_ARM_VFP11_FIX_NONE,
mgl@1371
 36616
+  BFD_ARM_VFP11_FIX_SCALAR,
mgl@1371
 36617
+  BFD_ARM_VFP11_FIX_VECTOR
mgl@1371
 36618
+} bfd_arm_vfp11_fix;
mgl@1371
 36619
+
mgl@1371
 36620
+extern void bfd_elf32_arm_init_maps
mgl@1371
 36621
+  (bfd *);
mgl@1371
 36622
+
mgl@1371
 36623
+extern void bfd_elf32_arm_set_vfp11_fix
mgl@1371
 36624
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36625
+
mgl@1371
 36626
+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
mgl@1371
 36627
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36628
+
mgl@1371
 36629
+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
mgl@1371
 36630
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36631
+
mgl@1371
 36632
+/* ARM Interworking support.  Called from linker.  */
mgl@1371
 36633
+extern bfd_boolean bfd_arm_allocate_interworking_sections
mgl@1371
 36634
+  (struct bfd_link_info *);
mgl@1371
 36635
+
mgl@1371
 36636
+extern bfd_boolean bfd_arm_process_before_allocation
mgl@1371
 36637
+  (bfd *, struct bfd_link_info *, int);
mgl@1371
 36638
+
mgl@1371
 36639
+extern bfd_boolean bfd_arm_get_bfd_for_interworking
mgl@1371
 36640
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36641
+
mgl@1371
 36642
+/* PE ARM Interworking support.  Called from linker.  */
mgl@1371
 36643
+extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
mgl@1371
 36644
+  (struct bfd_link_info *);
mgl@1371
 36645
+
mgl@1371
 36646
+extern bfd_boolean bfd_arm_pe_process_before_allocation
mgl@1371
 36647
+  (bfd *, struct bfd_link_info *, int);
mgl@1371
 36648
+
mgl@1371
 36649
+extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
mgl@1371
 36650
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36651
+
mgl@1371
 36652
+/* ELF ARM Interworking support.  Called from linker.  */
mgl@1371
 36653
+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
mgl@1371
 36654
+  (struct bfd_link_info *);
mgl@1371
 36655
+
mgl@1371
 36656
+extern bfd_boolean bfd_elf32_arm_process_before_allocation
mgl@1371
 36657
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36658
+
mgl@1371
 36659
+void bfd_elf32_arm_set_target_relocs
mgl@1371
 36660
+  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
mgl@1371
 36661
+   int, int);
mgl@1371
 36662
+
mgl@1371
 36663
+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
mgl@1371
 36664
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36665
+
mgl@1371
 36666
+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
mgl@1371
 36667
+  (bfd *, struct bfd_link_info *);
mgl@1371
 36668
+
mgl@1371
 36669
+/* ELF ARM mapping symbol support */
mgl@1371
 36670
+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
mgl@1371
 36671
+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
mgl@1371
 36672
+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
mgl@1371
 36673
+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
mgl@1371
 36674
+extern bfd_boolean bfd_is_arm_special_symbol_name
mgl@1371
 36675
+  (const char * name, int type);
mgl@1371
 36676
+
mgl@1371
 36677
+extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
mgl@1371
 36678
+
mgl@1371
 36679
+/* ARM Note section processing.  */
mgl@1371
 36680
+extern bfd_boolean bfd_arm_merge_machines
mgl@1371
 36681
+  (bfd *, bfd *);
mgl@1371
 36682
+
mgl@1371
 36683
+extern bfd_boolean bfd_arm_update_notes
mgl@1371
 36684
+  (bfd *, const char *);
mgl@1371
 36685
+
mgl@1371
 36686
+extern unsigned int bfd_arm_get_mach_from_notes
mgl@1371
 36687
+  (bfd *, const char *);
mgl@1371
 36688
+
mgl@1371
 36689
+/* TI COFF load page support.  */
mgl@1371
 36690
+extern void bfd_ticoff_set_section_load_page
mgl@1371
 36691
+  (struct bfd_section *, int);
mgl@1371
 36692
+
mgl@1371
 36693
+extern int bfd_ticoff_get_section_load_page
mgl@1371
 36694
+  (struct bfd_section *);
mgl@1371
 36695
+
mgl@1371
 36696
+/* H8/300 functions.  */
mgl@1371
 36697
+extern bfd_vma bfd_h8300_pad_address
mgl@1371
 36698
+  (bfd *, bfd_vma);
mgl@1371
 36699
+
mgl@1371
 36700
+/* IA64 Itanium code generation.  Called from linker.  */
mgl@1371
 36701
+extern void bfd_elf32_ia64_after_parse
mgl@1371
 36702
+  (int);
mgl@1371
 36703
+
mgl@1371
 36704
+extern void bfd_elf64_ia64_after_parse
mgl@1371
 36705
+  (int);
mgl@1371
 36706
+
mgl@1371
 36707
+/* This structure is used for a comdat section, as in PE.  A comdat
mgl@1371
 36708
+   section is associated with a particular symbol.  When the linker
mgl@1371
 36709
+   sees a comdat section, it keeps only one of the sections with a
mgl@1371
 36710
+   given name and associated with a given symbol.  */
mgl@1371
 36711
+
mgl@1371
 36712
+struct coff_comdat_info
mgl@1371
 36713
+{
mgl@1371
 36714
+  /* The name of the symbol associated with a comdat section.  */
mgl@1371
 36715
+  const char *name;
mgl@1371
 36716
+
mgl@1371
 36717
+  /* The local symbol table index of the symbol associated with a
mgl@1371
 36718
+     comdat section.  This is only meaningful to the object file format
mgl@1371
 36719
+     specific code; it is not an index into the list returned by
mgl@1371
 36720
+     bfd_canonicalize_symtab.  */
mgl@1371
 36721
+  long symbol;
mgl@1371
 36722
+};
mgl@1371
 36723
+
mgl@1371
 36724
+extern struct coff_comdat_info *bfd_coff_get_comdat_section
mgl@1371
 36725
+  (bfd *, struct bfd_section *);
mgl@1371
 36726
+
mgl@1371
 36727
+/* Extracted from init.c.  */
mgl@1371
 36728
+void bfd_init (void);
mgl@1371
 36729
+
mgl@1371
 36730
+/* Extracted from opncls.c.  */
mgl@1371
 36731
+bfd *bfd_fopen (const char *filename, const char *target,
mgl@1371
 36732
+    const char *mode, int fd);
mgl@1371
 36733
+
mgl@1371
 36734
+bfd *bfd_openr (const char *filename, const char *target);
mgl@1371
 36735
+
mgl@1371
 36736
+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
mgl@1371
 36737
+
mgl@1371
 36738
+bfd *bfd_openstreamr (const char *, const char *, void *);
mgl@1371
 36739
+
mgl@1371
 36740
+bfd *bfd_openr_iovec (const char *filename, const char *target,
mgl@1371
 36741
+    void *(*open) (struct bfd *nbfd,
mgl@1371
 36742
+    void *open_closure),
mgl@1371
 36743
+    void *open_closure,
mgl@1371
 36744
+    file_ptr (*pread) (struct bfd *nbfd,
mgl@1371
 36745
+    void *stream,
mgl@1371
 36746
+    void *buf,
mgl@1371
 36747
+    file_ptr nbytes,
mgl@1371
 36748
+    file_ptr offset),
mgl@1371
 36749
+    int (*close) (struct bfd *nbfd,
mgl@1371
 36750
+    void *stream),
mgl@1371
 36751
+    int (*stat) (struct bfd *abfd,
mgl@1371
 36752
+    void *stream,
mgl@1371
 36753
+    struct stat *sb));
mgl@1371
 36754
+
mgl@1371
 36755
+bfd *bfd_openw (const char *filename, const char *target);
mgl@1371
 36756
+
mgl@1371
 36757
+bfd_boolean bfd_close (bfd *abfd);
mgl@1371
 36758
+
mgl@1371
 36759
+bfd_boolean bfd_close_all_done (bfd *);
mgl@1371
 36760
+
mgl@1371
 36761
+bfd *bfd_create (const char *filename, bfd *templ);
mgl@1371
 36762
+
mgl@1371
 36763
+bfd_boolean bfd_make_writable (bfd *abfd);
mgl@1371
 36764
+
mgl@1371
 36765
+bfd_boolean bfd_make_readable (bfd *abfd);
mgl@1371
 36766
+
mgl@1371
 36767
+unsigned long bfd_calc_gnu_debuglink_crc32
mgl@1371
 36768
+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
mgl@1371
 36769
+
mgl@1371
 36770
+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
mgl@1371
 36771
+
mgl@1371
 36772
+struct bfd_section *bfd_create_gnu_debuglink_section
mgl@1371
 36773
+   (bfd *abfd, const char *filename);
mgl@1371
 36774
+
mgl@1371
 36775
+bfd_boolean bfd_fill_in_gnu_debuglink_section
mgl@1371
 36776
+   (bfd *abfd, struct bfd_section *sect, const char *filename);
mgl@1371
 36777
+
mgl@1371
 36778
+/* Extracted from libbfd.c.  */
mgl@1371
 36779
+
mgl@1371
 36780
+/* Byte swapping macros for user section data.  */
mgl@1371
 36781
+
mgl@1371
 36782
+#define bfd_put_8(abfd, val, ptr) \
mgl@1371
 36783
+  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
mgl@1371
 36784
+#define bfd_put_signed_8 \
mgl@1371
 36785
+  bfd_put_8
mgl@1371
 36786
+#define bfd_get_8(abfd, ptr) \
mgl@1371
 36787
+  (*(unsigned char *) (ptr) & 0xff)
mgl@1371
 36788
+#define bfd_get_signed_8(abfd, ptr) \
mgl@1371
 36789
+  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
mgl@1371
 36790
+
mgl@1371
 36791
+#define bfd_put_16(abfd, val, ptr) \
mgl@1371
 36792
+  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
mgl@1371
 36793
+#define bfd_put_signed_16 \
mgl@1371
 36794
+  bfd_put_16
mgl@1371
 36795
+#define bfd_get_16(abfd, ptr) \
mgl@1371
 36796
+  BFD_SEND (abfd, bfd_getx16, (ptr))
mgl@1371
 36797
+#define bfd_get_signed_16(abfd, ptr) \
mgl@1371
 36798
+  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
mgl@1371
 36799
+
mgl@1371
 36800
+#define bfd_put_32(abfd, val, ptr) \
mgl@1371
 36801
+  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
mgl@1371
 36802
+#define bfd_put_signed_32 \
mgl@1371
 36803
+  bfd_put_32
mgl@1371
 36804
+#define bfd_get_32(abfd, ptr) \
mgl@1371
 36805
+  BFD_SEND (abfd, bfd_getx32, (ptr))
mgl@1371
 36806
+#define bfd_get_signed_32(abfd, ptr) \
mgl@1371
 36807
+  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
mgl@1371
 36808
+
mgl@1371
 36809
+#define bfd_put_64(abfd, val, ptr) \
mgl@1371
 36810
+  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
mgl@1371
 36811
+#define bfd_put_signed_64 \
mgl@1371
 36812
+  bfd_put_64
mgl@1371
 36813
+#define bfd_get_64(abfd, ptr) \
mgl@1371
 36814
+  BFD_SEND (abfd, bfd_getx64, (ptr))
mgl@1371
 36815
+#define bfd_get_signed_64(abfd, ptr) \
mgl@1371
 36816
+  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
mgl@1371
 36817
+
mgl@1371
 36818
+#define bfd_get(bits, abfd, ptr)                       \
mgl@1371
 36819
+  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
mgl@1371
 36820
+   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
mgl@1371
 36821
+   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
mgl@1371
 36822
+   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
mgl@1371
 36823
+   : (abort (), (bfd_vma) - 1))
mgl@1371
 36824
+
mgl@1371
 36825
+#define bfd_put(bits, abfd, val, ptr)                  \
mgl@1371
 36826
+  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
mgl@1371
 36827
+   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
mgl@1371
 36828
+   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
mgl@1371
 36829
+   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
mgl@1371
 36830
+   : (abort (), (void) 0))
mgl@1371
 36831
+
mgl@1371
 36832
+
mgl@1371
 36833
+/* Byte swapping macros for file header data.  */
mgl@1371
 36834
+
mgl@1371
 36835
+#define bfd_h_put_8(abfd, val, ptr) \
mgl@1371
 36836
+  bfd_put_8 (abfd, val, ptr)
mgl@1371
 36837
+#define bfd_h_put_signed_8(abfd, val, ptr) \
mgl@1371
 36838
+  bfd_put_8 (abfd, val, ptr)
mgl@1371
 36839
+#define bfd_h_get_8(abfd, ptr) \
mgl@1371
 36840
+  bfd_get_8 (abfd, ptr)
mgl@1371
 36841
+#define bfd_h_get_signed_8(abfd, ptr) \
mgl@1371
 36842
+  bfd_get_signed_8 (abfd, ptr)
mgl@1371
 36843
+
mgl@1371
 36844
+#define bfd_h_put_16(abfd, val, ptr) \
mgl@1371
 36845
+  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
mgl@1371
 36846
+#define bfd_h_put_signed_16 \
mgl@1371
 36847
+  bfd_h_put_16
mgl@1371
 36848
+#define bfd_h_get_16(abfd, ptr) \
mgl@1371
 36849
+  BFD_SEND (abfd, bfd_h_getx16, (ptr))
mgl@1371
 36850
+#define bfd_h_get_signed_16(abfd, ptr) \
mgl@1371
 36851
+  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
mgl@1371
 36852
+
mgl@1371
 36853
+#define bfd_h_put_32(abfd, val, ptr) \
mgl@1371
 36854
+  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
mgl@1371
 36855
+#define bfd_h_put_signed_32 \
mgl@1371
 36856
+  bfd_h_put_32
mgl@1371
 36857
+#define bfd_h_get_32(abfd, ptr) \
mgl@1371
 36858
+  BFD_SEND (abfd, bfd_h_getx32, (ptr))
mgl@1371
 36859
+#define bfd_h_get_signed_32(abfd, ptr) \
mgl@1371
 36860
+  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
mgl@1371
 36861
+
mgl@1371
 36862
+#define bfd_h_put_64(abfd, val, ptr) \
mgl@1371
 36863
+  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
mgl@1371
 36864
+#define bfd_h_put_signed_64 \
mgl@1371
 36865
+  bfd_h_put_64
mgl@1371
 36866
+#define bfd_h_get_64(abfd, ptr) \
mgl@1371
 36867
+  BFD_SEND (abfd, bfd_h_getx64, (ptr))
mgl@1371
 36868
+#define bfd_h_get_signed_64(abfd, ptr) \
mgl@1371
 36869
+  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
mgl@1371
 36870
+
mgl@1371
 36871
+/* Aliases for the above, which should eventually go away.  */
mgl@1371
 36872
+
mgl@1371
 36873
+#define H_PUT_64  bfd_h_put_64
mgl@1371
 36874
+#define H_PUT_32  bfd_h_put_32
mgl@1371
 36875
+#define H_PUT_16  bfd_h_put_16
mgl@1371
 36876
+#define H_PUT_8   bfd_h_put_8
mgl@1371
 36877
+#define H_PUT_S64 bfd_h_put_signed_64
mgl@1371
 36878
+#define H_PUT_S32 bfd_h_put_signed_32
mgl@1371
 36879
+#define H_PUT_S16 bfd_h_put_signed_16
mgl@1371
 36880
+#define H_PUT_S8  bfd_h_put_signed_8
mgl@1371
 36881
+#define H_GET_64  bfd_h_get_64
mgl@1371
 36882
+#define H_GET_32  bfd_h_get_32
mgl@1371
 36883
+#define H_GET_16  bfd_h_get_16
mgl@1371
 36884
+#define H_GET_8   bfd_h_get_8
mgl@1371
 36885
+#define H_GET_S64 bfd_h_get_signed_64
mgl@1371
 36886
+#define H_GET_S32 bfd_h_get_signed_32
mgl@1371
 36887
+#define H_GET_S16 bfd_h_get_signed_16
mgl@1371
 36888
+#define H_GET_S8  bfd_h_get_signed_8
mgl@1371
 36889
+
mgl@1371
 36890
+
mgl@1371
 36891
+/* Extracted from bfdio.c.  */
mgl@1371
 36892
+long bfd_get_mtime (bfd *abfd);
mgl@1371
 36893
+
mgl@1371
 36894
+file_ptr bfd_get_size (bfd *abfd);
mgl@1371
 36895
+
mgl@1371
 36896
+/* Extracted from bfdwin.c.  */
mgl@1371
 36897
+/* Extracted from section.c.  */
mgl@1371
 36898
+typedef struct bfd_section
mgl@1371
 36899
+{
mgl@1371
 36900
+  /* The name of the section; the name isn't a copy, the pointer is
mgl@1371
 36901
+     the same as that passed to bfd_make_section.  */
mgl@1371
 36902
+  const char *name;
mgl@1371
 36903
+
mgl@1371
 36904
+  /* A unique sequence number.  */
mgl@1371
 36905
+  int id;
mgl@1371
 36906
+
mgl@1371
 36907
+  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
mgl@1371
 36908
+  int index;
mgl@1371
 36909
+
mgl@1371
 36910
+  /* The next section in the list belonging to the BFD, or NULL.  */
mgl@1371
 36911
+  struct bfd_section *next;
mgl@1371
 36912
+
mgl@1371
 36913
+  /* The previous section in the list belonging to the BFD, or NULL.  */
mgl@1371
 36914
+  struct bfd_section *prev;
mgl@1371
 36915
+
mgl@1371
 36916
+  /* The field flags contains attributes of the section. Some
mgl@1371
 36917
+     flags are read in from the object file, and some are
mgl@1371
 36918
+     synthesized from other information.  */
mgl@1371
 36919
+  flagword flags;
mgl@1371
 36920
+
mgl@1371
 36921
+#define SEC_NO_FLAGS   0x000
mgl@1371
 36922
+
mgl@1371
 36923
+  /* Tells the OS to allocate space for this section when loading.
mgl@1371
 36924
+     This is clear for a section containing debug information only.  */
mgl@1371
 36925
+#define SEC_ALLOC      0x001
mgl@1371
 36926
+
mgl@1371
 36927
+  /* Tells the OS to load the section from the file when loading.
mgl@1371
 36928
+     This is clear for a .bss section.  */
mgl@1371
 36929
+#define SEC_LOAD       0x002
mgl@1371
 36930
+
mgl@1371
 36931
+  /* The section contains data still to be relocated, so there is
mgl@1371
 36932
+     some relocation information too.  */
mgl@1371
 36933
+#define SEC_RELOC      0x004
mgl@1371
 36934
+
mgl@1371
 36935
+  /* A signal to the OS that the section contains read only data.  */
mgl@1371
 36936
+#define SEC_READONLY   0x008
mgl@1371
 36937
+
mgl@1371
 36938
+  /* The section contains code only.  */
mgl@1371
 36939
+#define SEC_CODE       0x010
mgl@1371
 36940
+
mgl@1371
 36941
+  /* The section contains data only.  */
mgl@1371
 36942
+#define SEC_DATA       0x020
mgl@1371
 36943
+
mgl@1371
 36944
+  /* The section will reside in ROM.  */
mgl@1371
 36945
+#define SEC_ROM        0x040
mgl@1371
 36946
+
mgl@1371
 36947
+  /* The section contains constructor information. This section
mgl@1371
 36948
+     type is used by the linker to create lists of constructors and
mgl@1371
 36949
+     destructors used by <<g++>>. When a back end sees a symbol
mgl@1371
 36950
+     which should be used in a constructor list, it creates a new
mgl@1371
 36951
+     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
mgl@1371
 36952
+     the symbol to it, and builds a relocation. To build the lists
mgl@1371
 36953
+     of constructors, all the linker has to do is catenate all the
mgl@1371
 36954
+     sections called <<__CTOR_LIST__>> and relocate the data
mgl@1371
 36955
+     contained within - exactly the operations it would peform on
mgl@1371
 36956
+     standard data.  */
mgl@1371
 36957
+#define SEC_CONSTRUCTOR 0x080
mgl@1371
 36958
+
mgl@1371
 36959
+  /* The section has contents - a data section could be
mgl@1371
 36960
+     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
mgl@1371
 36961
+     <<SEC_HAS_CONTENTS>>  */
mgl@1371
 36962
+#define SEC_HAS_CONTENTS 0x100
mgl@1371
 36963
+
mgl@1371
 36964
+  /* An instruction to the linker to not output the section
mgl@1371
 36965
+     even if it has information which would normally be written.  */
mgl@1371
 36966
+#define SEC_NEVER_LOAD 0x200
mgl@1371
 36967
+
mgl@1371
 36968
+  /* The section contains thread local data.  */
mgl@1371
 36969
+#define SEC_THREAD_LOCAL 0x400
mgl@1371
 36970
+
mgl@1371
 36971
+  /* The section has GOT references.  This flag is only for the
mgl@1371
 36972
+     linker, and is currently only used by the elf32-hppa back end.
mgl@1371
 36973
+     It will be set if global offset table references were detected
mgl@1371
 36974
+     in this section, which indicate to the linker that the section
mgl@1371
 36975
+     contains PIC code, and must be handled specially when doing a
mgl@1371
 36976
+     static link.  */
mgl@1371
 36977
+#define SEC_HAS_GOT_REF 0x800
mgl@1371
 36978
+
mgl@1371
 36979
+  /* The section contains common symbols (symbols may be defined
mgl@1371
 36980
+     multiple times, the value of a symbol is the amount of
mgl@1371
 36981
+     space it requires, and the largest symbol value is the one
mgl@1371
 36982
+     used).  Most targets have exactly one of these (which we
mgl@1371
 36983
+     translate to bfd_com_section_ptr), but ECOFF has two.  */
mgl@1371
 36984
+#define SEC_IS_COMMON 0x1000
mgl@1371
 36985
+
mgl@1371
 36986
+  /* The section contains only debugging information.  For
mgl@1371
 36987
+     example, this is set for ELF .debug and .stab sections.
mgl@1371
 36988
+     strip tests this flag to see if a section can be
mgl@1371
 36989
+     discarded.  */
mgl@1371
 36990
+#define SEC_DEBUGGING 0x2000
mgl@1371
 36991
+
mgl@1371
 36992
+  /* The contents of this section are held in memory pointed to
mgl@1371
 36993
+     by the contents field.  This is checked by bfd_get_section_contents,
mgl@1371
 36994
+     and the data is retrieved from memory if appropriate.  */
mgl@1371
 36995
+#define SEC_IN_MEMORY 0x4000
mgl@1371
 36996
+
mgl@1371
 36997
+  /* The contents of this section are to be excluded by the
mgl@1371
 36998
+     linker for executable and shared objects unless those
mgl@1371
 36999
+     objects are to be further relocated.  */
mgl@1371
 37000
+#define SEC_EXCLUDE 0x8000
mgl@1371
 37001
+
mgl@1371
 37002
+  /* The contents of this section are to be sorted based on the sum of
mgl@1371
 37003
+     the symbol and addend values specified by the associated relocation
mgl@1371
 37004
+     entries.  Entries without associated relocation entries will be
mgl@1371
 37005
+     appended to the end of the section in an unspecified order.  */
mgl@1371
 37006
+#define SEC_SORT_ENTRIES 0x10000
mgl@1371
 37007
+
mgl@1371
 37008
+  /* When linking, duplicate sections of the same name should be
mgl@1371
 37009
+     discarded, rather than being combined into a single section as
mgl@1371
 37010
+     is usually done.  This is similar to how common symbols are
mgl@1371
 37011
+     handled.  See SEC_LINK_DUPLICATES below.  */
mgl@1371
 37012
+#define SEC_LINK_ONCE 0x20000
mgl@1371
 37013
+
mgl@1371
 37014
+  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
mgl@1371
 37015
+     should handle duplicate sections.  */
mgl@1371
 37016
+#define SEC_LINK_DUPLICATES 0x40000
mgl@1371
 37017
+
mgl@1371
 37018
+  /* This value for SEC_LINK_DUPLICATES means that duplicate
mgl@1371
 37019
+     sections with the same name should simply be discarded.  */
mgl@1371
 37020
+#define SEC_LINK_DUPLICATES_DISCARD 0x0
mgl@1371
 37021
+
mgl@1371
 37022
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 37023
+     should warn if there are any duplicate sections, although
mgl@1371
 37024
+     it should still only link one copy.  */
mgl@1371
 37025
+#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
mgl@1371
 37026
+
mgl@1371
 37027
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 37028
+     should warn if any duplicate sections are a different size.  */
mgl@1371
 37029
+#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
mgl@1371
 37030
+
mgl@1371
 37031
+  /* This value for SEC_LINK_DUPLICATES means that the linker
mgl@1371
 37032
+     should warn if any duplicate sections contain different
mgl@1371
 37033
+     contents.  */
mgl@1371
 37034
+#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
mgl@1371
 37035
+  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
mgl@1371
 37036
+
mgl@1371
 37037
+  /* This section was created by the linker as part of dynamic
mgl@1371
 37038
+     relocation or other arcane processing.  It is skipped when
mgl@1371
 37039
+     going through the first-pass output, trusting that someone
mgl@1371
 37040
+     else up the line will take care of it later.  */
mgl@1371
 37041
+#define SEC_LINKER_CREATED 0x200000
mgl@1371
 37042
+
mgl@1371
 37043
+  /* This section should not be subject to garbage collection.
mgl@1371
 37044
+     Also set to inform the linker that this section should not be
mgl@1371
 37045
+     listed in the link map as discarded.  */
mgl@1371
 37046
+#define SEC_KEEP 0x400000
mgl@1371
 37047
+
mgl@1371
 37048
+  /* This section contains "short" data, and should be placed
mgl@1371
 37049
+     "near" the GP.  */
mgl@1371
 37050
+#define SEC_SMALL_DATA 0x800000
mgl@1371
 37051
+
mgl@1371
 37052
+  /* Attempt to merge identical entities in the section.
mgl@1371
 37053
+     Entity size is given in the entsize field.  */
mgl@1371
 37054
+#define SEC_MERGE 0x1000000
mgl@1371
 37055
+
mgl@1371
 37056
+  /* If given with SEC_MERGE, entities to merge are zero terminated
mgl@1371
 37057
+     strings where entsize specifies character size instead of fixed
mgl@1371
 37058
+     size entries.  */
mgl@1371
 37059
+#define SEC_STRINGS 0x2000000
mgl@1371
 37060
+
mgl@1371
 37061
+  /* This section contains data about section groups.  */
mgl@1371
 37062
+#define SEC_GROUP 0x4000000
mgl@1371
 37063
+
mgl@1371
 37064
+  /* The section is a COFF shared library section.  This flag is
mgl@1371
 37065
+     only for the linker.  If this type of section appears in
mgl@1371
 37066
+     the input file, the linker must copy it to the output file
mgl@1371
 37067
+     without changing the vma or size.  FIXME: Although this
mgl@1371
 37068
+     was originally intended to be general, it really is COFF
mgl@1371
 37069
+     specific (and the flag was renamed to indicate this).  It
mgl@1371
 37070
+     might be cleaner to have some more general mechanism to
mgl@1371
 37071
+     allow the back end to control what the linker does with
mgl@1371
 37072
+     sections.  */
mgl@1371
 37073
+#define SEC_COFF_SHARED_LIBRARY 0x10000000
mgl@1371
 37074
+
mgl@1371
 37075
+  /* This section contains data which may be shared with other
mgl@1371
 37076
+     executables or shared objects. This is for COFF only.  */
mgl@1371
 37077
+#define SEC_COFF_SHARED 0x20000000
mgl@1371
 37078
+
mgl@1371
 37079
+  /* When a section with this flag is being linked, then if the size of
mgl@1371
 37080
+     the input section is less than a page, it should not cross a page
mgl@1371
 37081
+     boundary.  If the size of the input section is one page or more,
mgl@1371
 37082
+     it should be aligned on a page boundary.  This is for TI
mgl@1371
 37083
+     TMS320C54X only.  */
mgl@1371
 37084
+#define SEC_TIC54X_BLOCK 0x40000000
mgl@1371
 37085
+
mgl@1371
 37086
+  /* Conditionally link this section; do not link if there are no
mgl@1371
 37087
+     references found to any symbol in the section.  This is for TI
mgl@1371
 37088
+     TMS320C54X only.  */
mgl@1371
 37089
+#define SEC_TIC54X_CLINK 0x80000000
mgl@1371
 37090
+
mgl@1371
 37091
+  /*  End of section flags.  */
mgl@1371
 37092
+
mgl@1371
 37093
+  /* Some internal packed boolean fields.  */
mgl@1371
 37094
+
mgl@1371
 37095
+  /* See the vma field.  */
mgl@1371
 37096
+  unsigned int user_set_vma : 1;
mgl@1371
 37097
+
mgl@1371
 37098
+  /* A mark flag used by some of the linker backends.  */
mgl@1371
 37099
+  unsigned int linker_mark : 1;
mgl@1371
 37100
+
mgl@1371
 37101
+  /* Another mark flag used by some of the linker backends.  Set for
mgl@1371
 37102
+     output sections that have an input section.  */
mgl@1371
 37103
+  unsigned int linker_has_input : 1;
mgl@1371
 37104
+
mgl@1371
 37105
+  /* Mark flags used by some linker backends for garbage collection.  */
mgl@1371
 37106
+  unsigned int gc_mark : 1;
mgl@1371
 37107
+  unsigned int gc_mark_from_eh : 1;
mgl@1371
 37108
+
mgl@1371
 37109
+  /* The following flags are used by the ELF linker. */
mgl@1371
 37110
+
mgl@1371
 37111
+  /* Mark sections which have been allocated to segments.  */
mgl@1371
 37112
+  unsigned int segment_mark : 1;
mgl@1371
 37113
+
mgl@1371
 37114
+  /* Type of sec_info information.  */
mgl@1371
 37115
+  unsigned int sec_info_type:3;
mgl@1371
 37116
+#define ELF_INFO_TYPE_NONE      0
mgl@1371
 37117
+#define ELF_INFO_TYPE_STABS     1
mgl@1371
 37118
+#define ELF_INFO_TYPE_MERGE     2
mgl@1371
 37119
+#define ELF_INFO_TYPE_EH_FRAME  3
mgl@1371
 37120
+#define ELF_INFO_TYPE_JUST_SYMS 4
mgl@1371
 37121
+
mgl@1371
 37122
+  /* Nonzero if this section uses RELA relocations, rather than REL.  */
mgl@1371
 37123
+  unsigned int use_rela_p:1;
mgl@1371
 37124
+
mgl@1371
 37125
+  /* Bits used by various backends.  The generic code doesn't touch
mgl@1371
 37126
+     these fields.  */
mgl@1371
 37127
+
mgl@1371
 37128
+  /* Nonzero if this section has TLS related relocations.  */
mgl@1371
 37129
+  unsigned int has_tls_reloc:1;
mgl@1371
 37130
+
mgl@1371
 37131
+  /* Nonzero if this section has a gp reloc.  */
mgl@1371
 37132
+  unsigned int has_gp_reloc:1;
mgl@1371
 37133
+
mgl@1371
 37134
+  /* Nonzero if this section needs the relax finalize pass.  */
mgl@1371
 37135
+  unsigned int need_finalize_relax:1;
mgl@1371
 37136
+
mgl@1371
 37137
+  /* Whether relocations have been processed.  */
mgl@1371
 37138
+  unsigned int reloc_done : 1;
mgl@1371
 37139
+
mgl@1371
 37140
+  /* End of internal packed boolean fields.  */
mgl@1371
 37141
+
mgl@1371
 37142
+  /*  The virtual memory address of the section - where it will be
mgl@1371
 37143
+      at run time.  The symbols are relocated against this.  The
mgl@1371
 37144
+      user_set_vma flag is maintained by bfd; if it's not set, the
mgl@1371
 37145
+      backend can assign addresses (for example, in <<a.out>>, where
mgl@1371
 37146
+      the default address for <<.data>> is dependent on the specific
mgl@1371
 37147
+      target and various flags).  */
mgl@1371
 37148
+  bfd_vma vma;
mgl@1371
 37149
+
mgl@1371
 37150
+  /*  The load address of the section - where it would be in a
mgl@1371
 37151
+      rom image; really only used for writing section header
mgl@1371
 37152
+      information.  */
mgl@1371
 37153
+  bfd_vma lma;
mgl@1371
 37154
+
mgl@1371
 37155
+  /* The size of the section in octets, as it will be output.
mgl@1371
 37156
+     Contains a value even if the section has no contents (e.g., the
mgl@1371
 37157
+     size of <<.bss>>).  */
mgl@1371
 37158
+  bfd_size_type size;
mgl@1371
 37159
+
mgl@1371
 37160
+  /* For input sections, the original size on disk of the section, in
mgl@1371
 37161
+     octets.  This field is used by the linker relaxation code.  It is
mgl@1371
 37162
+     currently only set for sections where the linker relaxation scheme
mgl@1371
 37163
+     doesn't cache altered section and reloc contents (stabs, eh_frame,
mgl@1371
 37164
+     SEC_MERGE, some coff relaxing targets), and thus the original size
mgl@1371
 37165
+     needs to be kept to read the section multiple times.
mgl@1371
 37166
+     For output sections, rawsize holds the section size calculated on
mgl@1371
 37167
+     a previous linker relaxation pass.  */
mgl@1371
 37168
+  bfd_size_type rawsize;
mgl@1371
 37169
+
mgl@1371
 37170
+  /* If this section is going to be output, then this value is the
mgl@1371
 37171
+     offset in *bytes* into the output section of the first byte in the
mgl@1371
 37172
+     input section (byte ==> smallest addressable unit on the
mgl@1371
 37173
+     target).  In most cases, if this was going to start at the
mgl@1371
 37174
+     100th octet (8-bit quantity) in the output section, this value
mgl@1371
 37175
+     would be 100.  However, if the target byte size is 16 bits
mgl@1371
 37176
+     (bfd_octets_per_byte is "2"), this value would be 50.  */
mgl@1371
 37177
+  bfd_vma output_offset;
mgl@1371
 37178
+
mgl@1371
 37179
+  /* The output section through which to map on output.  */
mgl@1371
 37180
+  struct bfd_section *output_section;
mgl@1371
 37181
+
mgl@1371
 37182
+  /* The alignment requirement of the section, as an exponent of 2 -
mgl@1371
 37183
+     e.g., 3 aligns to 2^3 (or 8).  */
mgl@1371
 37184
+  unsigned int alignment_power;
mgl@1371
 37185
+
mgl@1371
 37186
+  /* If an input section, a pointer to a vector of relocation
mgl@1371
 37187
+     records for the data in this section.  */
mgl@1371
 37188
+  struct reloc_cache_entry *relocation;
mgl@1371
 37189
+
mgl@1371
 37190
+  /* If an output section, a pointer to a vector of pointers to
mgl@1371
 37191
+     relocation records for the data in this section.  */
mgl@1371
 37192
+  struct reloc_cache_entry **orelocation;
mgl@1371
 37193
+
mgl@1371
 37194
+  /* The number of relocation records in one of the above.  */
mgl@1371
 37195
+  unsigned reloc_count;
mgl@1371
 37196
+
mgl@1371
 37197
+  /* Information below is back end specific - and not always used
mgl@1371
 37198
+     or updated.  */
mgl@1371
 37199
+
mgl@1371
 37200
+  /* File position of section data.  */
mgl@1371
 37201
+  file_ptr filepos;
mgl@1371
 37202
+
mgl@1371
 37203
+  /* File position of relocation info.  */
mgl@1371
 37204
+  file_ptr rel_filepos;
mgl@1371
 37205
+
mgl@1371
 37206
+  /* File position of line data.  */
mgl@1371
 37207
+  file_ptr line_filepos;
mgl@1371
 37208
+
mgl@1371
 37209
+  /* Pointer to data for applications.  */
mgl@1371
 37210
+  void *userdata;
mgl@1371
 37211
+
mgl@1371
 37212
+  /* If the SEC_IN_MEMORY flag is set, this points to the actual
mgl@1371
 37213
+     contents.  */
mgl@1371
 37214
+  unsigned char *contents;
mgl@1371
 37215
+
mgl@1371
 37216
+  /* Attached line number information.  */
mgl@1371
 37217
+  alent *lineno;
mgl@1371
 37218
+
mgl@1371
 37219
+  /* Number of line number records.  */
mgl@1371
 37220
+  unsigned int lineno_count;
mgl@1371
 37221
+
mgl@1371
 37222
+  /* Entity size for merging purposes.  */
mgl@1371
 37223
+  unsigned int entsize;
mgl@1371
 37224
+
mgl@1371
 37225
+  /* Points to the kept section if this section is a link-once section,
mgl@1371
 37226
+     and is discarded.  */
mgl@1371
 37227
+  struct bfd_section *kept_section;
mgl@1371
 37228
+
mgl@1371
 37229
+  /* When a section is being output, this value changes as more
mgl@1371
 37230
+     linenumbers are written out.  */
mgl@1371
 37231
+  file_ptr moving_line_filepos;
mgl@1371
 37232
+
mgl@1371
 37233
+  /* What the section number is in the target world.  */
mgl@1371
 37234
+  int target_index;
mgl@1371
 37235
+
mgl@1371
 37236
+  void *used_by_bfd;
mgl@1371
 37237
+
mgl@1371
 37238
+  /* If this is a constructor section then here is a list of the
mgl@1371
 37239
+     relocations created to relocate items within it.  */
mgl@1371
 37240
+  struct relent_chain *constructor_chain;
mgl@1371
 37241
+
mgl@1371
 37242
+  /* The BFD which owns the section.  */
mgl@1371
 37243
+  bfd *owner;
mgl@1371
 37244
+
mgl@1371
 37245
+  /* A symbol which points at this section only.  */
mgl@1371
 37246
+  struct bfd_symbol *symbol;
mgl@1371
 37247
+  struct bfd_symbol **symbol_ptr_ptr;
mgl@1371
 37248
+
mgl@1371
 37249
+  /* Early in the link process, map_head and map_tail are used to build
mgl@1371
 37250
+     a list of input sections attached to an output section.  Later,
mgl@1371
 37251
+     output sections use these fields for a list of bfd_link_order
mgl@1371
 37252
+     structs.  */
mgl@1371
 37253
+  union {
mgl@1371
 37254
+    struct bfd_link_order *link_order;
mgl@1371
 37255
+    struct bfd_section *s;
mgl@1371
 37256
+  } map_head, map_tail;
mgl@1371
 37257
+} asection;
mgl@1371
 37258
+
mgl@1371
 37259
+/* These sections are global, and are managed by BFD.  The application
mgl@1371
 37260
+   and target back end are not permitted to change the values in
mgl@1371
 37261
+   these sections.  New code should use the section_ptr macros rather
mgl@1371
 37262
+   than referring directly to the const sections.  The const sections
mgl@1371
 37263
+   may eventually vanish.  */
mgl@1371
 37264
+#define BFD_ABS_SECTION_NAME "*ABS*"
mgl@1371
 37265
+#define BFD_UND_SECTION_NAME "*UND*"
mgl@1371
 37266
+#define BFD_COM_SECTION_NAME "*COM*"
mgl@1371
 37267
+#define BFD_IND_SECTION_NAME "*IND*"
mgl@1371
 37268
+
mgl@1371
 37269
+/* The absolute section.  */
mgl@1371
 37270
+extern asection bfd_abs_section;
mgl@1371
 37271
+#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
mgl@1371
 37272
+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
mgl@1371
 37273
+/* Pointer to the undefined section.  */
mgl@1371
 37274
+extern asection bfd_und_section;
mgl@1371
 37275
+#define bfd_und_section_ptr ((asection *) &bfd_und_section)
mgl@1371
 37276
+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
mgl@1371
 37277
+/* Pointer to the common section.  */
mgl@1371
 37278
+extern asection bfd_com_section;
mgl@1371
 37279
+#define bfd_com_section_ptr ((asection *) &bfd_com_section)
mgl@1371
 37280
+/* Pointer to the indirect section.  */
mgl@1371
 37281
+extern asection bfd_ind_section;
mgl@1371
 37282
+#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
mgl@1371
 37283
+#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
mgl@1371
 37284
+
mgl@1371
 37285
+#define bfd_is_const_section(SEC)              \
mgl@1371
 37286
+ (   ((SEC) == bfd_abs_section_ptr)            \
mgl@1371
 37287
+  || ((SEC) == bfd_und_section_ptr)            \
mgl@1371
 37288
+  || ((SEC) == bfd_com_section_ptr)            \
mgl@1371
 37289
+  || ((SEC) == bfd_ind_section_ptr))
mgl@1371
 37290
+
mgl@1371
 37291
+/* Macros to handle insertion and deletion of a bfd's sections.  These
mgl@1371
 37292
+   only handle the list pointers, ie. do not adjust section_count,
mgl@1371
 37293
+   target_index etc.  */
mgl@1371
 37294
+#define bfd_section_list_remove(ABFD, S) \
mgl@1371
 37295
+  do                                                   \
mgl@1371
 37296
+    {                                                  \
mgl@1371
 37297
+      asection *_s = S;                                \
mgl@1371
 37298
+      asection *_next = _s->next;                      \
mgl@1371
 37299
+      asection *_prev = _s->prev;                      \
mgl@1371
 37300
+      if (_prev)                                       \
mgl@1371
 37301
+        _prev->next = _next;                           \
mgl@1371
 37302
+      else                                             \
mgl@1371
 37303
+        (ABFD)->sections = _next;                      \
mgl@1371
 37304
+      if (_next)                                       \
mgl@1371
 37305
+        _next->prev = _prev;                           \
mgl@1371
 37306
+      else                                             \
mgl@1371
 37307
+        (ABFD)->section_last = _prev;                  \
mgl@1371
 37308
+    }                                                  \
mgl@1371
 37309
+  while (0)
mgl@1371
 37310
+#define bfd_section_list_append(ABFD, S) \
mgl@1371
 37311
+  do                                                   \
mgl@1371
 37312
+    {                                                  \
mgl@1371
 37313
+      asection *_s = S;                                \
mgl@1371
 37314
+      bfd *_abfd = ABFD;                               \
mgl@1371
 37315
+      _s->next = NULL;                                 \
mgl@1371
 37316
+      if (_abfd->section_last)                         \
mgl@1371
 37317
+        {                                              \
mgl@1371
 37318
+          _s->prev = _abfd->section_last;              \
mgl@1371
 37319
+          _abfd->section_last->next = _s;              \
mgl@1371
 37320
+        }                                              \
mgl@1371
 37321
+      else                                             \
mgl@1371
 37322
+        {                                              \
mgl@1371
 37323
+          _s->prev = NULL;                             \
mgl@1371
 37324
+          _abfd->sections = _s;                        \
mgl@1371
 37325
+        }                                              \
mgl@1371
 37326
+      _abfd->section_last = _s;                        \
mgl@1371
 37327
+    }                                                  \
mgl@1371
 37328
+  while (0)
mgl@1371
 37329
+#define bfd_section_list_prepend(ABFD, S) \
mgl@1371
 37330
+  do                                                   \
mgl@1371
 37331
+    {                                                  \
mgl@1371
 37332
+      asection *_s = S;                                \
mgl@1371
 37333
+      bfd *_abfd = ABFD;                               \
mgl@1371
 37334
+      _s->prev = NULL;                                 \
mgl@1371
 37335
+      if (_abfd->sections)                             \
mgl@1371
 37336
+        {                                              \
mgl@1371
 37337
+          _s->next = _abfd->sections;                  \
mgl@1371
 37338
+          _abfd->sections->prev = _s;                  \
mgl@1371
 37339
+        }                                              \
mgl@1371
 37340
+      else                                             \
mgl@1371
 37341
+        {                                              \
mgl@1371
 37342
+          _s->next = NULL;                             \
mgl@1371
 37343
+          _abfd->section_last = _s;                    \
mgl@1371
 37344
+        }                                              \
mgl@1371
 37345
+      _abfd->sections = _s;                            \
mgl@1371
 37346
+    }                                                  \
mgl@1371
 37347
+  while (0)
mgl@1371
 37348
+#define bfd_section_list_insert_after(ABFD, A, S) \
mgl@1371
 37349
+  do                                                   \
mgl@1371
 37350
+    {                                                  \
mgl@1371
 37351
+      asection *_a = A;                                \
mgl@1371
 37352
+      asection *_s = S;                                \
mgl@1371
 37353
+      asection *_next = _a->next;                      \
mgl@1371
 37354
+      _s->next = _next;                                \
mgl@1371
 37355
+      _s->prev = _a;                                   \
mgl@1371
 37356
+      _a->next = _s;                                   \
mgl@1371
 37357
+      if (_next)                                       \
mgl@1371
 37358
+        _next->prev = _s;                              \
mgl@1371
 37359
+      else                                             \
mgl@1371
 37360
+        (ABFD)->section_last = _s;                     \
mgl@1371
 37361
+    }                                                  \
mgl@1371
 37362
+  while (0)
mgl@1371
 37363
+#define bfd_section_list_insert_before(ABFD, B, S) \
mgl@1371
 37364
+  do                                                   \
mgl@1371
 37365
+    {                                                  \
mgl@1371
 37366
+      asection *_b = B;                                \
mgl@1371
 37367
+      asection *_s = S;                                \
mgl@1371
 37368
+      asection *_prev = _b->prev;                      \
mgl@1371
 37369
+      _s->prev = _prev;                                \
mgl@1371
 37370
+      _s->next = _b;                                   \
mgl@1371
 37371
+      _b->prev = _s;                                   \
mgl@1371
 37372
+      if (_prev)                                       \
mgl@1371
 37373
+        _prev->next = _s;                              \
mgl@1371
 37374
+      else                                             \
mgl@1371
 37375
+        (ABFD)->sections = _s;                         \
mgl@1371
 37376
+    }                                                  \
mgl@1371
 37377
+  while (0)
mgl@1371
 37378
+#define bfd_section_removed_from_list(ABFD, S) \
mgl@1371
 37379
+  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
mgl@1371
 37380
+
mgl@1371
 37381
+#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
mgl@1371
 37382
+  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
mgl@1371
 37383
+  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
mgl@1371
 37384
+                                                                       \
mgl@1371
 37385
+  /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh,      */  \
mgl@1371
 37386
+     0,           0,                1,       0,                        \
mgl@1371
 37387
+                                                                       \
mgl@1371
 37388
+  /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc,       */  \
mgl@1371
 37389
+     0,            0,             0,          0,                       \
mgl@1371
 37390
+                                                                       \
mgl@1371
 37391
+  /* has_gp_reloc, need_finalize_relax, reloc_done,                */  \
mgl@1371
 37392
+     0,            0,                   0,                             \
mgl@1371
 37393
+                                                                       \
mgl@1371
 37394
+  /* vma, lma, size, rawsize                                       */  \
mgl@1371
 37395
+     0,   0,   0,    0,                                                \
mgl@1371
 37396
+                                                                       \
mgl@1371
 37397
+  /* output_offset, output_section,              alignment_power,  */  \
mgl@1371
 37398
+     0,             (struct bfd_section *) &SEC, 0,                    \
mgl@1371
 37399
+                                                                       \
mgl@1371
 37400
+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
mgl@1371
 37401
+     NULL,       NULL,        0,           0,       0,                 \
mgl@1371
 37402
+                                                                       \
mgl@1371
 37403
+  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
mgl@1371
 37404
+     0,            NULL,     NULL,     NULL,   0,                      \
mgl@1371
 37405
+                                                                       \
mgl@1371
 37406
+  /* entsize, kept_section, moving_line_filepos,                    */ \
mgl@1371
 37407
+     0,       NULL,          0,                                        \
mgl@1371
 37408
+                                                                       \
mgl@1371
 37409
+  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
mgl@1371
 37410
+     0,            NULL,        NULL,              NULL,               \
mgl@1371
 37411
+                                                                       \
mgl@1371
 37412
+  /* symbol,                    symbol_ptr_ptr,                    */  \
mgl@1371
 37413
+     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
mgl@1371
 37414
+                                                                       \
mgl@1371
 37415
+  /* map_head, map_tail                                            */  \
mgl@1371
 37416
+     { NULL }, { NULL }                                                \
mgl@1371
 37417
+    }
mgl@1371
 37418
+
mgl@1371
 37419
+void bfd_section_list_clear (bfd *);
mgl@1371
 37420
+
mgl@1371
 37421
+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
mgl@1371
 37422
+
mgl@1371
 37423
+asection *bfd_get_section_by_name_if
mgl@1371
 37424
+   (bfd *abfd,
mgl@1371
 37425
+    const char *name,
mgl@1371
 37426
+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 37427
+    void *obj);
mgl@1371
 37428
+
mgl@1371
 37429
+char *bfd_get_unique_section_name
mgl@1371
 37430
+   (bfd *abfd, const char *templat, int *count);
mgl@1371
 37431
+
mgl@1371
 37432
+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
mgl@1371
 37433
+
mgl@1371
 37434
+asection *bfd_make_section_anyway_with_flags
mgl@1371
 37435
+   (bfd *abfd, const char *name, flagword flags);
mgl@1371
 37436
+
mgl@1371
 37437
+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
mgl@1371
 37438
+
mgl@1371
 37439
+asection *bfd_make_section_with_flags
mgl@1371
 37440
+   (bfd *, const char *name, flagword flags);
mgl@1371
 37441
+
mgl@1371
 37442
+asection *bfd_make_section (bfd *, const char *name);
mgl@1371
 37443
+
mgl@1371
 37444
+bfd_boolean bfd_set_section_flags
mgl@1371
 37445
+   (bfd *abfd, asection *sec, flagword flags);
mgl@1371
 37446
+
mgl@1371
 37447
+void bfd_map_over_sections
mgl@1371
 37448
+   (bfd *abfd,
mgl@1371
 37449
+    void (*func) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 37450
+    void *obj);
mgl@1371
 37451
+
mgl@1371
 37452
+asection *bfd_sections_find_if
mgl@1371
 37453
+   (bfd *abfd,
mgl@1371
 37454
+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
mgl@1371
 37455
+    void *obj);
mgl@1371
 37456
+
mgl@1371
 37457
+bfd_boolean bfd_set_section_size
mgl@1371
 37458
+   (bfd *abfd, asection *sec, bfd_size_type val);
mgl@1371
 37459
+
mgl@1371
 37460
+bfd_boolean bfd_set_section_contents
mgl@1371
 37461
+   (bfd *abfd, asection *section, const void *data,
mgl@1371
 37462
+    file_ptr offset, bfd_size_type count);
mgl@1371
 37463
+
mgl@1371
 37464
+bfd_boolean bfd_get_section_contents
mgl@1371
 37465
+   (bfd *abfd, asection *section, void *location, file_ptr offset,
mgl@1371
 37466
+    bfd_size_type count);
mgl@1371
 37467
+
mgl@1371
 37468
+bfd_boolean bfd_malloc_and_get_section
mgl@1371
 37469
+   (bfd *abfd, asection *section, bfd_byte **buf);
mgl@1371
 37470
+
mgl@1371
 37471
+bfd_boolean bfd_copy_private_section_data
mgl@1371
 37472
+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
mgl@1371
 37473
+
mgl@1371
 37474
+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
mgl@1371
 37475
+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
mgl@1371
 37476
+               (ibfd, isection, obfd, osection))
mgl@1371
 37477
+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
mgl@1371
 37478
+
mgl@1371
 37479
+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
mgl@1371
 37480
+
mgl@1371
 37481
+/* Extracted from archures.c.  */
mgl@1371
 37482
+enum bfd_architecture
mgl@1371
 37483
+{
mgl@1371
 37484
+  bfd_arch_unknown,   /* File arch not known.  */
mgl@1371
 37485
+  bfd_arch_obscure,   /* Arch known, not one of these.  */
mgl@1371
 37486
+  bfd_arch_m68k,      /* Motorola 68xxx */
mgl@1371
 37487
+#define bfd_mach_m68000 1
mgl@1371
 37488
+#define bfd_mach_m68008 2
mgl@1371
 37489
+#define bfd_mach_m68010 3
mgl@1371
 37490
+#define bfd_mach_m68020 4
mgl@1371
 37491
+#define bfd_mach_m68030 5
mgl@1371
 37492
+#define bfd_mach_m68040 6
mgl@1371
 37493
+#define bfd_mach_m68060 7
mgl@1371
 37494
+#define bfd_mach_cpu32  8
mgl@1371
 37495
+#define bfd_mach_fido   9
mgl@1371
 37496
+#define bfd_mach_mcf_isa_a_nodiv 10
mgl@1371
 37497
+#define bfd_mach_mcf_isa_a 11
mgl@1371
 37498
+#define bfd_mach_mcf_isa_a_mac 12
mgl@1371
 37499
+#define bfd_mach_mcf_isa_a_emac 13
mgl@1371
 37500
+#define bfd_mach_mcf_isa_aplus 14
mgl@1371
 37501
+#define bfd_mach_mcf_isa_aplus_mac 15
mgl@1371
 37502
+#define bfd_mach_mcf_isa_aplus_emac 16
mgl@1371
 37503
+#define bfd_mach_mcf_isa_b_nousp 17
mgl@1371
 37504
+#define bfd_mach_mcf_isa_b_nousp_mac 18
mgl@1371
 37505
+#define bfd_mach_mcf_isa_b_nousp_emac 19
mgl@1371
 37506
+#define bfd_mach_mcf_isa_b 20
mgl@1371
 37507
+#define bfd_mach_mcf_isa_b_mac 21
mgl@1371
 37508
+#define bfd_mach_mcf_isa_b_emac 22
mgl@1371
 37509
+#define bfd_mach_mcf_isa_b_float 23
mgl@1371
 37510
+#define bfd_mach_mcf_isa_b_float_mac 24
mgl@1371
 37511
+#define bfd_mach_mcf_isa_b_float_emac 25
mgl@1371
 37512
+#define bfd_mach_mcf_isa_c 26
mgl@1371
 37513
+#define bfd_mach_mcf_isa_c_mac 27
mgl@1371
 37514
+#define bfd_mach_mcf_isa_c_emac 28
mgl@1371
 37515
+  bfd_arch_vax,       /* DEC Vax */
mgl@1371
 37516
+  bfd_arch_i960,      /* Intel 960 */
mgl@1371
 37517
+    /* The order of the following is important.
mgl@1371
 37518
+       lower number indicates a machine type that
mgl@1371
 37519
+       only accepts a subset of the instructions
mgl@1371
 37520
+       available to machines with higher numbers.
mgl@1371
 37521
+       The exception is the "ca", which is
mgl@1371
 37522
+       incompatible with all other machines except
mgl@1371
 37523
+       "core".  */
mgl@1371
 37524
+
mgl@1371
 37525
+#define bfd_mach_i960_core      1
mgl@1371
 37526
+#define bfd_mach_i960_ka_sa     2
mgl@1371
 37527
+#define bfd_mach_i960_kb_sb     3
mgl@1371
 37528
+#define bfd_mach_i960_mc        4
mgl@1371
 37529
+#define bfd_mach_i960_xa        5
mgl@1371
 37530
+#define bfd_mach_i960_ca        6
mgl@1371
 37531
+#define bfd_mach_i960_jx        7
mgl@1371
 37532
+#define bfd_mach_i960_hx        8
mgl@1371
 37533
+
mgl@1371
 37534
+  bfd_arch_or32,      /* OpenRISC 32 */
mgl@1371
 37535
+
mgl@1371
 37536
+  bfd_arch_sparc,     /* SPARC */
mgl@1371
 37537
+#define bfd_mach_sparc                 1
mgl@1371
 37538
+/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
mgl@1371
 37539
+#define bfd_mach_sparc_sparclet        2
mgl@1371
 37540
+#define bfd_mach_sparc_sparclite       3
mgl@1371
 37541
+#define bfd_mach_sparc_v8plus          4
mgl@1371
 37542
+#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
mgl@1371
 37543
+#define bfd_mach_sparc_sparclite_le    6
mgl@1371
 37544
+#define bfd_mach_sparc_v9              7
mgl@1371
 37545
+#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
mgl@1371
 37546
+#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
mgl@1371
 37547
+#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
mgl@1371
 37548
+/* Nonzero if MACH has the v9 instruction set.  */
mgl@1371
 37549
+#define bfd_mach_sparc_v9_p(mach) \
mgl@1371
 37550
+  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
mgl@1371
 37551
+   && (mach) != bfd_mach_sparc_sparclite_le)
mgl@1371
 37552
+/* Nonzero if MACH is a 64 bit sparc architecture.  */
mgl@1371
 37553
+#define bfd_mach_sparc_64bit_p(mach) \
mgl@1371
 37554
+  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
mgl@1371
 37555
+  bfd_arch_spu,       /* PowerPC SPU */
mgl@1371
 37556
+#define bfd_mach_spu           256 
mgl@1371
 37557
+  bfd_arch_mips,      /* MIPS Rxxxx */
mgl@1371
 37558
+#define bfd_mach_mips3000              3000
mgl@1371
 37559
+#define bfd_mach_mips3900              3900
mgl@1371
 37560
+#define bfd_mach_mips4000              4000
mgl@1371
 37561
+#define bfd_mach_mips4010              4010
mgl@1371
 37562
+#define bfd_mach_mips4100              4100
mgl@1371
 37563
+#define bfd_mach_mips4111              4111
mgl@1371
 37564
+#define bfd_mach_mips4120              4120
mgl@1371
 37565
+#define bfd_mach_mips4300              4300
mgl@1371
 37566
+#define bfd_mach_mips4400              4400
mgl@1371
 37567
+#define bfd_mach_mips4600              4600
mgl@1371
 37568
+#define bfd_mach_mips4650              4650
mgl@1371
 37569
+#define bfd_mach_mips5000              5000
mgl@1371
 37570
+#define bfd_mach_mips5400              5400
mgl@1371
 37571
+#define bfd_mach_mips5500              5500
mgl@1371
 37572
+#define bfd_mach_mips6000              6000
mgl@1371
 37573
+#define bfd_mach_mips7000              7000
mgl@1371
 37574
+#define bfd_mach_mips8000              8000
mgl@1371
 37575
+#define bfd_mach_mips9000              9000
mgl@1371
 37576
+#define bfd_mach_mips10000             10000
mgl@1371
 37577
+#define bfd_mach_mips12000             12000
mgl@1371
 37578
+#define bfd_mach_mips16                16
mgl@1371
 37579
+#define bfd_mach_mips5                 5
mgl@1371
 37580
+#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
mgl@1371
 37581
+#define bfd_mach_mipsisa32             32
mgl@1371
 37582
+#define bfd_mach_mipsisa32r2           33
mgl@1371
 37583
+#define bfd_mach_mipsisa64             64
mgl@1371
 37584
+#define bfd_mach_mipsisa64r2           65
mgl@1371
 37585
+  bfd_arch_i386,      /* Intel 386 */
mgl@1371
 37586
+#define bfd_mach_i386_i386 1
mgl@1371
 37587
+#define bfd_mach_i386_i8086 2
mgl@1371
 37588
+#define bfd_mach_i386_i386_intel_syntax 3
mgl@1371
 37589
+#define bfd_mach_x86_64 64
mgl@1371
 37590
+#define bfd_mach_x86_64_intel_syntax 65
mgl@1371
 37591
+  bfd_arch_we32k,     /* AT&T WE32xxx */
mgl@1371
 37592
+  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
mgl@1371
 37593
+  bfd_arch_i860,      /* Intel 860 */
mgl@1371
 37594
+  bfd_arch_i370,      /* IBM 360/370 Mainframes */
mgl@1371
 37595
+  bfd_arch_romp,      /* IBM ROMP PC/RT */
mgl@1371
 37596
+  bfd_arch_convex,    /* Convex */
mgl@1371
 37597
+  bfd_arch_m88k,      /* Motorola 88xxx */
mgl@1371
 37598
+  bfd_arch_m98k,      /* Motorola 98xxx */
mgl@1371
 37599
+  bfd_arch_pyramid,   /* Pyramid Technology */
mgl@1371
 37600
+  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
mgl@1371
 37601
+#define bfd_mach_h8300    1
mgl@1371
 37602
+#define bfd_mach_h8300h   2
mgl@1371
 37603
+#define bfd_mach_h8300s   3
mgl@1371
 37604
+#define bfd_mach_h8300hn  4
mgl@1371
 37605
+#define bfd_mach_h8300sn  5
mgl@1371
 37606
+#define bfd_mach_h8300sx  6
mgl@1371
 37607
+#define bfd_mach_h8300sxn 7
mgl@1371
 37608
+  bfd_arch_pdp11,     /* DEC PDP-11 */
mgl@1371
 37609
+  bfd_arch_powerpc,   /* PowerPC */
mgl@1371
 37610
+#define bfd_mach_ppc           32
mgl@1371
 37611
+#define bfd_mach_ppc64         64
mgl@1371
 37612
+#define bfd_mach_ppc_403       403
mgl@1371
 37613
+#define bfd_mach_ppc_403gc     4030
mgl@1371
 37614
+#define bfd_mach_ppc_505       505
mgl@1371
 37615
+#define bfd_mach_ppc_601       601
mgl@1371
 37616
+#define bfd_mach_ppc_602       602
mgl@1371
 37617
+#define bfd_mach_ppc_603       603
mgl@1371
 37618
+#define bfd_mach_ppc_ec603e    6031
mgl@1371
 37619
+#define bfd_mach_ppc_604       604
mgl@1371
 37620
+#define bfd_mach_ppc_620       620
mgl@1371
 37621
+#define bfd_mach_ppc_630       630
mgl@1371
 37622
+#define bfd_mach_ppc_750       750
mgl@1371
 37623
+#define bfd_mach_ppc_860       860
mgl@1371
 37624
+#define bfd_mach_ppc_a35       35
mgl@1371
 37625
+#define bfd_mach_ppc_rs64ii    642
mgl@1371
 37626
+#define bfd_mach_ppc_rs64iii   643
mgl@1371
 37627
+#define bfd_mach_ppc_7400      7400
mgl@1371
 37628
+#define bfd_mach_ppc_e500      500
mgl@1371
 37629
+  bfd_arch_rs6000,    /* IBM RS/6000 */
mgl@1371
 37630
+#define bfd_mach_rs6k          6000
mgl@1371
 37631
+#define bfd_mach_rs6k_rs1      6001
mgl@1371
 37632
+#define bfd_mach_rs6k_rsc      6003
mgl@1371
 37633
+#define bfd_mach_rs6k_rs2      6002
mgl@1371
 37634
+  bfd_arch_hppa,      /* HP PA RISC */
mgl@1371
 37635
+#define bfd_mach_hppa10        10
mgl@1371
 37636
+#define bfd_mach_hppa11        11
mgl@1371
 37637
+#define bfd_mach_hppa20        20
mgl@1371
 37638
+#define bfd_mach_hppa20w       25
mgl@1371
 37639
+  bfd_arch_d10v,      /* Mitsubishi D10V */
mgl@1371
 37640
+#define bfd_mach_d10v          1
mgl@1371
 37641
+#define bfd_mach_d10v_ts2      2
mgl@1371
 37642
+#define bfd_mach_d10v_ts3      3
mgl@1371
 37643
+  bfd_arch_d30v,      /* Mitsubishi D30V */
mgl@1371
 37644
+  bfd_arch_dlx,       /* DLX */
mgl@1371
 37645
+  bfd_arch_m68hc11,   /* Motorola 68HC11 */
mgl@1371
 37646
+  bfd_arch_m68hc12,   /* Motorola 68HC12 */
mgl@1371
 37647
+#define bfd_mach_m6812_default 0
mgl@1371
 37648
+#define bfd_mach_m6812         1
mgl@1371
 37649
+#define bfd_mach_m6812s        2
mgl@1371
 37650
+  bfd_arch_z8k,       /* Zilog Z8000 */
mgl@1371
 37651
+#define bfd_mach_z8001         1
mgl@1371
 37652
+#define bfd_mach_z8002         2
mgl@1371
 37653
+  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
mgl@1371
 37654
+  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
mgl@1371
 37655
+#define bfd_mach_sh            1
mgl@1371
 37656
+#define bfd_mach_sh2        0x20
mgl@1371
 37657
+#define bfd_mach_sh_dsp     0x2d
mgl@1371
 37658
+#define bfd_mach_sh2a       0x2a
mgl@1371
 37659
+#define bfd_mach_sh2a_nofpu 0x2b
mgl@1371
 37660
+#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
mgl@1371
 37661
+#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
mgl@1371
 37662
+#define bfd_mach_sh2a_or_sh4  0x2a3
mgl@1371
 37663
+#define bfd_mach_sh2a_or_sh3e 0x2a4
mgl@1371
 37664
+#define bfd_mach_sh2e       0x2e
mgl@1371
 37665
+#define bfd_mach_sh3        0x30
mgl@1371
 37666
+#define bfd_mach_sh3_nommu  0x31
mgl@1371
 37667
+#define bfd_mach_sh3_dsp    0x3d
mgl@1371
 37668
+#define bfd_mach_sh3e       0x3e
mgl@1371
 37669
+#define bfd_mach_sh4        0x40
mgl@1371
 37670
+#define bfd_mach_sh4_nofpu  0x41
mgl@1371
 37671
+#define bfd_mach_sh4_nommu_nofpu  0x42
mgl@1371
 37672
+#define bfd_mach_sh4a       0x4a
mgl@1371
 37673
+#define bfd_mach_sh4a_nofpu 0x4b
mgl@1371
 37674
+#define bfd_mach_sh4al_dsp  0x4d
mgl@1371
 37675
+#define bfd_mach_sh5        0x50
mgl@1371
 37676
+  bfd_arch_alpha,     /* Dec Alpha */
mgl@1371
 37677
+#define bfd_mach_alpha_ev4  0x10
mgl@1371
 37678
+#define bfd_mach_alpha_ev5  0x20
mgl@1371
 37679
+#define bfd_mach_alpha_ev6  0x30
mgl@1371
 37680
+  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
mgl@1371
 37681
+#define bfd_mach_arm_unknown   0
mgl@1371
 37682
+#define bfd_mach_arm_2         1
mgl@1371
 37683
+#define bfd_mach_arm_2a        2
mgl@1371
 37684
+#define bfd_mach_arm_3         3
mgl@1371
 37685
+#define bfd_mach_arm_3M        4
mgl@1371
 37686
+#define bfd_mach_arm_4         5
mgl@1371
 37687
+#define bfd_mach_arm_4T        6
mgl@1371
 37688
+#define bfd_mach_arm_5         7
mgl@1371
 37689
+#define bfd_mach_arm_5T        8
mgl@1371
 37690
+#define bfd_mach_arm_5TE       9
mgl@1371
 37691
+#define bfd_mach_arm_XScale    10
mgl@1371
 37692
+#define bfd_mach_arm_ep9312    11
mgl@1371
 37693
+#define bfd_mach_arm_iWMMXt    12
mgl@1371
 37694
+#define bfd_mach_arm_iWMMXt2   13
mgl@1371
 37695
+  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
mgl@1371
 37696
+  bfd_arch_w65,       /* WDC 65816 */
mgl@1371
 37697
+  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
mgl@1371
 37698
+  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
mgl@1371
 37699
+#define bfd_mach_tic3x         30
mgl@1371
 37700
+#define bfd_mach_tic4x         40
mgl@1371
 37701
+  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
mgl@1371
 37702
+  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
mgl@1371
 37703
+  bfd_arch_v850,      /* NEC V850 */
mgl@1371
 37704
+#define bfd_mach_v850          1
mgl@1371
 37705
+#define bfd_mach_v850e         'E'
mgl@1371
 37706
+#define bfd_mach_v850e1        '1'
mgl@1371
 37707
+  bfd_arch_arc,       /* ARC Cores */
mgl@1371
 37708
+#define bfd_mach_arc_5         5
mgl@1371
 37709
+#define bfd_mach_arc_6         6
mgl@1371
 37710
+#define bfd_mach_arc_7         7
mgl@1371
 37711
+#define bfd_mach_arc_8         8
mgl@1371
 37712
+ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
mgl@1371
 37713
+#define bfd_mach_m16c        0x75
mgl@1371
 37714
+#define bfd_mach_m32c        0x78
mgl@1371
 37715
+  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
mgl@1371
 37716
+#define bfd_mach_m32r          1 /* For backwards compatibility.  */
mgl@1371
 37717
+#define bfd_mach_m32rx         'x'
mgl@1371
 37718
+#define bfd_mach_m32r2         '2'
mgl@1371
 37719
+  bfd_arch_mn10200,   /* Matsushita MN10200 */
mgl@1371
 37720
+  bfd_arch_mn10300,   /* Matsushita MN10300 */
mgl@1371
 37721
+#define bfd_mach_mn10300               300
mgl@1371
 37722
+#define bfd_mach_am33          330
mgl@1371
 37723
+#define bfd_mach_am33_2        332
mgl@1371
 37724
+  bfd_arch_fr30,
mgl@1371
 37725
+#define bfd_mach_fr30          0x46523330
mgl@1371
 37726
+  bfd_arch_frv,
mgl@1371
 37727
+#define bfd_mach_frv           1
mgl@1371
 37728
+#define bfd_mach_frvsimple     2
mgl@1371
 37729
+#define bfd_mach_fr300         300
mgl@1371
 37730
+#define bfd_mach_fr400         400
mgl@1371
 37731
+#define bfd_mach_fr450         450
mgl@1371
 37732
+#define bfd_mach_frvtomcat     499     /* fr500 prototype */
mgl@1371
 37733
+#define bfd_mach_fr500         500
mgl@1371
 37734
+#define bfd_mach_fr550         550
mgl@1371
 37735
+  bfd_arch_mcore,
mgl@1371
 37736
+  bfd_arch_mep,
mgl@1371
 37737
+#define bfd_mach_mep           1
mgl@1371
 37738
+#define bfd_mach_mep_h1        0x6831
mgl@1371
 37739
+  bfd_arch_ia64,      /* HP/Intel ia64 */
mgl@1371
 37740
+#define bfd_mach_ia64_elf64    64
mgl@1371
 37741
+#define bfd_mach_ia64_elf32    32
mgl@1371
 37742
+  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
mgl@1371
 37743
+#define bfd_mach_ip2022        1
mgl@1371
 37744
+#define bfd_mach_ip2022ext     2
mgl@1371
 37745
+ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
mgl@1371
 37746
+#define bfd_mach_iq2000        1
mgl@1371
 37747
+#define bfd_mach_iq10          2
mgl@1371
 37748
+  bfd_arch_mt,
mgl@1371
 37749
+#define bfd_mach_ms1           1
mgl@1371
 37750
+#define bfd_mach_mrisc2        2
mgl@1371
 37751
+#define bfd_mach_ms2           3
mgl@1371
 37752
+  bfd_arch_pj,
mgl@1371
 37753
+  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
mgl@1371
 37754
+#define bfd_mach_avr1          1
mgl@1371
 37755
+#define bfd_mach_avr2          2
mgl@1371
 37756
+#define bfd_mach_avr3          3
mgl@1371
 37757
+#define bfd_mach_avr4          4
mgl@1371
 37758
+#define bfd_mach_avr5          5
mgl@1371
 37759
+#define bfd_mach_avr6          6
mgl@1371
 37760
+  bfd_arch_avr32,     /* Atmel AVR32 */
mgl@1371
 37761
+#define bfd_mach_avr32_ap      7000
mgl@1371
 37762
+#define bfd_mach_avr32_uc      3000
mgl@1371
 37763
+#define bfd_mach_avr32_ucr1    3001
mgl@1371
 37764
+#define bfd_mach_avr32_ucr2    3002
mgl@1371
 37765
+  bfd_arch_bfin,        /* ADI Blackfin */
mgl@1371
 37766
+#define bfd_mach_bfin          1
mgl@1371
 37767
+  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
mgl@1371
 37768
+#define bfd_mach_cr16          1
mgl@1371
 37769
+  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
mgl@1371
 37770
+#define bfd_mach_cr16c         1
mgl@1371
 37771
+  bfd_arch_crx,       /*  National Semiconductor CRX.  */
mgl@1371
 37772
+#define bfd_mach_crx           1
mgl@1371
 37773
+  bfd_arch_cris,      /* Axis CRIS */
mgl@1371
 37774
+#define bfd_mach_cris_v0_v10   255
mgl@1371
 37775
+#define bfd_mach_cris_v32      32
mgl@1371
 37776
+#define bfd_mach_cris_v10_v32  1032
mgl@1371
 37777
+  bfd_arch_s390,      /* IBM s390 */
mgl@1371
 37778
+#define bfd_mach_s390_31       31
mgl@1371
 37779
+#define bfd_mach_s390_64       64
mgl@1371
 37780
+  bfd_arch_score,     /* Sunplus score */ 
mgl@1371
 37781
+  bfd_arch_openrisc,  /* OpenRISC */
mgl@1371
 37782
+  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
mgl@1371
 37783
+  bfd_arch_xstormy16,
mgl@1371
 37784
+#define bfd_mach_xstormy16     1
mgl@1371
 37785
+  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
mgl@1371
 37786
+#define bfd_mach_msp11          11
mgl@1371
 37787
+#define bfd_mach_msp110         110
mgl@1371
 37788
+#define bfd_mach_msp12          12
mgl@1371
 37789
+#define bfd_mach_msp13          13
mgl@1371
 37790
+#define bfd_mach_msp14          14
mgl@1371
 37791
+#define bfd_mach_msp15          15
mgl@1371
 37792
+#define bfd_mach_msp16          16
mgl@1371
 37793
+#define bfd_mach_msp21          21
mgl@1371
 37794
+#define bfd_mach_msp31          31
mgl@1371
 37795
+#define bfd_mach_msp32          32
mgl@1371
 37796
+#define bfd_mach_msp33          33
mgl@1371
 37797
+#define bfd_mach_msp41          41
mgl@1371
 37798
+#define bfd_mach_msp42          42
mgl@1371
 37799
+#define bfd_mach_msp43          43
mgl@1371
 37800
+#define bfd_mach_msp44          44
mgl@1371
 37801
+  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
mgl@1371
 37802
+#define bfd_mach_xc16x         1
mgl@1371
 37803
+#define bfd_mach_xc16xl        2
mgl@1371
 37804
+#define bfd_mach_xc16xs         3
mgl@1371
 37805
+  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
mgl@1371
 37806
+#define bfd_mach_xtensa        1
mgl@1371
 37807
+   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
mgl@1371
 37808
+#define bfd_mach_maxq10    10
mgl@1371
 37809
+#define bfd_mach_maxq20    20
mgl@1371
 37810
+  bfd_arch_z80,
mgl@1371
 37811
+#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
mgl@1371
 37812
+#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
mgl@1371
 37813
+#define bfd_mach_z80full        7 /* All undocumented instructions.  */
mgl@1371
 37814
+#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
mgl@1371
 37815
+  bfd_arch_last
mgl@1371
 37816
+  };
mgl@1371
 37817
+
mgl@1371
 37818
+typedef struct bfd_arch_info
mgl@1371
 37819
+{
mgl@1371
 37820
+  int bits_per_word;
mgl@1371
 37821
+  int bits_per_address;
mgl@1371
 37822
+  int bits_per_byte;
mgl@1371
 37823
+  enum bfd_architecture arch;
mgl@1371
 37824
+  unsigned long mach;
mgl@1371
 37825
+  const char *arch_name;
mgl@1371
 37826
+  const char *printable_name;
mgl@1371
 37827
+  unsigned int section_align_power;
mgl@1371
 37828
+  /* TRUE if this is the default machine for the architecture.
mgl@1371
 37829
+     The default arch should be the first entry for an arch so that
mgl@1371
 37830
+     all the entries for that arch can be accessed via <<next>>.  */
mgl@1371
 37831
+  bfd_boolean the_default;
mgl@1371
 37832
+  const struct bfd_arch_info * (*compatible)
mgl@1371
 37833
+    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
mgl@1371
 37834
+
mgl@1371
 37835
+  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
mgl@1371
 37836
+
mgl@1371
 37837
+  const struct bfd_arch_info *next;
mgl@1371
 37838
+}
mgl@1371
 37839
+bfd_arch_info_type;
mgl@1371
 37840
+
mgl@1371
 37841
+const char *bfd_printable_name (bfd *abfd);
mgl@1371
 37842
+
mgl@1371
 37843
+const bfd_arch_info_type *bfd_scan_arch (const char *string);
mgl@1371
 37844
+
mgl@1371
 37845
+const char **bfd_arch_list (void);
mgl@1371
 37846
+
mgl@1371
 37847
+const bfd_arch_info_type *bfd_arch_get_compatible
mgl@1371
 37848
+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
mgl@1371
 37849
+
mgl@1371
 37850
+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
mgl@1371
 37851
+
mgl@1371
 37852
+enum bfd_architecture bfd_get_arch (bfd *abfd);
mgl@1371
 37853
+
mgl@1371
 37854
+unsigned long bfd_get_mach (bfd *abfd);
mgl@1371
 37855
+
mgl@1371
 37856
+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
mgl@1371
 37857
+
mgl@1371
 37858
+unsigned int bfd_arch_bits_per_address (bfd *abfd);
mgl@1371
 37859
+
mgl@1371
 37860
+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
mgl@1371
 37861
+
mgl@1371
 37862
+const bfd_arch_info_type *bfd_lookup_arch
mgl@1371
 37863
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 37864
+
mgl@1371
 37865
+const char *bfd_printable_arch_mach
mgl@1371
 37866
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 37867
+
mgl@1371
 37868
+unsigned int bfd_octets_per_byte (bfd *abfd);
mgl@1371
 37869
+
mgl@1371
 37870
+unsigned int bfd_arch_mach_octets_per_byte
mgl@1371
 37871
+   (enum bfd_architecture arch, unsigned long machine);
mgl@1371
 37872
+
mgl@1371
 37873
+/* Extracted from reloc.c.  */
mgl@1371
 37874
+typedef enum bfd_reloc_status
mgl@1371
 37875
+{
mgl@1371
 37876
+  /* No errors detected.  */
mgl@1371
 37877
+  bfd_reloc_ok,
mgl@1371
 37878
+
mgl@1371
 37879
+  /* The relocation was performed, but there was an overflow.  */
mgl@1371
 37880
+  bfd_reloc_overflow,
mgl@1371
 37881
+
mgl@1371
 37882
+  /* The address to relocate was not within the section supplied.  */
mgl@1371
 37883
+  bfd_reloc_outofrange,
mgl@1371
 37884
+
mgl@1371
 37885
+  /* Used by special functions.  */
mgl@1371
 37886
+  bfd_reloc_continue,
mgl@1371
 37887
+
mgl@1371
 37888
+  /* Unsupported relocation size requested.  */
mgl@1371
 37889
+  bfd_reloc_notsupported,
mgl@1371
 37890
+
mgl@1371
 37891
+  /* Unused.  */
mgl@1371
 37892
+  bfd_reloc_other,
mgl@1371
 37893
+
mgl@1371
 37894
+  /* The symbol to relocate against was undefined.  */
mgl@1371
 37895
+  bfd_reloc_undefined,
mgl@1371
 37896
+
mgl@1371
 37897
+  /* The relocation was performed, but may not be ok - presently
mgl@1371
 37898
+     generated only when linking i960 coff files with i960 b.out
mgl@1371
 37899
+     symbols.  If this type is returned, the error_message argument
mgl@1371
 37900
+     to bfd_perform_relocation will be set.  */
mgl@1371
 37901
+  bfd_reloc_dangerous
mgl@1371
 37902
+ }
mgl@1371
 37903
+ bfd_reloc_status_type;
mgl@1371
 37904
+
mgl@1371
 37905
+
mgl@1371
 37906
+typedef struct reloc_cache_entry
mgl@1371
 37907
+{
mgl@1371
 37908
+  /* A pointer into the canonical table of pointers.  */
mgl@1371
 37909
+  struct bfd_symbol **sym_ptr_ptr;
mgl@1371
 37910
+
mgl@1371
 37911
+  /* offset in section.  */
mgl@1371
 37912
+  bfd_size_type address;
mgl@1371
 37913
+
mgl@1371
 37914
+  /* addend for relocation value.  */
mgl@1371
 37915
+  bfd_vma addend;
mgl@1371
 37916
+
mgl@1371
 37917
+  /* Pointer to how to perform the required relocation.  */
mgl@1371
 37918
+  reloc_howto_type *howto;
mgl@1371
 37919
+
mgl@1371
 37920
+}
mgl@1371
 37921
+arelent;
mgl@1371
 37922
+
mgl@1371
 37923
+enum complain_overflow
mgl@1371
 37924
+{
mgl@1371
 37925
+  /* Do not complain on overflow.  */
mgl@1371
 37926
+  complain_overflow_dont,
mgl@1371
 37927
+
mgl@1371
 37928
+  /* Complain if the value overflows when considered as a signed
mgl@1371
 37929
+     number one bit larger than the field.  ie. A bitfield of N bits
mgl@1371
 37930
+     is allowed to represent -2**n to 2**n-1.  */
mgl@1371
 37931
+  complain_overflow_bitfield,
mgl@1371
 37932
+
mgl@1371
 37933
+  /* Complain if the value overflows when considered as a signed
mgl@1371
 37934
+     number.  */
mgl@1371
 37935
+  complain_overflow_signed,
mgl@1371
 37936
+
mgl@1371
 37937
+  /* Complain if the value overflows when considered as an
mgl@1371
 37938
+     unsigned number.  */
mgl@1371
 37939
+  complain_overflow_unsigned
mgl@1371
 37940
+};
mgl@1371
 37941
+
mgl@1371
 37942
+struct reloc_howto_struct
mgl@1371
 37943
+{
mgl@1371
 37944
+  /*  The type field has mainly a documentary use - the back end can
mgl@1371
 37945
+      do what it wants with it, though normally the back end's
mgl@1371
 37946
+      external idea of what a reloc number is stored
mgl@1371
 37947
+      in this field.  For example, a PC relative word relocation
mgl@1371
 37948
+      in a coff environment has the type 023 - because that's
mgl@1371
 37949
+      what the outside world calls a R_PCRWORD reloc.  */
mgl@1371
 37950
+  unsigned int type;
mgl@1371
 37951
+
mgl@1371
 37952
+  /*  The value the final relocation is shifted right by.  This drops
mgl@1371
 37953
+      unwanted data from the relocation.  */
mgl@1371
 37954
+  unsigned int rightshift;
mgl@1371
 37955
+
mgl@1371
 37956
+  /*  The size of the item to be relocated.  This is *not* a
mgl@1371
 37957
+      power-of-two measure.  To get the number of bytes operated
mgl@1371
 37958
+      on by a type of relocation, use bfd_get_reloc_size.  */
mgl@1371
 37959
+  int size;
mgl@1371
 37960
+
mgl@1371
 37961
+  /*  The number of bits in the item to be relocated.  This is used
mgl@1371
 37962
+      when doing overflow checking.  */
mgl@1371
 37963
+  unsigned int bitsize;
mgl@1371
 37964
+
mgl@1371
 37965
+  /*  Notes that the relocation is relative to the location in the
mgl@1371
 37966
+      data section of the addend.  The relocation function will
mgl@1371
 37967
+      subtract from the relocation value the address of the location
mgl@1371
 37968
+      being relocated.  */
mgl@1371
 37969
+  bfd_boolean pc_relative;
mgl@1371
 37970
+
mgl@1371
 37971
+  /*  The bit position of the reloc value in the destination.
mgl@1371
 37972
+      The relocated value is left shifted by this amount.  */
mgl@1371
 37973
+  unsigned int bitpos;
mgl@1371
 37974
+
mgl@1371
 37975
+  /* What type of overflow error should be checked for when
mgl@1371
 37976
+     relocating.  */
mgl@1371
 37977
+  enum complain_overflow complain_on_overflow;
mgl@1371
 37978
+
mgl@1371
 37979
+  /* If this field is non null, then the supplied function is
mgl@1371
 37980
+     called rather than the normal function.  This allows really
mgl@1371
 37981
+     strange relocation methods to be accommodated (e.g., i960 callj
mgl@1371
 37982
+     instructions).  */
mgl@1371
 37983
+  bfd_reloc_status_type (*special_function)
mgl@1371
 37984
+    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
mgl@1371
 37985
+     bfd *, char **);
mgl@1371
 37986
+
mgl@1371
 37987
+  /* The textual name of the relocation type.  */
mgl@1371
 37988
+  char *name;
mgl@1371
 37989
+
mgl@1371
 37990
+  /* Some formats record a relocation addend in the section contents
mgl@1371
 37991
+     rather than with the relocation.  For ELF formats this is the
mgl@1371
 37992
+     distinction between USE_REL and USE_RELA (though the code checks
mgl@1371
 37993
+     for USE_REL == 1/0).  The value of this field is TRUE if the
mgl@1371
 37994
+     addend is recorded with the section contents; when performing a
mgl@1371
 37995
+     partial link (ld -r) the section contents (the data) will be
mgl@1371
 37996
+     modified.  The value of this field is FALSE if addends are
mgl@1371
 37997
+     recorded with the relocation (in arelent.addend); when performing
mgl@1371
 37998
+     a partial link the relocation will be modified.
mgl@1371
 37999
+     All relocations for all ELF USE_RELA targets should set this field
mgl@1371
 38000
+     to FALSE (values of TRUE should be looked on with suspicion).
mgl@1371
 38001
+     However, the converse is not true: not all relocations of all ELF
mgl@1371
 38002
+     USE_REL targets set this field to TRUE.  Why this is so is peculiar
mgl@1371
 38003
+     to each particular target.  For relocs that aren't used in partial
mgl@1371
 38004
+     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
mgl@1371
 38005
+  bfd_boolean partial_inplace;
mgl@1371
 38006
+
mgl@1371
 38007
+  /* src_mask selects the part of the instruction (or data) to be used
mgl@1371
 38008
+     in the relocation sum.  If the target relocations don't have an
mgl@1371
 38009
+     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
mgl@1371
 38010
+     dst_mask to extract the addend from the section contents.  If
mgl@1371
 38011
+     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
mgl@1371
 38012
+     field should be zero.  Non-zero values for ELF USE_RELA targets are
mgl@1371
 38013
+     bogus as in those cases the value in the dst_mask part of the
mgl@1371
 38014
+     section contents should be treated as garbage.  */
mgl@1371
 38015
+  bfd_vma src_mask;
mgl@1371
 38016
+
mgl@1371
 38017
+  /* dst_mask selects which parts of the instruction (or data) are
mgl@1371
 38018
+     replaced with a relocated value.  */
mgl@1371
 38019
+  bfd_vma dst_mask;
mgl@1371
 38020
+
mgl@1371
 38021
+  /* When some formats create PC relative instructions, they leave
mgl@1371
 38022
+     the value of the pc of the place being relocated in the offset
mgl@1371
 38023
+     slot of the instruction, so that a PC relative relocation can
mgl@1371
 38024
+     be made just by adding in an ordinary offset (e.g., sun3 a.out).
mgl@1371
 38025
+     Some formats leave the displacement part of an instruction
mgl@1371
 38026
+     empty (e.g., m88k bcs); this flag signals the fact.  */
mgl@1371
 38027
+  bfd_boolean pcrel_offset;
mgl@1371
 38028
+};
mgl@1371
 38029
+
mgl@1371
 38030
+#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
mgl@1371
 38031
+  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
mgl@1371
 38032
+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
mgl@1371
 38033
+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
mgl@1371
 38034
+         NAME, FALSE, 0, 0, IN)
mgl@1371
 38035
+
mgl@1371
 38036
+#define EMPTY_HOWTO(C) \
mgl@1371
 38037
+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
mgl@1371
 38038
+         NULL, FALSE, 0, 0, FALSE)
mgl@1371
 38039
+
mgl@1371
 38040
+#define HOWTO_PREPARE(relocation, symbol)               \
mgl@1371
 38041
+  {                                                     \
mgl@1371
 38042
+    if (symbol != NULL)                                 \
mgl@1371
 38043
+      {                                                 \
mgl@1371
 38044
+        if (bfd_is_com_section (symbol->section))       \
mgl@1371
 38045
+          {                                             \
mgl@1371
 38046
+            relocation = 0;                             \
mgl@1371
 38047
+          }                                             \
mgl@1371
 38048
+        else                                            \
mgl@1371
 38049
+          {                                             \
mgl@1371
 38050
+            relocation = symbol->value;                 \
mgl@1371
 38051
+          }                                             \
mgl@1371
 38052
+      }                                                 \
mgl@1371
 38053
+  }
mgl@1371
 38054
+
mgl@1371
 38055
+unsigned int bfd_get_reloc_size (reloc_howto_type *);
mgl@1371
 38056
+
mgl@1371
 38057
+typedef struct relent_chain
mgl@1371
 38058
+{
mgl@1371
 38059
+  arelent relent;
mgl@1371
 38060
+  struct relent_chain *next;
mgl@1371
 38061
+}
mgl@1371
 38062
+arelent_chain;
mgl@1371
 38063
+
mgl@1371
 38064
+bfd_reloc_status_type bfd_check_overflow
mgl@1371
 38065
+   (enum complain_overflow how,
mgl@1371
 38066
+    unsigned int bitsize,
mgl@1371
 38067
+    unsigned int rightshift,
mgl@1371
 38068
+    unsigned int addrsize,
mgl@1371
 38069
+    bfd_vma relocation);
mgl@1371
 38070
+
mgl@1371
 38071
+bfd_reloc_status_type bfd_perform_relocation
mgl@1371
 38072
+   (bfd *abfd,
mgl@1371
 38073
+    arelent *reloc_entry,
mgl@1371
 38074
+    void *data,
mgl@1371
 38075
+    asection *input_section,
mgl@1371
 38076
+    bfd *output_bfd,
mgl@1371
 38077
+    char **error_message);
mgl@1371
 38078
+
mgl@1371
 38079
+bfd_reloc_status_type bfd_install_relocation
mgl@1371
 38080
+   (bfd *abfd,
mgl@1371
 38081
+    arelent *reloc_entry,
mgl@1371
 38082
+    void *data, bfd_vma data_start,
mgl@1371
 38083
+    asection *input_section,
mgl@1371
 38084
+    char **error_message);
mgl@1371
 38085
+
mgl@1371
 38086
+enum bfd_reloc_code_real {
mgl@1371
 38087
+  _dummy_first_bfd_reloc_code_real,
mgl@1371
 38088
+
mgl@1371
 38089
+
mgl@1371
 38090
+/* Basic absolute relocations of N bits.  */
mgl@1371
 38091
+  BFD_RELOC_64,
mgl@1371
 38092
+  BFD_RELOC_32,
mgl@1371
 38093
+  BFD_RELOC_26,
mgl@1371
 38094
+  BFD_RELOC_24,
mgl@1371
 38095
+  BFD_RELOC_16,
mgl@1371
 38096
+  BFD_RELOC_14,
mgl@1371
 38097
+  BFD_RELOC_8,
mgl@1371
 38098
+
mgl@1371
 38099
+/* PC-relative relocations.  Sometimes these are relative to the address
mgl@1371
 38100
+of the relocation itself; sometimes they are relative to the start of
mgl@1371
 38101
+the section containing the relocation.  It depends on the specific target.
mgl@1371
 38102
+
mgl@1371
 38103
+The 24-bit relocation is used in some Intel 960 configurations.  */
mgl@1371
 38104
+  BFD_RELOC_64_PCREL,
mgl@1371
 38105
+  BFD_RELOC_32_PCREL,
mgl@1371
 38106
+  BFD_RELOC_24_PCREL,
mgl@1371
 38107
+  BFD_RELOC_16_PCREL,
mgl@1371
 38108
+  BFD_RELOC_12_PCREL,
mgl@1371
 38109
+  BFD_RELOC_8_PCREL,
mgl@1371
 38110
+
mgl@1371
 38111
+/* Section relative relocations.  Some targets need this for DWARF2.  */
mgl@1371
 38112
+  BFD_RELOC_32_SECREL,
mgl@1371
 38113
+
mgl@1371
 38114
+/* For ELF.  */
mgl@1371
 38115
+  BFD_RELOC_32_GOT_PCREL,
mgl@1371
 38116
+  BFD_RELOC_16_GOT_PCREL,
mgl@1371
 38117
+  BFD_RELOC_8_GOT_PCREL,
mgl@1371
 38118
+  BFD_RELOC_32_GOTOFF,
mgl@1371
 38119
+  BFD_RELOC_16_GOTOFF,
mgl@1371
 38120
+  BFD_RELOC_LO16_GOTOFF,
mgl@1371
 38121
+  BFD_RELOC_HI16_GOTOFF,
mgl@1371
 38122
+  BFD_RELOC_HI16_S_GOTOFF,
mgl@1371
 38123
+  BFD_RELOC_8_GOTOFF,
mgl@1371
 38124
+  BFD_RELOC_64_PLT_PCREL,
mgl@1371
 38125
+  BFD_RELOC_32_PLT_PCREL,
mgl@1371
 38126
+  BFD_RELOC_24_PLT_PCREL,
mgl@1371
 38127
+  BFD_RELOC_16_PLT_PCREL,
mgl@1371
 38128
+  BFD_RELOC_8_PLT_PCREL,
mgl@1371
 38129
+  BFD_RELOC_64_PLTOFF,
mgl@1371
 38130
+  BFD_RELOC_32_PLTOFF,
mgl@1371
 38131
+  BFD_RELOC_16_PLTOFF,
mgl@1371
 38132
+  BFD_RELOC_LO16_PLTOFF,
mgl@1371
 38133
+  BFD_RELOC_HI16_PLTOFF,
mgl@1371
 38134
+  BFD_RELOC_HI16_S_PLTOFF,
mgl@1371
 38135
+  BFD_RELOC_8_PLTOFF,
mgl@1371
 38136
+
mgl@1371
 38137
+/* Relocations used by 68K ELF.  */
mgl@1371
 38138
+  BFD_RELOC_68K_GLOB_DAT,
mgl@1371
 38139
+  BFD_RELOC_68K_JMP_SLOT,
mgl@1371
 38140
+  BFD_RELOC_68K_RELATIVE,
mgl@1371
 38141
+
mgl@1371
 38142
+/* Linkage-table relative.  */
mgl@1371
 38143
+  BFD_RELOC_32_BASEREL,
mgl@1371
 38144
+  BFD_RELOC_16_BASEREL,
mgl@1371
 38145
+  BFD_RELOC_LO16_BASEREL,
mgl@1371
 38146
+  BFD_RELOC_HI16_BASEREL,
mgl@1371
 38147
+  BFD_RELOC_HI16_S_BASEREL,
mgl@1371
 38148
+  BFD_RELOC_8_BASEREL,
mgl@1371
 38149
+  BFD_RELOC_RVA,
mgl@1371
 38150
+
mgl@1371
 38151
+/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
mgl@1371
 38152
+  BFD_RELOC_8_FFnn,
mgl@1371
 38153
+
mgl@1371
 38154
+/* These PC-relative relocations are stored as word displacements --
mgl@1371
 38155
+i.e., byte displacements shifted right two bits.  The 30-bit word
mgl@1371
 38156
+displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
mgl@1371
 38157
+SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
mgl@1371
 38158
+signed 16-bit displacement is used on the MIPS, and the 23-bit
mgl@1371
 38159
+displacement is used on the Alpha.  */
mgl@1371
 38160
+  BFD_RELOC_32_PCREL_S2,
mgl@1371
 38161
+  BFD_RELOC_16_PCREL_S2,
mgl@1371
 38162
+  BFD_RELOC_23_PCREL_S2,
mgl@1371
 38163
+
mgl@1371
 38164
+/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
mgl@1371
 38165
+the target word.  These are used on the SPARC.  */
mgl@1371
 38166
+  BFD_RELOC_HI22,
mgl@1371
 38167
+  BFD_RELOC_LO10,
mgl@1371
 38168
+
mgl@1371
 38169
+/* For systems that allocate a Global Pointer register, these are
mgl@1371
 38170
+displacements off that register.  These relocation types are
mgl@1371
 38171
+handled specially, because the value the register will have is
mgl@1371
 38172
+decided relatively late.  */
mgl@1371
 38173
+  BFD_RELOC_GPREL16,
mgl@1371
 38174
+  BFD_RELOC_GPREL32,
mgl@1371
 38175
+
mgl@1371
 38176
+/* Reloc types used for i960/b.out.  */
mgl@1371
 38177
+  BFD_RELOC_I960_CALLJ,
mgl@1371
 38178
+
mgl@1371
 38179
+/* SPARC ELF relocations.  There is probably some overlap with other
mgl@1371
 38180
+relocation types already defined.  */
mgl@1371
 38181
+  BFD_RELOC_NONE,
mgl@1371
 38182
+  BFD_RELOC_SPARC_WDISP22,
mgl@1371
 38183
+  BFD_RELOC_SPARC22,
mgl@1371
 38184
+  BFD_RELOC_SPARC13,
mgl@1371
 38185
+  BFD_RELOC_SPARC_GOT10,
mgl@1371
 38186
+  BFD_RELOC_SPARC_GOT13,
mgl@1371
 38187
+  BFD_RELOC_SPARC_GOT22,
mgl@1371
 38188
+  BFD_RELOC_SPARC_PC10,
mgl@1371
 38189
+  BFD_RELOC_SPARC_PC22,
mgl@1371
 38190
+  BFD_RELOC_SPARC_WPLT30,
mgl@1371
 38191
+  BFD_RELOC_SPARC_COPY,
mgl@1371
 38192
+  BFD_RELOC_SPARC_GLOB_DAT,
mgl@1371
 38193
+  BFD_RELOC_SPARC_JMP_SLOT,
mgl@1371
 38194
+  BFD_RELOC_SPARC_RELATIVE,
mgl@1371
 38195
+  BFD_RELOC_SPARC_UA16,
mgl@1371
 38196
+  BFD_RELOC_SPARC_UA32,
mgl@1371
 38197
+  BFD_RELOC_SPARC_UA64,
mgl@1371
 38198
+
mgl@1371
 38199
+/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
mgl@1371
 38200
+  BFD_RELOC_SPARC_BASE13,
mgl@1371
 38201
+  BFD_RELOC_SPARC_BASE22,
mgl@1371
 38202
+
mgl@1371
 38203
+/* SPARC64 relocations  */
mgl@1371
 38204
+#define BFD_RELOC_SPARC_64 BFD_RELOC_64
mgl@1371
 38205
+  BFD_RELOC_SPARC_10,
mgl@1371
 38206
+  BFD_RELOC_SPARC_11,
mgl@1371
 38207
+  BFD_RELOC_SPARC_OLO10,
mgl@1371
 38208
+  BFD_RELOC_SPARC_HH22,
mgl@1371
 38209
+  BFD_RELOC_SPARC_HM10,
mgl@1371
 38210
+  BFD_RELOC_SPARC_LM22,
mgl@1371
 38211
+  BFD_RELOC_SPARC_PC_HH22,
mgl@1371
 38212
+  BFD_RELOC_SPARC_PC_HM10,
mgl@1371
 38213
+  BFD_RELOC_SPARC_PC_LM22,
mgl@1371
 38214
+  BFD_RELOC_SPARC_WDISP16,
mgl@1371
 38215
+  BFD_RELOC_SPARC_WDISP19,
mgl@1371
 38216
+  BFD_RELOC_SPARC_7,
mgl@1371
 38217
+  BFD_RELOC_SPARC_6,
mgl@1371
 38218
+  BFD_RELOC_SPARC_5,
mgl@1371
 38219
+#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
mgl@1371
 38220
+  BFD_RELOC_SPARC_PLT32,
mgl@1371
 38221
+  BFD_RELOC_SPARC_PLT64,
mgl@1371
 38222
+  BFD_RELOC_SPARC_HIX22,
mgl@1371
 38223
+  BFD_RELOC_SPARC_LOX10,
mgl@1371
 38224
+  BFD_RELOC_SPARC_H44,
mgl@1371
 38225
+  BFD_RELOC_SPARC_M44,
mgl@1371
 38226
+  BFD_RELOC_SPARC_L44,
mgl@1371
 38227
+  BFD_RELOC_SPARC_REGISTER,
mgl@1371
 38228
+
mgl@1371
 38229
+/* SPARC little endian relocation  */
mgl@1371
 38230
+  BFD_RELOC_SPARC_REV32,
mgl@1371
 38231
+
mgl@1371
 38232
+/* SPARC TLS relocations  */
mgl@1371
 38233
+  BFD_RELOC_SPARC_TLS_GD_HI22,
mgl@1371
 38234
+  BFD_RELOC_SPARC_TLS_GD_LO10,
mgl@1371
 38235
+  BFD_RELOC_SPARC_TLS_GD_ADD,
mgl@1371
 38236
+  BFD_RELOC_SPARC_TLS_GD_CALL,
mgl@1371
 38237
+  BFD_RELOC_SPARC_TLS_LDM_HI22,
mgl@1371
 38238
+  BFD_RELOC_SPARC_TLS_LDM_LO10,
mgl@1371
 38239
+  BFD_RELOC_SPARC_TLS_LDM_ADD,
mgl@1371
 38240
+  BFD_RELOC_SPARC_TLS_LDM_CALL,
mgl@1371
 38241
+  BFD_RELOC_SPARC_TLS_LDO_HIX22,
mgl@1371
 38242
+  BFD_RELOC_SPARC_TLS_LDO_LOX10,
mgl@1371
 38243
+  BFD_RELOC_SPARC_TLS_LDO_ADD,
mgl@1371
 38244
+  BFD_RELOC_SPARC_TLS_IE_HI22,
mgl@1371
 38245
+  BFD_RELOC_SPARC_TLS_IE_LO10,
mgl@1371
 38246
+  BFD_RELOC_SPARC_TLS_IE_LD,
mgl@1371
 38247
+  BFD_RELOC_SPARC_TLS_IE_LDX,
mgl@1371
 38248
+  BFD_RELOC_SPARC_TLS_IE_ADD,
mgl@1371
 38249
+  BFD_RELOC_SPARC_TLS_LE_HIX22,
mgl@1371
 38250
+  BFD_RELOC_SPARC_TLS_LE_LOX10,
mgl@1371
 38251
+  BFD_RELOC_SPARC_TLS_DTPMOD32,
mgl@1371
 38252
+  BFD_RELOC_SPARC_TLS_DTPMOD64,
mgl@1371
 38253
+  BFD_RELOC_SPARC_TLS_DTPOFF32,
mgl@1371
 38254
+  BFD_RELOC_SPARC_TLS_DTPOFF64,
mgl@1371
 38255
+  BFD_RELOC_SPARC_TLS_TPOFF32,
mgl@1371
 38256
+  BFD_RELOC_SPARC_TLS_TPOFF64,
mgl@1371
 38257
+
mgl@1371
 38258
+/* SPU Relocations.  */
mgl@1371
 38259
+  BFD_RELOC_SPU_IMM7,
mgl@1371
 38260
+  BFD_RELOC_SPU_IMM8,
mgl@1371
 38261
+  BFD_RELOC_SPU_IMM10,
mgl@1371
 38262
+  BFD_RELOC_SPU_IMM10W,
mgl@1371
 38263
+  BFD_RELOC_SPU_IMM16,
mgl@1371
 38264
+  BFD_RELOC_SPU_IMM16W,
mgl@1371
 38265
+  BFD_RELOC_SPU_IMM18,
mgl@1371
 38266
+  BFD_RELOC_SPU_PCREL9a,
mgl@1371
 38267
+  BFD_RELOC_SPU_PCREL9b,
mgl@1371
 38268
+  BFD_RELOC_SPU_PCREL16,
mgl@1371
 38269
+  BFD_RELOC_SPU_LO16,
mgl@1371
 38270
+  BFD_RELOC_SPU_HI16,
mgl@1371
 38271
+  BFD_RELOC_SPU_PPU32,
mgl@1371
 38272
+  BFD_RELOC_SPU_PPU64,
mgl@1371
 38273
+
mgl@1371
 38274
+/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
mgl@1371
 38275
+"addend" in some special way.
mgl@1371
 38276
+For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
mgl@1371
 38277
+writing; when reading, it will be the absolute section symbol.  The
mgl@1371
 38278
+addend is the displacement in bytes of the "lda" instruction from
mgl@1371
 38279
+the "ldah" instruction (which is at the address of this reloc).  */
mgl@1371
 38280
+  BFD_RELOC_ALPHA_GPDISP_HI16,
mgl@1371
 38281
+
mgl@1371
 38282
+/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
mgl@1371
 38283
+with GPDISP_HI16 relocs.  The addend is ignored when writing the
mgl@1371
 38284
+relocations out, and is filled in with the file's GP value on
mgl@1371
 38285
+reading, for convenience.  */
mgl@1371
 38286
+  BFD_RELOC_ALPHA_GPDISP_LO16,
mgl@1371
 38287
+
mgl@1371
 38288
+/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
mgl@1371
 38289
+relocation except that there is no accompanying GPDISP_LO16
mgl@1371
 38290
+relocation.  */
mgl@1371
 38291
+  BFD_RELOC_ALPHA_GPDISP,
mgl@1371
 38292
+
mgl@1371
 38293
+/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
mgl@1371
 38294
+the assembler turns it into a LDQ instruction to load the address of
mgl@1371
 38295
+the symbol, and then fills in a register in the real instruction.
mgl@1371
 38296
+
mgl@1371
 38297
+The LITERAL reloc, at the LDQ instruction, refers to the .lita
mgl@1371
 38298
+section symbol.  The addend is ignored when writing, but is filled
mgl@1371
 38299
+in with the file's GP value on reading, for convenience, as with the
mgl@1371
 38300
+GPDISP_LO16 reloc.
mgl@1371
 38301
+
mgl@1371
 38302
+The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
mgl@1371
 38303
+It should refer to the symbol to be referenced, as with 16_GOTOFF,
mgl@1371
 38304
+but it generates output not based on the position within the .got
mgl@1371
 38305
+section, but relative to the GP value chosen for the file during the
mgl@1371
 38306
+final link stage.
mgl@1371
 38307
+
mgl@1371
 38308
+The LITUSE reloc, on the instruction using the loaded address, gives
mgl@1371
 38309
+information to the linker that it might be able to use to optimize
mgl@1371
 38310
+away some literal section references.  The symbol is ignored (read
mgl@1371
 38311
+as the absolute section symbol), and the "addend" indicates the type
mgl@1371
 38312
+of instruction using the register:
mgl@1371
 38313
+1 - "memory" fmt insn
mgl@1371
 38314
+2 - byte-manipulation (byte offset reg)
mgl@1371
 38315
+3 - jsr (target of branch)  */
mgl@1371
 38316
+  BFD_RELOC_ALPHA_LITERAL,
mgl@1371
 38317
+  BFD_RELOC_ALPHA_ELF_LITERAL,
mgl@1371
 38318
+  BFD_RELOC_ALPHA_LITUSE,
mgl@1371
 38319
+
mgl@1371
 38320
+/* The HINT relocation indicates a value that should be filled into the
mgl@1371
 38321
+"hint" field of a jmp/jsr/ret instruction, for possible branch-
mgl@1371
 38322
+prediction logic which may be provided on some processors.  */
mgl@1371
 38323
+  BFD_RELOC_ALPHA_HINT,
mgl@1371
 38324
+
mgl@1371
 38325
+/* The LINKAGE relocation outputs a linkage pair in the object file,
mgl@1371
 38326
+which is filled by the linker.  */
mgl@1371
 38327
+  BFD_RELOC_ALPHA_LINKAGE,
mgl@1371
 38328
+
mgl@1371
 38329
+/* The CODEADDR relocation outputs a STO_CA in the object file,
mgl@1371
 38330
+which is filled by the linker.  */
mgl@1371
 38331
+  BFD_RELOC_ALPHA_CODEADDR,
mgl@1371
 38332
+
mgl@1371
 38333
+/* The GPREL_HI/LO relocations together form a 32-bit offset from the
mgl@1371
 38334
+GP register.  */
mgl@1371
 38335
+  BFD_RELOC_ALPHA_GPREL_HI16,
mgl@1371
 38336
+  BFD_RELOC_ALPHA_GPREL_LO16,
mgl@1371
 38337
+
mgl@1371
 38338
+/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
mgl@1371
 38339
+share a common GP, and the target address is adjusted for
mgl@1371
 38340
+STO_ALPHA_STD_GPLOAD.  */
mgl@1371
 38341
+  BFD_RELOC_ALPHA_BRSGP,
mgl@1371
 38342
+
mgl@1371
 38343
+/* Alpha thread-local storage relocations.  */
mgl@1371
 38344
+  BFD_RELOC_ALPHA_TLSGD,
mgl@1371
 38345
+  BFD_RELOC_ALPHA_TLSLDM,
mgl@1371
 38346
+  BFD_RELOC_ALPHA_DTPMOD64,
mgl@1371
 38347
+  BFD_RELOC_ALPHA_GOTDTPREL16,
mgl@1371
 38348
+  BFD_RELOC_ALPHA_DTPREL64,
mgl@1371
 38349
+  BFD_RELOC_ALPHA_DTPREL_HI16,
mgl@1371
 38350
+  BFD_RELOC_ALPHA_DTPREL_LO16,
mgl@1371
 38351
+  BFD_RELOC_ALPHA_DTPREL16,
mgl@1371
 38352
+  BFD_RELOC_ALPHA_GOTTPREL16,
mgl@1371
 38353
+  BFD_RELOC_ALPHA_TPREL64,
mgl@1371
 38354
+  BFD_RELOC_ALPHA_TPREL_HI16,
mgl@1371
 38355
+  BFD_RELOC_ALPHA_TPREL_LO16,
mgl@1371
 38356
+  BFD_RELOC_ALPHA_TPREL16,
mgl@1371
 38357
+
mgl@1371
 38358
+/* Bits 27..2 of the relocation address shifted right 2 bits;
mgl@1371
 38359
+simple reloc otherwise.  */
mgl@1371
 38360
+  BFD_RELOC_MIPS_JMP,
mgl@1371
 38361
+
mgl@1371
 38362
+/* The MIPS16 jump instruction.  */
mgl@1371
 38363
+  BFD_RELOC_MIPS16_JMP,
mgl@1371
 38364
+
mgl@1371
 38365
+/* MIPS16 GP relative reloc.  */
mgl@1371
 38366
+  BFD_RELOC_MIPS16_GPREL,
mgl@1371
 38367
+
mgl@1371
 38368
+/* High 16 bits of 32-bit value; simple reloc.  */
mgl@1371
 38369
+  BFD_RELOC_HI16,
mgl@1371
 38370
+
mgl@1371
 38371
+/* High 16 bits of 32-bit value but the low 16 bits will be sign
mgl@1371
 38372
+extended and added to form the final result.  If the low 16
mgl@1371
 38373
+bits form a negative number, we need to add one to the high value
mgl@1371
 38374
+to compensate for the borrow when the low bits are added.  */
mgl@1371
 38375
+  BFD_RELOC_HI16_S,
mgl@1371
 38376
+
mgl@1371
 38377
+/* Low 16 bits.  */
mgl@1371
 38378
+  BFD_RELOC_LO16,
mgl@1371
 38379
+
mgl@1371
 38380
+/* High 16 bits of 32-bit pc-relative value  */
mgl@1371
 38381
+  BFD_RELOC_HI16_PCREL,
mgl@1371
 38382
+
mgl@1371
 38383
+/* High 16 bits of 32-bit pc-relative value, adjusted  */
mgl@1371
 38384
+  BFD_RELOC_HI16_S_PCREL,
mgl@1371
 38385
+
mgl@1371
 38386
+/* Low 16 bits of pc-relative value  */
mgl@1371
 38387
+  BFD_RELOC_LO16_PCREL,
mgl@1371
 38388
+
mgl@1371
 38389
+/* MIPS16 high 16 bits of 32-bit value.  */
mgl@1371
 38390
+  BFD_RELOC_MIPS16_HI16,
mgl@1371
 38391
+
mgl@1371
 38392
+/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
mgl@1371
 38393
+extended and added to form the final result.  If the low 16
mgl@1371
 38394
+bits form a negative number, we need to add one to the high value
mgl@1371
 38395
+to compensate for the borrow when the low bits are added.  */
mgl@1371
 38396
+  BFD_RELOC_MIPS16_HI16_S,
mgl@1371
 38397
+
mgl@1371
 38398
+/* MIPS16 low 16 bits.  */
mgl@1371
 38399
+  BFD_RELOC_MIPS16_LO16,
mgl@1371
 38400
+
mgl@1371
 38401
+/* Relocation against a MIPS literal section.  */
mgl@1371
 38402
+  BFD_RELOC_MIPS_LITERAL,
mgl@1371
 38403
+
mgl@1371
 38404
+/* MIPS ELF relocations.  */
mgl@1371
 38405
+  BFD_RELOC_MIPS_GOT16,
mgl@1371
 38406
+  BFD_RELOC_MIPS_CALL16,
mgl@1371
 38407
+  BFD_RELOC_MIPS_GOT_HI16,
mgl@1371
 38408
+  BFD_RELOC_MIPS_GOT_LO16,
mgl@1371
 38409
+  BFD_RELOC_MIPS_CALL_HI16,
mgl@1371
 38410
+  BFD_RELOC_MIPS_CALL_LO16,
mgl@1371
 38411
+  BFD_RELOC_MIPS_SUB,
mgl@1371
 38412
+  BFD_RELOC_MIPS_GOT_PAGE,
mgl@1371
 38413
+  BFD_RELOC_MIPS_GOT_OFST,
mgl@1371
 38414
+  BFD_RELOC_MIPS_GOT_DISP,
mgl@1371
 38415
+  BFD_RELOC_MIPS_SHIFT5,
mgl@1371
 38416
+  BFD_RELOC_MIPS_SHIFT6,
mgl@1371
 38417
+  BFD_RELOC_MIPS_INSERT_A,
mgl@1371
 38418
+  BFD_RELOC_MIPS_INSERT_B,
mgl@1371
 38419
+  BFD_RELOC_MIPS_DELETE,
mgl@1371
 38420
+  BFD_RELOC_MIPS_HIGHEST,
mgl@1371
 38421
+  BFD_RELOC_MIPS_HIGHER,
mgl@1371
 38422
+  BFD_RELOC_MIPS_SCN_DISP,
mgl@1371
 38423
+  BFD_RELOC_MIPS_REL16,
mgl@1371
 38424
+  BFD_RELOC_MIPS_RELGOT,
mgl@1371
 38425
+  BFD_RELOC_MIPS_JALR,
mgl@1371
 38426
+  BFD_RELOC_MIPS_TLS_DTPMOD32,
mgl@1371
 38427
+  BFD_RELOC_MIPS_TLS_DTPREL32,
mgl@1371
 38428
+  BFD_RELOC_MIPS_TLS_DTPMOD64,
mgl@1371
 38429
+  BFD_RELOC_MIPS_TLS_DTPREL64,
mgl@1371
 38430
+  BFD_RELOC_MIPS_TLS_GD,
mgl@1371
 38431
+  BFD_RELOC_MIPS_TLS_LDM,
mgl@1371
 38432
+  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
mgl@1371
 38433
+  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
mgl@1371
 38434
+  BFD_RELOC_MIPS_TLS_GOTTPREL,
mgl@1371
 38435
+  BFD_RELOC_MIPS_TLS_TPREL32,
mgl@1371
 38436
+  BFD_RELOC_MIPS_TLS_TPREL64,
mgl@1371
 38437
+  BFD_RELOC_MIPS_TLS_TPREL_HI16,
mgl@1371
 38438
+  BFD_RELOC_MIPS_TLS_TPREL_LO16,
mgl@1371
 38439
+
mgl@1371
 38440
+
mgl@1371
 38441
+/* MIPS ELF relocations (VxWorks extensions).  */
mgl@1371
 38442
+  BFD_RELOC_MIPS_COPY,
mgl@1371
 38443
+  BFD_RELOC_MIPS_JUMP_SLOT,
mgl@1371
 38444
+
mgl@1371
 38445
+
mgl@1371
 38446
+/* Fujitsu Frv Relocations.  */
mgl@1371
 38447
+  BFD_RELOC_FRV_LABEL16,
mgl@1371
 38448
+  BFD_RELOC_FRV_LABEL24,
mgl@1371
 38449
+  BFD_RELOC_FRV_LO16,
mgl@1371
 38450
+  BFD_RELOC_FRV_HI16,
mgl@1371
 38451
+  BFD_RELOC_FRV_GPREL12,
mgl@1371
 38452
+  BFD_RELOC_FRV_GPRELU12,
mgl@1371
 38453
+  BFD_RELOC_FRV_GPREL32,
mgl@1371
 38454
+  BFD_RELOC_FRV_GPRELHI,
mgl@1371
 38455
+  BFD_RELOC_FRV_GPRELLO,
mgl@1371
 38456
+  BFD_RELOC_FRV_GOT12,
mgl@1371
 38457
+  BFD_RELOC_FRV_GOTHI,
mgl@1371
 38458
+  BFD_RELOC_FRV_GOTLO,
mgl@1371
 38459
+  BFD_RELOC_FRV_FUNCDESC,
mgl@1371
 38460
+  BFD_RELOC_FRV_FUNCDESC_GOT12,
mgl@1371
 38461
+  BFD_RELOC_FRV_FUNCDESC_GOTHI,
mgl@1371
 38462
+  BFD_RELOC_FRV_FUNCDESC_GOTLO,
mgl@1371
 38463
+  BFD_RELOC_FRV_FUNCDESC_VALUE,
mgl@1371
 38464
+  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
mgl@1371
 38465
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
mgl@1371
 38466
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
mgl@1371
 38467
+  BFD_RELOC_FRV_GOTOFF12,
mgl@1371
 38468
+  BFD_RELOC_FRV_GOTOFFHI,
mgl@1371
 38469
+  BFD_RELOC_FRV_GOTOFFLO,
mgl@1371
 38470
+  BFD_RELOC_FRV_GETTLSOFF,
mgl@1371
 38471
+  BFD_RELOC_FRV_TLSDESC_VALUE,
mgl@1371
 38472
+  BFD_RELOC_FRV_GOTTLSDESC12,
mgl@1371
 38473
+  BFD_RELOC_FRV_GOTTLSDESCHI,
mgl@1371
 38474
+  BFD_RELOC_FRV_GOTTLSDESCLO,
mgl@1371
 38475
+  BFD_RELOC_FRV_TLSMOFF12,
mgl@1371
 38476
+  BFD_RELOC_FRV_TLSMOFFHI,
mgl@1371
 38477
+  BFD_RELOC_FRV_TLSMOFFLO,
mgl@1371
 38478
+  BFD_RELOC_FRV_GOTTLSOFF12,
mgl@1371
 38479
+  BFD_RELOC_FRV_GOTTLSOFFHI,
mgl@1371
 38480
+  BFD_RELOC_FRV_GOTTLSOFFLO,
mgl@1371
 38481
+  BFD_RELOC_FRV_TLSOFF,
mgl@1371
 38482
+  BFD_RELOC_FRV_TLSDESC_RELAX,
mgl@1371
 38483
+  BFD_RELOC_FRV_GETTLSOFF_RELAX,
mgl@1371
 38484
+  BFD_RELOC_FRV_TLSOFF_RELAX,
mgl@1371
 38485
+  BFD_RELOC_FRV_TLSMOFF,
mgl@1371
 38486
+
mgl@1371
 38487
+
mgl@1371
 38488
+/* This is a 24bit GOT-relative reloc for the mn10300.  */
mgl@1371
 38489
+  BFD_RELOC_MN10300_GOTOFF24,
mgl@1371
 38490
+
mgl@1371
 38491
+/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 38492
+in the instruction.  */
mgl@1371
 38493
+  BFD_RELOC_MN10300_GOT32,
mgl@1371
 38494
+
mgl@1371
 38495
+/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 38496
+in the instruction.  */
mgl@1371
 38497
+  BFD_RELOC_MN10300_GOT24,
mgl@1371
 38498
+
mgl@1371
 38499
+/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
mgl@1371
 38500
+in the instruction.  */
mgl@1371
 38501
+  BFD_RELOC_MN10300_GOT16,
mgl@1371
 38502
+
mgl@1371
 38503
+/* Copy symbol at runtime.  */
mgl@1371
 38504
+  BFD_RELOC_MN10300_COPY,
mgl@1371
 38505
+
mgl@1371
 38506
+/* Create GOT entry.  */
mgl@1371
 38507
+  BFD_RELOC_MN10300_GLOB_DAT,
mgl@1371
 38508
+
mgl@1371
 38509
+/* Create PLT entry.  */
mgl@1371
 38510
+  BFD_RELOC_MN10300_JMP_SLOT,
mgl@1371
 38511
+
mgl@1371
 38512
+/* Adjust by program base.  */
mgl@1371
 38513
+  BFD_RELOC_MN10300_RELATIVE,
mgl@1371
 38514
+
mgl@1371
 38515
+
mgl@1371
 38516
+/* i386/elf relocations  */
mgl@1371
 38517
+  BFD_RELOC_386_GOT32,
mgl@1371
 38518
+  BFD_RELOC_386_PLT32,
mgl@1371
 38519
+  BFD_RELOC_386_COPY,
mgl@1371
 38520
+  BFD_RELOC_386_GLOB_DAT,
mgl@1371
 38521
+  BFD_RELOC_386_JUMP_SLOT,
mgl@1371
 38522
+  BFD_RELOC_386_RELATIVE,
mgl@1371
 38523
+  BFD_RELOC_386_GOTOFF,
mgl@1371
 38524
+  BFD_RELOC_386_GOTPC,
mgl@1371
 38525
+  BFD_RELOC_386_TLS_TPOFF,
mgl@1371
 38526
+  BFD_RELOC_386_TLS_IE,
mgl@1371
 38527
+  BFD_RELOC_386_TLS_GOTIE,
mgl@1371
 38528
+  BFD_RELOC_386_TLS_LE,
mgl@1371
 38529
+  BFD_RELOC_386_TLS_GD,
mgl@1371
 38530
+  BFD_RELOC_386_TLS_LDM,
mgl@1371
 38531
+  BFD_RELOC_386_TLS_LDO_32,
mgl@1371
 38532
+  BFD_RELOC_386_TLS_IE_32,
mgl@1371
 38533
+  BFD_RELOC_386_TLS_LE_32,
mgl@1371
 38534
+  BFD_RELOC_386_TLS_DTPMOD32,
mgl@1371
 38535
+  BFD_RELOC_386_TLS_DTPOFF32,
mgl@1371
 38536
+  BFD_RELOC_386_TLS_TPOFF32,
mgl@1371
 38537
+  BFD_RELOC_386_TLS_GOTDESC,
mgl@1371
 38538
+  BFD_RELOC_386_TLS_DESC_CALL,
mgl@1371
 38539
+  BFD_RELOC_386_TLS_DESC,
mgl@1371
 38540
+
mgl@1371
 38541
+/* x86-64/elf relocations  */
mgl@1371
 38542
+  BFD_RELOC_X86_64_GOT32,
mgl@1371
 38543
+  BFD_RELOC_X86_64_PLT32,
mgl@1371
 38544
+  BFD_RELOC_X86_64_COPY,
mgl@1371
 38545
+  BFD_RELOC_X86_64_GLOB_DAT,
mgl@1371
 38546
+  BFD_RELOC_X86_64_JUMP_SLOT,
mgl@1371
 38547
+  BFD_RELOC_X86_64_RELATIVE,
mgl@1371
 38548
+  BFD_RELOC_X86_64_GOTPCREL,
mgl@1371
 38549
+  BFD_RELOC_X86_64_32S,
mgl@1371
 38550
+  BFD_RELOC_X86_64_DTPMOD64,
mgl@1371
 38551
+  BFD_RELOC_X86_64_DTPOFF64,
mgl@1371
 38552
+  BFD_RELOC_X86_64_TPOFF64,
mgl@1371
 38553
+  BFD_RELOC_X86_64_TLSGD,
mgl@1371
 38554
+  BFD_RELOC_X86_64_TLSLD,
mgl@1371
 38555
+  BFD_RELOC_X86_64_DTPOFF32,
mgl@1371
 38556
+  BFD_RELOC_X86_64_GOTTPOFF,
mgl@1371
 38557
+  BFD_RELOC_X86_64_TPOFF32,
mgl@1371
 38558
+  BFD_RELOC_X86_64_GOTOFF64,
mgl@1371
 38559
+  BFD_RELOC_X86_64_GOTPC32,
mgl@1371
 38560
+  BFD_RELOC_X86_64_GOT64,
mgl@1371
 38561
+  BFD_RELOC_X86_64_GOTPCREL64,
mgl@1371
 38562
+  BFD_RELOC_X86_64_GOTPC64,
mgl@1371
 38563
+  BFD_RELOC_X86_64_GOTPLT64,
mgl@1371
 38564
+  BFD_RELOC_X86_64_PLTOFF64,
mgl@1371
 38565
+  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
mgl@1371
 38566
+  BFD_RELOC_X86_64_TLSDESC_CALL,
mgl@1371
 38567
+  BFD_RELOC_X86_64_TLSDESC,
mgl@1371
 38568
+
mgl@1371
 38569
+/* ns32k relocations  */
mgl@1371
 38570
+  BFD_RELOC_NS32K_IMM_8,
mgl@1371
 38571
+  BFD_RELOC_NS32K_IMM_16,
mgl@1371
 38572
+  BFD_RELOC_NS32K_IMM_32,
mgl@1371
 38573
+  BFD_RELOC_NS32K_IMM_8_PCREL,
mgl@1371
 38574
+  BFD_RELOC_NS32K_IMM_16_PCREL,
mgl@1371
 38575
+  BFD_RELOC_NS32K_IMM_32_PCREL,
mgl@1371
 38576
+  BFD_RELOC_NS32K_DISP_8,
mgl@1371
 38577
+  BFD_RELOC_NS32K_DISP_16,
mgl@1371
 38578
+  BFD_RELOC_NS32K_DISP_32,
mgl@1371
 38579
+  BFD_RELOC_NS32K_DISP_8_PCREL,
mgl@1371
 38580
+  BFD_RELOC_NS32K_DISP_16_PCREL,
mgl@1371
 38581
+  BFD_RELOC_NS32K_DISP_32_PCREL,
mgl@1371
 38582
+
mgl@1371
 38583
+/* PDP11 relocations  */
mgl@1371
 38584
+  BFD_RELOC_PDP11_DISP_8_PCREL,
mgl@1371
 38585
+  BFD_RELOC_PDP11_DISP_6_PCREL,
mgl@1371
 38586
+
mgl@1371
 38587
+/* Picojava relocs.  Not all of these appear in object files.  */
mgl@1371
 38588
+  BFD_RELOC_PJ_CODE_HI16,
mgl@1371
 38589
+  BFD_RELOC_PJ_CODE_LO16,
mgl@1371
 38590
+  BFD_RELOC_PJ_CODE_DIR16,
mgl@1371
 38591
+  BFD_RELOC_PJ_CODE_DIR32,
mgl@1371
 38592
+  BFD_RELOC_PJ_CODE_REL16,
mgl@1371
 38593
+  BFD_RELOC_PJ_CODE_REL32,
mgl@1371
 38594
+
mgl@1371
 38595
+/* Power(rs6000) and PowerPC relocations.  */
mgl@1371
 38596
+  BFD_RELOC_PPC_B26,
mgl@1371
 38597
+  BFD_RELOC_PPC_BA26,
mgl@1371
 38598
+  BFD_RELOC_PPC_TOC16,
mgl@1371
 38599
+  BFD_RELOC_PPC_B16,
mgl@1371
 38600
+  BFD_RELOC_PPC_B16_BRTAKEN,
mgl@1371
 38601
+  BFD_RELOC_PPC_B16_BRNTAKEN,
mgl@1371
 38602
+  BFD_RELOC_PPC_BA16,
mgl@1371
 38603
+  BFD_RELOC_PPC_BA16_BRTAKEN,
mgl@1371
 38604
+  BFD_RELOC_PPC_BA16_BRNTAKEN,
mgl@1371
 38605
+  BFD_RELOC_PPC_COPY,
mgl@1371
 38606
+  BFD_RELOC_PPC_GLOB_DAT,
mgl@1371
 38607
+  BFD_RELOC_PPC_JMP_SLOT,
mgl@1371
 38608
+  BFD_RELOC_PPC_RELATIVE,
mgl@1371
 38609
+  BFD_RELOC_PPC_LOCAL24PC,
mgl@1371
 38610
+  BFD_RELOC_PPC_EMB_NADDR32,
mgl@1371
 38611
+  BFD_RELOC_PPC_EMB_NADDR16,
mgl@1371
 38612
+  BFD_RELOC_PPC_EMB_NADDR16_LO,
mgl@1371
 38613
+  BFD_RELOC_PPC_EMB_NADDR16_HI,
mgl@1371
 38614
+  BFD_RELOC_PPC_EMB_NADDR16_HA,
mgl@1371
 38615
+  BFD_RELOC_PPC_EMB_SDAI16,
mgl@1371
 38616
+  BFD_RELOC_PPC_EMB_SDA2I16,
mgl@1371
 38617
+  BFD_RELOC_PPC_EMB_SDA2REL,
mgl@1371
 38618
+  BFD_RELOC_PPC_EMB_SDA21,
mgl@1371
 38619
+  BFD_RELOC_PPC_EMB_MRKREF,
mgl@1371
 38620
+  BFD_RELOC_PPC_EMB_RELSEC16,
mgl@1371
 38621
+  BFD_RELOC_PPC_EMB_RELST_LO,
mgl@1371
 38622
+  BFD_RELOC_PPC_EMB_RELST_HI,
mgl@1371
 38623
+  BFD_RELOC_PPC_EMB_RELST_HA,
mgl@1371
 38624
+  BFD_RELOC_PPC_EMB_BIT_FLD,
mgl@1371
 38625
+  BFD_RELOC_PPC_EMB_RELSDA,
mgl@1371
 38626
+  BFD_RELOC_PPC64_HIGHER,
mgl@1371
 38627
+  BFD_RELOC_PPC64_HIGHER_S,
mgl@1371
 38628
+  BFD_RELOC_PPC64_HIGHEST,
mgl@1371
 38629
+  BFD_RELOC_PPC64_HIGHEST_S,
mgl@1371
 38630
+  BFD_RELOC_PPC64_TOC16_LO,
mgl@1371
 38631
+  BFD_RELOC_PPC64_TOC16_HI,
mgl@1371
 38632
+  BFD_RELOC_PPC64_TOC16_HA,
mgl@1371
 38633
+  BFD_RELOC_PPC64_TOC,
mgl@1371
 38634
+  BFD_RELOC_PPC64_PLTGOT16,
mgl@1371
 38635
+  BFD_RELOC_PPC64_PLTGOT16_LO,
mgl@1371
 38636
+  BFD_RELOC_PPC64_PLTGOT16_HI,
mgl@1371
 38637
+  BFD_RELOC_PPC64_PLTGOT16_HA,
mgl@1371
 38638
+  BFD_RELOC_PPC64_ADDR16_DS,
mgl@1371
 38639
+  BFD_RELOC_PPC64_ADDR16_LO_DS,
mgl@1371
 38640
+  BFD_RELOC_PPC64_GOT16_DS,
mgl@1371
 38641
+  BFD_RELOC_PPC64_GOT16_LO_DS,
mgl@1371
 38642
+  BFD_RELOC_PPC64_PLT16_LO_DS,
mgl@1371
 38643
+  BFD_RELOC_PPC64_SECTOFF_DS,
mgl@1371
 38644
+  BFD_RELOC_PPC64_SECTOFF_LO_DS,
mgl@1371
 38645
+  BFD_RELOC_PPC64_TOC16_DS,
mgl@1371
 38646
+  BFD_RELOC_PPC64_TOC16_LO_DS,
mgl@1371
 38647
+  BFD_RELOC_PPC64_PLTGOT16_DS,
mgl@1371
 38648
+  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
mgl@1371
 38649
+
mgl@1371
 38650
+/* PowerPC and PowerPC64 thread-local storage relocations.  */
mgl@1371
 38651
+  BFD_RELOC_PPC_TLS,
mgl@1371
 38652
+  BFD_RELOC_PPC_DTPMOD,
mgl@1371
 38653
+  BFD_RELOC_PPC_TPREL16,
mgl@1371
 38654
+  BFD_RELOC_PPC_TPREL16_LO,
mgl@1371
 38655
+  BFD_RELOC_PPC_TPREL16_HI,
mgl@1371
 38656
+  BFD_RELOC_PPC_TPREL16_HA,
mgl@1371
 38657
+  BFD_RELOC_PPC_TPREL,
mgl@1371
 38658
+  BFD_RELOC_PPC_DTPREL16,
mgl@1371
 38659
+  BFD_RELOC_PPC_DTPREL16_LO,
mgl@1371
 38660
+  BFD_RELOC_PPC_DTPREL16_HI,
mgl@1371
 38661
+  BFD_RELOC_PPC_DTPREL16_HA,
mgl@1371
 38662
+  BFD_RELOC_PPC_DTPREL,
mgl@1371
 38663
+  BFD_RELOC_PPC_GOT_TLSGD16,
mgl@1371
 38664
+  BFD_RELOC_PPC_GOT_TLSGD16_LO,
mgl@1371
 38665
+  BFD_RELOC_PPC_GOT_TLSGD16_HI,
mgl@1371
 38666
+  BFD_RELOC_PPC_GOT_TLSGD16_HA,
mgl@1371
 38667
+  BFD_RELOC_PPC_GOT_TLSLD16,
mgl@1371
 38668
+  BFD_RELOC_PPC_GOT_TLSLD16_LO,
mgl@1371
 38669
+  BFD_RELOC_PPC_GOT_TLSLD16_HI,
mgl@1371
 38670
+  BFD_RELOC_PPC_GOT_TLSLD16_HA,
mgl@1371
 38671
+  BFD_RELOC_PPC_GOT_TPREL16,
mgl@1371
 38672
+  BFD_RELOC_PPC_GOT_TPREL16_LO,
mgl@1371
 38673
+  BFD_RELOC_PPC_GOT_TPREL16_HI,
mgl@1371
 38674
+  BFD_RELOC_PPC_GOT_TPREL16_HA,
mgl@1371
 38675
+  BFD_RELOC_PPC_GOT_DTPREL16,
mgl@1371
 38676
+  BFD_RELOC_PPC_GOT_DTPREL16_LO,
mgl@1371
 38677
+  BFD_RELOC_PPC_GOT_DTPREL16_HI,
mgl@1371
 38678
+  BFD_RELOC_PPC_GOT_DTPREL16_HA,
mgl@1371
 38679
+  BFD_RELOC_PPC64_TPREL16_DS,
mgl@1371
 38680
+  BFD_RELOC_PPC64_TPREL16_LO_DS,
mgl@1371
 38681
+  BFD_RELOC_PPC64_TPREL16_HIGHER,
mgl@1371
 38682
+  BFD_RELOC_PPC64_TPREL16_HIGHERA,
mgl@1371
 38683
+  BFD_RELOC_PPC64_TPREL16_HIGHEST,
mgl@1371
 38684
+  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
mgl@1371
 38685
+  BFD_RELOC_PPC64_DTPREL16_DS,
mgl@1371
 38686
+  BFD_RELOC_PPC64_DTPREL16_LO_DS,
mgl@1371
 38687
+  BFD_RELOC_PPC64_DTPREL16_HIGHER,
mgl@1371
 38688
+  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
mgl@1371
 38689
+  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
mgl@1371
 38690
+  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
mgl@1371
 38691
+
mgl@1371
 38692
+/* IBM 370/390 relocations  */
mgl@1371
 38693
+  BFD_RELOC_I370_D12,
mgl@1371
 38694
+
mgl@1371
 38695
+/* The type of reloc used to build a constructor table - at the moment
mgl@1371
 38696
+probably a 32 bit wide absolute relocation, but the target can choose.
mgl@1371
 38697
+It generally does map to one of the other relocation types.  */
mgl@1371
 38698
+  BFD_RELOC_CTOR,
mgl@1371
 38699
+
mgl@1371
 38700
+/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
mgl@1371
 38701
+not stored in the instruction.  */
mgl@1371
 38702
+  BFD_RELOC_ARM_PCREL_BRANCH,
mgl@1371
 38703
+
mgl@1371
 38704
+/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
mgl@1371
 38705
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
mgl@1371
 38706
+field in the instruction.  */
mgl@1371
 38707
+  BFD_RELOC_ARM_PCREL_BLX,
mgl@1371
 38708
+
mgl@1371
 38709
+/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
mgl@1371
 38710
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
mgl@1371
 38711
+field in the instruction.  */
mgl@1371
 38712
+  BFD_RELOC_THUMB_PCREL_BLX,
mgl@1371
 38713
+
mgl@1371
 38714
+/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
mgl@1371
 38715
+  BFD_RELOC_ARM_PCREL_CALL,
mgl@1371
 38716
+
mgl@1371
 38717
+/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
mgl@1371
 38718
+  BFD_RELOC_ARM_PCREL_JUMP,
mgl@1371
 38719
+
mgl@1371
 38720
+/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
mgl@1371
 38721
+The lowest bit must be zero and is not stored in the instruction.
mgl@1371
 38722
+Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
mgl@1371
 38723
+"nn" one smaller in all cases.  Note further that BRANCH23
mgl@1371
 38724
+corresponds to R_ARM_THM_CALL.  */
mgl@1371
 38725
+  BFD_RELOC_THUMB_PCREL_BRANCH7,
mgl@1371
 38726
+  BFD_RELOC_THUMB_PCREL_BRANCH9,
mgl@1371
 38727
+  BFD_RELOC_THUMB_PCREL_BRANCH12,
mgl@1371
 38728
+  BFD_RELOC_THUMB_PCREL_BRANCH20,
mgl@1371
 38729
+  BFD_RELOC_THUMB_PCREL_BRANCH23,
mgl@1371
 38730
+  BFD_RELOC_THUMB_PCREL_BRANCH25,
mgl@1371
 38731
+
mgl@1371
 38732
+/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
mgl@1371
 38733
+  BFD_RELOC_ARM_OFFSET_IMM,
mgl@1371
 38734
+
mgl@1371
 38735
+/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
mgl@1371
 38736
+  BFD_RELOC_ARM_THUMB_OFFSET,
mgl@1371
 38737
+
mgl@1371
 38738
+/* Pc-relative or absolute relocation depending on target.  Used for
mgl@1371
 38739
+entries in .init_array sections.  */
mgl@1371
 38740
+  BFD_RELOC_ARM_TARGET1,
mgl@1371
 38741
+
mgl@1371
 38742
+/* Read-only segment base relative address.  */
mgl@1371
 38743
+  BFD_RELOC_ARM_ROSEGREL32,
mgl@1371
 38744
+
mgl@1371
 38745
+/* Data segment base relative address.  */
mgl@1371
 38746
+  BFD_RELOC_ARM_SBREL32,
mgl@1371
 38747
+
mgl@1371
 38748
+/* This reloc is used for references to RTTI data from exception handling
mgl@1371
 38749
+tables.  The actual definition depends on the target.  It may be a
mgl@1371
 38750
+pc-relative or some form of GOT-indirect relocation.  */
mgl@1371
 38751
+  BFD_RELOC_ARM_TARGET2,
mgl@1371
 38752
+
mgl@1371
 38753
+/* 31-bit PC relative address.  */
mgl@1371
 38754
+  BFD_RELOC_ARM_PREL31,
mgl@1371
 38755
+
mgl@1371
 38756
+/* Low and High halfword relocations for MOVW and MOVT instructions.  */
mgl@1371
 38757
+  BFD_RELOC_ARM_MOVW,
mgl@1371
 38758
+  BFD_RELOC_ARM_MOVT,
mgl@1371
 38759
+  BFD_RELOC_ARM_MOVW_PCREL,
mgl@1371
 38760
+  BFD_RELOC_ARM_MOVT_PCREL,
mgl@1371
 38761
+  BFD_RELOC_ARM_THUMB_MOVW,
mgl@1371
 38762
+  BFD_RELOC_ARM_THUMB_MOVT,
mgl@1371
 38763
+  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
mgl@1371
 38764
+  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
mgl@1371
 38765
+
mgl@1371
 38766
+/* Relocations for setting up GOTs and PLTs for shared libraries.  */
mgl@1371
 38767
+  BFD_RELOC_ARM_JUMP_SLOT,
mgl@1371
 38768
+  BFD_RELOC_ARM_GLOB_DAT,
mgl@1371
 38769
+  BFD_RELOC_ARM_GOT32,
mgl@1371
 38770
+  BFD_RELOC_ARM_PLT32,
mgl@1371
 38771
+  BFD_RELOC_ARM_RELATIVE,
mgl@1371
 38772
+  BFD_RELOC_ARM_GOTOFF,
mgl@1371
 38773
+  BFD_RELOC_ARM_GOTPC,
mgl@1371
 38774
+
mgl@1371
 38775
+/* ARM thread-local storage relocations.  */
mgl@1371
 38776
+  BFD_RELOC_ARM_TLS_GD32,
mgl@1371
 38777
+  BFD_RELOC_ARM_TLS_LDO32,
mgl@1371
 38778
+  BFD_RELOC_ARM_TLS_LDM32,
mgl@1371
 38779
+  BFD_RELOC_ARM_TLS_DTPOFF32,
mgl@1371
 38780
+  BFD_RELOC_ARM_TLS_DTPMOD32,
mgl@1371
 38781
+  BFD_RELOC_ARM_TLS_TPOFF32,
mgl@1371
 38782
+  BFD_RELOC_ARM_TLS_IE32,
mgl@1371
 38783
+  BFD_RELOC_ARM_TLS_LE32,
mgl@1371
 38784
+
mgl@1371
 38785
+/* ARM group relocations.  */
mgl@1371
 38786
+  BFD_RELOC_ARM_ALU_PC_G0_NC,
mgl@1371
 38787
+  BFD_RELOC_ARM_ALU_PC_G0,
mgl@1371
 38788
+  BFD_RELOC_ARM_ALU_PC_G1_NC,
mgl@1371
 38789
+  BFD_RELOC_ARM_ALU_PC_G1,
mgl@1371
 38790
+  BFD_RELOC_ARM_ALU_PC_G2,
mgl@1371
 38791
+  BFD_RELOC_ARM_LDR_PC_G0,
mgl@1371
 38792
+  BFD_RELOC_ARM_LDR_PC_G1,
mgl@1371
 38793
+  BFD_RELOC_ARM_LDR_PC_G2,
mgl@1371
 38794
+  BFD_RELOC_ARM_LDRS_PC_G0,
mgl@1371
 38795
+  BFD_RELOC_ARM_LDRS_PC_G1,
mgl@1371
 38796
+  BFD_RELOC_ARM_LDRS_PC_G2,
mgl@1371
 38797
+  BFD_RELOC_ARM_LDC_PC_G0,
mgl@1371
 38798
+  BFD_RELOC_ARM_LDC_PC_G1,
mgl@1371
 38799
+  BFD_RELOC_ARM_LDC_PC_G2,
mgl@1371
 38800
+  BFD_RELOC_ARM_ALU_SB_G0_NC,
mgl@1371
 38801
+  BFD_RELOC_ARM_ALU_SB_G0,
mgl@1371
 38802
+  BFD_RELOC_ARM_ALU_SB_G1_NC,
mgl@1371
 38803
+  BFD_RELOC_ARM_ALU_SB_G1,
mgl@1371
 38804
+  BFD_RELOC_ARM_ALU_SB_G2,
mgl@1371
 38805
+  BFD_RELOC_ARM_LDR_SB_G0,
mgl@1371
 38806
+  BFD_RELOC_ARM_LDR_SB_G1,
mgl@1371
 38807
+  BFD_RELOC_ARM_LDR_SB_G2,
mgl@1371
 38808
+  BFD_RELOC_ARM_LDRS_SB_G0,
mgl@1371
 38809
+  BFD_RELOC_ARM_LDRS_SB_G1,
mgl@1371
 38810
+  BFD_RELOC_ARM_LDRS_SB_G2,
mgl@1371
 38811
+  BFD_RELOC_ARM_LDC_SB_G0,
mgl@1371
 38812
+  BFD_RELOC_ARM_LDC_SB_G1,
mgl@1371
 38813
+  BFD_RELOC_ARM_LDC_SB_G2,
mgl@1371
 38814
+
mgl@1371
 38815
+/* These relocs are only used within the ARM assembler.  They are not
mgl@1371
 38816
+(at present) written to any object files.  */
mgl@1371
 38817
+  BFD_RELOC_ARM_IMMEDIATE,
mgl@1371
 38818
+  BFD_RELOC_ARM_ADRL_IMMEDIATE,
mgl@1371
 38819
+  BFD_RELOC_ARM_T32_IMMEDIATE,
mgl@1371
 38820
+  BFD_RELOC_ARM_T32_ADD_IMM,
mgl@1371
 38821
+  BFD_RELOC_ARM_T32_IMM12,
mgl@1371
 38822
+  BFD_RELOC_ARM_T32_ADD_PC12,
mgl@1371
 38823
+  BFD_RELOC_ARM_SHIFT_IMM,
mgl@1371
 38824
+  BFD_RELOC_ARM_SMC,
mgl@1371
 38825
+  BFD_RELOC_ARM_SWI,
mgl@1371
 38826
+  BFD_RELOC_ARM_MULTI,
mgl@1371
 38827
+  BFD_RELOC_ARM_CP_OFF_IMM,
mgl@1371
 38828
+  BFD_RELOC_ARM_CP_OFF_IMM_S2,
mgl@1371
 38829
+  BFD_RELOC_ARM_T32_CP_OFF_IMM,
mgl@1371
 38830
+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
mgl@1371
 38831
+  BFD_RELOC_ARM_ADR_IMM,
mgl@1371
 38832
+  BFD_RELOC_ARM_LDR_IMM,
mgl@1371
 38833
+  BFD_RELOC_ARM_LITERAL,
mgl@1371
 38834
+  BFD_RELOC_ARM_IN_POOL,
mgl@1371
 38835
+  BFD_RELOC_ARM_OFFSET_IMM8,
mgl@1371
 38836
+  BFD_RELOC_ARM_T32_OFFSET_U8,
mgl@1371
 38837
+  BFD_RELOC_ARM_T32_OFFSET_IMM,
mgl@1371
 38838
+  BFD_RELOC_ARM_HWLITERAL,
mgl@1371
 38839
+  BFD_RELOC_ARM_THUMB_ADD,
mgl@1371
 38840
+  BFD_RELOC_ARM_THUMB_IMM,
mgl@1371
 38841
+  BFD_RELOC_ARM_THUMB_SHIFT,
mgl@1371
 38842
+
mgl@1371
 38843
+/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
mgl@1371
 38844
+  BFD_RELOC_SH_PCDISP8BY2,
mgl@1371
 38845
+  BFD_RELOC_SH_PCDISP12BY2,
mgl@1371
 38846
+  BFD_RELOC_SH_IMM3,
mgl@1371
 38847
+  BFD_RELOC_SH_IMM3U,
mgl@1371
 38848
+  BFD_RELOC_SH_DISP12,
mgl@1371
 38849
+  BFD_RELOC_SH_DISP12BY2,
mgl@1371
 38850
+  BFD_RELOC_SH_DISP12BY4,
mgl@1371
 38851
+  BFD_RELOC_SH_DISP12BY8,
mgl@1371
 38852
+  BFD_RELOC_SH_DISP20,
mgl@1371
 38853
+  BFD_RELOC_SH_DISP20BY8,
mgl@1371
 38854
+  BFD_RELOC_SH_IMM4,
mgl@1371
 38855
+  BFD_RELOC_SH_IMM4BY2,
mgl@1371
 38856
+  BFD_RELOC_SH_IMM4BY4,
mgl@1371
 38857
+  BFD_RELOC_SH_IMM8,
mgl@1371
 38858
+  BFD_RELOC_SH_IMM8BY2,
mgl@1371
 38859
+  BFD_RELOC_SH_IMM8BY4,
mgl@1371
 38860
+  BFD_RELOC_SH_PCRELIMM8BY2,
mgl@1371
 38861
+  BFD_RELOC_SH_PCRELIMM8BY4,
mgl@1371
 38862
+  BFD_RELOC_SH_SWITCH16,
mgl@1371
 38863
+  BFD_RELOC_SH_SWITCH32,
mgl@1371
 38864
+  BFD_RELOC_SH_USES,
mgl@1371
 38865
+  BFD_RELOC_SH_COUNT,
mgl@1371
 38866
+  BFD_RELOC_SH_ALIGN,
mgl@1371
 38867
+  BFD_RELOC_SH_CODE,
mgl@1371
 38868
+  BFD_RELOC_SH_DATA,
mgl@1371
 38869
+  BFD_RELOC_SH_LABEL,
mgl@1371
 38870
+  BFD_RELOC_SH_LOOP_START,
mgl@1371
 38871
+  BFD_RELOC_SH_LOOP_END,
mgl@1371
 38872
+  BFD_RELOC_SH_COPY,
mgl@1371
 38873
+  BFD_RELOC_SH_GLOB_DAT,
mgl@1371
 38874
+  BFD_RELOC_SH_JMP_SLOT,
mgl@1371
 38875
+  BFD_RELOC_SH_RELATIVE,
mgl@1371
 38876
+  BFD_RELOC_SH_GOTPC,
mgl@1371
 38877
+  BFD_RELOC_SH_GOT_LOW16,
mgl@1371
 38878
+  BFD_RELOC_SH_GOT_MEDLOW16,
mgl@1371
 38879
+  BFD_RELOC_SH_GOT_MEDHI16,
mgl@1371
 38880
+  BFD_RELOC_SH_GOT_HI16,
mgl@1371
 38881
+  BFD_RELOC_SH_GOTPLT_LOW16,
mgl@1371
 38882
+  BFD_RELOC_SH_GOTPLT_MEDLOW16,
mgl@1371
 38883
+  BFD_RELOC_SH_GOTPLT_MEDHI16,
mgl@1371
 38884
+  BFD_RELOC_SH_GOTPLT_HI16,
mgl@1371
 38885
+  BFD_RELOC_SH_PLT_LOW16,
mgl@1371
 38886
+  BFD_RELOC_SH_PLT_MEDLOW16,
mgl@1371
 38887
+  BFD_RELOC_SH_PLT_MEDHI16,
mgl@1371
 38888
+  BFD_RELOC_SH_PLT_HI16,
mgl@1371
 38889
+  BFD_RELOC_SH_GOTOFF_LOW16,
mgl@1371
 38890
+  BFD_RELOC_SH_GOTOFF_MEDLOW16,
mgl@1371
 38891
+  BFD_RELOC_SH_GOTOFF_MEDHI16,
mgl@1371
 38892
+  BFD_RELOC_SH_GOTOFF_HI16,
mgl@1371
 38893
+  BFD_RELOC_SH_GOTPC_LOW16,
mgl@1371
 38894
+  BFD_RELOC_SH_GOTPC_MEDLOW16,
mgl@1371
 38895
+  BFD_RELOC_SH_GOTPC_MEDHI16,
mgl@1371
 38896
+  BFD_RELOC_SH_GOTPC_HI16,
mgl@1371
 38897
+  BFD_RELOC_SH_COPY64,
mgl@1371
 38898
+  BFD_RELOC_SH_GLOB_DAT64,
mgl@1371
 38899
+  BFD_RELOC_SH_JMP_SLOT64,
mgl@1371
 38900
+  BFD_RELOC_SH_RELATIVE64,
mgl@1371
 38901
+  BFD_RELOC_SH_GOT10BY4,
mgl@1371
 38902
+  BFD_RELOC_SH_GOT10BY8,
mgl@1371
 38903
+  BFD_RELOC_SH_GOTPLT10BY4,
mgl@1371
 38904
+  BFD_RELOC_SH_GOTPLT10BY8,
mgl@1371
 38905
+  BFD_RELOC_SH_GOTPLT32,
mgl@1371
 38906
+  BFD_RELOC_SH_SHMEDIA_CODE,
mgl@1371
 38907
+  BFD_RELOC_SH_IMMU5,
mgl@1371
 38908
+  BFD_RELOC_SH_IMMS6,
mgl@1371
 38909
+  BFD_RELOC_SH_IMMS6BY32,
mgl@1371
 38910
+  BFD_RELOC_SH_IMMU6,
mgl@1371
 38911
+  BFD_RELOC_SH_IMMS10,
mgl@1371
 38912
+  BFD_RELOC_SH_IMMS10BY2,
mgl@1371
 38913
+  BFD_RELOC_SH_IMMS10BY4,
mgl@1371
 38914
+  BFD_RELOC_SH_IMMS10BY8,
mgl@1371
 38915
+  BFD_RELOC_SH_IMMS16,
mgl@1371
 38916
+  BFD_RELOC_SH_IMMU16,
mgl@1371
 38917
+  BFD_RELOC_SH_IMM_LOW16,
mgl@1371
 38918
+  BFD_RELOC_SH_IMM_LOW16_PCREL,
mgl@1371
 38919
+  BFD_RELOC_SH_IMM_MEDLOW16,
mgl@1371
 38920
+  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
mgl@1371
 38921
+  BFD_RELOC_SH_IMM_MEDHI16,
mgl@1371
 38922
+  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
mgl@1371
 38923
+  BFD_RELOC_SH_IMM_HI16,
mgl@1371
 38924
+  BFD_RELOC_SH_IMM_HI16_PCREL,
mgl@1371
 38925
+  BFD_RELOC_SH_PT_16,
mgl@1371
 38926
+  BFD_RELOC_SH_TLS_GD_32,
mgl@1371
 38927
+  BFD_RELOC_SH_TLS_LD_32,
mgl@1371
 38928
+  BFD_RELOC_SH_TLS_LDO_32,
mgl@1371
 38929
+  BFD_RELOC_SH_TLS_IE_32,
mgl@1371
 38930
+  BFD_RELOC_SH_TLS_LE_32,
mgl@1371
 38931
+  BFD_RELOC_SH_TLS_DTPMOD32,
mgl@1371
 38932
+  BFD_RELOC_SH_TLS_DTPOFF32,
mgl@1371
 38933
+  BFD_RELOC_SH_TLS_TPOFF32,
mgl@1371
 38934
+
mgl@1371
 38935
+/* ARC Cores relocs.
mgl@1371
 38936
+ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
mgl@1371
 38937
+not stored in the instruction.  The high 20 bits are installed in bits 26
mgl@1371
 38938
+through 7 of the instruction.  */
mgl@1371
 38939
+  BFD_RELOC_ARC_B22_PCREL,
mgl@1371
 38940
+
mgl@1371
 38941
+/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
mgl@1371
 38942
+stored in the instruction.  The high 24 bits are installed in bits 23
mgl@1371
 38943
+through 0.  */
mgl@1371
 38944
+  BFD_RELOC_ARC_B26,
mgl@1371
 38945
+
mgl@1371
 38946
+/* ADI Blackfin 16 bit immediate absolute reloc.  */
mgl@1371
 38947
+  BFD_RELOC_BFIN_16_IMM,
mgl@1371
 38948
+
mgl@1371
 38949
+/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
mgl@1371
 38950
+  BFD_RELOC_BFIN_16_HIGH,
mgl@1371
 38951
+
mgl@1371
 38952
+/* ADI Blackfin 'a' part of LSETUP.  */
mgl@1371
 38953
+  BFD_RELOC_BFIN_4_PCREL,
mgl@1371
 38954
+
mgl@1371
 38955
+/* ADI Blackfin.  */
mgl@1371
 38956
+  BFD_RELOC_BFIN_5_PCREL,
mgl@1371
 38957
+
mgl@1371
 38958
+/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
mgl@1371
 38959
+  BFD_RELOC_BFIN_16_LOW,
mgl@1371
 38960
+
mgl@1371
 38961
+/* ADI Blackfin.  */
mgl@1371
 38962
+  BFD_RELOC_BFIN_10_PCREL,
mgl@1371
 38963
+
mgl@1371
 38964
+/* ADI Blackfin 'b' part of LSETUP.  */
mgl@1371
 38965
+  BFD_RELOC_BFIN_11_PCREL,
mgl@1371
 38966
+
mgl@1371
 38967
+/* ADI Blackfin.  */
mgl@1371
 38968
+  BFD_RELOC_BFIN_12_PCREL_JUMP,
mgl@1371
 38969
+
mgl@1371
 38970
+/* ADI Blackfin Short jump, pcrel.  */
mgl@1371
 38971
+  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
mgl@1371
 38972
+
mgl@1371
 38973
+/* ADI Blackfin Call.x not implemented.  */
mgl@1371
 38974
+  BFD_RELOC_BFIN_24_PCREL_CALL_X,
mgl@1371
 38975
+
mgl@1371
 38976
+/* ADI Blackfin Long Jump pcrel.  */
mgl@1371
 38977
+  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
mgl@1371
 38978
+
mgl@1371
 38979
+/* ADI Blackfin FD-PIC relocations.  */
mgl@1371
 38980
+  BFD_RELOC_BFIN_GOT17M4,
mgl@1371
 38981
+  BFD_RELOC_BFIN_GOTHI,
mgl@1371
 38982
+  BFD_RELOC_BFIN_GOTLO,
mgl@1371
 38983
+  BFD_RELOC_BFIN_FUNCDESC,
mgl@1371
 38984
+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
mgl@1371
 38985
+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
mgl@1371
 38986
+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
mgl@1371
 38987
+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
mgl@1371
 38988
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
mgl@1371
 38989
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
mgl@1371
 38990
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
mgl@1371
 38991
+  BFD_RELOC_BFIN_GOTOFF17M4,
mgl@1371
 38992
+  BFD_RELOC_BFIN_GOTOFFHI,
mgl@1371
 38993
+  BFD_RELOC_BFIN_GOTOFFLO,
mgl@1371
 38994
+
mgl@1371
 38995
+/* ADI Blackfin GOT relocation.  */
mgl@1371
 38996
+  BFD_RELOC_BFIN_GOT,
mgl@1371
 38997
+
mgl@1371
 38998
+/* ADI Blackfin PLTPC relocation.  */
mgl@1371
 38999
+  BFD_RELOC_BFIN_PLTPC,
mgl@1371
 39000
+
mgl@1371
 39001
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39002
+  BFD_ARELOC_BFIN_PUSH,
mgl@1371
 39003
+
mgl@1371
 39004
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39005
+  BFD_ARELOC_BFIN_CONST,
mgl@1371
 39006
+
mgl@1371
 39007
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39008
+  BFD_ARELOC_BFIN_ADD,
mgl@1371
 39009
+
mgl@1371
 39010
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39011
+  BFD_ARELOC_BFIN_SUB,
mgl@1371
 39012
+
mgl@1371
 39013
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39014
+  BFD_ARELOC_BFIN_MULT,
mgl@1371
 39015
+
mgl@1371
 39016
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39017
+  BFD_ARELOC_BFIN_DIV,
mgl@1371
 39018
+
mgl@1371
 39019
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39020
+  BFD_ARELOC_BFIN_MOD,
mgl@1371
 39021
+
mgl@1371
 39022
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39023
+  BFD_ARELOC_BFIN_LSHIFT,
mgl@1371
 39024
+
mgl@1371
 39025
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39026
+  BFD_ARELOC_BFIN_RSHIFT,
mgl@1371
 39027
+
mgl@1371
 39028
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39029
+  BFD_ARELOC_BFIN_AND,
mgl@1371
 39030
+
mgl@1371
 39031
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39032
+  BFD_ARELOC_BFIN_OR,
mgl@1371
 39033
+
mgl@1371
 39034
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39035
+  BFD_ARELOC_BFIN_XOR,
mgl@1371
 39036
+
mgl@1371
 39037
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39038
+  BFD_ARELOC_BFIN_LAND,
mgl@1371
 39039
+
mgl@1371
 39040
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39041
+  BFD_ARELOC_BFIN_LOR,
mgl@1371
 39042
+
mgl@1371
 39043
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39044
+  BFD_ARELOC_BFIN_LEN,
mgl@1371
 39045
+
mgl@1371
 39046
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39047
+  BFD_ARELOC_BFIN_NEG,
mgl@1371
 39048
+
mgl@1371
 39049
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39050
+  BFD_ARELOC_BFIN_COMP,
mgl@1371
 39051
+
mgl@1371
 39052
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39053
+  BFD_ARELOC_BFIN_PAGE,
mgl@1371
 39054
+
mgl@1371
 39055
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39056
+  BFD_ARELOC_BFIN_HWPAGE,
mgl@1371
 39057
+
mgl@1371
 39058
+/* ADI Blackfin arithmetic relocation.  */
mgl@1371
 39059
+  BFD_ARELOC_BFIN_ADDR,
mgl@1371
 39060
+
mgl@1371
 39061
+/* Mitsubishi D10V relocs.
mgl@1371
 39062
+This is a 10-bit reloc with the right 2 bits
mgl@1371
 39063
+assumed to be 0.  */
mgl@1371
 39064
+  BFD_RELOC_D10V_10_PCREL_R,
mgl@1371
 39065
+
mgl@1371
 39066
+/* Mitsubishi D10V relocs.
mgl@1371
 39067
+This is a 10-bit reloc with the right 2 bits
mgl@1371
 39068
+assumed to be 0.  This is the same as the previous reloc
mgl@1371
 39069
+except it is in the left container, i.e.,
mgl@1371
 39070
+shifted left 15 bits.  */
mgl@1371
 39071
+  BFD_RELOC_D10V_10_PCREL_L,
mgl@1371
 39072
+
mgl@1371
 39073
+/* This is an 18-bit reloc with the right 2 bits
mgl@1371
 39074
+assumed to be 0.  */
mgl@1371
 39075
+  BFD_RELOC_D10V_18,
mgl@1371
 39076
+
mgl@1371
 39077
+/* This is an 18-bit reloc with the right 2 bits
mgl@1371
 39078
+assumed to be 0.  */
mgl@1371
 39079
+  BFD_RELOC_D10V_18_PCREL,
mgl@1371
 39080
+
mgl@1371
 39081
+/* Mitsubishi D30V relocs.
mgl@1371
 39082
+This is a 6-bit absolute reloc.  */
mgl@1371
 39083
+  BFD_RELOC_D30V_6,
mgl@1371
 39084
+
mgl@1371
 39085
+/* This is a 6-bit pc-relative reloc with
mgl@1371
 39086
+the right 3 bits assumed to be 0.  */
mgl@1371
 39087
+  BFD_RELOC_D30V_9_PCREL,
mgl@1371
 39088
+
mgl@1371
 39089
+/* This is a 6-bit pc-relative reloc with
mgl@1371
 39090
+the right 3 bits assumed to be 0. Same
mgl@1371
 39091
+as the previous reloc but on the right side
mgl@1371
 39092
+of the container.  */
mgl@1371
 39093
+  BFD_RELOC_D30V_9_PCREL_R,
mgl@1371
 39094
+
mgl@1371
 39095
+/* This is a 12-bit absolute reloc with the
mgl@1371
 39096
+right 3 bitsassumed to be 0.  */
mgl@1371
 39097
+  BFD_RELOC_D30V_15,
mgl@1371
 39098
+
mgl@1371
 39099
+/* This is a 12-bit pc-relative reloc with
mgl@1371
 39100
+the right 3 bits assumed to be 0.  */
mgl@1371
 39101
+  BFD_RELOC_D30V_15_PCREL,
mgl@1371
 39102
+
mgl@1371
 39103
+/* This is a 12-bit pc-relative reloc with
mgl@1371
 39104
+the right 3 bits assumed to be 0. Same
mgl@1371
 39105
+as the previous reloc but on the right side
mgl@1371
 39106
+of the container.  */
mgl@1371
 39107
+  BFD_RELOC_D30V_15_PCREL_R,
mgl@1371
 39108
+
mgl@1371
 39109
+/* This is an 18-bit absolute reloc with
mgl@1371
 39110
+the right 3 bits assumed to be 0.  */
mgl@1371
 39111
+  BFD_RELOC_D30V_21,
mgl@1371
 39112
+
mgl@1371
 39113
+/* This is an 18-bit pc-relative reloc with
mgl@1371
 39114
+the right 3 bits assumed to be 0.  */
mgl@1371
 39115
+  BFD_RELOC_D30V_21_PCREL,
mgl@1371
 39116
+
mgl@1371
 39117
+/* This is an 18-bit pc-relative reloc with
mgl@1371
 39118
+the right 3 bits assumed to be 0. Same
mgl@1371
 39119
+as the previous reloc but on the right side
mgl@1371
 39120
+of the container.  */
mgl@1371
 39121
+  BFD_RELOC_D30V_21_PCREL_R,
mgl@1371
 39122
+
mgl@1371
 39123
+/* This is a 32-bit absolute reloc.  */
mgl@1371
 39124
+  BFD_RELOC_D30V_32,
mgl@1371
 39125
+
mgl@1371
 39126
+/* This is a 32-bit pc-relative reloc.  */
mgl@1371
 39127
+  BFD_RELOC_D30V_32_PCREL,
mgl@1371
 39128
+
mgl@1371
 39129
+/* DLX relocs  */
mgl@1371
 39130
+  BFD_RELOC_DLX_HI16_S,
mgl@1371
 39131
+
mgl@1371
 39132
+/* DLX relocs  */
mgl@1371
 39133
+  BFD_RELOC_DLX_LO16,
mgl@1371
 39134
+
mgl@1371
 39135
+/* DLX relocs  */
mgl@1371
 39136
+  BFD_RELOC_DLX_JMP26,
mgl@1371
 39137
+
mgl@1371
 39138
+/* Renesas M16C/M32C Relocations.  */
mgl@1371
 39139
+  BFD_RELOC_M32C_HI8,
mgl@1371
 39140
+  BFD_RELOC_M32C_RL_JUMP,
mgl@1371
 39141
+  BFD_RELOC_M32C_RL_1ADDR,
mgl@1371
 39142
+  BFD_RELOC_M32C_RL_2ADDR,
mgl@1371
 39143
+
mgl@1371
 39144
+/* Renesas M32R (formerly Mitsubishi M32R) relocs.
mgl@1371
 39145
+This is a 24 bit absolute address.  */
mgl@1371
 39146
+  BFD_RELOC_M32R_24,
mgl@1371
 39147
+
mgl@1371
 39148
+/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 39149
+  BFD_RELOC_M32R_10_PCREL,
mgl@1371
 39150
+
mgl@1371
 39151
+/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 39152
+  BFD_RELOC_M32R_18_PCREL,
mgl@1371
 39153
+
mgl@1371
 39154
+/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
mgl@1371
 39155
+  BFD_RELOC_M32R_26_PCREL,
mgl@1371
 39156
+
mgl@1371
 39157
+/* This is a 16-bit reloc containing the high 16 bits of an address
mgl@1371
 39158
+used when the lower 16 bits are treated as unsigned.  */
mgl@1371
 39159
+  BFD_RELOC_M32R_HI16_ULO,
mgl@1371
 39160
+
mgl@1371
 39161
+/* This is a 16-bit reloc containing the high 16 bits of an address
mgl@1371
 39162
+used when the lower 16 bits are treated as signed.  */
mgl@1371
 39163
+  BFD_RELOC_M32R_HI16_SLO,
mgl@1371
 39164
+
mgl@1371
 39165
+/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
mgl@1371
 39166
+  BFD_RELOC_M32R_LO16,
mgl@1371
 39167
+
mgl@1371
 39168
+/* This is a 16-bit reloc containing the small data area offset for use in
mgl@1371
 39169
+add3, load, and store instructions.  */
mgl@1371
 39170
+  BFD_RELOC_M32R_SDA16,
mgl@1371
 39171
+
mgl@1371
 39172
+/* For PIC.  */
mgl@1371
 39173
+  BFD_RELOC_M32R_GOT24,
mgl@1371
 39174
+  BFD_RELOC_M32R_26_PLTREL,
mgl@1371
 39175
+  BFD_RELOC_M32R_COPY,
mgl@1371
 39176
+  BFD_RELOC_M32R_GLOB_DAT,
mgl@1371
 39177
+  BFD_RELOC_M32R_JMP_SLOT,
mgl@1371
 39178
+  BFD_RELOC_M32R_RELATIVE,
mgl@1371
 39179
+  BFD_RELOC_M32R_GOTOFF,
mgl@1371
 39180
+  BFD_RELOC_M32R_GOTOFF_HI_ULO,
mgl@1371
 39181
+  BFD_RELOC_M32R_GOTOFF_HI_SLO,
mgl@1371
 39182
+  BFD_RELOC_M32R_GOTOFF_LO,
mgl@1371
 39183
+  BFD_RELOC_M32R_GOTPC24,
mgl@1371
 39184
+  BFD_RELOC_M32R_GOT16_HI_ULO,
mgl@1371
 39185
+  BFD_RELOC_M32R_GOT16_HI_SLO,
mgl@1371
 39186
+  BFD_RELOC_M32R_GOT16_LO,
mgl@1371
 39187
+  BFD_RELOC_M32R_GOTPC_HI_ULO,
mgl@1371
 39188
+  BFD_RELOC_M32R_GOTPC_HI_SLO,
mgl@1371
 39189
+  BFD_RELOC_M32R_GOTPC_LO,
mgl@1371
 39190
+
mgl@1371
 39191
+/* This is a 9-bit reloc  */
mgl@1371
 39192
+  BFD_RELOC_V850_9_PCREL,
mgl@1371
 39193
+
mgl@1371
 39194
+/* This is a 22-bit reloc  */
mgl@1371
 39195
+  BFD_RELOC_V850_22_PCREL,
mgl@1371
 39196
+
mgl@1371
 39197
+/* This is a 16 bit offset from the short data area pointer.  */
mgl@1371
 39198
+  BFD_RELOC_V850_SDA_16_16_OFFSET,
mgl@1371
 39199
+
mgl@1371
 39200
+/* This is a 16 bit offset (of which only 15 bits are used) from the
mgl@1371
 39201
+short data area pointer.  */
mgl@1371
 39202
+  BFD_RELOC_V850_SDA_15_16_OFFSET,
mgl@1371
 39203
+
mgl@1371
 39204
+/* This is a 16 bit offset from the zero data area pointer.  */
mgl@1371
 39205
+  BFD_RELOC_V850_ZDA_16_16_OFFSET,
mgl@1371
 39206
+
mgl@1371
 39207
+/* This is a 16 bit offset (of which only 15 bits are used) from the
mgl@1371
 39208
+zero data area pointer.  */
mgl@1371
 39209
+  BFD_RELOC_V850_ZDA_15_16_OFFSET,
mgl@1371
 39210
+
mgl@1371
 39211
+/* This is an 8 bit offset (of which only 6 bits are used) from the
mgl@1371
 39212
+tiny data area pointer.  */
mgl@1371
 39213
+  BFD_RELOC_V850_TDA_6_8_OFFSET,
mgl@1371
 39214
+
mgl@1371
 39215
+/* This is an 8bit offset (of which only 7 bits are used) from the tiny
mgl@1371
 39216
+data area pointer.  */
mgl@1371
 39217
+  BFD_RELOC_V850_TDA_7_8_OFFSET,
mgl@1371
 39218
+
mgl@1371
 39219
+/* This is a 7 bit offset from the tiny data area pointer.  */
mgl@1371
 39220
+  BFD_RELOC_V850_TDA_7_7_OFFSET,
mgl@1371
 39221
+
mgl@1371
 39222
+/* This is a 16 bit offset from the tiny data area pointer.  */
mgl@1371
 39223
+  BFD_RELOC_V850_TDA_16_16_OFFSET,
mgl@1371
 39224
+
mgl@1371
 39225
+/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
mgl@1371
 39226
+data area pointer.  */
mgl@1371
 39227
+  BFD_RELOC_V850_TDA_4_5_OFFSET,
mgl@1371
 39228
+
mgl@1371
 39229
+/* This is a 4 bit offset from the tiny data area pointer.  */
mgl@1371
 39230
+  BFD_RELOC_V850_TDA_4_4_OFFSET,
mgl@1371
 39231
+
mgl@1371
 39232
+/* This is a 16 bit offset from the short data area pointer, with the
mgl@1371
 39233
+bits placed non-contiguously in the instruction.  */
mgl@1371
 39234
+  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
mgl@1371
 39235
+
mgl@1371
 39236
+/* This is a 16 bit offset from the zero data area pointer, with the
mgl@1371
 39237
+bits placed non-contiguously in the instruction.  */
mgl@1371
 39238
+  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
mgl@1371
 39239
+
mgl@1371
 39240
+/* This is a 6 bit offset from the call table base pointer.  */
mgl@1371
 39241
+  BFD_RELOC_V850_CALLT_6_7_OFFSET,
mgl@1371
 39242
+
mgl@1371
 39243
+/* This is a 16 bit offset from the call table base pointer.  */
mgl@1371
 39244
+  BFD_RELOC_V850_CALLT_16_16_OFFSET,
mgl@1371
 39245
+
mgl@1371
 39246
+/* Used for relaxing indirect function calls.  */
mgl@1371
 39247
+  BFD_RELOC_V850_LONGCALL,
mgl@1371
 39248
+
mgl@1371
 39249
+/* Used for relaxing indirect jumps.  */
mgl@1371
 39250
+  BFD_RELOC_V850_LONGJUMP,
mgl@1371
 39251
+
mgl@1371
 39252
+/* Used to maintain alignment whilst relaxing.  */
mgl@1371
 39253
+  BFD_RELOC_V850_ALIGN,
mgl@1371
 39254
+
mgl@1371
 39255
+/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
mgl@1371
 39256
+instructions.  */
mgl@1371
 39257
+  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
mgl@1371
 39258
+
mgl@1371
 39259
+/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
mgl@1371
 39260
+instruction.  */
mgl@1371
 39261
+  BFD_RELOC_MN10300_32_PCREL,
mgl@1371
 39262
+
mgl@1371
 39263
+/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
mgl@1371
 39264
+instruction.  */
mgl@1371
 39265
+  BFD_RELOC_MN10300_16_PCREL,
mgl@1371
 39266
+
mgl@1371
 39267
+/* This is a 8bit DP reloc for the tms320c30, where the most
mgl@1371
 39268
+significant 8 bits of a 24 bit word are placed into the least
mgl@1371
 39269
+significant 8 bits of the opcode.  */
mgl@1371
 39270
+  BFD_RELOC_TIC30_LDP,
mgl@1371
 39271
+
mgl@1371
 39272
+/* This is a 7bit reloc for the tms320c54x, where the least
mgl@1371
 39273
+significant 7 bits of a 16 bit word are placed into the least
mgl@1371
 39274
+significant 7 bits of the opcode.  */
mgl@1371
 39275
+  BFD_RELOC_TIC54X_PARTLS7,
mgl@1371
 39276
+
mgl@1371
 39277
+/* This is a 9bit DP reloc for the tms320c54x, where the most
mgl@1371
 39278
+significant 9 bits of a 16 bit word are placed into the least
mgl@1371
 39279
+significant 9 bits of the opcode.  */
mgl@1371
 39280
+  BFD_RELOC_TIC54X_PARTMS9,
mgl@1371
 39281
+
mgl@1371
 39282
+/* This is an extended address 23-bit reloc for the tms320c54x.  */
mgl@1371
 39283
+  BFD_RELOC_TIC54X_23,
mgl@1371
 39284
+
mgl@1371
 39285
+/* This is a 16-bit reloc for the tms320c54x, where the least
mgl@1371
 39286
+significant 16 bits of a 23-bit extended address are placed into
mgl@1371
 39287
+the opcode.  */
mgl@1371
 39288
+  BFD_RELOC_TIC54X_16_OF_23,
mgl@1371
 39289
+
mgl@1371
 39290
+/* This is a reloc for the tms320c54x, where the most
mgl@1371
 39291
+significant 7 bits of a 23-bit extended address are placed into
mgl@1371
 39292
+the opcode.  */
mgl@1371
 39293
+  BFD_RELOC_TIC54X_MS7_OF_23,
mgl@1371
 39294
+
mgl@1371
 39295
+/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
mgl@1371
 39296
+  BFD_RELOC_FR30_48,
mgl@1371
 39297
+
mgl@1371
 39298
+/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
mgl@1371
 39299
+two sections.  */
mgl@1371
 39300
+  BFD_RELOC_FR30_20,
mgl@1371
 39301
+
mgl@1371
 39302
+/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
mgl@1371
 39303
+4 bits.  */
mgl@1371
 39304
+  BFD_RELOC_FR30_6_IN_4,
mgl@1371
 39305
+
mgl@1371
 39306
+/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
mgl@1371
 39307
+into 8 bits.  */
mgl@1371
 39308
+  BFD_RELOC_FR30_8_IN_8,
mgl@1371
 39309
+
mgl@1371
 39310
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
mgl@1371
 39311
+into 8 bits.  */
mgl@1371
 39312
+  BFD_RELOC_FR30_9_IN_8,
mgl@1371
 39313
+
mgl@1371
 39314
+/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
mgl@1371
 39315
+into 8 bits.  */
mgl@1371
 39316
+  BFD_RELOC_FR30_10_IN_8,
mgl@1371
 39317
+
mgl@1371
 39318
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
mgl@1371
 39319
+short offset into 8 bits.  */
mgl@1371
 39320
+  BFD_RELOC_FR30_9_PCREL,
mgl@1371
 39321
+
mgl@1371
 39322
+/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
mgl@1371
 39323
+short offset into 11 bits.  */
mgl@1371
 39324
+  BFD_RELOC_FR30_12_PCREL,
mgl@1371
 39325
+
mgl@1371
 39326
+/* Motorola Mcore relocations.  */
mgl@1371
 39327
+  BFD_RELOC_MCORE_PCREL_IMM8BY4,
mgl@1371
 39328
+  BFD_RELOC_MCORE_PCREL_IMM11BY2,
mgl@1371
 39329
+  BFD_RELOC_MCORE_PCREL_IMM4BY2,
mgl@1371
 39330
+  BFD_RELOC_MCORE_PCREL_32,
mgl@1371
 39331
+  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
mgl@1371
 39332
+  BFD_RELOC_MCORE_RVA,
mgl@1371
 39333
+
mgl@1371
 39334
+/* Toshiba Media Processor Relocations.  */
mgl@1371
 39335
+  BFD_RELOC_MEP_8,
mgl@1371
 39336
+  BFD_RELOC_MEP_16,
mgl@1371
 39337
+  BFD_RELOC_MEP_32,
mgl@1371
 39338
+  BFD_RELOC_MEP_PCREL8A2,
mgl@1371
 39339
+  BFD_RELOC_MEP_PCREL12A2,
mgl@1371
 39340
+  BFD_RELOC_MEP_PCREL17A2,
mgl@1371
 39341
+  BFD_RELOC_MEP_PCREL24A2,
mgl@1371
 39342
+  BFD_RELOC_MEP_PCABS24A2,
mgl@1371
 39343
+  BFD_RELOC_MEP_LOW16,
mgl@1371
 39344
+  BFD_RELOC_MEP_HI16U,
mgl@1371
 39345
+  BFD_RELOC_MEP_HI16S,
mgl@1371
 39346
+  BFD_RELOC_MEP_GPREL,
mgl@1371
 39347
+  BFD_RELOC_MEP_TPREL,
mgl@1371
 39348
+  BFD_RELOC_MEP_TPREL7,
mgl@1371
 39349
+  BFD_RELOC_MEP_TPREL7A2,
mgl@1371
 39350
+  BFD_RELOC_MEP_TPREL7A4,
mgl@1371
 39351
+  BFD_RELOC_MEP_UIMM24,
mgl@1371
 39352
+  BFD_RELOC_MEP_ADDR24A4,
mgl@1371
 39353
+  BFD_RELOC_MEP_GNU_VTINHERIT,
mgl@1371
 39354
+  BFD_RELOC_MEP_GNU_VTENTRY,
mgl@1371
 39355
+
mgl@1371
 39356
+
mgl@1371
 39357
+/* These are relocations for the GETA instruction.  */
mgl@1371
 39358
+  BFD_RELOC_MMIX_GETA,
mgl@1371
 39359
+  BFD_RELOC_MMIX_GETA_1,
mgl@1371
 39360
+  BFD_RELOC_MMIX_GETA_2,
mgl@1371
 39361
+  BFD_RELOC_MMIX_GETA_3,
mgl@1371
 39362
+
mgl@1371
 39363
+/* These are relocations for a conditional branch instruction.  */
mgl@1371
 39364
+  BFD_RELOC_MMIX_CBRANCH,
mgl@1371
 39365
+  BFD_RELOC_MMIX_CBRANCH_J,
mgl@1371
 39366
+  BFD_RELOC_MMIX_CBRANCH_1,
mgl@1371
 39367
+  BFD_RELOC_MMIX_CBRANCH_2,
mgl@1371
 39368
+  BFD_RELOC_MMIX_CBRANCH_3,
mgl@1371
 39369
+
mgl@1371
 39370
+/* These are relocations for the PUSHJ instruction.  */
mgl@1371
 39371
+  BFD_RELOC_MMIX_PUSHJ,
mgl@1371
 39372
+  BFD_RELOC_MMIX_PUSHJ_1,
mgl@1371
 39373
+  BFD_RELOC_MMIX_PUSHJ_2,
mgl@1371
 39374
+  BFD_RELOC_MMIX_PUSHJ_3,
mgl@1371
 39375
+  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
mgl@1371
 39376
+
mgl@1371
 39377
+/* These are relocations for the JMP instruction.  */
mgl@1371
 39378
+  BFD_RELOC_MMIX_JMP,
mgl@1371
 39379
+  BFD_RELOC_MMIX_JMP_1,
mgl@1371
 39380
+  BFD_RELOC_MMIX_JMP_2,
mgl@1371
 39381
+  BFD_RELOC_MMIX_JMP_3,
mgl@1371
 39382
+
mgl@1371
 39383
+/* This is a relocation for a relative address as in a GETA instruction or
mgl@1371
 39384
+a branch.  */
mgl@1371
 39385
+  BFD_RELOC_MMIX_ADDR19,
mgl@1371
 39386
+
mgl@1371
 39387
+/* This is a relocation for a relative address as in a JMP instruction.  */
mgl@1371
 39388
+  BFD_RELOC_MMIX_ADDR27,
mgl@1371
 39389
+
mgl@1371
 39390
+/* This is a relocation for an instruction field that may be a general
mgl@1371
 39391
+register or a value 0..255.  */
mgl@1371
 39392
+  BFD_RELOC_MMIX_REG_OR_BYTE,
mgl@1371
 39393
+
mgl@1371
 39394
+/* This is a relocation for an instruction field that may be a general
mgl@1371
 39395
+register.  */
mgl@1371
 39396
+  BFD_RELOC_MMIX_REG,
mgl@1371
 39397
+
mgl@1371
 39398
+/* This is a relocation for two instruction fields holding a register and
mgl@1371
 39399
+an offset, the equivalent of the relocation.  */
mgl@1371
 39400
+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
mgl@1371
 39401
+
mgl@1371
 39402
+/* This relocation is an assertion that the expression is not allocated as
mgl@1371
 39403
+a global register.  It does not modify contents.  */
mgl@1371
 39404
+  BFD_RELOC_MMIX_LOCAL,
mgl@1371
 39405
+
mgl@1371
 39406
+/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
mgl@1371
 39407
+short offset into 7 bits.  */
mgl@1371
 39408
+  BFD_RELOC_AVR_7_PCREL,
mgl@1371
 39409
+
mgl@1371
 39410
+/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
mgl@1371
 39411
+short offset into 12 bits.  */
mgl@1371
 39412
+  BFD_RELOC_AVR_13_PCREL,
mgl@1371
 39413
+
mgl@1371
 39414
+/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
mgl@1371
 39415
+program memory address) into 16 bits.  */
mgl@1371
 39416
+  BFD_RELOC_AVR_16_PM,
mgl@1371
 39417
+
mgl@1371
 39418
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
mgl@1371
 39419
+data memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39420
+  BFD_RELOC_AVR_LO8_LDI,
mgl@1371
 39421
+
mgl@1371
 39422
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 39423
+of data memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39424
+  BFD_RELOC_AVR_HI8_LDI,
mgl@1371
 39425
+
mgl@1371
 39426
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 39427
+of program memory address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39428
+  BFD_RELOC_AVR_HH8_LDI,
mgl@1371
 39429
+
mgl@1371
 39430
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 39431
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39432
+  BFD_RELOC_AVR_MS8_LDI,
mgl@1371
 39433
+
mgl@1371
 39434
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39435
+(usually data memory address) into 8 bit immediate value of SUBI insn.  */
mgl@1371
 39436
+  BFD_RELOC_AVR_LO8_LDI_NEG,
mgl@1371
 39437
+
mgl@1371
 39438
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39439
+(high 8 bit of data memory address) into 8 bit immediate value of
mgl@1371
 39440
+SUBI insn.  */
mgl@1371
 39441
+  BFD_RELOC_AVR_HI8_LDI_NEG,
mgl@1371
 39442
+
mgl@1371
 39443
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39444
+(most high 8 bit of program memory address) into 8 bit immediate value
mgl@1371
 39445
+of LDI or SUBI insn.  */
mgl@1371
 39446
+  BFD_RELOC_AVR_HH8_LDI_NEG,
mgl@1371
 39447
+
mgl@1371
 39448
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
mgl@1371
 39449
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39450
+  BFD_RELOC_AVR_MS8_LDI_NEG,
mgl@1371
 39451
+
mgl@1371
 39452
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
mgl@1371
 39453
+command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39454
+  BFD_RELOC_AVR_LO8_LDI_PM,
mgl@1371
 39455
+
mgl@1371
 39456
+/* This is a 16 bit reloc for the AVR that stores 8 bit value 
mgl@1371
 39457
+(command address) into 8 bit immediate value of LDI insn. If the address
mgl@1371
 39458
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
mgl@1371
 39459
+in the lower 128k.  */
mgl@1371
 39460
+  BFD_RELOC_AVR_LO8_LDI_GS,
mgl@1371
 39461
+
mgl@1371
 39462
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 39463
+of command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39464
+  BFD_RELOC_AVR_HI8_LDI_PM,
mgl@1371
 39465
+
mgl@1371
 39466
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
mgl@1371
 39467
+of command address) into 8 bit immediate value of LDI insn.  If the address
mgl@1371
 39468
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
mgl@1371
 39469
+below 128k.  */
mgl@1371
 39470
+  BFD_RELOC_AVR_HI8_LDI_GS,
mgl@1371
 39471
+
mgl@1371
 39472
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
mgl@1371
 39473
+of command address) into 8 bit immediate value of LDI insn.  */
mgl@1371
 39474
+  BFD_RELOC_AVR_HH8_LDI_PM,
mgl@1371
 39475
+
mgl@1371
 39476
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39477
+(usually command address) into 8 bit immediate value of SUBI insn.  */
mgl@1371
 39478
+  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
mgl@1371
 39479
+
mgl@1371
 39480
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39481
+(high 8 bit of 16 bit command address) into 8 bit immediate value
mgl@1371
 39482
+of SUBI insn.  */
mgl@1371
 39483
+  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
mgl@1371
 39484
+
mgl@1371
 39485
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
mgl@1371
 39486
+(high 6 bit of 22 bit command address) into 8 bit immediate
mgl@1371
 39487
+value of SUBI insn.  */
mgl@1371
 39488
+  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
mgl@1371
 39489
+
mgl@1371
 39490
+/* This is a 32 bit reloc for the AVR that stores 23 bit value
mgl@1371
 39491
+into 22 bits.  */
mgl@1371
 39492
+  BFD_RELOC_AVR_CALL,
mgl@1371
 39493
+
mgl@1371
 39494
+/* This is a 16 bit reloc for the AVR that stores all needed bits
mgl@1371
 39495
+for absolute addressing with ldi with overflow check to linktime  */
mgl@1371
 39496
+  BFD_RELOC_AVR_LDI,
mgl@1371
 39497
+
mgl@1371
 39498
+/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
mgl@1371
 39499
+instructions  */
mgl@1371
 39500
+  BFD_RELOC_AVR_6,
mgl@1371
 39501
+
mgl@1371
 39502
+/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
mgl@1371
 39503
+instructions  */
mgl@1371
 39504
+  BFD_RELOC_AVR_6_ADIW,
mgl@1371
 39505
+
mgl@1371
 39506
+/* Difference between two labels: L2 - L1. The value of L1 is encoded
mgl@1371
 39507
+as sym + addend, while the initial difference after assembly is
mgl@1371
 39508
+inserted into the object file by the assembler.  */
mgl@1371
 39509
+  BFD_RELOC_AVR32_DIFF32,
mgl@1371
 39510
+  BFD_RELOC_AVR32_DIFF16,
mgl@1371
 39511
+  BFD_RELOC_AVR32_DIFF8,
mgl@1371
 39512
+
mgl@1371
 39513
+/* Reference to a symbol through the Global Offset Table. The linker
mgl@1371
 39514
+will allocate an entry for symbol in the GOT and insert the offset
mgl@1371
 39515
+of this entry as the relocation value.  */
mgl@1371
 39516
+  BFD_RELOC_AVR32_GOT32,
mgl@1371
 39517
+  BFD_RELOC_AVR32_GOT16,
mgl@1371
 39518
+  BFD_RELOC_AVR32_GOT8,
mgl@1371
 39519
+
mgl@1371
 39520
+/* Normal (non-pc-relative) code relocations. Alignment and signedness
mgl@1371
 39521
+is indicated by the suffixes. S means signed, U means unsigned. W
mgl@1371
 39522
+means word-aligned, H means halfword-aligned, neither means
mgl@1371
 39523
+byte-aligned (no alignment.) SUB5 is the same relocation as 16S.  */
mgl@1371
 39524
+  BFD_RELOC_AVR32_21S,
mgl@1371
 39525
+  BFD_RELOC_AVR32_16U,
mgl@1371
 39526
+  BFD_RELOC_AVR32_16S,
mgl@1371
 39527
+  BFD_RELOC_AVR32_SUB5,
mgl@1371
 39528
+  BFD_RELOC_AVR32_8S_EXT,
mgl@1371
 39529
+  BFD_RELOC_AVR32_8S,
mgl@1371
 39530
+  BFD_RELOC_AVR32_15S,
mgl@1371
 39531
+
mgl@1371
 39532
+/* PC-relative relocations are signed if neither 'U' nor 'S' is
mgl@1371
 39533
+specified. However, we explicitly tack on a 'B' to indicate no
mgl@1371
 39534
+alignment, to avoid confusion with data relocs. All of these resolve
mgl@1371
 39535
+to sym + addend - offset, except the one with 'N' (negated) suffix.
mgl@1371
 39536
+This particular one resolves to offset - sym - addend.  */
mgl@1371
 39537
+  BFD_RELOC_AVR32_22H_PCREL,
mgl@1371
 39538
+  BFD_RELOC_AVR32_18W_PCREL,
mgl@1371
 39539
+  BFD_RELOC_AVR32_16B_PCREL,
mgl@1371
 39540
+  BFD_RELOC_AVR32_16N_PCREL,
mgl@1371
 39541
+  BFD_RELOC_AVR32_14UW_PCREL,
mgl@1371
 39542
+  BFD_RELOC_AVR32_11H_PCREL,
mgl@1371
 39543
+  BFD_RELOC_AVR32_10UW_PCREL,
mgl@1371
 39544
+  BFD_RELOC_AVR32_9H_PCREL,
mgl@1371
 39545
+  BFD_RELOC_AVR32_9UW_PCREL,
mgl@1371
 39546
+
mgl@1371
 39547
+/* Subtract the link-time address of the GOT from (symbol + addend)
mgl@1371
 39548
+and insert the result.  */
mgl@1371
 39549
+  BFD_RELOC_AVR32_GOTPC,
mgl@1371
 39550
+
mgl@1371
 39551
+/* Reference to a symbol through the GOT. The linker will allocate an
mgl@1371
 39552
+entry for symbol in the GOT and insert the offset of this entry as
mgl@1371
 39553
+the relocation value. addend must be zero. As usual, 'S' means
mgl@1371
 39554
+signed, 'W' means word-aligned, etc.  */
mgl@1371
 39555
+  BFD_RELOC_AVR32_GOTCALL,
mgl@1371
 39556
+  BFD_RELOC_AVR32_LDA_GOT,
mgl@1371
 39557
+  BFD_RELOC_AVR32_GOT21S,
mgl@1371
 39558
+  BFD_RELOC_AVR32_GOT18SW,
mgl@1371
 39559
+  BFD_RELOC_AVR32_GOT16S,
mgl@1371
 39560
+
mgl@1371
 39561
+/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
mgl@1371
 39562
+a whole lot of sense.  */
mgl@1371
 39563
+  BFD_RELOC_AVR32_32_CPENT,
mgl@1371
 39564
+
mgl@1371
 39565
+/* Constant pool references. Some of these relocations are signed,
mgl@1371
 39566
+others are unsigned. It doesn't really matter, since the constant
mgl@1371
 39567
+pool always comes after the code that references it.  */
mgl@1371
 39568
+  BFD_RELOC_AVR32_CPCALL,
mgl@1371
 39569
+  BFD_RELOC_AVR32_16_CP,
mgl@1371
 39570
+  BFD_RELOC_AVR32_9W_CP,
mgl@1371
 39571
+
mgl@1371
 39572
+/* sym must be the absolute symbol. The addend specifies the alignment
mgl@1371
 39573
+order, e.g. if addend is 2, the linker must add padding so that the
mgl@1371
 39574
+next address is aligned to a 4-byte boundary.  */
mgl@1371
 39575
+  BFD_RELOC_AVR32_ALIGN,
mgl@1371
 39576
+
mgl@1371
 39577
+/* Code relocations that will never make it to the output file.  */
mgl@1371
 39578
+  BFD_RELOC_AVR32_14UW,
mgl@1371
 39579
+  BFD_RELOC_AVR32_10UW,
mgl@1371
 39580
+  BFD_RELOC_AVR32_10SW,
mgl@1371
 39581
+  BFD_RELOC_AVR32_STHH_W,
mgl@1371
 39582
+  BFD_RELOC_AVR32_7UW,
mgl@1371
 39583
+  BFD_RELOC_AVR32_6S,
mgl@1371
 39584
+  BFD_RELOC_AVR32_6UW,
mgl@1371
 39585
+  BFD_RELOC_AVR32_4UH,
mgl@1371
 39586
+  BFD_RELOC_AVR32_3U,
mgl@1371
 39587
+
mgl@1371
 39588
+/* Direct 12 bit.  */
mgl@1371
 39589
+  BFD_RELOC_390_12,
mgl@1371
 39590
+
mgl@1371
 39591
+/* 12 bit GOT offset.  */
mgl@1371
 39592
+  BFD_RELOC_390_GOT12,
mgl@1371
 39593
+
mgl@1371
 39594
+/* 32 bit PC relative PLT address.  */
mgl@1371
 39595
+  BFD_RELOC_390_PLT32,
mgl@1371
 39596
+
mgl@1371
 39597
+/* Copy symbol at runtime.  */
mgl@1371
 39598
+  BFD_RELOC_390_COPY,
mgl@1371
 39599
+
mgl@1371
 39600
+/* Create GOT entry.  */
mgl@1371
 39601
+  BFD_RELOC_390_GLOB_DAT,
mgl@1371
 39602
+
mgl@1371
 39603
+/* Create PLT entry.  */
mgl@1371
 39604
+  BFD_RELOC_390_JMP_SLOT,
mgl@1371
 39605
+
mgl@1371
 39606
+/* Adjust by program base.  */
mgl@1371
 39607
+  BFD_RELOC_390_RELATIVE,
mgl@1371
 39608
+
mgl@1371
 39609
+/* 32 bit PC relative offset to GOT.  */
mgl@1371
 39610
+  BFD_RELOC_390_GOTPC,
mgl@1371
 39611
+
mgl@1371
 39612
+/* 16 bit GOT offset.  */
mgl@1371
 39613
+  BFD_RELOC_390_GOT16,
mgl@1371
 39614
+
mgl@1371
 39615
+/* PC relative 16 bit shifted by 1.  */
mgl@1371
 39616
+  BFD_RELOC_390_PC16DBL,
mgl@1371
 39617
+
mgl@1371
 39618
+/* 16 bit PC rel. PLT shifted by 1.  */
mgl@1371
 39619
+  BFD_RELOC_390_PLT16DBL,
mgl@1371
 39620
+
mgl@1371
 39621
+/* PC relative 32 bit shifted by 1.  */
mgl@1371
 39622
+  BFD_RELOC_390_PC32DBL,
mgl@1371
 39623
+
mgl@1371
 39624
+/* 32 bit PC rel. PLT shifted by 1.  */
mgl@1371
 39625
+  BFD_RELOC_390_PLT32DBL,
mgl@1371
 39626
+
mgl@1371
 39627
+/* 32 bit PC rel. GOT shifted by 1.  */
mgl@1371
 39628
+  BFD_RELOC_390_GOTPCDBL,
mgl@1371
 39629
+
mgl@1371
 39630
+/* 64 bit GOT offset.  */
mgl@1371
 39631
+  BFD_RELOC_390_GOT64,
mgl@1371
 39632
+
mgl@1371
 39633
+/* 64 bit PC relative PLT address.  */
mgl@1371
 39634
+  BFD_RELOC_390_PLT64,
mgl@1371
 39635
+
mgl@1371
 39636
+/* 32 bit rel. offset to GOT entry.  */
mgl@1371
 39637
+  BFD_RELOC_390_GOTENT,
mgl@1371
 39638
+
mgl@1371
 39639
+/* 64 bit offset to GOT.  */
mgl@1371
 39640
+  BFD_RELOC_390_GOTOFF64,
mgl@1371
 39641
+
mgl@1371
 39642
+/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 39643
+  BFD_RELOC_390_GOTPLT12,
mgl@1371
 39644
+
mgl@1371
 39645
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 39646
+  BFD_RELOC_390_GOTPLT16,
mgl@1371
 39647
+
mgl@1371
 39648
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 39649
+  BFD_RELOC_390_GOTPLT32,
mgl@1371
 39650
+
mgl@1371
 39651
+/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 39652
+  BFD_RELOC_390_GOTPLT64,
mgl@1371
 39653
+
mgl@1371
 39654
+/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 39655
+  BFD_RELOC_390_GOTPLTENT,
mgl@1371
 39656
+
mgl@1371
 39657
+/* 16-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 39658
+  BFD_RELOC_390_PLTOFF16,
mgl@1371
 39659
+
mgl@1371
 39660
+/* 32-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 39661
+  BFD_RELOC_390_PLTOFF32,
mgl@1371
 39662
+
mgl@1371
 39663
+/* 64-bit rel. offset from the GOT to a PLT entry.  */
mgl@1371
 39664
+  BFD_RELOC_390_PLTOFF64,
mgl@1371
 39665
+
mgl@1371
 39666
+/* s390 tls relocations.  */
mgl@1371
 39667
+  BFD_RELOC_390_TLS_LOAD,
mgl@1371
 39668
+  BFD_RELOC_390_TLS_GDCALL,
mgl@1371
 39669
+  BFD_RELOC_390_TLS_LDCALL,
mgl@1371
 39670
+  BFD_RELOC_390_TLS_GD32,
mgl@1371
 39671
+  BFD_RELOC_390_TLS_GD64,
mgl@1371
 39672
+  BFD_RELOC_390_TLS_GOTIE12,
mgl@1371
 39673
+  BFD_RELOC_390_TLS_GOTIE32,
mgl@1371
 39674
+  BFD_RELOC_390_TLS_GOTIE64,
mgl@1371
 39675
+  BFD_RELOC_390_TLS_LDM32,
mgl@1371
 39676
+  BFD_RELOC_390_TLS_LDM64,
mgl@1371
 39677
+  BFD_RELOC_390_TLS_IE32,
mgl@1371
 39678
+  BFD_RELOC_390_TLS_IE64,
mgl@1371
 39679
+  BFD_RELOC_390_TLS_IEENT,
mgl@1371
 39680
+  BFD_RELOC_390_TLS_LE32,
mgl@1371
 39681
+  BFD_RELOC_390_TLS_LE64,
mgl@1371
 39682
+  BFD_RELOC_390_TLS_LDO32,
mgl@1371
 39683
+  BFD_RELOC_390_TLS_LDO64,
mgl@1371
 39684
+  BFD_RELOC_390_TLS_DTPMOD,
mgl@1371
 39685
+  BFD_RELOC_390_TLS_DTPOFF,
mgl@1371
 39686
+  BFD_RELOC_390_TLS_TPOFF,
mgl@1371
 39687
+
mgl@1371
 39688
+/* Long displacement extension.  */
mgl@1371
 39689
+  BFD_RELOC_390_20,
mgl@1371
 39690
+  BFD_RELOC_390_GOT20,
mgl@1371
 39691
+  BFD_RELOC_390_GOTPLT20,
mgl@1371
 39692
+  BFD_RELOC_390_TLS_GOTIE20,
mgl@1371
 39693
+
mgl@1371
 39694
+/* Score relocations  */
mgl@1371
 39695
+  BFD_RELOC_SCORE_DUMMY1,
mgl@1371
 39696
+
mgl@1371
 39697
+/* Low 16 bit for load/store  */
mgl@1371
 39698
+  BFD_RELOC_SCORE_GPREL15,
mgl@1371
 39699
+
mgl@1371
 39700
+/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 39701
+  BFD_RELOC_SCORE_DUMMY2,
mgl@1371
 39702
+  BFD_RELOC_SCORE_JMP,
mgl@1371
 39703
+
mgl@1371
 39704
+/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 39705
+  BFD_RELOC_SCORE_BRANCH,
mgl@1371
 39706
+
mgl@1371
 39707
+/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 39708
+  BFD_RELOC_SCORE16_JMP,
mgl@1371
 39709
+
mgl@1371
 39710
+/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
mgl@1371
 39711
+  BFD_RELOC_SCORE16_BRANCH,
mgl@1371
 39712
+
mgl@1371
 39713
+/* Undocumented Score relocs  */
mgl@1371
 39714
+  BFD_RELOC_SCORE_GOT15,
mgl@1371
 39715
+  BFD_RELOC_SCORE_GOT_LO16,
mgl@1371
 39716
+  BFD_RELOC_SCORE_CALL15,
mgl@1371
 39717
+  BFD_RELOC_SCORE_DUMMY_HI16,
mgl@1371
 39718
+
mgl@1371
 39719
+/* Scenix IP2K - 9-bit register number / data address  */
mgl@1371
 39720
+  BFD_RELOC_IP2K_FR9,
mgl@1371
 39721
+
mgl@1371
 39722
+/* Scenix IP2K - 4-bit register/data bank number  */
mgl@1371
 39723
+  BFD_RELOC_IP2K_BANK,
mgl@1371
 39724
+
mgl@1371
 39725
+/* Scenix IP2K - low 13 bits of instruction word address  */
mgl@1371
 39726
+  BFD_RELOC_IP2K_ADDR16CJP,
mgl@1371
 39727
+
mgl@1371
 39728
+/* Scenix IP2K - high 3 bits of instruction word address  */
mgl@1371
 39729
+  BFD_RELOC_IP2K_PAGE3,
mgl@1371
 39730
+
mgl@1371
 39731
+/* Scenix IP2K - ext/low/high 8 bits of data address  */
mgl@1371
 39732
+  BFD_RELOC_IP2K_LO8DATA,
mgl@1371
 39733
+  BFD_RELOC_IP2K_HI8DATA,
mgl@1371
 39734
+  BFD_RELOC_IP2K_EX8DATA,
mgl@1371
 39735
+
mgl@1371
 39736
+/* Scenix IP2K - low/high 8 bits of instruction word address  */
mgl@1371
 39737
+  BFD_RELOC_IP2K_LO8INSN,
mgl@1371
 39738
+  BFD_RELOC_IP2K_HI8INSN,
mgl@1371
 39739
+
mgl@1371
 39740
+/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
mgl@1371
 39741
+  BFD_RELOC_IP2K_PC_SKIP,
mgl@1371
 39742
+
mgl@1371
 39743
+/* Scenix IP2K - 16 bit word address in text section.  */
mgl@1371
 39744
+  BFD_RELOC_IP2K_TEXT,
mgl@1371
 39745
+
mgl@1371
 39746
+/* Scenix IP2K - 7-bit sp or dp offset  */
mgl@1371
 39747
+  BFD_RELOC_IP2K_FR_OFFSET,
mgl@1371
 39748
+
mgl@1371
 39749
+/* Scenix VPE4K coprocessor - data/insn-space addressing  */
mgl@1371
 39750
+  BFD_RELOC_VPE4KMATH_DATA,
mgl@1371
 39751
+  BFD_RELOC_VPE4KMATH_INSN,
mgl@1371
 39752
+
mgl@1371
 39753
+/* These two relocations are used by the linker to determine which of
mgl@1371
 39754
+the entries in a C++ virtual function table are actually used.  When
mgl@1371
 39755
+the --gc-sections option is given, the linker will zero out the entries
mgl@1371
 39756
+that are not used, so that the code for those functions need not be
mgl@1371
 39757
+included in the output.
mgl@1371
 39758
+
mgl@1371
 39759
+VTABLE_INHERIT is a zero-space relocation used to describe to the
mgl@1371
 39760
+linker the inheritance tree of a C++ virtual function table.  The
mgl@1371
 39761
+relocation's symbol should be the parent class' vtable, and the
mgl@1371
 39762
+relocation should be located at the child vtable.
mgl@1371
 39763
+
mgl@1371
 39764
+VTABLE_ENTRY is a zero-space relocation that describes the use of a
mgl@1371
 39765
+virtual function table entry.  The reloc's symbol should refer to the
mgl@1371
 39766
+table of the class mentioned in the code.  Off of that base, an offset
mgl@1371
 39767
+describes the entry that is being used.  For Rela hosts, this offset
mgl@1371
 39768
+is stored in the reloc's addend.  For Rel hosts, we are forced to put
mgl@1371
 39769
+this offset in the reloc's section offset.  */
mgl@1371
 39770
+  BFD_RELOC_VTABLE_INHERIT,
mgl@1371
 39771
+  BFD_RELOC_VTABLE_ENTRY,
mgl@1371
 39772
+
mgl@1371
 39773
+/* Intel IA64 Relocations.  */
mgl@1371
 39774
+  BFD_RELOC_IA64_IMM14,
mgl@1371
 39775
+  BFD_RELOC_IA64_IMM22,
mgl@1371
 39776
+  BFD_RELOC_IA64_IMM64,
mgl@1371
 39777
+  BFD_RELOC_IA64_DIR32MSB,
mgl@1371
 39778
+  BFD_RELOC_IA64_DIR32LSB,
mgl@1371
 39779
+  BFD_RELOC_IA64_DIR64MSB,
mgl@1371
 39780
+  BFD_RELOC_IA64_DIR64LSB,
mgl@1371
 39781
+  BFD_RELOC_IA64_GPREL22,
mgl@1371
 39782
+  BFD_RELOC_IA64_GPREL64I,
mgl@1371
 39783
+  BFD_RELOC_IA64_GPREL32MSB,
mgl@1371
 39784
+  BFD_RELOC_IA64_GPREL32LSB,
mgl@1371
 39785
+  BFD_RELOC_IA64_GPREL64MSB,
mgl@1371
 39786
+  BFD_RELOC_IA64_GPREL64LSB,
mgl@1371
 39787
+  BFD_RELOC_IA64_LTOFF22,
mgl@1371
 39788
+  BFD_RELOC_IA64_LTOFF64I,
mgl@1371
 39789
+  BFD_RELOC_IA64_PLTOFF22,
mgl@1371
 39790
+  BFD_RELOC_IA64_PLTOFF64I,
mgl@1371
 39791
+  BFD_RELOC_IA64_PLTOFF64MSB,
mgl@1371
 39792
+  BFD_RELOC_IA64_PLTOFF64LSB,
mgl@1371
 39793
+  BFD_RELOC_IA64_FPTR64I,
mgl@1371
 39794
+  BFD_RELOC_IA64_FPTR32MSB,
mgl@1371
 39795
+  BFD_RELOC_IA64_FPTR32LSB,
mgl@1371
 39796
+  BFD_RELOC_IA64_FPTR64MSB,
mgl@1371
 39797
+  BFD_RELOC_IA64_FPTR64LSB,
mgl@1371
 39798
+  BFD_RELOC_IA64_PCREL21B,
mgl@1371
 39799
+  BFD_RELOC_IA64_PCREL21BI,
mgl@1371
 39800
+  BFD_RELOC_IA64_PCREL21M,
mgl@1371
 39801
+  BFD_RELOC_IA64_PCREL21F,
mgl@1371
 39802
+  BFD_RELOC_IA64_PCREL22,
mgl@1371
 39803
+  BFD_RELOC_IA64_PCREL60B,
mgl@1371
 39804
+  BFD_RELOC_IA64_PCREL64I,
mgl@1371
 39805
+  BFD_RELOC_IA64_PCREL32MSB,
mgl@1371
 39806
+  BFD_RELOC_IA64_PCREL32LSB,
mgl@1371
 39807
+  BFD_RELOC_IA64_PCREL64MSB,
mgl@1371
 39808
+  BFD_RELOC_IA64_PCREL64LSB,
mgl@1371
 39809
+  BFD_RELOC_IA64_LTOFF_FPTR22,
mgl@1371
 39810
+  BFD_RELOC_IA64_LTOFF_FPTR64I,
mgl@1371
 39811
+  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
mgl@1371
 39812
+  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
mgl@1371
 39813
+  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
mgl@1371
 39814
+  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
mgl@1371
 39815
+  BFD_RELOC_IA64_SEGREL32MSB,
mgl@1371
 39816
+  BFD_RELOC_IA64_SEGREL32LSB,
mgl@1371
 39817
+  BFD_RELOC_IA64_SEGREL64MSB,
mgl@1371
 39818
+  BFD_RELOC_IA64_SEGREL64LSB,
mgl@1371
 39819
+  BFD_RELOC_IA64_SECREL32MSB,
mgl@1371
 39820
+  BFD_RELOC_IA64_SECREL32LSB,
mgl@1371
 39821
+  BFD_RELOC_IA64_SECREL64MSB,
mgl@1371
 39822
+  BFD_RELOC_IA64_SECREL64LSB,
mgl@1371
 39823
+  BFD_RELOC_IA64_REL32MSB,
mgl@1371
 39824
+  BFD_RELOC_IA64_REL32LSB,
mgl@1371
 39825
+  BFD_RELOC_IA64_REL64MSB,
mgl@1371
 39826
+  BFD_RELOC_IA64_REL64LSB,
mgl@1371
 39827
+  BFD_RELOC_IA64_LTV32MSB,
mgl@1371
 39828
+  BFD_RELOC_IA64_LTV32LSB,
mgl@1371
 39829
+  BFD_RELOC_IA64_LTV64MSB,
mgl@1371
 39830
+  BFD_RELOC_IA64_LTV64LSB,
mgl@1371
 39831
+  BFD_RELOC_IA64_IPLTMSB,
mgl@1371
 39832
+  BFD_RELOC_IA64_IPLTLSB,
mgl@1371
 39833
+  BFD_RELOC_IA64_COPY,
mgl@1371
 39834
+  BFD_RELOC_IA64_LTOFF22X,
mgl@1371
 39835
+  BFD_RELOC_IA64_LDXMOV,
mgl@1371
 39836
+  BFD_RELOC_IA64_TPREL14,
mgl@1371
 39837
+  BFD_RELOC_IA64_TPREL22,
mgl@1371
 39838
+  BFD_RELOC_IA64_TPREL64I,
mgl@1371
 39839
+  BFD_RELOC_IA64_TPREL64MSB,
mgl@1371
 39840
+  BFD_RELOC_IA64_TPREL64LSB,
mgl@1371
 39841
+  BFD_RELOC_IA64_LTOFF_TPREL22,
mgl@1371
 39842
+  BFD_RELOC_IA64_DTPMOD64MSB,
mgl@1371
 39843
+  BFD_RELOC_IA64_DTPMOD64LSB,
mgl@1371
 39844
+  BFD_RELOC_IA64_LTOFF_DTPMOD22,
mgl@1371
 39845
+  BFD_RELOC_IA64_DTPREL14,
mgl@1371
 39846
+  BFD_RELOC_IA64_DTPREL22,
mgl@1371
 39847
+  BFD_RELOC_IA64_DTPREL64I,
mgl@1371
 39848
+  BFD_RELOC_IA64_DTPREL32MSB,
mgl@1371
 39849
+  BFD_RELOC_IA64_DTPREL32LSB,
mgl@1371
 39850
+  BFD_RELOC_IA64_DTPREL64MSB,
mgl@1371
 39851
+  BFD_RELOC_IA64_DTPREL64LSB,
mgl@1371
 39852
+  BFD_RELOC_IA64_LTOFF_DTPREL22,
mgl@1371
 39853
+
mgl@1371
 39854
+/* Motorola 68HC11 reloc.
mgl@1371
 39855
+This is the 8 bit high part of an absolute address.  */
mgl@1371
 39856
+  BFD_RELOC_M68HC11_HI8,
mgl@1371
 39857
+
mgl@1371
 39858
+/* Motorola 68HC11 reloc.
mgl@1371
 39859
+This is the 8 bit low part of an absolute address.  */
mgl@1371
 39860
+  BFD_RELOC_M68HC11_LO8,
mgl@1371
 39861
+
mgl@1371
 39862
+/* Motorola 68HC11 reloc.
mgl@1371
 39863
+This is the 3 bit of a value.  */
mgl@1371
 39864
+  BFD_RELOC_M68HC11_3B,
mgl@1371
 39865
+
mgl@1371
 39866
+/* Motorola 68HC11 reloc.
mgl@1371
 39867
+This reloc marks the beginning of a jump/call instruction.
mgl@1371
 39868
+It is used for linker relaxation to correctly identify beginning
mgl@1371
 39869
+of instruction and change some branches to use PC-relative
mgl@1371
 39870
+addressing mode.  */
mgl@1371
 39871
+  BFD_RELOC_M68HC11_RL_JUMP,
mgl@1371
 39872
+
mgl@1371
 39873
+/* Motorola 68HC11 reloc.
mgl@1371
 39874
+This reloc marks a group of several instructions that gcc generates
mgl@1371
 39875
+and for which the linker relaxation pass can modify and/or remove
mgl@1371
 39876
+some of them.  */
mgl@1371
 39877
+  BFD_RELOC_M68HC11_RL_GROUP,
mgl@1371
 39878
+
mgl@1371
 39879
+/* Motorola 68HC11 reloc.
mgl@1371
 39880
+This is the 16-bit lower part of an address.  It is used for 'call'
mgl@1371
 39881
+instruction to specify the symbol address without any special
mgl@1371
 39882
+transformation (due to memory bank window).  */
mgl@1371
 39883
+  BFD_RELOC_M68HC11_LO16,
mgl@1371
 39884
+
mgl@1371
 39885
+/* Motorola 68HC11 reloc.
mgl@1371
 39886
+This is a 8-bit reloc that specifies the page number of an address.
mgl@1371
 39887
+It is used by 'call' instruction to specify the page number of
mgl@1371
 39888
+the symbol.  */
mgl@1371
 39889
+  BFD_RELOC_M68HC11_PAGE,
mgl@1371
 39890
+
mgl@1371
 39891
+/* Motorola 68HC11 reloc.
mgl@1371
 39892
+This is a 24-bit reloc that represents the address with a 16-bit
mgl@1371
 39893
+value and a 8-bit page number.  The symbol address is transformed
mgl@1371
 39894
+to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
mgl@1371
 39895
+  BFD_RELOC_M68HC11_24,
mgl@1371
 39896
+
mgl@1371
 39897
+/* Motorola 68HC12 reloc.
mgl@1371
 39898
+This is the 5 bits of a value.  */
mgl@1371
 39899
+  BFD_RELOC_M68HC12_5B,
mgl@1371
 39900
+
mgl@1371
 39901
+/* NS CR16C Relocations.  */
mgl@1371
 39902
+  BFD_RELOC_16C_NUM08,
mgl@1371
 39903
+  BFD_RELOC_16C_NUM08_C,
mgl@1371
 39904
+  BFD_RELOC_16C_NUM16,
mgl@1371
 39905
+  BFD_RELOC_16C_NUM16_C,
mgl@1371
 39906
+  BFD_RELOC_16C_NUM32,
mgl@1371
 39907
+  BFD_RELOC_16C_NUM32_C,
mgl@1371
 39908
+  BFD_RELOC_16C_DISP04,
mgl@1371
 39909
+  BFD_RELOC_16C_DISP04_C,
mgl@1371
 39910
+  BFD_RELOC_16C_DISP08,
mgl@1371
 39911
+  BFD_RELOC_16C_DISP08_C,
mgl@1371
 39912
+  BFD_RELOC_16C_DISP16,
mgl@1371
 39913
+  BFD_RELOC_16C_DISP16_C,
mgl@1371
 39914
+  BFD_RELOC_16C_DISP24,
mgl@1371
 39915
+  BFD_RELOC_16C_DISP24_C,
mgl@1371
 39916
+  BFD_RELOC_16C_DISP24a,
mgl@1371
 39917
+  BFD_RELOC_16C_DISP24a_C,
mgl@1371
 39918
+  BFD_RELOC_16C_REG04,
mgl@1371
 39919
+  BFD_RELOC_16C_REG04_C,
mgl@1371
 39920
+  BFD_RELOC_16C_REG04a,
mgl@1371
 39921
+  BFD_RELOC_16C_REG04a_C,
mgl@1371
 39922
+  BFD_RELOC_16C_REG14,
mgl@1371
 39923
+  BFD_RELOC_16C_REG14_C,
mgl@1371
 39924
+  BFD_RELOC_16C_REG16,
mgl@1371
 39925
+  BFD_RELOC_16C_REG16_C,
mgl@1371
 39926
+  BFD_RELOC_16C_REG20,
mgl@1371
 39927
+  BFD_RELOC_16C_REG20_C,
mgl@1371
 39928
+  BFD_RELOC_16C_ABS20,
mgl@1371
 39929
+  BFD_RELOC_16C_ABS20_C,
mgl@1371
 39930
+  BFD_RELOC_16C_ABS24,
mgl@1371
 39931
+  BFD_RELOC_16C_ABS24_C,
mgl@1371
 39932
+  BFD_RELOC_16C_IMM04,
mgl@1371
 39933
+  BFD_RELOC_16C_IMM04_C,
mgl@1371
 39934
+  BFD_RELOC_16C_IMM16,
mgl@1371
 39935
+  BFD_RELOC_16C_IMM16_C,
mgl@1371
 39936
+  BFD_RELOC_16C_IMM20,
mgl@1371
 39937
+  BFD_RELOC_16C_IMM20_C,
mgl@1371
 39938
+  BFD_RELOC_16C_IMM24,
mgl@1371
 39939
+  BFD_RELOC_16C_IMM24_C,
mgl@1371
 39940
+  BFD_RELOC_16C_IMM32,
mgl@1371
 39941
+  BFD_RELOC_16C_IMM32_C,
mgl@1371
 39942
+
mgl@1371
 39943
+/* NS CR16 Relocations.  */
mgl@1371
 39944
+  BFD_RELOC_CR16_NUM8,
mgl@1371
 39945
+  BFD_RELOC_CR16_NUM16,
mgl@1371
 39946
+  BFD_RELOC_CR16_NUM32,
mgl@1371
 39947
+  BFD_RELOC_CR16_NUM32a,
mgl@1371
 39948
+  BFD_RELOC_CR16_REGREL0,
mgl@1371
 39949
+  BFD_RELOC_CR16_REGREL4,
mgl@1371
 39950
+  BFD_RELOC_CR16_REGREL4a,
mgl@1371
 39951
+  BFD_RELOC_CR16_REGREL14,
mgl@1371
 39952
+  BFD_RELOC_CR16_REGREL14a,
mgl@1371
 39953
+  BFD_RELOC_CR16_REGREL16,
mgl@1371
 39954
+  BFD_RELOC_CR16_REGREL20,
mgl@1371
 39955
+  BFD_RELOC_CR16_REGREL20a,
mgl@1371
 39956
+  BFD_RELOC_CR16_ABS20,
mgl@1371
 39957
+  BFD_RELOC_CR16_ABS24,
mgl@1371
 39958
+  BFD_RELOC_CR16_IMM4,
mgl@1371
 39959
+  BFD_RELOC_CR16_IMM8,
mgl@1371
 39960
+  BFD_RELOC_CR16_IMM16,
mgl@1371
 39961
+  BFD_RELOC_CR16_IMM20,
mgl@1371
 39962
+  BFD_RELOC_CR16_IMM24,
mgl@1371
 39963
+  BFD_RELOC_CR16_IMM32,
mgl@1371
 39964
+  BFD_RELOC_CR16_IMM32a,
mgl@1371
 39965
+  BFD_RELOC_CR16_DISP4,
mgl@1371
 39966
+  BFD_RELOC_CR16_DISP8,
mgl@1371
 39967
+  BFD_RELOC_CR16_DISP16,
mgl@1371
 39968
+  BFD_RELOC_CR16_DISP20,
mgl@1371
 39969
+  BFD_RELOC_CR16_DISP24,
mgl@1371
 39970
+  BFD_RELOC_CR16_DISP24a,
mgl@1371
 39971
+
mgl@1371
 39972
+/* NS CRX Relocations.  */
mgl@1371
 39973
+  BFD_RELOC_CRX_REL4,
mgl@1371
 39974
+  BFD_RELOC_CRX_REL8,
mgl@1371
 39975
+  BFD_RELOC_CRX_REL8_CMP,
mgl@1371
 39976
+  BFD_RELOC_CRX_REL16,
mgl@1371
 39977
+  BFD_RELOC_CRX_REL24,
mgl@1371
 39978
+  BFD_RELOC_CRX_REL32,
mgl@1371
 39979
+  BFD_RELOC_CRX_REGREL12,
mgl@1371
 39980
+  BFD_RELOC_CRX_REGREL22,
mgl@1371
 39981
+  BFD_RELOC_CRX_REGREL28,
mgl@1371
 39982
+  BFD_RELOC_CRX_REGREL32,
mgl@1371
 39983
+  BFD_RELOC_CRX_ABS16,
mgl@1371
 39984
+  BFD_RELOC_CRX_ABS32,
mgl@1371
 39985
+  BFD_RELOC_CRX_NUM8,
mgl@1371
 39986
+  BFD_RELOC_CRX_NUM16,
mgl@1371
 39987
+  BFD_RELOC_CRX_NUM32,
mgl@1371
 39988
+  BFD_RELOC_CRX_IMM16,
mgl@1371
 39989
+  BFD_RELOC_CRX_IMM32,
mgl@1371
 39990
+  BFD_RELOC_CRX_SWITCH8,
mgl@1371
 39991
+  BFD_RELOC_CRX_SWITCH16,
mgl@1371
 39992
+  BFD_RELOC_CRX_SWITCH32,
mgl@1371
 39993
+
mgl@1371
 39994
+/* These relocs are only used within the CRIS assembler.  They are not
mgl@1371
 39995
+(at present) written to any object files.  */
mgl@1371
 39996
+  BFD_RELOC_CRIS_BDISP8,
mgl@1371
 39997
+  BFD_RELOC_CRIS_UNSIGNED_5,
mgl@1371
 39998
+  BFD_RELOC_CRIS_SIGNED_6,
mgl@1371
 39999
+  BFD_RELOC_CRIS_UNSIGNED_6,
mgl@1371
 40000
+  BFD_RELOC_CRIS_SIGNED_8,
mgl@1371
 40001
+  BFD_RELOC_CRIS_UNSIGNED_8,
mgl@1371
 40002
+  BFD_RELOC_CRIS_SIGNED_16,
mgl@1371
 40003
+  BFD_RELOC_CRIS_UNSIGNED_16,
mgl@1371
 40004
+  BFD_RELOC_CRIS_LAPCQ_OFFSET,
mgl@1371
 40005
+  BFD_RELOC_CRIS_UNSIGNED_4,
mgl@1371
 40006
+
mgl@1371
 40007
+/* Relocs used in ELF shared libraries for CRIS.  */
mgl@1371
 40008
+  BFD_RELOC_CRIS_COPY,
mgl@1371
 40009
+  BFD_RELOC_CRIS_GLOB_DAT,
mgl@1371
 40010
+  BFD_RELOC_CRIS_JUMP_SLOT,
mgl@1371
 40011
+  BFD_RELOC_CRIS_RELATIVE,
mgl@1371
 40012
+
mgl@1371
 40013
+/* 32-bit offset to symbol-entry within GOT.  */
mgl@1371
 40014
+  BFD_RELOC_CRIS_32_GOT,
mgl@1371
 40015
+
mgl@1371
 40016
+/* 16-bit offset to symbol-entry within GOT.  */
mgl@1371
 40017
+  BFD_RELOC_CRIS_16_GOT,
mgl@1371
 40018
+
mgl@1371
 40019
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 40020
+  BFD_RELOC_CRIS_32_GOTPLT,
mgl@1371
 40021
+
mgl@1371
 40022
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
mgl@1371
 40023
+  BFD_RELOC_CRIS_16_GOTPLT,
mgl@1371
 40024
+
mgl@1371
 40025
+/* 32-bit offset to symbol, relative to GOT.  */
mgl@1371
 40026
+  BFD_RELOC_CRIS_32_GOTREL,
mgl@1371
 40027
+
mgl@1371
 40028
+/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
mgl@1371
 40029
+  BFD_RELOC_CRIS_32_PLT_GOTREL,
mgl@1371
 40030
+
mgl@1371
 40031
+/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
mgl@1371
 40032
+  BFD_RELOC_CRIS_32_PLT_PCREL,
mgl@1371
 40033
+
mgl@1371
 40034
+/* Intel i860 Relocations.  */
mgl@1371
 40035
+  BFD_RELOC_860_COPY,
mgl@1371
 40036
+  BFD_RELOC_860_GLOB_DAT,
mgl@1371
 40037
+  BFD_RELOC_860_JUMP_SLOT,
mgl@1371
 40038
+  BFD_RELOC_860_RELATIVE,
mgl@1371
 40039
+  BFD_RELOC_860_PC26,
mgl@1371
 40040
+  BFD_RELOC_860_PLT26,
mgl@1371
 40041
+  BFD_RELOC_860_PC16,
mgl@1371
 40042
+  BFD_RELOC_860_LOW0,
mgl@1371
 40043
+  BFD_RELOC_860_SPLIT0,
mgl@1371
 40044
+  BFD_RELOC_860_LOW1,
mgl@1371
 40045
+  BFD_RELOC_860_SPLIT1,
mgl@1371
 40046
+  BFD_RELOC_860_LOW2,
mgl@1371
 40047
+  BFD_RELOC_860_SPLIT2,
mgl@1371
 40048
+  BFD_RELOC_860_LOW3,
mgl@1371
 40049
+  BFD_RELOC_860_LOGOT0,
mgl@1371
 40050
+  BFD_RELOC_860_SPGOT0,
mgl@1371
 40051
+  BFD_RELOC_860_LOGOT1,
mgl@1371
 40052
+  BFD_RELOC_860_SPGOT1,
mgl@1371
 40053
+  BFD_RELOC_860_LOGOTOFF0,
mgl@1371
 40054
+  BFD_RELOC_860_SPGOTOFF0,
mgl@1371
 40055
+  BFD_RELOC_860_LOGOTOFF1,
mgl@1371
 40056
+  BFD_RELOC_860_SPGOTOFF1,
mgl@1371
 40057
+  BFD_RELOC_860_LOGOTOFF2,
mgl@1371
 40058
+  BFD_RELOC_860_LOGOTOFF3,
mgl@1371
 40059
+  BFD_RELOC_860_LOPC,
mgl@1371
 40060
+  BFD_RELOC_860_HIGHADJ,
mgl@1371
 40061
+  BFD_RELOC_860_HAGOT,
mgl@1371
 40062
+  BFD_RELOC_860_HAGOTOFF,
mgl@1371
 40063
+  BFD_RELOC_860_HAPC,
mgl@1371
 40064
+  BFD_RELOC_860_HIGH,
mgl@1371
 40065
+  BFD_RELOC_860_HIGOT,
mgl@1371
 40066
+  BFD_RELOC_860_HIGOTOFF,
mgl@1371
 40067
+
mgl@1371
 40068
+/* OpenRISC Relocations.  */
mgl@1371
 40069
+  BFD_RELOC_OPENRISC_ABS_26,
mgl@1371
 40070
+  BFD_RELOC_OPENRISC_REL_26,
mgl@1371
 40071
+
mgl@1371
 40072
+/* H8 elf Relocations.  */
mgl@1371
 40073
+  BFD_RELOC_H8_DIR16A8,
mgl@1371
 40074
+  BFD_RELOC_H8_DIR16R8,
mgl@1371
 40075
+  BFD_RELOC_H8_DIR24A8,
mgl@1371
 40076
+  BFD_RELOC_H8_DIR24R8,
mgl@1371
 40077
+  BFD_RELOC_H8_DIR32A16,
mgl@1371
 40078
+
mgl@1371
 40079
+/* Sony Xstormy16 Relocations.  */
mgl@1371
 40080
+  BFD_RELOC_XSTORMY16_REL_12,
mgl@1371
 40081
+  BFD_RELOC_XSTORMY16_12,
mgl@1371
 40082
+  BFD_RELOC_XSTORMY16_24,
mgl@1371
 40083
+  BFD_RELOC_XSTORMY16_FPTR16,
mgl@1371
 40084
+
mgl@1371
 40085
+/* Self-describing complex relocations.  */
mgl@1371
 40086
+  BFD_RELOC_RELC,
mgl@1371
 40087
+
mgl@1371
 40088
+
mgl@1371
 40089
+/* Infineon Relocations.  */
mgl@1371
 40090
+  BFD_RELOC_XC16X_PAG,
mgl@1371
 40091
+  BFD_RELOC_XC16X_POF,
mgl@1371
 40092
+  BFD_RELOC_XC16X_SEG,
mgl@1371
 40093
+  BFD_RELOC_XC16X_SOF,
mgl@1371
 40094
+
mgl@1371
 40095
+/* Relocations used by VAX ELF.  */
mgl@1371
 40096
+  BFD_RELOC_VAX_GLOB_DAT,
mgl@1371
 40097
+  BFD_RELOC_VAX_JMP_SLOT,
mgl@1371
 40098
+  BFD_RELOC_VAX_RELATIVE,
mgl@1371
 40099
+
mgl@1371
 40100
+/* Morpho MT - 16 bit immediate relocation.  */
mgl@1371
 40101
+  BFD_RELOC_MT_PC16,
mgl@1371
 40102
+
mgl@1371
 40103
+/* Morpho MT - Hi 16 bits of an address.  */
mgl@1371
 40104
+  BFD_RELOC_MT_HI16,
mgl@1371
 40105
+
mgl@1371
 40106
+/* Morpho MT - Low 16 bits of an address.  */
mgl@1371
 40107
+  BFD_RELOC_MT_LO16,
mgl@1371
 40108
+
mgl@1371
 40109
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
mgl@1371
 40110
+  BFD_RELOC_MT_GNU_VTINHERIT,
mgl@1371
 40111
+
mgl@1371
 40112
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
mgl@1371
 40113
+  BFD_RELOC_MT_GNU_VTENTRY,
mgl@1371
 40114
+
mgl@1371
 40115
+/* Morpho MT - 8 bit immediate relocation.  */
mgl@1371
 40116
+  BFD_RELOC_MT_PCINSN8,
mgl@1371
 40117
+
mgl@1371
 40118
+/* msp430 specific relocation codes  */
mgl@1371
 40119
+  BFD_RELOC_MSP430_10_PCREL,
mgl@1371
 40120
+  BFD_RELOC_MSP430_16_PCREL,
mgl@1371
 40121
+  BFD_RELOC_MSP430_16,
mgl@1371
 40122
+  BFD_RELOC_MSP430_16_PCREL_BYTE,
mgl@1371
 40123
+  BFD_RELOC_MSP430_16_BYTE,
mgl@1371
 40124
+  BFD_RELOC_MSP430_2X_PCREL,
mgl@1371
 40125
+  BFD_RELOC_MSP430_RL_PCREL,
mgl@1371
 40126
+
mgl@1371
 40127
+/* IQ2000 Relocations.  */
mgl@1371
 40128
+  BFD_RELOC_IQ2000_OFFSET_16,
mgl@1371
 40129
+  BFD_RELOC_IQ2000_OFFSET_21,
mgl@1371
 40130
+  BFD_RELOC_IQ2000_UHI16,
mgl@1371
 40131
+
mgl@1371
 40132
+/* Special Xtensa relocation used only by PLT entries in ELF shared
mgl@1371
 40133
+objects to indicate that the runtime linker should set the value
mgl@1371
 40134
+to one of its own internal functions or data structures.  */
mgl@1371
 40135
+  BFD_RELOC_XTENSA_RTLD,
mgl@1371
 40136
+
mgl@1371
 40137
+/* Xtensa relocations for ELF shared objects.  */
mgl@1371
 40138
+  BFD_RELOC_XTENSA_GLOB_DAT,
mgl@1371
 40139
+  BFD_RELOC_XTENSA_JMP_SLOT,
mgl@1371
 40140
+  BFD_RELOC_XTENSA_RELATIVE,
mgl@1371
 40141
+
mgl@1371
 40142
+/* Xtensa relocation used in ELF object files for symbols that may require
mgl@1371
 40143
+PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
mgl@1371
 40144
+  BFD_RELOC_XTENSA_PLT,
mgl@1371
 40145
+
mgl@1371
 40146
+/* Xtensa relocations to mark the difference of two local symbols.
mgl@1371
 40147
+These are only needed to support linker relaxation and can be ignored
mgl@1371
 40148
+when not relaxing.  The field is set to the value of the difference
mgl@1371
 40149
+assuming no relaxation.  The relocation encodes the position of the
mgl@1371
 40150
+first symbol so the linker can determine whether to adjust the field
mgl@1371
 40151
+value.  */
mgl@1371
 40152
+  BFD_RELOC_XTENSA_DIFF8,
mgl@1371
 40153
+  BFD_RELOC_XTENSA_DIFF16,
mgl@1371
 40154
+  BFD_RELOC_XTENSA_DIFF32,
mgl@1371
 40155
+
mgl@1371
 40156
+/* Generic Xtensa relocations for instruction operands.  Only the slot
mgl@1371
 40157
+number is encoded in the relocation.  The relocation applies to the
mgl@1371
 40158
+last PC-relative immediate operand, or if there are no PC-relative
mgl@1371
 40159
+immediates, to the last immediate operand.  */
mgl@1371
 40160
+  BFD_RELOC_XTENSA_SLOT0_OP,
mgl@1371
 40161
+  BFD_RELOC_XTENSA_SLOT1_OP,
mgl@1371
 40162
+  BFD_RELOC_XTENSA_SLOT2_OP,
mgl@1371
 40163
+  BFD_RELOC_XTENSA_SLOT3_OP,
mgl@1371
 40164
+  BFD_RELOC_XTENSA_SLOT4_OP,
mgl@1371
 40165
+  BFD_RELOC_XTENSA_SLOT5_OP,
mgl@1371
 40166
+  BFD_RELOC_XTENSA_SLOT6_OP,
mgl@1371
 40167
+  BFD_RELOC_XTENSA_SLOT7_OP,
mgl@1371
 40168
+  BFD_RELOC_XTENSA_SLOT8_OP,
mgl@1371
 40169
+  BFD_RELOC_XTENSA_SLOT9_OP,
mgl@1371
 40170
+  BFD_RELOC_XTENSA_SLOT10_OP,
mgl@1371
 40171
+  BFD_RELOC_XTENSA_SLOT11_OP,
mgl@1371
 40172
+  BFD_RELOC_XTENSA_SLOT12_OP,
mgl@1371
 40173
+  BFD_RELOC_XTENSA_SLOT13_OP,
mgl@1371
 40174
+  BFD_RELOC_XTENSA_SLOT14_OP,
mgl@1371
 40175
+
mgl@1371
 40176
+/* Alternate Xtensa relocations.  Only the slot is encoded in the
mgl@1371
 40177
+relocation.  The meaning of these relocations is opcode-specific.  */
mgl@1371
 40178
+  BFD_RELOC_XTENSA_SLOT0_ALT,
mgl@1371
 40179
+  BFD_RELOC_XTENSA_SLOT1_ALT,
mgl@1371
 40180
+  BFD_RELOC_XTENSA_SLOT2_ALT,
mgl@1371
 40181
+  BFD_RELOC_XTENSA_SLOT3_ALT,
mgl@1371
 40182
+  BFD_RELOC_XTENSA_SLOT4_ALT,
mgl@1371
 40183
+  BFD_RELOC_XTENSA_SLOT5_ALT,
mgl@1371
 40184
+  BFD_RELOC_XTENSA_SLOT6_ALT,
mgl@1371
 40185
+  BFD_RELOC_XTENSA_SLOT7_ALT,
mgl@1371
 40186
+  BFD_RELOC_XTENSA_SLOT8_ALT,
mgl@1371
 40187
+  BFD_RELOC_XTENSA_SLOT9_ALT,
mgl@1371
 40188
+  BFD_RELOC_XTENSA_SLOT10_ALT,
mgl@1371
 40189
+  BFD_RELOC_XTENSA_SLOT11_ALT,
mgl@1371
 40190
+  BFD_RELOC_XTENSA_SLOT12_ALT,
mgl@1371
 40191
+  BFD_RELOC_XTENSA_SLOT13_ALT,
mgl@1371
 40192
+  BFD_RELOC_XTENSA_SLOT14_ALT,
mgl@1371
 40193
+
mgl@1371
 40194
+/* Xtensa relocations for backward compatibility.  These have all been
mgl@1371
 40195
+replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
mgl@1371
 40196
+  BFD_RELOC_XTENSA_OP0,
mgl@1371
 40197
+  BFD_RELOC_XTENSA_OP1,
mgl@1371
 40198
+  BFD_RELOC_XTENSA_OP2,
mgl@1371
 40199
+
mgl@1371
 40200
+/* Xtensa relocation to mark that the assembler expanded the
mgl@1371
 40201
+instructions from an original target.  The expansion size is
mgl@1371
 40202
+encoded in the reloc size.  */
mgl@1371
 40203
+  BFD_RELOC_XTENSA_ASM_EXPAND,
mgl@1371
 40204
+
mgl@1371
 40205
+/* Xtensa relocation to mark that the linker should simplify
mgl@1371
 40206
+assembler-expanded instructions.  This is commonly used
mgl@1371
 40207
+internally by the linker after analysis of a
mgl@1371
 40208
+BFD_RELOC_XTENSA_ASM_EXPAND.  */
mgl@1371
 40209
+  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
mgl@1371
 40210
+
mgl@1371
 40211
+/* 8 bit signed offset in (ix+d) or (iy+d).  */
mgl@1371
 40212
+  BFD_RELOC_Z80_DISP8,
mgl@1371
 40213
+
mgl@1371
 40214
+/* DJNZ offset.  */
mgl@1371
 40215
+  BFD_RELOC_Z8K_DISP7,
mgl@1371
 40216
+
mgl@1371
 40217
+/* CALR offset.  */
mgl@1371
 40218
+  BFD_RELOC_Z8K_CALLR,
mgl@1371
 40219
+
mgl@1371
 40220
+/* 4 bit value.  */
mgl@1371
 40221
+  BFD_RELOC_Z8K_IMM4L,
mgl@1371
 40222
+  BFD_RELOC_UNUSED };
mgl@1371
 40223
+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
mgl@1371
 40224
+reloc_howto_type *bfd_reloc_type_lookup
mgl@1371
 40225
+   (bfd *abfd, bfd_reloc_code_real_type code);
mgl@1371
 40226
+reloc_howto_type *bfd_reloc_name_lookup
mgl@1371
 40227
+   (bfd *abfd, const char *reloc_name);
mgl@1371
 40228
+
mgl@1371
 40229
+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
mgl@1371
 40230
+
mgl@1371
 40231
+/* Extracted from syms.c.  */
mgl@1371
 40232
+
mgl@1371
 40233
+typedef struct bfd_symbol
mgl@1371
 40234
+{
mgl@1371
 40235
+  /* A pointer to the BFD which owns the symbol. This information
mgl@1371
 40236
+     is necessary so that a back end can work out what additional
mgl@1371
 40237
+     information (invisible to the application writer) is carried
mgl@1371
 40238
+     with the symbol.
mgl@1371
 40239
+
mgl@1371
 40240
+     This field is *almost* redundant, since you can use section->owner
mgl@1371
 40241
+     instead, except that some symbols point to the global sections
mgl@1371
 40242
+     bfd_{abs,com,und}_section.  This could be fixed by making
mgl@1371
 40243
+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
mgl@1371
 40244
+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
mgl@1371
 40245
+
mgl@1371
 40246
+  /* The text of the symbol. The name is left alone, and not copied; the
mgl@1371
 40247
+     application may not alter it.  */
mgl@1371
 40248
+  const char *name;
mgl@1371
 40249
+
mgl@1371
 40250
+  /* The value of the symbol.  This really should be a union of a
mgl@1371
 40251
+     numeric value with a pointer, since some flags indicate that
mgl@1371
 40252
+     a pointer to another symbol is stored here.  */
mgl@1371
 40253
+  symvalue value;
mgl@1371
 40254
+
mgl@1371
 40255
+  /* Attributes of a symbol.  */
mgl@1371
 40256
+#define BSF_NO_FLAGS    0x00
mgl@1371
 40257
+
mgl@1371
 40258
+  /* The symbol has local scope; <<static>> in <<C>>. The value
mgl@1371
 40259
+     is the offset into the section of the data.  */
mgl@1371
 40260
+#define BSF_LOCAL      0x01
mgl@1371
 40261
+
mgl@1371
 40262
+  /* The symbol has global scope; initialized data in <<C>>. The
mgl@1371
 40263
+     value is the offset into the section of the data.  */
mgl@1371
 40264
+#define BSF_GLOBAL     0x02
mgl@1371
 40265
+
mgl@1371
 40266
+  /* The symbol has global scope and is exported. The value is
mgl@1371
 40267
+     the offset into the section of the data.  */
mgl@1371
 40268
+#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
mgl@1371
 40269
+
mgl@1371
 40270
+  /* A normal C symbol would be one of:
mgl@1371
 40271
+     <<BSF_LOCAL>>, <<BSF_FORT_COMM>>,  <<BSF_UNDEFINED>> or
mgl@1371
 40272
+     <<BSF_GLOBAL>>.  */
mgl@1371
 40273
+
mgl@1371
 40274
+  /* The symbol is a debugging record. The value has an arbitrary
mgl@1371
 40275
+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
mgl@1371
 40276
+#define BSF_DEBUGGING  0x08
mgl@1371
 40277
+
mgl@1371
 40278
+  /* The symbol denotes a function entry point.  Used in ELF,
mgl@1371
 40279
+     perhaps others someday.  */
mgl@1371
 40280
+#define BSF_FUNCTION    0x10
mgl@1371
 40281
+
mgl@1371
 40282
+  /* Used by the linker.  */
mgl@1371
 40283
+#define BSF_KEEP        0x20
mgl@1371
 40284
+#define BSF_KEEP_G      0x40
mgl@1371
 40285
+
mgl@1371
 40286
+  /* A weak global symbol, overridable without warnings by
mgl@1371
 40287
+     a regular global symbol of the same name.  */
mgl@1371
 40288
+#define BSF_WEAK        0x80
mgl@1371
 40289
+
mgl@1371
 40290
+  /* This symbol was created to point to a section, e.g. ELF's
mgl@1371
 40291
+     STT_SECTION symbols.  */
mgl@1371
 40292
+#define BSF_SECTION_SYM 0x100
mgl@1371
 40293
+
mgl@1371
 40294
+  /* The symbol used to be a common symbol, but now it is
mgl@1371
 40295
+     allocated.  */
mgl@1371
 40296
+#define BSF_OLD_COMMON  0x200
mgl@1371
 40297
+
mgl@1371
 40298
+  /* The default value for common data.  */
mgl@1371
 40299
+#define BFD_FORT_COMM_DEFAULT_VALUE 0
mgl@1371
 40300
+
mgl@1371
 40301
+  /* In some files the type of a symbol sometimes alters its
mgl@1371
 40302
+     location in an output file - ie in coff a <<ISFCN>> symbol
mgl@1371
 40303
+     which is also <<C_EXT>> symbol appears where it was
mgl@1371
 40304
+     declared and not at the end of a section.  This bit is set
mgl@1371
 40305
+     by the target BFD part to convey this information.  */
mgl@1371
 40306
+#define BSF_NOT_AT_END    0x400
mgl@1371
 40307
+
mgl@1371
 40308
+  /* Signal that the symbol is the label of constructor section.  */
mgl@1371
 40309
+#define BSF_CONSTRUCTOR   0x800
mgl@1371
 40310
+
mgl@1371
 40311
+  /* Signal that the symbol is a warning symbol.  The name is a
mgl@1371
 40312
+     warning.  The name of the next symbol is the one to warn about;
mgl@1371
 40313
+     if a reference is made to a symbol with the same name as the next
mgl@1371
 40314
+     symbol, a warning is issued by the linker.  */
mgl@1371
 40315
+#define BSF_WARNING       0x1000
mgl@1371
 40316
+
mgl@1371
 40317
+  /* Signal that the symbol is indirect.  This symbol is an indirect
mgl@1371
 40318
+     pointer to the symbol with the same name as the next symbol.  */
mgl@1371
 40319
+#define BSF_INDIRECT      0x2000
mgl@1371
 40320
+
mgl@1371
 40321
+  /* BSF_FILE marks symbols that contain a file name.  This is used
mgl@1371
 40322
+     for ELF STT_FILE symbols.  */
mgl@1371
 40323
+#define BSF_FILE          0x4000
mgl@1371
 40324
+
mgl@1371
 40325
+  /* Symbol is from dynamic linking information.  */
mgl@1371
 40326
+#define BSF_DYNAMIC       0x8000
mgl@1371
 40327
+
mgl@1371
 40328
+  /* The symbol denotes a data object.  Used in ELF, and perhaps
mgl@1371
 40329
+     others someday.  */
mgl@1371
 40330
+#define BSF_OBJECT        0x10000
mgl@1371
 40331
+
mgl@1371
 40332
+  /* This symbol is a debugging symbol.  The value is the offset
mgl@1371
 40333
+     into the section of the data.  BSF_DEBUGGING should be set
mgl@1371
 40334
+     as well.  */
mgl@1371
 40335
+#define BSF_DEBUGGING_RELOC 0x20000
mgl@1371
 40336
+
mgl@1371
 40337
+  /* This symbol is thread local.  Used in ELF.  */
mgl@1371
 40338
+#define BSF_THREAD_LOCAL  0x40000
mgl@1371
 40339
+
mgl@1371
 40340
+  /* This symbol represents a complex relocation expression,
mgl@1371
 40341
+     with the expression tree serialized in the symbol name.  */
mgl@1371
 40342
+#define BSF_RELC 0x80000
mgl@1371
 40343
+
mgl@1371
 40344
+  /* This symbol represents a signed complex relocation expression,
mgl@1371
 40345
+     with the expression tree serialized in the symbol name.  */
mgl@1371
 40346
+#define BSF_SRELC 0x100000
mgl@1371
 40347
+
mgl@1371
 40348
+  flagword flags;
mgl@1371
 40349
+
mgl@1371
 40350
+  /* A pointer to the section to which this symbol is
mgl@1371
 40351
+     relative.  This will always be non NULL, there are special
mgl@1371
 40352
+     sections for undefined and absolute symbols.  */
mgl@1371
 40353
+  struct bfd_section *section;
mgl@1371
 40354
+
mgl@1371
 40355
+  /* Back end special data.  */
mgl@1371
 40356
+  union
mgl@1371
 40357
+    {
mgl@1371
 40358
+      void *p;
mgl@1371
 40359
+      bfd_vma i;
mgl@1371
 40360
+    }
mgl@1371
 40361
+  udata;
mgl@1371
 40362
+}
mgl@1371
 40363
+asymbol;
mgl@1371
 40364
+
mgl@1371
 40365
+#define bfd_get_symtab_upper_bound(abfd) \
mgl@1371
 40366
+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
mgl@1371
 40367
+
mgl@1371
 40368
+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
mgl@1371
 40369
+
mgl@1371
 40370
+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
mgl@1371
 40371
+
mgl@1371
 40372
+#define bfd_is_local_label_name(abfd, name) \
mgl@1371
 40373
+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
mgl@1371
 40374
+
mgl@1371
 40375
+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
mgl@1371
 40376
+
mgl@1371
 40377
+#define bfd_is_target_special_symbol(abfd, sym) \
mgl@1371
 40378
+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
mgl@1371
 40379
+
mgl@1371
 40380
+#define bfd_canonicalize_symtab(abfd, location) \
mgl@1371
 40381
+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
mgl@1371
 40382
+
mgl@1371
 40383
+bfd_boolean bfd_set_symtab
mgl@1371
 40384
+   (bfd *abfd, asymbol **location, unsigned int count);
mgl@1371
 40385
+
mgl@1371
 40386
+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
mgl@1371
 40387
+
mgl@1371
 40388
+#define bfd_make_empty_symbol(abfd) \
mgl@1371
 40389
+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
mgl@1371
 40390
+
mgl@1371
 40391
+asymbol *_bfd_generic_make_empty_symbol (bfd *);
mgl@1371
 40392
+
mgl@1371
 40393
+#define bfd_make_debug_symbol(abfd,ptr,size) \
mgl@1371
 40394
+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
mgl@1371
 40395
+
mgl@1371
 40396
+int bfd_decode_symclass (asymbol *symbol);
mgl@1371
 40397
+
mgl@1371
 40398
+bfd_boolean bfd_is_undefined_symclass (int symclass);
mgl@1371
 40399
+
mgl@1371
 40400
+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
mgl@1371
 40401
+
mgl@1371
 40402
+bfd_boolean bfd_copy_private_symbol_data
mgl@1371
 40403
+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
mgl@1371
 40404
+
mgl@1371
 40405
+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
mgl@1371
 40406
+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
mgl@1371
 40407
+            (ibfd, isymbol, obfd, osymbol))
mgl@1371
 40408
+
mgl@1371
 40409
+/* Extracted from bfd.c.  */
mgl@1371
 40410
+struct bfd
mgl@1371
 40411
+{
mgl@1371
 40412
+  /* A unique identifier of the BFD  */
mgl@1371
 40413
+  unsigned int id;
mgl@1371
 40414
+
mgl@1371
 40415
+  /* The filename the application opened the BFD with.  */
mgl@1371
 40416
+  const char *filename;
mgl@1371
 40417
+
mgl@1371
 40418
+  /* A pointer to the target jump table.  */
mgl@1371
 40419
+  const struct bfd_target *xvec;
mgl@1371
 40420
+
mgl@1371
 40421
+  /* The IOSTREAM, and corresponding IO vector that provide access
mgl@1371
 40422
+     to the file backing the BFD.  */
mgl@1371
 40423
+  void *iostream;
mgl@1371
 40424
+  const struct bfd_iovec *iovec;
mgl@1371
 40425
+
mgl@1371
 40426
+  /* Is the file descriptor being cached?  That is, can it be closed as
mgl@1371
 40427
+     needed, and re-opened when accessed later?  */
mgl@1371
 40428
+  bfd_boolean cacheable;
mgl@1371
 40429
+
mgl@1371
 40430
+  /* Marks whether there was a default target specified when the
mgl@1371
 40431
+     BFD was opened. This is used to select which matching algorithm
mgl@1371
 40432
+     to use to choose the back end.  */
mgl@1371
 40433
+  bfd_boolean target_defaulted;
mgl@1371
 40434
+
mgl@1371
 40435
+  /* The caching routines use these to maintain a
mgl@1371
 40436
+     least-recently-used list of BFDs.  */
mgl@1371
 40437
+  struct bfd *lru_prev, *lru_next;
mgl@1371
 40438
+
mgl@1371
 40439
+  /* When a file is closed by the caching routines, BFD retains
mgl@1371
 40440
+     state information on the file here...  */
mgl@1371
 40441
+  ufile_ptr where;
mgl@1371
 40442
+
mgl@1371
 40443
+  /* ... and here: (``once'' means at least once).  */
mgl@1371
 40444
+  bfd_boolean opened_once;
mgl@1371
 40445
+
mgl@1371
 40446
+  /* Set if we have a locally maintained mtime value, rather than
mgl@1371
 40447
+     getting it from the file each time.  */
mgl@1371
 40448
+  bfd_boolean mtime_set;
mgl@1371
 40449
+
mgl@1371
 40450
+  /* File modified time, if mtime_set is TRUE.  */
mgl@1371
 40451
+  long mtime;
mgl@1371
 40452
+
mgl@1371
 40453
+  /* Reserved for an unimplemented file locking extension.  */
mgl@1371
 40454
+  int ifd;
mgl@1371
 40455
+
mgl@1371
 40456
+  /* The format which belongs to the BFD. (object, core, etc.)  */
mgl@1371
 40457
+  bfd_format format;
mgl@1371
 40458
+
mgl@1371
 40459
+  /* The direction with which the BFD was opened.  */
mgl@1371
 40460
+  enum bfd_direction
mgl@1371
 40461
+    {
mgl@1371
 40462
+      no_direction = 0,
mgl@1371
 40463
+      read_direction = 1,
mgl@1371
 40464
+      write_direction = 2,
mgl@1371
 40465
+      both_direction = 3
mgl@1371
 40466
+    }
mgl@1371
 40467
+  direction;
mgl@1371
 40468
+
mgl@1371
 40469
+  /* Format_specific flags.  */
mgl@1371
 40470
+  flagword flags;
mgl@1371
 40471
+
mgl@1371
 40472
+  /* Currently my_archive is tested before adding origin to
mgl@1371
 40473
+     anything. I believe that this can become always an add of
mgl@1371
 40474
+     origin, with origin set to 0 for non archive files.  */
mgl@1371
 40475
+  ufile_ptr origin;
mgl@1371
 40476
+
mgl@1371
 40477
+  /* Remember when output has begun, to stop strange things
mgl@1371
 40478
+     from happening.  */
mgl@1371
 40479
+  bfd_boolean output_has_begun;
mgl@1371
 40480
+
mgl@1371
 40481
+  /* A hash table for section names.  */
mgl@1371
 40482
+  struct bfd_hash_table section_htab;
mgl@1371
 40483
+
mgl@1371
 40484
+  /* Pointer to linked list of sections.  */
mgl@1371
 40485
+  struct bfd_section *sections;
mgl@1371
 40486
+
mgl@1371
 40487
+  /* The last section on the section list.  */
mgl@1371
 40488
+  struct bfd_section *section_last;
mgl@1371
 40489
+
mgl@1371
 40490
+  /* The number of sections.  */
mgl@1371
 40491
+  unsigned int section_count;
mgl@1371
 40492
+
mgl@1371
 40493
+  /* Stuff only useful for object files:
mgl@1371
 40494
+     The start address.  */
mgl@1371
 40495
+  bfd_vma start_address;
mgl@1371
 40496
+
mgl@1371
 40497
+  /* Used for input and output.  */
mgl@1371
 40498
+  unsigned int symcount;
mgl@1371
 40499
+
mgl@1371
 40500
+  /* Symbol table for output BFD (with symcount entries).  */
mgl@1371
 40501
+  struct bfd_symbol  **outsymbols;
mgl@1371
 40502
+
mgl@1371
 40503
+  /* Used for slurped dynamic symbol tables.  */
mgl@1371
 40504
+  unsigned int dynsymcount;
mgl@1371
 40505
+
mgl@1371
 40506
+  /* Pointer to structure which contains architecture information.  */
mgl@1371
 40507
+  const struct bfd_arch_info *arch_info;
mgl@1371
 40508
+
mgl@1371
 40509
+  /* Flag set if symbols from this BFD should not be exported.  */
mgl@1371
 40510
+  bfd_boolean no_export;
mgl@1371
 40511
+
mgl@1371
 40512
+  /* Stuff only useful for archives.  */
mgl@1371
 40513
+  void *arelt_data;
mgl@1371
 40514
+  struct bfd *my_archive;      /* The containing archive BFD.  */
mgl@1371
 40515
+  struct bfd *archive_next;    /* The next BFD in the archive.  */
mgl@1371
 40516
+  struct bfd *archive_head;    /* The first BFD in the archive.  */
mgl@1371
 40517
+  bfd_boolean has_armap;
mgl@1371
 40518
+
mgl@1371
 40519
+  /* A chain of BFD structures involved in a link.  */
mgl@1371
 40520
+  struct bfd *link_next;
mgl@1371
 40521
+
mgl@1371
 40522
+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
mgl@1371
 40523
+     be used only for archive elements.  */
mgl@1371
 40524
+  int archive_pass;
mgl@1371
 40525
+
mgl@1371
 40526
+  /* Used by the back end to hold private data.  */
mgl@1371
 40527
+  union
mgl@1371
 40528
+    {
mgl@1371
 40529
+      struct aout_data_struct *aout_data;
mgl@1371
 40530
+      struct artdata *aout_ar_data;
mgl@1371
 40531
+      struct _oasys_data *oasys_obj_data;
mgl@1371
 40532
+      struct _oasys_ar_data *oasys_ar_data;
mgl@1371
 40533
+      struct coff_tdata *coff_obj_data;
mgl@1371
 40534
+      struct pe_tdata *pe_obj_data;
mgl@1371
 40535
+      struct xcoff_tdata *xcoff_obj_data;
mgl@1371
 40536
+      struct ecoff_tdata *ecoff_obj_data;
mgl@1371
 40537
+      struct ieee_data_struct *ieee_data;
mgl@1371
 40538
+      struct ieee_ar_data_struct *ieee_ar_data;
mgl@1371
 40539
+      struct srec_data_struct *srec_data;
mgl@1371
 40540
+      struct ihex_data_struct *ihex_data;
mgl@1371
 40541
+      struct tekhex_data_struct *tekhex_data;
mgl@1371
 40542
+      struct elf_obj_tdata *elf_obj_data;
mgl@1371
 40543
+      struct nlm_obj_tdata *nlm_obj_data;
mgl@1371
 40544
+      struct bout_data_struct *bout_data;
mgl@1371
 40545
+      struct mmo_data_struct *mmo_data;
mgl@1371
 40546
+      struct sun_core_struct *sun_core_data;
mgl@1371
 40547
+      struct sco5_core_struct *sco5_core_data;
mgl@1371
 40548
+      struct trad_core_struct *trad_core_data;
mgl@1371
 40549
+      struct som_data_struct *som_data;
mgl@1371
 40550
+      struct hpux_core_struct *hpux_core_data;
mgl@1371
 40551
+      struct hppabsd_core_struct *hppabsd_core_data;
mgl@1371
 40552
+      struct sgi_core_struct *sgi_core_data;
mgl@1371
 40553
+      struct lynx_core_struct *lynx_core_data;
mgl@1371
 40554
+      struct osf_core_struct *osf_core_data;
mgl@1371
 40555
+      struct cisco_core_struct *cisco_core_data;
mgl@1371
 40556
+      struct versados_data_struct *versados_data;
mgl@1371
 40557
+      struct netbsd_core_struct *netbsd_core_data;
mgl@1371
 40558
+      struct mach_o_data_struct *mach_o_data;
mgl@1371
 40559
+      struct mach_o_fat_data_struct *mach_o_fat_data;
mgl@1371
 40560
+      struct bfd_pef_data_struct *pef_data;
mgl@1371
 40561
+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
mgl@1371
 40562
+      struct bfd_sym_data_struct *sym_data;
mgl@1371
 40563
+      void *any;
mgl@1371
 40564
+    }
mgl@1371
 40565
+  tdata;
mgl@1371
 40566
+
mgl@1371
 40567
+  /* Used by the application to hold private data.  */
mgl@1371
 40568
+  void *usrdata;
mgl@1371
 40569
+
mgl@1371
 40570
+  /* Where all the allocated stuff under this BFD goes.  This is a
mgl@1371
 40571
+     struct objalloc *, but we use void * to avoid requiring the inclusion
mgl@1371
 40572
+     of objalloc.h.  */
mgl@1371
 40573
+  void *memory;
mgl@1371
 40574
+};
mgl@1371
 40575
+
mgl@1371
 40576
+typedef enum bfd_error
mgl@1371
 40577
+{
mgl@1371
 40578
+  bfd_error_no_error = 0,
mgl@1371
 40579
+  bfd_error_system_call,
mgl@1371
 40580
+  bfd_error_invalid_target,
mgl@1371
 40581
+  bfd_error_wrong_format,
mgl@1371
 40582
+  bfd_error_wrong_object_format,
mgl@1371
 40583
+  bfd_error_invalid_operation,
mgl@1371
 40584
+  bfd_error_no_memory,
mgl@1371
 40585
+  bfd_error_no_symbols,
mgl@1371
 40586
+  bfd_error_no_armap,
mgl@1371
 40587
+  bfd_error_no_more_archived_files,
mgl@1371
 40588
+  bfd_error_malformed_archive,
mgl@1371
 40589
+  bfd_error_file_not_recognized,
mgl@1371
 40590
+  bfd_error_file_ambiguously_recognized,
mgl@1371
 40591
+  bfd_error_no_contents,
mgl@1371
 40592
+  bfd_error_nonrepresentable_section,
mgl@1371
 40593
+  bfd_error_no_debug_section,
mgl@1371
 40594
+  bfd_error_bad_value,
mgl@1371
 40595
+  bfd_error_file_truncated,
mgl@1371
 40596
+  bfd_error_file_too_big,
mgl@1371
 40597
+  bfd_error_on_input,
mgl@1371
 40598
+  bfd_error_invalid_error_code
mgl@1371
 40599
+}
mgl@1371
 40600
+bfd_error_type;
mgl@1371
 40601
+
mgl@1371
 40602
+bfd_error_type bfd_get_error (void);
mgl@1371
 40603
+
mgl@1371
 40604
+void bfd_set_error (bfd_error_type error_tag, ...);
mgl@1371
 40605
+
mgl@1371
 40606
+const char *bfd_errmsg (bfd_error_type error_tag);
mgl@1371
 40607
+
mgl@1371
 40608
+void bfd_perror (const char *message);
mgl@1371
 40609
+
mgl@1371
 40610
+typedef void (*bfd_error_handler_type) (const char *, ...);
mgl@1371
 40611
+
mgl@1371
 40612
+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
mgl@1371
 40613
+
mgl@1371
 40614
+void bfd_set_error_program_name (const char *);
mgl@1371
 40615
+
mgl@1371
 40616
+bfd_error_handler_type bfd_get_error_handler (void);
mgl@1371
 40617
+
mgl@1371
 40618
+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
mgl@1371
 40619
+
mgl@1371
 40620
+long bfd_canonicalize_reloc
mgl@1371
 40621
+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
mgl@1371
 40622
+
mgl@1371
 40623
+void bfd_set_reloc
mgl@1371
 40624
+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
mgl@1371
 40625
+
mgl@1371
 40626
+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
mgl@1371
 40627
+
mgl@1371
 40628
+int bfd_get_arch_size (bfd *abfd);
mgl@1371
 40629
+
mgl@1371
 40630
+int bfd_get_sign_extend_vma (bfd *abfd);
mgl@1371
 40631
+
mgl@1371
 40632
+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
mgl@1371
 40633
+
mgl@1371
 40634
+unsigned int bfd_get_gp_size (bfd *abfd);
mgl@1371
 40635
+
mgl@1371
 40636
+void bfd_set_gp_size (bfd *abfd, unsigned int i);
mgl@1371
 40637
+
mgl@1371
 40638
+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
mgl@1371
 40639
+
mgl@1371
 40640
+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
mgl@1371
 40641
+
mgl@1371
 40642
+#define bfd_copy_private_header_data(ibfd, obfd) \
mgl@1371
 40643
+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
mgl@1371
 40644
+               (ibfd, obfd))
mgl@1371
 40645
+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
mgl@1371
 40646
+
mgl@1371
 40647
+#define bfd_copy_private_bfd_data(ibfd, obfd) \
mgl@1371
 40648
+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
mgl@1371
 40649
+               (ibfd, obfd))
mgl@1371
 40650
+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
mgl@1371
 40651
+
mgl@1371
 40652
+#define bfd_merge_private_bfd_data(ibfd, obfd) \
mgl@1371
 40653
+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
mgl@1371
 40654
+               (ibfd, obfd))
mgl@1371
 40655
+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
mgl@1371
 40656
+
mgl@1371
 40657
+#define bfd_set_private_flags(abfd, flags) \
mgl@1371
 40658
+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
mgl@1371
 40659
+#define bfd_sizeof_headers(abfd, info) \
mgl@1371
 40660
+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
mgl@1371
 40661
+
mgl@1371
 40662
+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
mgl@1371
 40663
+       BFD_SEND (abfd, _bfd_find_nearest_line, \
mgl@1371
 40664
+                 (abfd, sec, syms, off, file, func, line))
mgl@1371
 40665
+
mgl@1371
 40666
+#define bfd_find_line(abfd, syms, sym, file, line) \
mgl@1371
 40667
+       BFD_SEND (abfd, _bfd_find_line, \
mgl@1371
 40668
+                 (abfd, syms, sym, file, line))
mgl@1371
 40669
+
mgl@1371
 40670
+#define bfd_find_inliner_info(abfd, file, func, line) \
mgl@1371
 40671
+       BFD_SEND (abfd, _bfd_find_inliner_info, \
mgl@1371
 40672
+                 (abfd, file, func, line))
mgl@1371
 40673
+
mgl@1371
 40674
+#define bfd_debug_info_start(abfd) \
mgl@1371
 40675
+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
mgl@1371
 40676
+
mgl@1371
 40677
+#define bfd_debug_info_end(abfd) \
mgl@1371
 40678
+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
mgl@1371
 40679
+
mgl@1371
 40680
+#define bfd_debug_info_accumulate(abfd, section) \
mgl@1371
 40681
+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
mgl@1371
 40682
+
mgl@1371
 40683
+#define bfd_stat_arch_elt(abfd, stat) \
mgl@1371
 40684
+       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
mgl@1371
 40685
+
mgl@1371
 40686
+#define bfd_update_armap_timestamp(abfd) \
mgl@1371
 40687
+       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
mgl@1371
 40688
+
mgl@1371
 40689
+#define bfd_set_arch_mach(abfd, arch, mach)\
mgl@1371
 40690
+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
mgl@1371
 40691
+
mgl@1371
 40692
+#define bfd_relax_section(abfd, section, link_info, again) \
mgl@1371
 40693
+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
mgl@1371
 40694
+
mgl@1371
 40695
+#define bfd_gc_sections(abfd, link_info) \
mgl@1371
 40696
+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
mgl@1371
 40697
+
mgl@1371
 40698
+#define bfd_merge_sections(abfd, link_info) \
mgl@1371
 40699
+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
mgl@1371
 40700
+
mgl@1371
 40701
+#define bfd_is_group_section(abfd, sec) \
mgl@1371
 40702
+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
mgl@1371
 40703
+
mgl@1371
 40704
+#define bfd_discard_group(abfd, sec) \
mgl@1371
 40705
+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
mgl@1371
 40706
+
mgl@1371
 40707
+#define bfd_link_hash_table_create(abfd) \
mgl@1371
 40708
+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
mgl@1371
 40709
+
mgl@1371
 40710
+#define bfd_link_hash_table_free(abfd, hash) \
mgl@1371
 40711
+       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
mgl@1371
 40712
+
mgl@1371
 40713
+#define bfd_link_add_symbols(abfd, info) \
mgl@1371
 40714
+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
mgl@1371
 40715
+
mgl@1371
 40716
+#define bfd_link_just_syms(abfd, sec, info) \
mgl@1371
 40717
+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
mgl@1371
 40718
+
mgl@1371
 40719
+#define bfd_final_link(abfd, info) \
mgl@1371
 40720
+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
mgl@1371
 40721
+
mgl@1371
 40722
+#define bfd_free_cached_info(abfd) \
mgl@1371
 40723
+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
mgl@1371
 40724
+
mgl@1371
 40725
+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
mgl@1371
 40726
+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
mgl@1371
 40727
+
mgl@1371
 40728
+#define bfd_print_private_bfd_data(abfd, file)\
mgl@1371
 40729
+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
mgl@1371
 40730
+
mgl@1371
 40731
+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
mgl@1371
 40732
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
mgl@1371
 40733
+
mgl@1371
 40734
+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
mgl@1371
 40735
+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
mgl@1371
 40736
+                                                   dyncount, dynsyms, ret))
mgl@1371
 40737
+
mgl@1371
 40738
+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
mgl@1371
 40739
+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
mgl@1371
 40740
+
mgl@1371
 40741
+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
mgl@1371
 40742
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
mgl@1371
 40743
+
mgl@1371
 40744
+extern bfd_byte *bfd_get_relocated_section_contents
mgl@1371
 40745
+  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
mgl@1371
 40746
+   bfd_boolean, asymbol **);
mgl@1371
 40747
+
mgl@1371
 40748
+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
mgl@1371
 40749
+
mgl@1371
 40750
+struct bfd_preserve
mgl@1371
 40751
+{
mgl@1371
 40752
+  void *marker;
mgl@1371
 40753
+  void *tdata;
mgl@1371
 40754
+  flagword flags;
mgl@1371
 40755
+  const struct bfd_arch_info *arch_info;
mgl@1371
 40756
+  struct bfd_section *sections;
mgl@1371
 40757
+  struct bfd_section *section_last;
mgl@1371
 40758
+  unsigned int section_count;
mgl@1371
 40759
+  struct bfd_hash_table section_htab;
mgl@1371
 40760
+};
mgl@1371
 40761
+
mgl@1371
 40762
+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
mgl@1371
 40763
+
mgl@1371
 40764
+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
mgl@1371
 40765
+
mgl@1371
 40766
+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
mgl@1371
 40767
+
mgl@1371
 40768
+bfd_vma bfd_emul_get_maxpagesize (const char *);
mgl@1371
 40769
+
mgl@1371
 40770
+void bfd_emul_set_maxpagesize (const char *, bfd_vma);
mgl@1371
 40771
+
mgl@1371
 40772
+bfd_vma bfd_emul_get_commonpagesize (const char *);
mgl@1371
 40773
+
mgl@1371
 40774
+void bfd_emul_set_commonpagesize (const char *, bfd_vma);
mgl@1371
 40775
+
mgl@1371
 40776
+char *bfd_demangle (bfd *, const char *, int);
mgl@1371
 40777
+
mgl@1371
 40778
+/* Extracted from archive.c.  */
mgl@1371
 40779
+symindex bfd_get_next_mapent
mgl@1371
 40780
+   (bfd *abfd, symindex previous, carsym **sym);
mgl@1371
 40781
+
mgl@1371
 40782
+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
mgl@1371
 40783
+
mgl@1371
 40784
+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
mgl@1371
 40785
+
mgl@1371
 40786
+/* Extracted from corefile.c.  */
mgl@1371
 40787
+const char *bfd_core_file_failing_command (bfd *abfd);
mgl@1371
 40788
+
mgl@1371
 40789
+int bfd_core_file_failing_signal (bfd *abfd);
mgl@1371
 40790
+
mgl@1371
 40791
+bfd_boolean core_file_matches_executable_p
mgl@1371
 40792
+   (bfd *core_bfd, bfd *exec_bfd);
mgl@1371
 40793
+
mgl@1371
 40794
+bfd_boolean generic_core_file_matches_executable_p
mgl@1371
 40795
+   (bfd *core_bfd, bfd *exec_bfd);
mgl@1371
 40796
+
mgl@1371
 40797
+/* Extracted from targets.c.  */
mgl@1371
 40798
+#define BFD_SEND(bfd, message, arglist) \
mgl@1371
 40799
+  ((*((bfd)->xvec->message)) arglist)
mgl@1371
 40800
+
mgl@1371
 40801
+#ifdef DEBUG_BFD_SEND
mgl@1371
 40802
+#undef BFD_SEND
mgl@1371
 40803
+#define BFD_SEND(bfd, message, arglist) \
mgl@1371
 40804
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
mgl@1371
 40805
+    ((*((bfd)->xvec->message)) arglist) : \
mgl@1371
 40806
+    (bfd_assert (__FILE__,__LINE__), NULL))
mgl@1371
 40807
+#endif
mgl@1371
 40808
+#define BFD_SEND_FMT(bfd, message, arglist) \
mgl@1371
 40809
+  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
mgl@1371
 40810
+
mgl@1371
 40811
+#ifdef DEBUG_BFD_SEND
mgl@1371
 40812
+#undef BFD_SEND_FMT
mgl@1371
 40813
+#define BFD_SEND_FMT(bfd, message, arglist) \
mgl@1371
 40814
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
mgl@1371
 40815
+   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
mgl@1371
 40816
+   (bfd_assert (__FILE__,__LINE__), NULL))
mgl@1371
 40817
+#endif
mgl@1371
 40818
+
mgl@1371
 40819
+enum bfd_flavour
mgl@1371
 40820
+{
mgl@1371
 40821
+  bfd_target_unknown_flavour,
mgl@1371
 40822
+  bfd_target_aout_flavour,
mgl@1371
 40823
+  bfd_target_coff_flavour,
mgl@1371
 40824
+  bfd_target_ecoff_flavour,
mgl@1371
 40825
+  bfd_target_xcoff_flavour,
mgl@1371
 40826
+  bfd_target_elf_flavour,
mgl@1371
 40827
+  bfd_target_ieee_flavour,
mgl@1371
 40828
+  bfd_target_nlm_flavour,
mgl@1371
 40829
+  bfd_target_oasys_flavour,
mgl@1371
 40830
+  bfd_target_tekhex_flavour,
mgl@1371
 40831
+  bfd_target_srec_flavour,
mgl@1371
 40832
+  bfd_target_ihex_flavour,
mgl@1371
 40833
+  bfd_target_som_flavour,
mgl@1371
 40834
+  bfd_target_os9k_flavour,
mgl@1371
 40835
+  bfd_target_versados_flavour,
mgl@1371
 40836
+  bfd_target_msdos_flavour,
mgl@1371
 40837
+  bfd_target_ovax_flavour,
mgl@1371
 40838
+  bfd_target_evax_flavour,
mgl@1371
 40839
+  bfd_target_mmo_flavour,
mgl@1371
 40840
+  bfd_target_mach_o_flavour,
mgl@1371
 40841
+  bfd_target_pef_flavour,
mgl@1371
 40842
+  bfd_target_pef_xlib_flavour,
mgl@1371
 40843
+  bfd_target_sym_flavour
mgl@1371
 40844
+};
mgl@1371
 40845
+
mgl@1371
 40846
+enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
mgl@1371
 40847
+
mgl@1371
 40848
+/* Forward declaration.  */
mgl@1371
 40849
+typedef struct bfd_link_info _bfd_link_info;
mgl@1371
 40850
+
mgl@1371
 40851
+typedef struct bfd_target
mgl@1371
 40852
+{
mgl@1371
 40853
+  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
mgl@1371
 40854
+  char *name;
mgl@1371
 40855
+
mgl@1371
 40856
+ /* The "flavour" of a back end is a general indication about
mgl@1371
 40857
+    the contents of a file.  */
mgl@1371
 40858
+  enum bfd_flavour flavour;
mgl@1371
 40859
+
mgl@1371
 40860
+  /* The order of bytes within the data area of a file.  */
mgl@1371
 40861
+  enum bfd_endian byteorder;
mgl@1371
 40862
+
mgl@1371
 40863
+ /* The order of bytes within the header parts of a file.  */
mgl@1371
 40864
+  enum bfd_endian header_byteorder;
mgl@1371
 40865
+
mgl@1371
 40866
+  /* A mask of all the flags which an executable may have set -
mgl@1371
 40867
+     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
mgl@1371
 40868
+  flagword object_flags;
mgl@1371
 40869
+
mgl@1371
 40870
+ /* A mask of all the flags which a section may have set - from
mgl@1371
 40871
+    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
mgl@1371
 40872
+  flagword section_flags;
mgl@1371
 40873
+
mgl@1371
 40874
+ /* The character normally found at the front of a symbol.
mgl@1371
 40875
+    (if any), perhaps `_'.  */
mgl@1371
 40876
+  char symbol_leading_char;
mgl@1371
 40877
+
mgl@1371
 40878
+ /* The pad character for file names within an archive header.  */
mgl@1371
 40879
+  char ar_pad_char;
mgl@1371
 40880
+
mgl@1371
 40881
+  /* The maximum number of characters in an archive header.  */
mgl@1371
 40882
+  unsigned short ar_max_namelen;
mgl@1371
 40883
+
mgl@1371
 40884
+  /* Entries for byte swapping for data. These are different from the
mgl@1371
 40885
+     other entry points, since they don't take a BFD as the first argument.
mgl@1371
 40886
+     Certain other handlers could do the same.  */
mgl@1371
 40887
+  bfd_uint64_t   (*bfd_getx64) (const void *);
mgl@1371
 40888
+  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
mgl@1371
 40889
+  void           (*bfd_putx64) (bfd_uint64_t, void *);
mgl@1371
 40890
+  bfd_vma        (*bfd_getx32) (const void *);
mgl@1371
 40891
+  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
mgl@1371
 40892
+  void           (*bfd_putx32) (bfd_vma, void *);
mgl@1371
 40893
+  bfd_vma        (*bfd_getx16) (const void *);
mgl@1371
 40894
+  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
mgl@1371
 40895
+  void           (*bfd_putx16) (bfd_vma, void *);
mgl@1371
 40896
+
mgl@1371
 40897
+  /* Byte swapping for the headers.  */
mgl@1371
 40898
+  bfd_uint64_t   (*bfd_h_getx64) (const void *);
mgl@1371
 40899
+  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
mgl@1371
 40900
+  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
mgl@1371
 40901
+  bfd_vma        (*bfd_h_getx32) (const void *);
mgl@1371
 40902
+  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
mgl@1371
 40903
+  void           (*bfd_h_putx32) (bfd_vma, void *);
mgl@1371
 40904
+  bfd_vma        (*bfd_h_getx16) (const void *);
mgl@1371
 40905
+  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
mgl@1371
 40906
+  void           (*bfd_h_putx16) (bfd_vma, void *);
mgl@1371
 40907
+
mgl@1371
 40908
+  /* Format dependent routines: these are vectors of entry points
mgl@1371
 40909
+     within the target vector structure, one for each format to check.  */
mgl@1371
 40910
+
mgl@1371
 40911
+  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
mgl@1371
 40912
+  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
mgl@1371
 40913
+
mgl@1371
 40914
+  /* Set the format of a file being written.  */
mgl@1371
 40915
+  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
mgl@1371
 40916
+
mgl@1371
 40917
+  /* Write cached information into a file being written, at <<bfd_close>>.  */
mgl@1371
 40918
+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
mgl@1371
 40919
+
mgl@1371
 40920
+
mgl@1371
 40921
+  /* Generic entry points.  */
mgl@1371
 40922
+#define BFD_JUMP_TABLE_GENERIC(NAME) \
mgl@1371
 40923
+  NAME##_close_and_cleanup, \
mgl@1371
 40924
+  NAME##_bfd_free_cached_info, \
mgl@1371
 40925
+  NAME##_new_section_hook, \
mgl@1371
 40926
+  NAME##_get_section_contents, \
mgl@1371
 40927
+  NAME##_get_section_contents_in_window
mgl@1371
 40928
+
mgl@1371
 40929
+  /* Called when the BFD is being closed to do any necessary cleanup.  */
mgl@1371
 40930
+  bfd_boolean (*_close_and_cleanup) (bfd *);
mgl@1371
 40931
+  /* Ask the BFD to free all cached information.  */
mgl@1371
 40932
+  bfd_boolean (*_bfd_free_cached_info) (bfd *);
mgl@1371
 40933
+  /* Called when a new section is created.  */
mgl@1371
 40934
+  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
mgl@1371
 40935
+  /* Read the contents of a section.  */
mgl@1371
 40936
+  bfd_boolean (*_bfd_get_section_contents)
mgl@1371
 40937
+    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
mgl@1371
 40938
+  bfd_boolean (*_bfd_get_section_contents_in_window)
mgl@1371
 40939
+    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
mgl@1371
 40940
+
mgl@1371
 40941
+  /* Entry points to copy private data.  */
mgl@1371
 40942
+#define BFD_JUMP_TABLE_COPY(NAME) \
mgl@1371
 40943
+  NAME##_bfd_copy_private_bfd_data, \
mgl@1371
 40944
+  NAME##_bfd_merge_private_bfd_data, \
mgl@1371
 40945
+  _bfd_generic_init_private_section_data, \
mgl@1371
 40946
+  NAME##_bfd_copy_private_section_data, \
mgl@1371
 40947
+  NAME##_bfd_copy_private_symbol_data, \
mgl@1371
 40948
+  NAME##_bfd_copy_private_header_data, \
mgl@1371
 40949
+  NAME##_bfd_set_private_flags, \
mgl@1371
 40950
+  NAME##_bfd_print_private_bfd_data
mgl@1371
 40951
+
mgl@1371
 40952
+  /* Called to copy BFD general private data from one object file
mgl@1371
 40953
+     to another.  */
mgl@1371
 40954
+  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
mgl@1371
 40955
+  /* Called to merge BFD general private data from one object file
mgl@1371
 40956
+     to a common output file when linking.  */
mgl@1371
 40957
+  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
mgl@1371
 40958
+  /* Called to initialize BFD private section data from one object file
mgl@1371
 40959
+     to another.  */
mgl@1371
 40960
+#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
mgl@1371
 40961
+  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
mgl@1371
 40962
+  bfd_boolean (*_bfd_init_private_section_data)
mgl@1371
 40963
+    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
mgl@1371
 40964
+  /* Called to copy BFD private section data from one object file
mgl@1371
 40965
+     to another.  */
mgl@1371
 40966
+  bfd_boolean (*_bfd_copy_private_section_data)
mgl@1371
 40967
+    (bfd *, sec_ptr, bfd *, sec_ptr);
mgl@1371
 40968
+  /* Called to copy BFD private symbol data from one symbol
mgl@1371
 40969
+     to another.  */
mgl@1371
 40970
+  bfd_boolean (*_bfd_copy_private_symbol_data)
mgl@1371
 40971
+    (bfd *, asymbol *, bfd *, asymbol *);
mgl@1371
 40972
+  /* Called to copy BFD private header data from one object file
mgl@1371
 40973
+     to another.  */
mgl@1371
 40974
+  bfd_boolean (*_bfd_copy_private_header_data)
mgl@1371
 40975
+    (bfd *, bfd *);
mgl@1371
 40976
+  /* Called to set private backend flags.  */
mgl@1371
 40977
+  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
mgl@1371
 40978
+
mgl@1371
 40979
+  /* Called to print private BFD data.  */
mgl@1371
 40980
+  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
mgl@1371
 40981
+
mgl@1371
 40982
+  /* Core file entry points.  */
mgl@1371
 40983
+#define BFD_JUMP_TABLE_CORE(NAME) \
mgl@1371
 40984
+  NAME##_core_file_failing_command, \
mgl@1371
 40985
+  NAME##_core_file_failing_signal, \
mgl@1371
 40986
+  NAME##_core_file_matches_executable_p
mgl@1371
 40987
+
mgl@1371
 40988
+  char *      (*_core_file_failing_command) (bfd *);
mgl@1371
 40989
+  int         (*_core_file_failing_signal) (bfd *);
mgl@1371
 40990
+  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
mgl@1371
 40991
+
mgl@1371
 40992
+  /* Archive entry points.  */
mgl@1371
 40993
+#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
mgl@1371
 40994
+  NAME##_slurp_armap, \
mgl@1371
 40995
+  NAME##_slurp_extended_name_table, \
mgl@1371
 40996
+  NAME##_construct_extended_name_table, \
mgl@1371
 40997
+  NAME##_truncate_arname, \
mgl@1371
 40998
+  NAME##_write_armap, \
mgl@1371
 40999
+  NAME##_read_ar_hdr, \
mgl@1371
 41000
+  NAME##_openr_next_archived_file, \
mgl@1371
 41001
+  NAME##_get_elt_at_index, \
mgl@1371
 41002
+  NAME##_generic_stat_arch_elt, \
mgl@1371
 41003
+  NAME##_update_armap_timestamp
mgl@1371
 41004
+
mgl@1371
 41005
+  bfd_boolean (*_bfd_slurp_armap) (bfd *);
mgl@1371
 41006
+  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
mgl@1371
 41007
+  bfd_boolean (*_bfd_construct_extended_name_table)
mgl@1371
 41008
+    (bfd *, char **, bfd_size_type *, const char **);
mgl@1371
 41009
+  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
mgl@1371
 41010
+  bfd_boolean (*write_armap)
mgl@1371
 41011
+    (bfd *, unsigned int, struct orl *, unsigned int, int);
mgl@1371
 41012
+  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
mgl@1371
 41013
+  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
mgl@1371
 41014
+#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
mgl@1371
 41015
+  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
mgl@1371
 41016
+  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
mgl@1371
 41017
+  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
mgl@1371
 41018
+
mgl@1371
 41019
+  /* Entry points used for symbols.  */
mgl@1371
 41020
+#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
mgl@1371
 41021
+  NAME##_get_symtab_upper_bound, \
mgl@1371
 41022
+  NAME##_canonicalize_symtab, \
mgl@1371
 41023
+  NAME##_make_empty_symbol, \
mgl@1371
 41024
+  NAME##_print_symbol, \
mgl@1371
 41025
+  NAME##_get_symbol_info, \
mgl@1371
 41026
+  NAME##_bfd_is_local_label_name, \
mgl@1371
 41027
+  NAME##_bfd_is_target_special_symbol, \
mgl@1371
 41028
+  NAME##_get_lineno, \
mgl@1371
 41029
+  NAME##_find_nearest_line, \
mgl@1371
 41030
+  _bfd_generic_find_line, \
mgl@1371
 41031
+  NAME##_find_inliner_info, \
mgl@1371
 41032
+  NAME##_bfd_make_debug_symbol, \
mgl@1371
 41033
+  NAME##_read_minisymbols, \
mgl@1371
 41034
+  NAME##_minisymbol_to_symbol
mgl@1371
 41035
+
mgl@1371
 41036
+  long        (*_bfd_get_symtab_upper_bound) (bfd *);
mgl@1371
 41037
+  long        (*_bfd_canonicalize_symtab)
mgl@1371
 41038
+    (bfd *, struct bfd_symbol **);
mgl@1371
 41039
+  struct bfd_symbol *
mgl@1371
 41040
+              (*_bfd_make_empty_symbol) (bfd *);
mgl@1371
 41041
+  void        (*_bfd_print_symbol)
mgl@1371
 41042
+    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
mgl@1371
 41043
+#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
mgl@1371
 41044
+  void        (*_bfd_get_symbol_info)
mgl@1371
 41045
+    (bfd *, struct bfd_symbol *, symbol_info *);
mgl@1371
 41046
+#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
mgl@1371
 41047
+  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
mgl@1371
 41048
+  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
mgl@1371
 41049
+  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
mgl@1371
 41050
+  bfd_boolean (*_bfd_find_nearest_line)
mgl@1371
 41051
+    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
mgl@1371
 41052
+     const char **, const char **, unsigned int *);
mgl@1371
 41053
+  bfd_boolean (*_bfd_find_line)
mgl@1371
 41054
+    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
mgl@1371
 41055
+     const char **, unsigned int *);
mgl@1371
 41056
+  bfd_boolean (*_bfd_find_inliner_info)
mgl@1371
 41057
+    (bfd *, const char **, const char **, unsigned int *);
mgl@1371
 41058
+ /* Back-door to allow format-aware applications to create debug symbols
mgl@1371
 41059
+    while using BFD for everything else.  Currently used by the assembler
mgl@1371
 41060
+    when creating COFF files.  */
mgl@1371
 41061
+  asymbol *   (*_bfd_make_debug_symbol)
mgl@1371
 41062
+    (bfd *, void *, unsigned long size);
mgl@1371
 41063
+#define bfd_read_minisymbols(b, d, m, s) \
mgl@1371
 41064
+  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
mgl@1371
 41065
+  long        (*_read_minisymbols)
mgl@1371
 41066
+    (bfd *, bfd_boolean, void **, unsigned int *);
mgl@1371
 41067
+#define bfd_minisymbol_to_symbol(b, d, m, f) \
mgl@1371
 41068
+  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
mgl@1371
 41069
+  asymbol *   (*_minisymbol_to_symbol)
mgl@1371
 41070
+    (bfd *, bfd_boolean, const void *, asymbol *);
mgl@1371
 41071
+
mgl@1371
 41072
+  /* Routines for relocs.  */
mgl@1371
 41073
+#define BFD_JUMP_TABLE_RELOCS(NAME) \
mgl@1371
 41074
+  NAME##_get_reloc_upper_bound, \
mgl@1371
 41075
+  NAME##_canonicalize_reloc, \
mgl@1371
 41076
+  NAME##_bfd_reloc_type_lookup, \
mgl@1371
 41077
+  NAME##_bfd_reloc_name_lookup
mgl@1371
 41078
+
mgl@1371
 41079
+  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
mgl@1371
 41080
+  long        (*_bfd_canonicalize_reloc)
mgl@1371
 41081
+    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
mgl@1371
 41082
+  /* See documentation on reloc types.  */
mgl@1371
 41083
+  reloc_howto_type *
mgl@1371
 41084
+              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
mgl@1371
 41085
+  reloc_howto_type *
mgl@1371
 41086
+              (*reloc_name_lookup) (bfd *, const char *);
mgl@1371
 41087
+
mgl@1371
 41088
+
mgl@1371
 41089
+  /* Routines used when writing an object file.  */
mgl@1371
 41090
+#define BFD_JUMP_TABLE_WRITE(NAME) \
mgl@1371
 41091
+  NAME##_set_arch_mach, \
mgl@1371
 41092
+  NAME##_set_section_contents
mgl@1371
 41093
+
mgl@1371
 41094
+  bfd_boolean (*_bfd_set_arch_mach)
mgl@1371
 41095
+    (bfd *, enum bfd_architecture, unsigned long);
mgl@1371
 41096
+  bfd_boolean (*_bfd_set_section_contents)
mgl@1371
 41097
+    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
mgl@1371
 41098
+
mgl@1371
 41099
+  /* Routines used by the linker.  */
mgl@1371
 41100
+#define BFD_JUMP_TABLE_LINK(NAME) \
mgl@1371
 41101
+  NAME##_sizeof_headers, \
mgl@1371
 41102
+  NAME##_bfd_get_relocated_section_contents, \
mgl@1371
 41103
+  NAME##_bfd_relax_section, \
mgl@1371
 41104
+  NAME##_bfd_link_hash_table_create, \
mgl@1371
 41105
+  NAME##_bfd_link_hash_table_free, \
mgl@1371
 41106
+  NAME##_bfd_link_add_symbols, \
mgl@1371
 41107
+  NAME##_bfd_link_just_syms, \
mgl@1371
 41108
+  NAME##_bfd_final_link, \
mgl@1371
 41109
+  NAME##_bfd_link_split_section, \
mgl@1371
 41110
+  NAME##_bfd_gc_sections, \
mgl@1371
 41111
+  NAME##_bfd_merge_sections, \
mgl@1371
 41112
+  NAME##_bfd_is_group_section, \
mgl@1371
 41113
+  NAME##_bfd_discard_group, \
mgl@1371
 41114
+  NAME##_section_already_linked \
mgl@1371
 41115
+
mgl@1371
 41116
+  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
mgl@1371
 41117
+  bfd_byte *  (*_bfd_get_relocated_section_contents)
mgl@1371
 41118
+    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
mgl@1371
 41119
+     bfd_byte *, bfd_boolean, struct bfd_symbol **);
mgl@1371
 41120
+
mgl@1371
 41121
+  bfd_boolean (*_bfd_relax_section)
mgl@1371
 41122
+    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
mgl@1371
 41123
+
mgl@1371
 41124
+  /* Create a hash table for the linker.  Different backends store
mgl@1371
 41125
+     different information in this table.  */
mgl@1371
 41126
+  struct bfd_link_hash_table *
mgl@1371
 41127
+              (*_bfd_link_hash_table_create) (bfd *);
mgl@1371
 41128
+
mgl@1371
 41129
+  /* Release the memory associated with the linker hash table.  */
mgl@1371
 41130
+  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
mgl@1371
 41131
+
mgl@1371
 41132
+  /* Add symbols from this object file into the hash table.  */
mgl@1371
 41133
+  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
mgl@1371
 41134
+
mgl@1371
 41135
+  /* Indicate that we are only retrieving symbol values from this section.  */
mgl@1371
 41136
+  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
mgl@1371
 41137
+
mgl@1371
 41138
+  /* Do a link based on the link_order structures attached to each
mgl@1371
 41139
+     section of the BFD.  */
mgl@1371
 41140
+  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
mgl@1371
 41141
+
mgl@1371
 41142
+  /* Should this section be split up into smaller pieces during linking.  */
mgl@1371
 41143
+  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
mgl@1371
 41144
+
mgl@1371
 41145
+  /* Remove sections that are not referenced from the output.  */
mgl@1371
 41146
+  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
mgl@1371
 41147
+
mgl@1371
 41148
+  /* Attempt to merge SEC_MERGE sections.  */
mgl@1371
 41149
+  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
mgl@1371
 41150
+
mgl@1371
 41151
+  /* Is this section a member of a group?  */
mgl@1371
 41152
+  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
mgl@1371
 41153
+
mgl@1371
 41154
+  /* Discard members of a group.  */
mgl@1371
 41155
+  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
mgl@1371
 41156
+
mgl@1371
 41157
+  /* Check if SEC has been already linked during a reloceatable or
mgl@1371
 41158
+     final link.  */
mgl@1371
 41159
+  void (*_section_already_linked) (bfd *, struct bfd_section *,
mgl@1371
 41160
+                                   struct bfd_link_info *);
mgl@1371
 41161
+
mgl@1371
 41162
+  /* Routines to handle dynamic symbols and relocs.  */
mgl@1371
 41163
+#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
mgl@1371
 41164
+  NAME##_get_dynamic_symtab_upper_bound, \
mgl@1371
 41165
+  NAME##_canonicalize_dynamic_symtab, \
mgl@1371
 41166
+  NAME##_get_synthetic_symtab, \
mgl@1371
 41167
+  NAME##_get_dynamic_reloc_upper_bound, \
mgl@1371
 41168
+  NAME##_canonicalize_dynamic_reloc
mgl@1371
 41169
+
mgl@1371
 41170
+  /* Get the amount of memory required to hold the dynamic symbols.  */
mgl@1371
 41171
+  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
mgl@1371
 41172
+  /* Read in the dynamic symbols.  */
mgl@1371
 41173
+  long        (*_bfd_canonicalize_dynamic_symtab)
mgl@1371
 41174
+    (bfd *, struct bfd_symbol **);
mgl@1371
 41175
+  /* Create synthetized symbols.  */
mgl@1371
 41176
+  long        (*_bfd_get_synthetic_symtab)
mgl@1371
 41177
+    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
mgl@1371
 41178
+     struct bfd_symbol **);
mgl@1371
 41179
+  /* Get the amount of memory required to hold the dynamic relocs.  */
mgl@1371
 41180
+  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
mgl@1371
 41181
+  /* Read in the dynamic relocs.  */
mgl@1371
 41182
+  long        (*_bfd_canonicalize_dynamic_reloc)
mgl@1371
 41183
+    (bfd *, arelent **, struct bfd_symbol **);
mgl@1371
 41184
+
mgl@1371
 41185
+  /* Opposite endian version of this target.  */
mgl@1371
 41186
+  const struct bfd_target * alternative_target;
mgl@1371
 41187
+
mgl@1371
 41188
+  /* Data for use by back-end routines, which isn't
mgl@1371
 41189
+     generic enough to belong in this structure.  */
mgl@1371
 41190
+  const void *backend_data;
mgl@1371
 41191
+
mgl@1371
 41192
+} bfd_target;
mgl@1371
 41193
+
mgl@1371
 41194
+bfd_boolean bfd_set_default_target (const char *name);
mgl@1371
 41195
+
mgl@1371
 41196
+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
mgl@1371
 41197
+
mgl@1371
 41198
+const char ** bfd_target_list (void);
mgl@1371
 41199
+
mgl@1371
 41200
+const bfd_target *bfd_search_for_target
mgl@1371
 41201
+   (int (*search_func) (const bfd_target *, void *),
mgl@1371
 41202
+    void *);
mgl@1371
 41203
+
mgl@1371
 41204
+/* Extracted from format.c.  */
mgl@1371
 41205
+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
mgl@1371
 41206
+
mgl@1371
 41207
+bfd_boolean bfd_check_format_matches
mgl@1371
 41208
+   (bfd *abfd, bfd_format format, char ***matching);
mgl@1371
 41209
+
mgl@1371
 41210
+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
mgl@1371
 41211
+
mgl@1371
 41212
+const char *bfd_format_string (bfd_format format);
mgl@1371
 41213
+
mgl@1371
 41214
+/* Extracted from linker.c.  */
mgl@1371
 41215
+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
mgl@1371
 41216
+
mgl@1371
 41217
+#define bfd_link_split_section(abfd, sec) \
mgl@1371
 41218
+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
mgl@1371
 41219
+
mgl@1371
 41220
+void bfd_section_already_linked (bfd *abfd, asection *sec,
mgl@1371
 41221
+    struct bfd_link_info *info);
mgl@1371
 41222
+
mgl@1371
 41223
+#define bfd_section_already_linked(abfd, sec, info) \
mgl@1371
 41224
+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
mgl@1371
 41225
+
mgl@1371
 41226
+/* Extracted from simple.c.  */
mgl@1371
 41227
+bfd_byte *bfd_simple_get_relocated_section_contents
mgl@1371
 41228
+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
mgl@1371
 41229
+
mgl@1371
 41230
+#ifdef __cplusplus
mgl@1371
 41231
+}
mgl@1371
 41232
+#endif
mgl@1371
 41233
+#endif
mgl@1371
 41234
--- /dev/null
mgl@1371
 41235
+++ b/bfd/doc/libbfd.h
mgl@1371
 41236
@@ -0,0 +1,2074 @@
mgl@1371
 41237
+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
mgl@1371
 41238
+   generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c", 
mgl@1371
 41239
+   "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
mgl@1371
 41240
+   Run "make headers" in your build bfd/ to regenerate.  */
mgl@1371
 41241
+
mgl@1371
 41242
+/* libbfd.h -- Declarations used by bfd library *implementation*.
mgl@1371
 41243
+   (This include file is not for users of the library.)
mgl@1371
 41244
+
mgl@1371
 41245
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
mgl@1371
 41246
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
mgl@1371
 41247
+   Free Software Foundation, Inc.
mgl@1371
 41248
+
mgl@1371
 41249
+   Written by Cygnus Support.
mgl@1371
 41250
+
mgl@1371
 41251
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
 41252
+
mgl@1371
 41253
+   This program is free software; you can redistribute it and/or modify
mgl@1371
 41254
+   it under the terms of the GNU General Public License as published by
mgl@1371
 41255
+   the Free Software Foundation; either version 3 of the License, or
mgl@1371
 41256
+   (at your option) any later version.
mgl@1371
 41257
+
mgl@1371
 41258
+   This program is distributed in the hope that it will be useful,
mgl@1371
 41259
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 41260
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 41261
+   GNU General Public License for more details.
mgl@1371
 41262
+
mgl@1371
 41263
+   You should have received a copy of the GNU General Public License
mgl@1371
 41264
+   along with this program; if not, write to the Free Software
mgl@1371
 41265
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
mgl@1371
 41266
+   MA 02110-1301, USA.  */
mgl@1371
 41267
+
mgl@1371
 41268
+#include "hashtab.h"
mgl@1371
 41269
+
mgl@1371
 41270
+/* Align an address upward to a boundary, expressed as a number of bytes.
mgl@1371
 41271
+   E.g. align to an 8-byte boundary with argument of 8.  Take care never
mgl@1371
 41272
+   to wrap around if the address is within boundary-1 of the end of the
mgl@1371
 41273
+   address space.  */
mgl@1371
 41274
+#define BFD_ALIGN(this, boundary)					  \
mgl@1371
 41275
+  ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
mgl@1371
 41276
+   ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
mgl@1371
 41277
+   : ~ (bfd_vma) 0)
mgl@1371
 41278
+
mgl@1371
 41279
+/* If you want to read and write large blocks, you might want to do it
mgl@1371
 41280
+   in quanta of this amount */
mgl@1371
 41281
+#define DEFAULT_BUFFERSIZE 8192
mgl@1371
 41282
+
mgl@1371
 41283
+/* Set a tdata field.  Can't use the other macros for this, since they
mgl@1371
 41284
+   do casts, and casting to the left of assignment isn't portable.  */
mgl@1371
 41285
+#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
mgl@1371
 41286
+
mgl@1371
 41287
+/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
mgl@1371
 41288
+   to an instance of this structure.  */
mgl@1371
 41289
+
mgl@1371
 41290
+struct bfd_in_memory
mgl@1371
 41291
+{
mgl@1371
 41292
+  /* Size of buffer.  */
mgl@1371
 41293
+  bfd_size_type size;
mgl@1371
 41294
+  /* Buffer holding contents of BFD.  */
mgl@1371
 41295
+  bfd_byte *buffer;
mgl@1371
 41296
+};
mgl@1371
 41297
+
mgl@1371
 41298
+struct section_hash_entry
mgl@1371
 41299
+{
mgl@1371
 41300
+  struct bfd_hash_entry root;
mgl@1371
 41301
+  asection section;
mgl@1371
 41302
+};
mgl@1371
 41303
+
mgl@1371
 41304
+/* tdata for an archive.  For an input archive, cache
mgl@1371
 41305
+   needs to be free()'d.  For an output archive, symdefs do.  */
mgl@1371
 41306
+
mgl@1371
 41307
+struct artdata {
mgl@1371
 41308
+  file_ptr first_file_filepos;
mgl@1371
 41309
+  /* Speed up searching the armap */
mgl@1371
 41310
+  htab_t cache;
mgl@1371
 41311
+  bfd *archive_head;		/* Only interesting in output routines */
mgl@1371
 41312
+  carsym *symdefs;		/* the symdef entries */
mgl@1371
 41313
+  symindex symdef_count;	/* how many there are */
mgl@1371
 41314
+  char *extended_names;		/* clever intel extension */
mgl@1371
 41315
+  bfd_size_type extended_names_size; /* Size of extended names */
mgl@1371
 41316
+  /* when more compilers are standard C, this can be a time_t */
mgl@1371
 41317
+  long  armap_timestamp;	/* Timestamp value written into armap.
mgl@1371
 41318
+				   This is used for BSD archives to check
mgl@1371
 41319
+				   that the timestamp is recent enough
mgl@1371
 41320
+				   for the BSD linker to not complain,
mgl@1371
 41321
+				   just before we finish writing an
mgl@1371
 41322
+				   archive.  */
mgl@1371
 41323
+  file_ptr armap_datepos;	/* Position within archive to seek to
mgl@1371
 41324
+				   rewrite the date field.  */
mgl@1371
 41325
+  void *tdata;			/* Backend specific information.  */
mgl@1371
 41326
+};
mgl@1371
 41327
+
mgl@1371
 41328
+#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
mgl@1371
 41329
+
mgl@1371
 41330
+/* Goes in bfd's arelt_data slot */
mgl@1371
 41331
+struct areltdata {
mgl@1371
 41332
+  char * arch_header;		/* it's actually a string */
mgl@1371
 41333
+  unsigned int parsed_size;	/* octets of filesize not including ar_hdr */
mgl@1371
 41334
+  char *filename;		/* null-terminated */
mgl@1371
 41335
+};
mgl@1371
 41336
+
mgl@1371
 41337
+#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
mgl@1371
 41338
+
mgl@1371
 41339
+extern void *bfd_malloc
mgl@1371
 41340
+  (bfd_size_type);
mgl@1371
 41341
+extern void *bfd_realloc
mgl@1371
 41342
+  (void *, bfd_size_type);
mgl@1371
 41343
+extern void *bfd_zmalloc
mgl@1371
 41344
+  (bfd_size_type);
mgl@1371
 41345
+extern void *bfd_malloc2
mgl@1371
 41346
+  (bfd_size_type, bfd_size_type);
mgl@1371
 41347
+extern void *bfd_realloc2
mgl@1371
 41348
+  (void *, bfd_size_type, bfd_size_type);
mgl@1371
 41349
+extern void *bfd_zmalloc2
mgl@1371
 41350
+  (bfd_size_type, bfd_size_type);
mgl@1371
 41351
+
mgl@1371
 41352
+extern void _bfd_default_error_handler (const char *s, ...);
mgl@1371
 41353
+extern bfd_error_handler_type _bfd_error_handler;
mgl@1371
 41354
+
mgl@1371
 41355
+/* These routines allocate and free things on the BFD's objalloc.  */
mgl@1371
 41356
+
mgl@1371
 41357
+extern void *bfd_alloc
mgl@1371
 41358
+  (bfd *, bfd_size_type);
mgl@1371
 41359
+extern void *bfd_zalloc
mgl@1371
 41360
+  (bfd *, bfd_size_type);
mgl@1371
 41361
+extern void *bfd_alloc2
mgl@1371
 41362
+  (bfd *, bfd_size_type, bfd_size_type);
mgl@1371
 41363
+extern void *bfd_zalloc2
mgl@1371
 41364
+  (bfd *, bfd_size_type, bfd_size_type);
mgl@1371
 41365
+extern void bfd_release
mgl@1371
 41366
+  (bfd *, void *);
mgl@1371
 41367
+
mgl@1371
 41368
+bfd * _bfd_create_empty_archive_element_shell
mgl@1371
 41369
+  (bfd *obfd);
mgl@1371
 41370
+bfd * _bfd_look_for_bfd_in_cache
mgl@1371
 41371
+  (bfd *, file_ptr);
mgl@1371
 41372
+bfd_boolean _bfd_add_bfd_to_archive_cache
mgl@1371
 41373
+  (bfd *, file_ptr, bfd *);
mgl@1371
 41374
+bfd_boolean _bfd_generic_mkarchive
mgl@1371
 41375
+  (bfd *abfd);
mgl@1371
 41376
+const bfd_target *bfd_generic_archive_p
mgl@1371
 41377
+  (bfd *abfd);
mgl@1371
 41378
+bfd_boolean bfd_slurp_armap
mgl@1371
 41379
+  (bfd *abfd);
mgl@1371
 41380
+bfd_boolean bfd_slurp_bsd_armap_f2
mgl@1371
 41381
+  (bfd *abfd);
mgl@1371
 41382
+#define bfd_slurp_bsd_armap bfd_slurp_armap
mgl@1371
 41383
+#define bfd_slurp_coff_armap bfd_slurp_armap
mgl@1371
 41384
+bfd_boolean _bfd_slurp_extended_name_table
mgl@1371
 41385
+  (bfd *abfd);
mgl@1371
 41386
+extern bfd_boolean _bfd_construct_extended_name_table
mgl@1371
 41387
+  (bfd *, bfd_boolean, char **, bfd_size_type *);
mgl@1371
 41388
+bfd_boolean _bfd_write_archive_contents
mgl@1371
 41389
+  (bfd *abfd);
mgl@1371
 41390
+bfd_boolean _bfd_compute_and_write_armap
mgl@1371
 41391
+  (bfd *, unsigned int elength);
mgl@1371
 41392
+bfd *_bfd_get_elt_at_filepos
mgl@1371
 41393
+  (bfd *archive, file_ptr filepos);
mgl@1371
 41394
+extern bfd *_bfd_generic_get_elt_at_index
mgl@1371
 41395
+  (bfd *, symindex);
mgl@1371
 41396
+bfd * _bfd_new_bfd
mgl@1371
 41397
+  (void);
mgl@1371
 41398
+void _bfd_delete_bfd
mgl@1371
 41399
+  (bfd *);
mgl@1371
 41400
+bfd_boolean _bfd_free_cached_info
mgl@1371
 41401
+  (bfd *);
mgl@1371
 41402
+
mgl@1371
 41403
+bfd_boolean bfd_false
mgl@1371
 41404
+  (bfd *ignore);
mgl@1371
 41405
+bfd_boolean bfd_true
mgl@1371
 41406
+  (bfd *ignore);
mgl@1371
 41407
+void *bfd_nullvoidptr
mgl@1371
 41408
+  (bfd *ignore);
mgl@1371
 41409
+int bfd_0
mgl@1371
 41410
+  (bfd *ignore);
mgl@1371
 41411
+unsigned int bfd_0u
mgl@1371
 41412
+  (bfd *ignore);
mgl@1371
 41413
+long bfd_0l
mgl@1371
 41414
+  (bfd *ignore);
mgl@1371
 41415
+long _bfd_n1
mgl@1371
 41416
+  (bfd *ignore);
mgl@1371
 41417
+void bfd_void
mgl@1371
 41418
+  (bfd *ignore);
mgl@1371
 41419
+
mgl@1371
 41420
+bfd *_bfd_new_bfd_contained_in
mgl@1371
 41421
+  (bfd *);
mgl@1371
 41422
+const bfd_target *_bfd_dummy_target
mgl@1371
 41423
+  (bfd *abfd);
mgl@1371
 41424
+
mgl@1371
 41425
+void bfd_dont_truncate_arname
mgl@1371
 41426
+  (bfd *abfd, const char *filename, char *hdr);
mgl@1371
 41427
+void bfd_bsd_truncate_arname
mgl@1371
 41428
+  (bfd *abfd, const char *filename, char *hdr);
mgl@1371
 41429
+void bfd_gnu_truncate_arname
mgl@1371
 41430
+  (bfd *abfd, const char *filename, char *hdr);
mgl@1371
 41431
+
mgl@1371
 41432
+bfd_boolean bsd_write_armap
mgl@1371
 41433
+  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
mgl@1371
 41434
+   int stridx);
mgl@1371
 41435
+
mgl@1371
 41436
+bfd_boolean coff_write_armap
mgl@1371
 41437
+  (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
mgl@1371
 41438
+   int stridx);
mgl@1371
 41439
+
mgl@1371
 41440
+extern void *_bfd_generic_read_ar_hdr
mgl@1371
 41441
+  (bfd *);
mgl@1371
 41442
+extern void _bfd_ar_spacepad
mgl@1371
 41443
+  (char *, size_t, const char *, long);
mgl@1371
 41444
+
mgl@1371
 41445
+extern void *_bfd_generic_read_ar_hdr_mag
mgl@1371
 41446
+  (bfd *, const char *);
mgl@1371
 41447
+
mgl@1371
 41448
+bfd * bfd_generic_openr_next_archived_file
mgl@1371
 41449
+  (bfd *archive, bfd *last_file);
mgl@1371
 41450
+
mgl@1371
 41451
+int bfd_generic_stat_arch_elt
mgl@1371
 41452
+  (bfd *, struct stat *);
mgl@1371
 41453
+
mgl@1371
 41454
+#define _bfd_read_ar_hdr(abfd) \
mgl@1371
 41455
+  BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
mgl@1371
 41456
+
mgl@1371
 41457
+/* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
mgl@1371
 41458
+   BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
mgl@1371
 41459
+
mgl@1371
 41460
+#define _bfd_generic_close_and_cleanup bfd_true
mgl@1371
 41461
+#define _bfd_generic_bfd_free_cached_info bfd_true
mgl@1371
 41462
+extern bfd_boolean _bfd_generic_new_section_hook
mgl@1371
 41463
+  (bfd *, asection *);
mgl@1371
 41464
+extern bfd_boolean _bfd_generic_get_section_contents
mgl@1371
 41465
+  (bfd *, asection *, void *, file_ptr, bfd_size_type);
mgl@1371
 41466
+extern bfd_boolean _bfd_generic_get_section_contents_in_window
mgl@1371
 41467
+  (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
mgl@1371
 41468
+
mgl@1371
 41469
+/* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
mgl@1371
 41470
+   BFD_JUMP_TABLE_COPY (_bfd_generic).  */
mgl@1371
 41471
+
mgl@1371
 41472
+#define _bfd_generic_bfd_copy_private_bfd_data \
mgl@1371
 41473
+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
mgl@1371
 41474
+#define _bfd_generic_bfd_merge_private_bfd_data \
mgl@1371
 41475
+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
mgl@1371
 41476
+#define _bfd_generic_bfd_set_private_flags \
mgl@1371
 41477
+  ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
mgl@1371
 41478
+#define _bfd_generic_bfd_copy_private_section_data \
mgl@1371
 41479
+  ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
mgl@1371
 41480
+#define _bfd_generic_bfd_copy_private_symbol_data \
mgl@1371
 41481
+  ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
mgl@1371
 41482
+#define _bfd_generic_bfd_copy_private_header_data \
mgl@1371
 41483
+  ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
mgl@1371
 41484
+#define _bfd_generic_bfd_print_private_bfd_data \
mgl@1371
 41485
+  ((bfd_boolean (*) (bfd *, void *)) bfd_true)
mgl@1371
 41486
+
mgl@1371
 41487
+extern bfd_boolean _bfd_generic_init_private_section_data
mgl@1371
 41488
+  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
mgl@1371
 41489
+
mgl@1371
 41490
+/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
mgl@1371
 41491
+   support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
mgl@1371
 41492
+
mgl@1371
 41493
+extern char *_bfd_nocore_core_file_failing_command
mgl@1371
 41494
+  (bfd *);
mgl@1371
 41495
+extern int _bfd_nocore_core_file_failing_signal
mgl@1371
 41496
+  (bfd *);
mgl@1371
 41497
+extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
mgl@1371
 41498
+  (bfd *, bfd *);
mgl@1371
 41499
+
mgl@1371
 41500
+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
mgl@1371
 41501
+   file support.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive).  */
mgl@1371
 41502
+
mgl@1371
 41503
+#define _bfd_noarchive_slurp_armap bfd_false
mgl@1371
 41504
+#define _bfd_noarchive_slurp_extended_name_table bfd_false
mgl@1371
 41505
+#define _bfd_noarchive_construct_extended_name_table \
mgl@1371
 41506
+  ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
mgl@1371
 41507
+   bfd_false)
mgl@1371
 41508
+#define _bfd_noarchive_truncate_arname \
mgl@1371
 41509
+  ((void (*) (bfd *, const char *, char *)) bfd_void)
mgl@1371
 41510
+#define _bfd_noarchive_write_armap \
mgl@1371
 41511
+  ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
mgl@1371
 41512
+   bfd_false)
mgl@1371
 41513
+#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
mgl@1371
 41514
+#define _bfd_noarchive_openr_next_archived_file \
mgl@1371
 41515
+  ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
mgl@1371
 41516
+#define _bfd_noarchive_get_elt_at_index \
mgl@1371
 41517
+  ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
mgl@1371
 41518
+#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
mgl@1371
 41519
+#define _bfd_noarchive_update_armap_timestamp bfd_false
mgl@1371
 41520
+
mgl@1371
 41521
+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
mgl@1371
 41522
+   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd).  */
mgl@1371
 41523
+
mgl@1371
 41524
+#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
mgl@1371
 41525
+#define _bfd_archive_bsd_slurp_extended_name_table \
mgl@1371
 41526
+  _bfd_slurp_extended_name_table
mgl@1371
 41527
+extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
mgl@1371
 41528
+  (bfd *, char **, bfd_size_type *, const char **);
mgl@1371
 41529
+#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
mgl@1371
 41530
+#define _bfd_archive_bsd_write_armap bsd_write_armap
mgl@1371
 41531
+#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
mgl@1371
 41532
+#define _bfd_archive_bsd_openr_next_archived_file \
mgl@1371
 41533
+  bfd_generic_openr_next_archived_file
mgl@1371
 41534
+#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
mgl@1371
 41535
+#define _bfd_archive_bsd_generic_stat_arch_elt \
mgl@1371
 41536
+  bfd_generic_stat_arch_elt
mgl@1371
 41537
+extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
mgl@1371
 41538
+  (bfd *);
mgl@1371
 41539
+
mgl@1371
 41540
+/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
mgl@1371
 41541
+   archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff).  */
mgl@1371
 41542
+
mgl@1371
 41543
+#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
mgl@1371
 41544
+#define _bfd_archive_coff_slurp_extended_name_table \
mgl@1371
 41545
+  _bfd_slurp_extended_name_table
mgl@1371
 41546
+extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
mgl@1371
 41547
+  (bfd *, char **, bfd_size_type *, const char **);
mgl@1371
 41548
+#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
mgl@1371
 41549
+#define _bfd_archive_coff_write_armap coff_write_armap
mgl@1371
 41550
+#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
mgl@1371
 41551
+#define _bfd_archive_coff_openr_next_archived_file \
mgl@1371
 41552
+  bfd_generic_openr_next_archived_file
mgl@1371
 41553
+#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
mgl@1371
 41554
+#define _bfd_archive_coff_generic_stat_arch_elt \
mgl@1371
 41555
+  bfd_generic_stat_arch_elt
mgl@1371
 41556
+#define _bfd_archive_coff_update_armap_timestamp bfd_true
mgl@1371
 41557
+
mgl@1371
 41558
+/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
mgl@1371
 41559
+   support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
mgl@1371
 41560
+
mgl@1371
 41561
+#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
mgl@1371
 41562
+#define _bfd_nosymbols_canonicalize_symtab \
mgl@1371
 41563
+  ((long (*) (bfd *, asymbol **)) _bfd_n1)
mgl@1371
 41564
+#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
mgl@1371
 41565
+#define _bfd_nosymbols_print_symbol \
mgl@1371
 41566
+  ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
mgl@1371
 41567
+#define _bfd_nosymbols_get_symbol_info \
mgl@1371
 41568
+  ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
mgl@1371
 41569
+#define _bfd_nosymbols_bfd_is_local_label_name \
mgl@1371
 41570
+  ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
mgl@1371
 41571
+#define _bfd_nosymbols_bfd_is_target_special_symbol \
mgl@1371
 41572
+  ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
mgl@1371
 41573
+#define _bfd_nosymbols_get_lineno \
mgl@1371
 41574
+  ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
mgl@1371
 41575
+#define _bfd_nosymbols_find_nearest_line \
mgl@1371
 41576
+  ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
mgl@1371
 41577
+		     const char **, unsigned int *)) \
mgl@1371
 41578
+   bfd_false)
mgl@1371
 41579
+#define _bfd_nosymbols_find_inliner_info \
mgl@1371
 41580
+  ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
mgl@1371
 41581
+   bfd_false)
mgl@1371
 41582
+#define _bfd_nosymbols_bfd_make_debug_symbol \
mgl@1371
 41583
+  ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
mgl@1371
 41584
+#define _bfd_nosymbols_read_minisymbols \
mgl@1371
 41585
+  ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
mgl@1371
 41586
+#define _bfd_nosymbols_minisymbol_to_symbol \
mgl@1371
 41587
+  ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
mgl@1371
 41588
+   bfd_nullvoidptr)
mgl@1371
 41589
+
mgl@1371
 41590
+/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
mgl@1371
 41591
+   support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
mgl@1371
 41592
+
mgl@1371
 41593
+extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
mgl@1371
 41594
+extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
mgl@1371
 41595
+					      arelent **, asymbol **);
mgl@1371
 41596
+#define _bfd_norelocs_bfd_reloc_type_lookup \
mgl@1371
 41597
+  ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
mgl@1371
 41598
+#define _bfd_norelocs_bfd_reloc_name_lookup \
mgl@1371
 41599
+  ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
mgl@1371
 41600
+
mgl@1371
 41601
+/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
mgl@1371
 41602
+   be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
mgl@1371
 41603
+
mgl@1371
 41604
+#define _bfd_nowrite_set_arch_mach \
mgl@1371
 41605
+  ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
mgl@1371
 41606
+   bfd_false)
mgl@1371
 41607
+#define _bfd_nowrite_set_section_contents \
mgl@1371
 41608
+  ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
mgl@1371
 41609
+   bfd_false)
mgl@1371
 41610
+
mgl@1371
 41611
+/* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
mgl@1371
 41612
+   BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
mgl@1371
 41613
+
mgl@1371
 41614
+#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
mgl@1371
 41615
+extern bfd_boolean _bfd_generic_set_section_contents
mgl@1371
 41616
+  (bfd *, asection *, const void *, file_ptr, bfd_size_type);
mgl@1371
 41617
+
mgl@1371
 41618
+/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
mgl@1371
 41619
+   support linking.  Use BFD_JUMP_TABLE_LINK (_bfd_nolink).  */
mgl@1371
 41620
+
mgl@1371
 41621
+#define _bfd_nolink_sizeof_headers \
mgl@1371
 41622
+  ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
mgl@1371
 41623
+#define _bfd_nolink_bfd_get_relocated_section_contents \
mgl@1371
 41624
+  ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
mgl@1371
 41625
+		   bfd_byte *, bfd_boolean, asymbol **)) \
mgl@1371
 41626
+   bfd_nullvoidptr)
mgl@1371
 41627
+#define _bfd_nolink_bfd_relax_section \
mgl@1371
 41628
+  ((bfd_boolean (*) \
mgl@1371
 41629
+    (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
mgl@1371
 41630
+   bfd_false)
mgl@1371
 41631
+#define _bfd_nolink_bfd_gc_sections \
mgl@1371
 41632
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
mgl@1371
 41633
+   bfd_false)
mgl@1371
 41634
+#define _bfd_nolink_bfd_merge_sections \
mgl@1371
 41635
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
mgl@1371
 41636
+   bfd_false)
mgl@1371
 41637
+#define _bfd_nolink_bfd_is_group_section \
mgl@1371
 41638
+  ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
mgl@1371
 41639
+   bfd_false)
mgl@1371
 41640
+#define _bfd_nolink_bfd_discard_group \
mgl@1371
 41641
+  ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
mgl@1371
 41642
+   bfd_false)
mgl@1371
 41643
+#define _bfd_nolink_bfd_link_hash_table_create \
mgl@1371
 41644
+  ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
mgl@1371
 41645
+#define _bfd_nolink_bfd_link_hash_table_free \
mgl@1371
 41646
+  ((void (*) (struct bfd_link_hash_table *)) bfd_void)
mgl@1371
 41647
+#define _bfd_nolink_bfd_link_add_symbols \
mgl@1371
 41648
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
mgl@1371
 41649
+#define _bfd_nolink_bfd_link_just_syms \
mgl@1371
 41650
+  ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
mgl@1371
 41651
+#define _bfd_nolink_bfd_final_link \
mgl@1371
 41652
+  ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
mgl@1371
 41653
+#define _bfd_nolink_bfd_link_split_section \
mgl@1371
 41654
+  ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
mgl@1371
 41655
+#define _bfd_nolink_section_already_linked \
mgl@1371
 41656
+  ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
mgl@1371
 41657
+
mgl@1371
 41658
+/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
mgl@1371
 41659
+   have dynamic symbols or relocs.  Use BFD_JUMP_TABLE_DYNAMIC
mgl@1371
 41660
+   (_bfd_nodynamic).  */
mgl@1371
 41661
+
mgl@1371
 41662
+#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
mgl@1371
 41663
+#define _bfd_nodynamic_canonicalize_dynamic_symtab \
mgl@1371
 41664
+  ((long (*) (bfd *, asymbol **)) _bfd_n1)
mgl@1371
 41665
+#define _bfd_nodynamic_get_synthetic_symtab \
mgl@1371
 41666
+  ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
mgl@1371
 41667
+#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
mgl@1371
 41668
+#define _bfd_nodynamic_canonicalize_dynamic_reloc \
mgl@1371
 41669
+  ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
mgl@1371
 41670
+
mgl@1371
 41671
+/* Generic routine to determine of the given symbol is a local
mgl@1371
 41672
+   label.  */
mgl@1371
 41673
+extern bfd_boolean bfd_generic_is_local_label_name
mgl@1371
 41674
+  (bfd *, const char *);
mgl@1371
 41675
+
mgl@1371
 41676
+/* Generic minisymbol routines.  */
mgl@1371
 41677
+extern long _bfd_generic_read_minisymbols
mgl@1371
 41678
+  (bfd *, bfd_boolean, void **, unsigned int *);
mgl@1371
 41679
+extern asymbol *_bfd_generic_minisymbol_to_symbol
mgl@1371
 41680
+  (bfd *, bfd_boolean, const void *, asymbol *);
mgl@1371
 41681
+
mgl@1371
 41682
+/* Find the nearest line using .stab/.stabstr sections.  */
mgl@1371
 41683
+extern bfd_boolean _bfd_stab_section_find_nearest_line
mgl@1371
 41684
+  (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
mgl@1371
 41685
+   const char **, const char **, unsigned int *, void **);
mgl@1371
 41686
+
mgl@1371
 41687
+/* Find the nearest line using DWARF 1 debugging information.  */
mgl@1371
 41688
+extern bfd_boolean _bfd_dwarf1_find_nearest_line
mgl@1371
 41689
+  (bfd *, asection *, asymbol **, bfd_vma, const char **,
mgl@1371
 41690
+   const char **, unsigned int *);
mgl@1371
 41691
+
mgl@1371
 41692
+/* Find the nearest line using DWARF 2 debugging information.  */
mgl@1371
 41693
+extern bfd_boolean _bfd_dwarf2_find_nearest_line
mgl@1371
 41694
+  (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
mgl@1371
 41695
+   unsigned int *, unsigned int, void **);
mgl@1371
 41696
+
mgl@1371
 41697
+/* Find the line using DWARF 2 debugging information.  */
mgl@1371
 41698
+extern bfd_boolean _bfd_dwarf2_find_line
mgl@1371
 41699
+  (bfd *, asymbol **, asymbol *, const char **,
mgl@1371
 41700
+   unsigned int *, unsigned int, void **);
mgl@1371
 41701
+
mgl@1371
 41702
+bfd_boolean _bfd_generic_find_line
mgl@1371
 41703
+  (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
mgl@1371
 41704
+
mgl@1371
 41705
+/* Find inliner info after calling bfd_find_nearest_line. */
mgl@1371
 41706
+extern bfd_boolean _bfd_dwarf2_find_inliner_info
mgl@1371
 41707
+  (bfd *, const char **, const char **, unsigned int *, void **);
mgl@1371
 41708
+  
mgl@1371
 41709
+/* Create a new section entry.  */
mgl@1371
 41710
+extern struct bfd_hash_entry *bfd_section_hash_newfunc
mgl@1371
 41711
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 41712
+
mgl@1371
 41713
+/* A routine to create entries for a bfd_link_hash_table.  */
mgl@1371
 41714
+extern struct bfd_hash_entry *_bfd_link_hash_newfunc
mgl@1371
 41715
+  (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
mgl@1371
 41716
+   const char *string);
mgl@1371
 41717
+
mgl@1371
 41718
+/* Initialize a bfd_link_hash_table.  */
mgl@1371
 41719
+extern bfd_boolean _bfd_link_hash_table_init
mgl@1371
 41720
+  (struct bfd_link_hash_table *, bfd *,
mgl@1371
 41721
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 41722
+			       struct bfd_hash_table *,
mgl@1371
 41723
+			       const char *),
mgl@1371
 41724
+   unsigned int);
mgl@1371
 41725
+
mgl@1371
 41726
+/* Generic link hash table creation routine.  */
mgl@1371
 41727
+extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
mgl@1371
 41728
+  (bfd *);
mgl@1371
 41729
+
mgl@1371
 41730
+/* Generic link hash table destruction routine.  */
mgl@1371
 41731
+extern void _bfd_generic_link_hash_table_free
mgl@1371
 41732
+  (struct bfd_link_hash_table *);
mgl@1371
 41733
+
mgl@1371
 41734
+/* Generic add symbol routine.  */
mgl@1371
 41735
+extern bfd_boolean _bfd_generic_link_add_symbols
mgl@1371
 41736
+  (bfd *, struct bfd_link_info *);
mgl@1371
 41737
+
mgl@1371
 41738
+/* Generic add symbol routine.  This version is used by targets for
mgl@1371
 41739
+   which the linker must collect constructors and destructors by name,
mgl@1371
 41740
+   as the collect2 program does.  */
mgl@1371
 41741
+extern bfd_boolean _bfd_generic_link_add_symbols_collect
mgl@1371
 41742
+  (bfd *, struct bfd_link_info *);
mgl@1371
 41743
+
mgl@1371
 41744
+/* Generic archive add symbol routine.  */
mgl@1371
 41745
+extern bfd_boolean _bfd_generic_link_add_archive_symbols
mgl@1371
 41746
+  (bfd *, struct bfd_link_info *,
mgl@1371
 41747
+   bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
mgl@1371
 41748
+
mgl@1371
 41749
+/* Forward declaration to avoid prototype errors.  */
mgl@1371
 41750
+typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
mgl@1371
 41751
+
mgl@1371
 41752
+/* Generic routine to add a single symbol.  */
mgl@1371
 41753
+extern bfd_boolean _bfd_generic_link_add_one_symbol
mgl@1371
 41754
+  (struct bfd_link_info *, bfd *, const char *name, flagword,
mgl@1371
 41755
+   asection *, bfd_vma, const char *, bfd_boolean copy,
mgl@1371
 41756
+   bfd_boolean constructor, struct bfd_link_hash_entry **);
mgl@1371
 41757
+
mgl@1371
 41758
+/* Generic routine to mark section as supplying symbols only.  */
mgl@1371
 41759
+extern void _bfd_generic_link_just_syms
mgl@1371
 41760
+  (asection *, struct bfd_link_info *);
mgl@1371
 41761
+
mgl@1371
 41762
+/* Generic link routine.  */
mgl@1371
 41763
+extern bfd_boolean _bfd_generic_final_link
mgl@1371
 41764
+  (bfd *, struct bfd_link_info *);
mgl@1371
 41765
+
mgl@1371
 41766
+extern bfd_boolean _bfd_generic_link_split_section
mgl@1371
 41767
+  (bfd *, struct bfd_section *);
mgl@1371
 41768
+
mgl@1371
 41769
+extern void _bfd_generic_section_already_linked
mgl@1371
 41770
+  (bfd *, struct bfd_section *, struct bfd_link_info *);
mgl@1371
 41771
+
mgl@1371
 41772
+/* Generic reloc_link_order processing routine.  */
mgl@1371
 41773
+extern bfd_boolean _bfd_generic_reloc_link_order
mgl@1371
 41774
+  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
mgl@1371
 41775
+
mgl@1371
 41776
+/* Default link order processing routine.  */
mgl@1371
 41777
+extern bfd_boolean _bfd_default_link_order
mgl@1371
 41778
+  (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
mgl@1371
 41779
+
mgl@1371
 41780
+/* Count the number of reloc entries in a link order list.  */
mgl@1371
 41781
+extern unsigned int _bfd_count_link_order_relocs
mgl@1371
 41782
+  (struct bfd_link_order *);
mgl@1371
 41783
+
mgl@1371
 41784
+/* Final link relocation routine.  */
mgl@1371
 41785
+extern bfd_reloc_status_type _bfd_final_link_relocate
mgl@1371
 41786
+  (reloc_howto_type *, bfd *, asection *, bfd_byte *,
mgl@1371
 41787
+   bfd_vma, bfd_vma, bfd_vma);
mgl@1371
 41788
+
mgl@1371
 41789
+/* Relocate a particular location by a howto and a value.  */
mgl@1371
 41790
+extern bfd_reloc_status_type _bfd_relocate_contents
mgl@1371
 41791
+  (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
mgl@1371
 41792
+
mgl@1371
 41793
+/* Clear a given location using a given howto.  */
mgl@1371
 41794
+extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
mgl@1371
 41795
+				 bfd_byte *location);
mgl@1371
 41796
+
mgl@1371
 41797
+/* Link stabs in sections in the first pass.  */
mgl@1371
 41798
+
mgl@1371
 41799
+extern bfd_boolean _bfd_link_section_stabs
mgl@1371
 41800
+  (bfd *, struct stab_info *, asection *, asection *, void **,
mgl@1371
 41801
+   bfd_size_type *);
mgl@1371
 41802
+
mgl@1371
 41803
+/* Eliminate stabs for discarded functions and symbols.  */
mgl@1371
 41804
+extern bfd_boolean _bfd_discard_section_stabs
mgl@1371
 41805
+  (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
mgl@1371
 41806
+
mgl@1371
 41807
+/* Write out the .stab section when linking stabs in sections.  */
mgl@1371
 41808
+
mgl@1371
 41809
+extern bfd_boolean _bfd_write_section_stabs
mgl@1371
 41810
+  (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
mgl@1371
 41811
+
mgl@1371
 41812
+/* Write out the .stabstr string table when linking stabs in sections.  */
mgl@1371
 41813
+
mgl@1371
 41814
+extern bfd_boolean _bfd_write_stab_strings
mgl@1371
 41815
+  (bfd *, struct stab_info *);
mgl@1371
 41816
+
mgl@1371
 41817
+/* Find an offset within a .stab section when linking stabs in
mgl@1371
 41818
+   sections.  */
mgl@1371
 41819
+
mgl@1371
 41820
+extern bfd_vma _bfd_stab_section_offset
mgl@1371
 41821
+  (asection *, void *, bfd_vma);
mgl@1371
 41822
+
mgl@1371
 41823
+/* Register a SEC_MERGE section as a candidate for merging.  */
mgl@1371
 41824
+
mgl@1371
 41825
+extern bfd_boolean _bfd_add_merge_section
mgl@1371
 41826
+  (bfd *, void **, asection *, void **);
mgl@1371
 41827
+
mgl@1371
 41828
+/* Attempt to merge SEC_MERGE sections.  */
mgl@1371
 41829
+
mgl@1371
 41830
+extern bfd_boolean _bfd_merge_sections
mgl@1371
 41831
+  (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
mgl@1371
 41832
+
mgl@1371
 41833
+/* Write out a merged section.  */
mgl@1371
 41834
+
mgl@1371
 41835
+extern bfd_boolean _bfd_write_merged_section
mgl@1371
 41836
+  (bfd *, asection *, void *);
mgl@1371
 41837
+
mgl@1371
 41838
+/* Find an offset within a modified SEC_MERGE section.  */
mgl@1371
 41839
+
mgl@1371
 41840
+extern bfd_vma _bfd_merged_section_offset
mgl@1371
 41841
+  (bfd *, asection **, void *, bfd_vma);
mgl@1371
 41842
+
mgl@1371
 41843
+/* Create a string table.  */
mgl@1371
 41844
+extern struct bfd_strtab_hash *_bfd_stringtab_init
mgl@1371
 41845
+  (void);
mgl@1371
 41846
+
mgl@1371
 41847
+/* Create an XCOFF .debug section style string table.  */
mgl@1371
 41848
+extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
mgl@1371
 41849
+  (void);
mgl@1371
 41850
+
mgl@1371
 41851
+/* Free a string table.  */
mgl@1371
 41852
+extern void _bfd_stringtab_free
mgl@1371
 41853
+  (struct bfd_strtab_hash *);
mgl@1371
 41854
+
mgl@1371
 41855
+/* Get the size of a string table.  */
mgl@1371
 41856
+extern bfd_size_type _bfd_stringtab_size
mgl@1371
 41857
+  (struct bfd_strtab_hash *);
mgl@1371
 41858
+
mgl@1371
 41859
+/* Add a string to a string table.  */
mgl@1371
 41860
+extern bfd_size_type _bfd_stringtab_add
mgl@1371
 41861
+  (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
mgl@1371
 41862
+
mgl@1371
 41863
+/* Write out a string table.  */
mgl@1371
 41864
+extern bfd_boolean _bfd_stringtab_emit
mgl@1371
 41865
+  (bfd *, struct bfd_strtab_hash *);
mgl@1371
 41866
+
mgl@1371
 41867
+/* Check that endianness of input and output file match.  */
mgl@1371
 41868
+extern bfd_boolean _bfd_generic_verify_endian_match
mgl@1371
 41869
+  (bfd *, bfd *);
mgl@1371
 41870
+
mgl@1371
 41871
+/* Macros to tell if bfds are read or write enabled.
mgl@1371
 41872
+
mgl@1371
 41873
+   Note that bfds open for read may be scribbled into if the fd passed
mgl@1371
 41874
+   to bfd_fdopenr is actually open both for read and write
mgl@1371
 41875
+   simultaneously.  However an output bfd will never be open for
mgl@1371
 41876
+   read.  Therefore sometimes you want to check bfd_read_p or
mgl@1371
 41877
+   !bfd_read_p, and only sometimes bfd_write_p.
mgl@1371
 41878
+*/
mgl@1371
 41879
+
mgl@1371
 41880
+#define	bfd_read_p(abfd) \
mgl@1371
 41881
+  ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
mgl@1371
 41882
+#define	bfd_write_p(abfd) \
mgl@1371
 41883
+  ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
mgl@1371
 41884
+
mgl@1371
 41885
+void bfd_assert
mgl@1371
 41886
+  (const char*,int);
mgl@1371
 41887
+
mgl@1371
 41888
+#define BFD_ASSERT(x) \
mgl@1371
 41889
+  do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
mgl@1371
 41890
+
mgl@1371
 41891
+#define BFD_FAIL() \
mgl@1371
 41892
+  do { bfd_assert(__FILE__,__LINE__); } while (0)
mgl@1371
 41893
+
mgl@1371
 41894
+extern void _bfd_abort
mgl@1371
 41895
+  (const char *, int, const char *) ATTRIBUTE_NORETURN;
mgl@1371
 41896
+
mgl@1371
 41897
+/* if gcc >= 2.6, we can give a function name, too */
mgl@1371
 41898
+#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
mgl@1371
 41899
+#define __PRETTY_FUNCTION__  ((char *) NULL)
mgl@1371
 41900
+#endif
mgl@1371
 41901
+
mgl@1371
 41902
+#undef abort
mgl@1371
 41903
+#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
mgl@1371
 41904
+
mgl@1371
 41905
+/* Manipulate a system FILE but using BFD's "file_ptr", rather than
mgl@1371
 41906
+   the system "off_t" or "off64_t", as the offset.  */
mgl@1371
 41907
+extern file_ptr real_ftell (FILE *file);
mgl@1371
 41908
+extern int real_fseek (FILE *file, file_ptr offset, int whence);
mgl@1371
 41909
+extern FILE *real_fopen (const char *filename, const char *modes);
mgl@1371
 41910
+
mgl@1371
 41911
+/* List of supported target vectors, and the default vector (if
mgl@1371
 41912
+   bfd_default_vector[0] is NULL, there is no default).  */
mgl@1371
 41913
+extern const bfd_target * const *bfd_target_vector;
mgl@1371
 41914
+extern const bfd_target *bfd_default_vector[];
mgl@1371
 41915
+
mgl@1371
 41916
+/* List of associated target vectors.  */
mgl@1371
 41917
+extern const bfd_target * const *bfd_associated_vector;
mgl@1371
 41918
+
mgl@1371
 41919
+/* Functions shared by the ECOFF and MIPS ELF backends, which have no
mgl@1371
 41920
+   other common header files.  */
mgl@1371
 41921
+
mgl@1371
 41922
+#if defined(__STDC__) || defined(ALMOST_STDC)
mgl@1371
 41923
+struct ecoff_find_line;
mgl@1371
 41924
+#endif
mgl@1371
 41925
+
mgl@1371
 41926
+extern bfd_boolean _bfd_ecoff_locate_line
mgl@1371
 41927
+  (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
mgl@1371
 41928
+   const struct ecoff_debug_swap * const, struct ecoff_find_line *,
mgl@1371
 41929
+   const char **, const char **, unsigned int *);
mgl@1371
 41930
+extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
mgl@1371
 41931
+  (void *, bfd_byte *);
mgl@1371
 41932
+extern bfd_boolean _bfd_ecoff_get_accumulated_sym
mgl@1371
 41933
+  (void *, bfd_byte *);
mgl@1371
 41934
+extern bfd_boolean _bfd_ecoff_get_accumulated_ss
mgl@1371
 41935
+  (void *, bfd_byte *);
mgl@1371
 41936
+
mgl@1371
 41937
+extern bfd_vma _bfd_get_gp_value
mgl@1371
 41938
+  (bfd *);
mgl@1371
 41939
+extern void _bfd_set_gp_value
mgl@1371
 41940
+  (bfd *, bfd_vma);
mgl@1371
 41941
+
mgl@1371
 41942
+/* Function shared by the COFF and ELF SH backends, which have no
mgl@1371
 41943
+   other common header files.  */
mgl@1371
 41944
+
mgl@1371
 41945
+#ifndef _bfd_sh_align_load_span
mgl@1371
 41946
+extern bfd_boolean _bfd_sh_align_load_span
mgl@1371
 41947
+  (bfd *, asection *, bfd_byte *,
mgl@1371
 41948
+   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
mgl@1371
 41949
+   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
mgl@1371
 41950
+#endif
mgl@1371
 41951
+
mgl@1371
 41952
+/* This is the shape of the elements inside the already_linked hash
mgl@1371
 41953
+   table. It maps a name onto a list of already_linked elements with
mgl@1371
 41954
+   the same name.  */
mgl@1371
 41955
+
mgl@1371
 41956
+struct bfd_section_already_linked_hash_entry
mgl@1371
 41957
+{
mgl@1371
 41958
+  struct bfd_hash_entry root;
mgl@1371
 41959
+  struct bfd_section_already_linked *entry;
mgl@1371
 41960
+};
mgl@1371
 41961
+
mgl@1371
 41962
+struct bfd_section_already_linked
mgl@1371
 41963
+{
mgl@1371
 41964
+  struct bfd_section_already_linked *next;
mgl@1371
 41965
+  asection *sec;
mgl@1371
 41966
+};
mgl@1371
 41967
+
mgl@1371
 41968
+extern struct bfd_section_already_linked_hash_entry *
mgl@1371
 41969
+  bfd_section_already_linked_table_lookup (const char *);
mgl@1371
 41970
+extern bfd_boolean bfd_section_already_linked_table_insert
mgl@1371
 41971
+  (struct bfd_section_already_linked_hash_entry *, asection *);
mgl@1371
 41972
+extern void bfd_section_already_linked_table_traverse
mgl@1371
 41973
+  (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
mgl@1371
 41974
+		    void *), void *);
mgl@1371
 41975
+
mgl@1371
 41976
+extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
mgl@1371
 41977
+extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
mgl@1371
 41978
+
mgl@1371
 41979
+/* Extracted from init.c.  */
mgl@1371
 41980
+/* Extracted from libbfd.c.  */
mgl@1371
 41981
+bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
mgl@1371
 41982
+
mgl@1371
 41983
+unsigned int bfd_log2 (bfd_vma x);
mgl@1371
 41984
+
mgl@1371
 41985
+/* Extracted from bfdio.c.  */
mgl@1371
 41986
+struct bfd_iovec
mgl@1371
 41987
+{
mgl@1371
 41988
+  /* To avoid problems with macros, a "b" rather than "f"
mgl@1371
 41989
+     prefix is prepended to each method name.  */
mgl@1371
 41990
+  /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
mgl@1371
 41991
+     bytes starting at PTR.  Return the number of bytes actually
mgl@1371
 41992
+     transfered (a read past end-of-file returns less than NBYTES),
mgl@1371
 41993
+     or -1 (setting <<bfd_error>>) if an error occurs.  */
mgl@1371
 41994
+  file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
mgl@1371
 41995
+  file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
mgl@1371
 41996
+                      file_ptr nbytes);
mgl@1371
 41997
+  /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
mgl@1371
 41998
+     if an error occurs.  */
mgl@1371
 41999
+  file_ptr (*btell) (struct bfd *abfd);
mgl@1371
 42000
+  /* For the following, on successful completion a value of 0 is returned.
mgl@1371
 42001
+     Otherwise, a value of -1 is returned (and  <<bfd_error>> is set).  */
mgl@1371
 42002
+  int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
mgl@1371
 42003
+  int (*bclose) (struct bfd *abfd);
mgl@1371
 42004
+  int (*bflush) (struct bfd *abfd);
mgl@1371
 42005
+  int (*bstat) (struct bfd *abfd, struct stat *sb);
mgl@1371
 42006
+};
mgl@1371
 42007
+/* Extracted from bfdwin.c.  */
mgl@1371
 42008
+struct _bfd_window_internal {
mgl@1371
 42009
+  struct _bfd_window_internal *next;
mgl@1371
 42010
+  void *data;
mgl@1371
 42011
+  bfd_size_type size;
mgl@1371
 42012
+  int refcount : 31;           /* should be enough...  */
mgl@1371
 42013
+  unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
mgl@1371
 42014
+};
mgl@1371
 42015
+/* Extracted from cache.c.  */
mgl@1371
 42016
+bfd_boolean bfd_cache_init (bfd *abfd);
mgl@1371
 42017
+
mgl@1371
 42018
+bfd_boolean bfd_cache_close (bfd *abfd);
mgl@1371
 42019
+
mgl@1371
 42020
+FILE* bfd_open_file (bfd *abfd);
mgl@1371
 42021
+
mgl@1371
 42022
+/* Extracted from reloc.c.  */
mgl@1371
 42023
+#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
mgl@1371
 42024
+
mgl@1371
 42025
+static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
mgl@1371
 42026
+
mgl@1371
 42027
+  "BFD_RELOC_64",
mgl@1371
 42028
+  "BFD_RELOC_32",
mgl@1371
 42029
+  "BFD_RELOC_26",
mgl@1371
 42030
+  "BFD_RELOC_24",
mgl@1371
 42031
+  "BFD_RELOC_16",
mgl@1371
 42032
+  "BFD_RELOC_14",
mgl@1371
 42033
+  "BFD_RELOC_8",
mgl@1371
 42034
+  "BFD_RELOC_64_PCREL",
mgl@1371
 42035
+  "BFD_RELOC_32_PCREL",
mgl@1371
 42036
+  "BFD_RELOC_24_PCREL",
mgl@1371
 42037
+  "BFD_RELOC_16_PCREL",
mgl@1371
 42038
+  "BFD_RELOC_12_PCREL",
mgl@1371
 42039
+  "BFD_RELOC_8_PCREL",
mgl@1371
 42040
+  "BFD_RELOC_32_SECREL",
mgl@1371
 42041
+  "BFD_RELOC_32_GOT_PCREL",
mgl@1371
 42042
+  "BFD_RELOC_16_GOT_PCREL",
mgl@1371
 42043
+  "BFD_RELOC_8_GOT_PCREL",
mgl@1371
 42044
+  "BFD_RELOC_32_GOTOFF",
mgl@1371
 42045
+  "BFD_RELOC_16_GOTOFF",
mgl@1371
 42046
+  "BFD_RELOC_LO16_GOTOFF",
mgl@1371
 42047
+  "BFD_RELOC_HI16_GOTOFF",
mgl@1371
 42048
+  "BFD_RELOC_HI16_S_GOTOFF",
mgl@1371
 42049
+  "BFD_RELOC_8_GOTOFF",
mgl@1371
 42050
+  "BFD_RELOC_64_PLT_PCREL",
mgl@1371
 42051
+  "BFD_RELOC_32_PLT_PCREL",
mgl@1371
 42052
+  "BFD_RELOC_24_PLT_PCREL",
mgl@1371
 42053
+  "BFD_RELOC_16_PLT_PCREL",
mgl@1371
 42054
+  "BFD_RELOC_8_PLT_PCREL",
mgl@1371
 42055
+  "BFD_RELOC_64_PLTOFF",
mgl@1371
 42056
+  "BFD_RELOC_32_PLTOFF",
mgl@1371
 42057
+  "BFD_RELOC_16_PLTOFF",
mgl@1371
 42058
+  "BFD_RELOC_LO16_PLTOFF",
mgl@1371
 42059
+  "BFD_RELOC_HI16_PLTOFF",
mgl@1371
 42060
+  "BFD_RELOC_HI16_S_PLTOFF",
mgl@1371
 42061
+  "BFD_RELOC_8_PLTOFF",
mgl@1371
 42062
+  "BFD_RELOC_68K_GLOB_DAT",
mgl@1371
 42063
+  "BFD_RELOC_68K_JMP_SLOT",
mgl@1371
 42064
+  "BFD_RELOC_68K_RELATIVE",
mgl@1371
 42065
+  "BFD_RELOC_32_BASEREL",
mgl@1371
 42066
+  "BFD_RELOC_16_BASEREL",
mgl@1371
 42067
+  "BFD_RELOC_LO16_BASEREL",
mgl@1371
 42068
+  "BFD_RELOC_HI16_BASEREL",
mgl@1371
 42069
+  "BFD_RELOC_HI16_S_BASEREL",
mgl@1371
 42070
+  "BFD_RELOC_8_BASEREL",
mgl@1371
 42071
+  "BFD_RELOC_RVA",
mgl@1371
 42072
+  "BFD_RELOC_8_FFnn",
mgl@1371
 42073
+  "BFD_RELOC_32_PCREL_S2",
mgl@1371
 42074
+  "BFD_RELOC_16_PCREL_S2",
mgl@1371
 42075
+  "BFD_RELOC_23_PCREL_S2",
mgl@1371
 42076
+  "BFD_RELOC_HI22",
mgl@1371
 42077
+  "BFD_RELOC_LO10",
mgl@1371
 42078
+  "BFD_RELOC_GPREL16",
mgl@1371
 42079
+  "BFD_RELOC_GPREL32",
mgl@1371
 42080
+  "BFD_RELOC_I960_CALLJ",
mgl@1371
 42081
+  "BFD_RELOC_NONE",
mgl@1371
 42082
+  "BFD_RELOC_SPARC_WDISP22",
mgl@1371
 42083
+  "BFD_RELOC_SPARC22",
mgl@1371
 42084
+  "BFD_RELOC_SPARC13",
mgl@1371
 42085
+  "BFD_RELOC_SPARC_GOT10",
mgl@1371
 42086
+  "BFD_RELOC_SPARC_GOT13",
mgl@1371
 42087
+  "BFD_RELOC_SPARC_GOT22",
mgl@1371
 42088
+  "BFD_RELOC_SPARC_PC10",
mgl@1371
 42089
+  "BFD_RELOC_SPARC_PC22",
mgl@1371
 42090
+  "BFD_RELOC_SPARC_WPLT30",
mgl@1371
 42091
+  "BFD_RELOC_SPARC_COPY",
mgl@1371
 42092
+  "BFD_RELOC_SPARC_GLOB_DAT",
mgl@1371
 42093
+  "BFD_RELOC_SPARC_JMP_SLOT",
mgl@1371
 42094
+  "BFD_RELOC_SPARC_RELATIVE",
mgl@1371
 42095
+  "BFD_RELOC_SPARC_UA16",
mgl@1371
 42096
+  "BFD_RELOC_SPARC_UA32",
mgl@1371
 42097
+  "BFD_RELOC_SPARC_UA64",
mgl@1371
 42098
+  "BFD_RELOC_SPARC_BASE13",
mgl@1371
 42099
+  "BFD_RELOC_SPARC_BASE22",
mgl@1371
 42100
+  "BFD_RELOC_SPARC_10",
mgl@1371
 42101
+  "BFD_RELOC_SPARC_11",
mgl@1371
 42102
+  "BFD_RELOC_SPARC_OLO10",
mgl@1371
 42103
+  "BFD_RELOC_SPARC_HH22",
mgl@1371
 42104
+  "BFD_RELOC_SPARC_HM10",
mgl@1371
 42105
+  "BFD_RELOC_SPARC_LM22",
mgl@1371
 42106
+  "BFD_RELOC_SPARC_PC_HH22",
mgl@1371
 42107
+  "BFD_RELOC_SPARC_PC_HM10",
mgl@1371
 42108
+  "BFD_RELOC_SPARC_PC_LM22",
mgl@1371
 42109
+  "BFD_RELOC_SPARC_WDISP16",
mgl@1371
 42110
+  "BFD_RELOC_SPARC_WDISP19",
mgl@1371
 42111
+  "BFD_RELOC_SPARC_7",
mgl@1371
 42112
+  "BFD_RELOC_SPARC_6",
mgl@1371
 42113
+  "BFD_RELOC_SPARC_5",
mgl@1371
 42114
+  "BFD_RELOC_SPARC_PLT32",
mgl@1371
 42115
+  "BFD_RELOC_SPARC_PLT64",
mgl@1371
 42116
+  "BFD_RELOC_SPARC_HIX22",
mgl@1371
 42117
+  "BFD_RELOC_SPARC_LOX10",
mgl@1371
 42118
+  "BFD_RELOC_SPARC_H44",
mgl@1371
 42119
+  "BFD_RELOC_SPARC_M44",
mgl@1371
 42120
+  "BFD_RELOC_SPARC_L44",
mgl@1371
 42121
+  "BFD_RELOC_SPARC_REGISTER",
mgl@1371
 42122
+  "BFD_RELOC_SPARC_REV32",
mgl@1371
 42123
+  "BFD_RELOC_SPARC_TLS_GD_HI22",
mgl@1371
 42124
+  "BFD_RELOC_SPARC_TLS_GD_LO10",
mgl@1371
 42125
+  "BFD_RELOC_SPARC_TLS_GD_ADD",
mgl@1371
 42126
+  "BFD_RELOC_SPARC_TLS_GD_CALL",
mgl@1371
 42127
+  "BFD_RELOC_SPARC_TLS_LDM_HI22",
mgl@1371
 42128
+  "BFD_RELOC_SPARC_TLS_LDM_LO10",
mgl@1371
 42129
+  "BFD_RELOC_SPARC_TLS_LDM_ADD",
mgl@1371
 42130
+  "BFD_RELOC_SPARC_TLS_LDM_CALL",
mgl@1371
 42131
+  "BFD_RELOC_SPARC_TLS_LDO_HIX22",
mgl@1371
 42132
+  "BFD_RELOC_SPARC_TLS_LDO_LOX10",
mgl@1371
 42133
+  "BFD_RELOC_SPARC_TLS_LDO_ADD",
mgl@1371
 42134
+  "BFD_RELOC_SPARC_TLS_IE_HI22",
mgl@1371
 42135
+  "BFD_RELOC_SPARC_TLS_IE_LO10",
mgl@1371
 42136
+  "BFD_RELOC_SPARC_TLS_IE_LD",
mgl@1371
 42137
+  "BFD_RELOC_SPARC_TLS_IE_LDX",
mgl@1371
 42138
+  "BFD_RELOC_SPARC_TLS_IE_ADD",
mgl@1371
 42139
+  "BFD_RELOC_SPARC_TLS_LE_HIX22",
mgl@1371
 42140
+  "BFD_RELOC_SPARC_TLS_LE_LOX10",
mgl@1371
 42141
+  "BFD_RELOC_SPARC_TLS_DTPMOD32",
mgl@1371
 42142
+  "BFD_RELOC_SPARC_TLS_DTPMOD64",
mgl@1371
 42143
+  "BFD_RELOC_SPARC_TLS_DTPOFF32",
mgl@1371
 42144
+  "BFD_RELOC_SPARC_TLS_DTPOFF64",
mgl@1371
 42145
+  "BFD_RELOC_SPARC_TLS_TPOFF32",
mgl@1371
 42146
+  "BFD_RELOC_SPARC_TLS_TPOFF64",
mgl@1371
 42147
+  "BFD_RELOC_SPU_IMM7",
mgl@1371
 42148
+  "BFD_RELOC_SPU_IMM8",
mgl@1371
 42149
+  "BFD_RELOC_SPU_IMM10",
mgl@1371
 42150
+  "BFD_RELOC_SPU_IMM10W",
mgl@1371
 42151
+  "BFD_RELOC_SPU_IMM16",
mgl@1371
 42152
+  "BFD_RELOC_SPU_IMM16W",
mgl@1371
 42153
+  "BFD_RELOC_SPU_IMM18",
mgl@1371
 42154
+  "BFD_RELOC_SPU_PCREL9a",
mgl@1371
 42155
+  "BFD_RELOC_SPU_PCREL9b",
mgl@1371
 42156
+  "BFD_RELOC_SPU_PCREL16",
mgl@1371
 42157
+  "BFD_RELOC_SPU_LO16",
mgl@1371
 42158
+  "BFD_RELOC_SPU_HI16",
mgl@1371
 42159
+  "BFD_RELOC_SPU_PPU32",
mgl@1371
 42160
+  "BFD_RELOC_SPU_PPU64",
mgl@1371
 42161
+  "BFD_RELOC_ALPHA_GPDISP_HI16",
mgl@1371
 42162
+  "BFD_RELOC_ALPHA_GPDISP_LO16",
mgl@1371
 42163
+  "BFD_RELOC_ALPHA_GPDISP",
mgl@1371
 42164
+  "BFD_RELOC_ALPHA_LITERAL",
mgl@1371
 42165
+  "BFD_RELOC_ALPHA_ELF_LITERAL",
mgl@1371
 42166
+  "BFD_RELOC_ALPHA_LITUSE",
mgl@1371
 42167
+  "BFD_RELOC_ALPHA_HINT",
mgl@1371
 42168
+  "BFD_RELOC_ALPHA_LINKAGE",
mgl@1371
 42169
+  "BFD_RELOC_ALPHA_CODEADDR",
mgl@1371
 42170
+  "BFD_RELOC_ALPHA_GPREL_HI16",
mgl@1371
 42171
+  "BFD_RELOC_ALPHA_GPREL_LO16",
mgl@1371
 42172
+  "BFD_RELOC_ALPHA_BRSGP",
mgl@1371
 42173
+  "BFD_RELOC_ALPHA_TLSGD",
mgl@1371
 42174
+  "BFD_RELOC_ALPHA_TLSLDM",
mgl@1371
 42175
+  "BFD_RELOC_ALPHA_DTPMOD64",
mgl@1371
 42176
+  "BFD_RELOC_ALPHA_GOTDTPREL16",
mgl@1371
 42177
+  "BFD_RELOC_ALPHA_DTPREL64",
mgl@1371
 42178
+  "BFD_RELOC_ALPHA_DTPREL_HI16",
mgl@1371
 42179
+  "BFD_RELOC_ALPHA_DTPREL_LO16",
mgl@1371
 42180
+  "BFD_RELOC_ALPHA_DTPREL16",
mgl@1371
 42181
+  "BFD_RELOC_ALPHA_GOTTPREL16",
mgl@1371
 42182
+  "BFD_RELOC_ALPHA_TPREL64",
mgl@1371
 42183
+  "BFD_RELOC_ALPHA_TPREL_HI16",
mgl@1371
 42184
+  "BFD_RELOC_ALPHA_TPREL_LO16",
mgl@1371
 42185
+  "BFD_RELOC_ALPHA_TPREL16",
mgl@1371
 42186
+  "BFD_RELOC_MIPS_JMP",
mgl@1371
 42187
+  "BFD_RELOC_MIPS16_JMP",
mgl@1371
 42188
+  "BFD_RELOC_MIPS16_GPREL",
mgl@1371
 42189
+  "BFD_RELOC_HI16",
mgl@1371
 42190
+  "BFD_RELOC_HI16_S",
mgl@1371
 42191
+  "BFD_RELOC_LO16",
mgl@1371
 42192
+  "BFD_RELOC_HI16_PCREL",
mgl@1371
 42193
+  "BFD_RELOC_HI16_S_PCREL",
mgl@1371
 42194
+  "BFD_RELOC_LO16_PCREL",
mgl@1371
 42195
+  "BFD_RELOC_MIPS16_HI16",
mgl@1371
 42196
+  "BFD_RELOC_MIPS16_HI16_S",
mgl@1371
 42197
+  "BFD_RELOC_MIPS16_LO16",
mgl@1371
 42198
+  "BFD_RELOC_MIPS_LITERAL",
mgl@1371
 42199
+  "BFD_RELOC_MIPS_GOT16",
mgl@1371
 42200
+  "BFD_RELOC_MIPS_CALL16",
mgl@1371
 42201
+  "BFD_RELOC_MIPS_GOT_HI16",
mgl@1371
 42202
+  "BFD_RELOC_MIPS_GOT_LO16",
mgl@1371
 42203
+  "BFD_RELOC_MIPS_CALL_HI16",
mgl@1371
 42204
+  "BFD_RELOC_MIPS_CALL_LO16",
mgl@1371
 42205
+  "BFD_RELOC_MIPS_SUB",
mgl@1371
 42206
+  "BFD_RELOC_MIPS_GOT_PAGE",
mgl@1371
 42207
+  "BFD_RELOC_MIPS_GOT_OFST",
mgl@1371
 42208
+  "BFD_RELOC_MIPS_GOT_DISP",
mgl@1371
 42209
+  "BFD_RELOC_MIPS_SHIFT5",
mgl@1371
 42210
+  "BFD_RELOC_MIPS_SHIFT6",
mgl@1371
 42211
+  "BFD_RELOC_MIPS_INSERT_A",
mgl@1371
 42212
+  "BFD_RELOC_MIPS_INSERT_B",
mgl@1371
 42213
+  "BFD_RELOC_MIPS_DELETE",
mgl@1371
 42214
+  "BFD_RELOC_MIPS_HIGHEST",
mgl@1371
 42215
+  "BFD_RELOC_MIPS_HIGHER",
mgl@1371
 42216
+  "BFD_RELOC_MIPS_SCN_DISP",
mgl@1371
 42217
+  "BFD_RELOC_MIPS_REL16",
mgl@1371
 42218
+  "BFD_RELOC_MIPS_RELGOT",
mgl@1371
 42219
+  "BFD_RELOC_MIPS_JALR",
mgl@1371
 42220
+  "BFD_RELOC_MIPS_TLS_DTPMOD32",
mgl@1371
 42221
+  "BFD_RELOC_MIPS_TLS_DTPREL32",
mgl@1371
 42222
+  "BFD_RELOC_MIPS_TLS_DTPMOD64",
mgl@1371
 42223
+  "BFD_RELOC_MIPS_TLS_DTPREL64",
mgl@1371
 42224
+  "BFD_RELOC_MIPS_TLS_GD",
mgl@1371
 42225
+  "BFD_RELOC_MIPS_TLS_LDM",
mgl@1371
 42226
+  "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
mgl@1371
 42227
+  "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
mgl@1371
 42228
+  "BFD_RELOC_MIPS_TLS_GOTTPREL",
mgl@1371
 42229
+  "BFD_RELOC_MIPS_TLS_TPREL32",
mgl@1371
 42230
+  "BFD_RELOC_MIPS_TLS_TPREL64",
mgl@1371
 42231
+  "BFD_RELOC_MIPS_TLS_TPREL_HI16",
mgl@1371
 42232
+  "BFD_RELOC_MIPS_TLS_TPREL_LO16",
mgl@1371
 42233
+
mgl@1371
 42234
+  "BFD_RELOC_MIPS_COPY",
mgl@1371
 42235
+  "BFD_RELOC_MIPS_JUMP_SLOT",
mgl@1371
 42236
+
mgl@1371
 42237
+  "BFD_RELOC_FRV_LABEL16",
mgl@1371
 42238
+  "BFD_RELOC_FRV_LABEL24",
mgl@1371
 42239
+  "BFD_RELOC_FRV_LO16",
mgl@1371
 42240
+  "BFD_RELOC_FRV_HI16",
mgl@1371
 42241
+  "BFD_RELOC_FRV_GPREL12",
mgl@1371
 42242
+  "BFD_RELOC_FRV_GPRELU12",
mgl@1371
 42243
+  "BFD_RELOC_FRV_GPREL32",
mgl@1371
 42244
+  "BFD_RELOC_FRV_GPRELHI",
mgl@1371
 42245
+  "BFD_RELOC_FRV_GPRELLO",
mgl@1371
 42246
+  "BFD_RELOC_FRV_GOT12",
mgl@1371
 42247
+  "BFD_RELOC_FRV_GOTHI",
mgl@1371
 42248
+  "BFD_RELOC_FRV_GOTLO",
mgl@1371
 42249
+  "BFD_RELOC_FRV_FUNCDESC",
mgl@1371
 42250
+  "BFD_RELOC_FRV_FUNCDESC_GOT12",
mgl@1371
 42251
+  "BFD_RELOC_FRV_FUNCDESC_GOTHI",
mgl@1371
 42252
+  "BFD_RELOC_FRV_FUNCDESC_GOTLO",
mgl@1371
 42253
+  "BFD_RELOC_FRV_FUNCDESC_VALUE",
mgl@1371
 42254
+  "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
mgl@1371
 42255
+  "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
mgl@1371
 42256
+  "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
mgl@1371
 42257
+  "BFD_RELOC_FRV_GOTOFF12",
mgl@1371
 42258
+  "BFD_RELOC_FRV_GOTOFFHI",
mgl@1371
 42259
+  "BFD_RELOC_FRV_GOTOFFLO",
mgl@1371
 42260
+  "BFD_RELOC_FRV_GETTLSOFF",
mgl@1371
 42261
+  "BFD_RELOC_FRV_TLSDESC_VALUE",
mgl@1371
 42262
+  "BFD_RELOC_FRV_GOTTLSDESC12",
mgl@1371
 42263
+  "BFD_RELOC_FRV_GOTTLSDESCHI",
mgl@1371
 42264
+  "BFD_RELOC_FRV_GOTTLSDESCLO",
mgl@1371
 42265
+  "BFD_RELOC_FRV_TLSMOFF12",
mgl@1371
 42266
+  "BFD_RELOC_FRV_TLSMOFFHI",
mgl@1371
 42267
+  "BFD_RELOC_FRV_TLSMOFFLO",
mgl@1371
 42268
+  "BFD_RELOC_FRV_GOTTLSOFF12",
mgl@1371
 42269
+  "BFD_RELOC_FRV_GOTTLSOFFHI",
mgl@1371
 42270
+  "BFD_RELOC_FRV_GOTTLSOFFLO",
mgl@1371
 42271
+  "BFD_RELOC_FRV_TLSOFF",
mgl@1371
 42272
+  "BFD_RELOC_FRV_TLSDESC_RELAX",
mgl@1371
 42273
+  "BFD_RELOC_FRV_GETTLSOFF_RELAX",
mgl@1371
 42274
+  "BFD_RELOC_FRV_TLSOFF_RELAX",
mgl@1371
 42275
+  "BFD_RELOC_FRV_TLSMOFF",
mgl@1371
 42276
+
mgl@1371
 42277
+  "BFD_RELOC_MN10300_GOTOFF24",
mgl@1371
 42278
+  "BFD_RELOC_MN10300_GOT32",
mgl@1371
 42279
+  "BFD_RELOC_MN10300_GOT24",
mgl@1371
 42280
+  "BFD_RELOC_MN10300_GOT16",
mgl@1371
 42281
+  "BFD_RELOC_MN10300_COPY",
mgl@1371
 42282
+  "BFD_RELOC_MN10300_GLOB_DAT",
mgl@1371
 42283
+  "BFD_RELOC_MN10300_JMP_SLOT",
mgl@1371
 42284
+  "BFD_RELOC_MN10300_RELATIVE",
mgl@1371
 42285
+
mgl@1371
 42286
+  "BFD_RELOC_386_GOT32",
mgl@1371
 42287
+  "BFD_RELOC_386_PLT32",
mgl@1371
 42288
+  "BFD_RELOC_386_COPY",
mgl@1371
 42289
+  "BFD_RELOC_386_GLOB_DAT",
mgl@1371
 42290
+  "BFD_RELOC_386_JUMP_SLOT",
mgl@1371
 42291
+  "BFD_RELOC_386_RELATIVE",
mgl@1371
 42292
+  "BFD_RELOC_386_GOTOFF",
mgl@1371
 42293
+  "BFD_RELOC_386_GOTPC",
mgl@1371
 42294
+  "BFD_RELOC_386_TLS_TPOFF",
mgl@1371
 42295
+  "BFD_RELOC_386_TLS_IE",
mgl@1371
 42296
+  "BFD_RELOC_386_TLS_GOTIE",
mgl@1371
 42297
+  "BFD_RELOC_386_TLS_LE",
mgl@1371
 42298
+  "BFD_RELOC_386_TLS_GD",
mgl@1371
 42299
+  "BFD_RELOC_386_TLS_LDM",
mgl@1371
 42300
+  "BFD_RELOC_386_TLS_LDO_32",
mgl@1371
 42301
+  "BFD_RELOC_386_TLS_IE_32",
mgl@1371
 42302
+  "BFD_RELOC_386_TLS_LE_32",
mgl@1371
 42303
+  "BFD_RELOC_386_TLS_DTPMOD32",
mgl@1371
 42304
+  "BFD_RELOC_386_TLS_DTPOFF32",
mgl@1371
 42305
+  "BFD_RELOC_386_TLS_TPOFF32",
mgl@1371
 42306
+  "BFD_RELOC_386_TLS_GOTDESC",
mgl@1371
 42307
+  "BFD_RELOC_386_TLS_DESC_CALL",
mgl@1371
 42308
+  "BFD_RELOC_386_TLS_DESC",
mgl@1371
 42309
+  "BFD_RELOC_X86_64_GOT32",
mgl@1371
 42310
+  "BFD_RELOC_X86_64_PLT32",
mgl@1371
 42311
+  "BFD_RELOC_X86_64_COPY",
mgl@1371
 42312
+  "BFD_RELOC_X86_64_GLOB_DAT",
mgl@1371
 42313
+  "BFD_RELOC_X86_64_JUMP_SLOT",
mgl@1371
 42314
+  "BFD_RELOC_X86_64_RELATIVE",
mgl@1371
 42315
+  "BFD_RELOC_X86_64_GOTPCREL",
mgl@1371
 42316
+  "BFD_RELOC_X86_64_32S",
mgl@1371
 42317
+  "BFD_RELOC_X86_64_DTPMOD64",
mgl@1371
 42318
+  "BFD_RELOC_X86_64_DTPOFF64",
mgl@1371
 42319
+  "BFD_RELOC_X86_64_TPOFF64",
mgl@1371
 42320
+  "BFD_RELOC_X86_64_TLSGD",
mgl@1371
 42321
+  "BFD_RELOC_X86_64_TLSLD",
mgl@1371
 42322
+  "BFD_RELOC_X86_64_DTPOFF32",
mgl@1371
 42323
+  "BFD_RELOC_X86_64_GOTTPOFF",
mgl@1371
 42324
+  "BFD_RELOC_X86_64_TPOFF32",
mgl@1371
 42325
+  "BFD_RELOC_X86_64_GOTOFF64",
mgl@1371
 42326
+  "BFD_RELOC_X86_64_GOTPC32",
mgl@1371
 42327
+  "BFD_RELOC_X86_64_GOT64",
mgl@1371
 42328
+  "BFD_RELOC_X86_64_GOTPCREL64",
mgl@1371
 42329
+  "BFD_RELOC_X86_64_GOTPC64",
mgl@1371
 42330
+  "BFD_RELOC_X86_64_GOTPLT64",
mgl@1371
 42331
+  "BFD_RELOC_X86_64_PLTOFF64",
mgl@1371
 42332
+  "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
mgl@1371
 42333
+  "BFD_RELOC_X86_64_TLSDESC_CALL",
mgl@1371
 42334
+  "BFD_RELOC_X86_64_TLSDESC",
mgl@1371
 42335
+  "BFD_RELOC_NS32K_IMM_8",
mgl@1371
 42336
+  "BFD_RELOC_NS32K_IMM_16",
mgl@1371
 42337
+  "BFD_RELOC_NS32K_IMM_32",
mgl@1371
 42338
+  "BFD_RELOC_NS32K_IMM_8_PCREL",
mgl@1371
 42339
+  "BFD_RELOC_NS32K_IMM_16_PCREL",
mgl@1371
 42340
+  "BFD_RELOC_NS32K_IMM_32_PCREL",
mgl@1371
 42341
+  "BFD_RELOC_NS32K_DISP_8",
mgl@1371
 42342
+  "BFD_RELOC_NS32K_DISP_16",
mgl@1371
 42343
+  "BFD_RELOC_NS32K_DISP_32",
mgl@1371
 42344
+  "BFD_RELOC_NS32K_DISP_8_PCREL",
mgl@1371
 42345
+  "BFD_RELOC_NS32K_DISP_16_PCREL",
mgl@1371
 42346
+  "BFD_RELOC_NS32K_DISP_32_PCREL",
mgl@1371
 42347
+  "BFD_RELOC_PDP11_DISP_8_PCREL",
mgl@1371
 42348
+  "BFD_RELOC_PDP11_DISP_6_PCREL",
mgl@1371
 42349
+  "BFD_RELOC_PJ_CODE_HI16",
mgl@1371
 42350
+  "BFD_RELOC_PJ_CODE_LO16",
mgl@1371
 42351
+  "BFD_RELOC_PJ_CODE_DIR16",
mgl@1371
 42352
+  "BFD_RELOC_PJ_CODE_DIR32",
mgl@1371
 42353
+  "BFD_RELOC_PJ_CODE_REL16",
mgl@1371
 42354
+  "BFD_RELOC_PJ_CODE_REL32",
mgl@1371
 42355
+  "BFD_RELOC_PPC_B26",
mgl@1371
 42356
+  "BFD_RELOC_PPC_BA26",
mgl@1371
 42357
+  "BFD_RELOC_PPC_TOC16",
mgl@1371
 42358
+  "BFD_RELOC_PPC_B16",
mgl@1371
 42359
+  "BFD_RELOC_PPC_B16_BRTAKEN",
mgl@1371
 42360
+  "BFD_RELOC_PPC_B16_BRNTAKEN",
mgl@1371
 42361
+  "BFD_RELOC_PPC_BA16",
mgl@1371
 42362
+  "BFD_RELOC_PPC_BA16_BRTAKEN",
mgl@1371
 42363
+  "BFD_RELOC_PPC_BA16_BRNTAKEN",
mgl@1371
 42364
+  "BFD_RELOC_PPC_COPY",
mgl@1371
 42365
+  "BFD_RELOC_PPC_GLOB_DAT",
mgl@1371
 42366
+  "BFD_RELOC_PPC_JMP_SLOT",
mgl@1371
 42367
+  "BFD_RELOC_PPC_RELATIVE",
mgl@1371
 42368
+  "BFD_RELOC_PPC_LOCAL24PC",
mgl@1371
 42369
+  "BFD_RELOC_PPC_EMB_NADDR32",
mgl@1371
 42370
+  "BFD_RELOC_PPC_EMB_NADDR16",
mgl@1371
 42371
+  "BFD_RELOC_PPC_EMB_NADDR16_LO",
mgl@1371
 42372
+  "BFD_RELOC_PPC_EMB_NADDR16_HI",
mgl@1371
 42373
+  "BFD_RELOC_PPC_EMB_NADDR16_HA",
mgl@1371
 42374
+  "BFD_RELOC_PPC_EMB_SDAI16",
mgl@1371
 42375
+  "BFD_RELOC_PPC_EMB_SDA2I16",
mgl@1371
 42376
+  "BFD_RELOC_PPC_EMB_SDA2REL",
mgl@1371
 42377
+  "BFD_RELOC_PPC_EMB_SDA21",
mgl@1371
 42378
+  "BFD_RELOC_PPC_EMB_MRKREF",
mgl@1371
 42379
+  "BFD_RELOC_PPC_EMB_RELSEC16",
mgl@1371
 42380
+  "BFD_RELOC_PPC_EMB_RELST_LO",
mgl@1371
 42381
+  "BFD_RELOC_PPC_EMB_RELST_HI",
mgl@1371
 42382
+  "BFD_RELOC_PPC_EMB_RELST_HA",
mgl@1371
 42383
+  "BFD_RELOC_PPC_EMB_BIT_FLD",
mgl@1371
 42384
+  "BFD_RELOC_PPC_EMB_RELSDA",
mgl@1371
 42385
+  "BFD_RELOC_PPC64_HIGHER",
mgl@1371
 42386
+  "BFD_RELOC_PPC64_HIGHER_S",
mgl@1371
 42387
+  "BFD_RELOC_PPC64_HIGHEST",
mgl@1371
 42388
+  "BFD_RELOC_PPC64_HIGHEST_S",
mgl@1371
 42389
+  "BFD_RELOC_PPC64_TOC16_LO",
mgl@1371
 42390
+  "BFD_RELOC_PPC64_TOC16_HI",
mgl@1371
 42391
+  "BFD_RELOC_PPC64_TOC16_HA",
mgl@1371
 42392
+  "BFD_RELOC_PPC64_TOC",
mgl@1371
 42393
+  "BFD_RELOC_PPC64_PLTGOT16",
mgl@1371
 42394
+  "BFD_RELOC_PPC64_PLTGOT16_LO",
mgl@1371
 42395
+  "BFD_RELOC_PPC64_PLTGOT16_HI",
mgl@1371
 42396
+  "BFD_RELOC_PPC64_PLTGOT16_HA",
mgl@1371
 42397
+  "BFD_RELOC_PPC64_ADDR16_DS",
mgl@1371
 42398
+  "BFD_RELOC_PPC64_ADDR16_LO_DS",
mgl@1371
 42399
+  "BFD_RELOC_PPC64_GOT16_DS",
mgl@1371
 42400
+  "BFD_RELOC_PPC64_GOT16_LO_DS",
mgl@1371
 42401
+  "BFD_RELOC_PPC64_PLT16_LO_DS",
mgl@1371
 42402
+  "BFD_RELOC_PPC64_SECTOFF_DS",
mgl@1371
 42403
+  "BFD_RELOC_PPC64_SECTOFF_LO_DS",
mgl@1371
 42404
+  "BFD_RELOC_PPC64_TOC16_DS",
mgl@1371
 42405
+  "BFD_RELOC_PPC64_TOC16_LO_DS",
mgl@1371
 42406
+  "BFD_RELOC_PPC64_PLTGOT16_DS",
mgl@1371
 42407
+  "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
mgl@1371
 42408
+  "BFD_RELOC_PPC_TLS",
mgl@1371
 42409
+  "BFD_RELOC_PPC_DTPMOD",
mgl@1371
 42410
+  "BFD_RELOC_PPC_TPREL16",
mgl@1371
 42411
+  "BFD_RELOC_PPC_TPREL16_LO",
mgl@1371
 42412
+  "BFD_RELOC_PPC_TPREL16_HI",
mgl@1371
 42413
+  "BFD_RELOC_PPC_TPREL16_HA",
mgl@1371
 42414
+  "BFD_RELOC_PPC_TPREL",
mgl@1371
 42415
+  "BFD_RELOC_PPC_DTPREL16",
mgl@1371
 42416
+  "BFD_RELOC_PPC_DTPREL16_LO",
mgl@1371
 42417
+  "BFD_RELOC_PPC_DTPREL16_HI",
mgl@1371
 42418
+  "BFD_RELOC_PPC_DTPREL16_HA",
mgl@1371
 42419
+  "BFD_RELOC_PPC_DTPREL",
mgl@1371
 42420
+  "BFD_RELOC_PPC_GOT_TLSGD16",
mgl@1371
 42421
+  "BFD_RELOC_PPC_GOT_TLSGD16_LO",
mgl@1371
 42422
+  "BFD_RELOC_PPC_GOT_TLSGD16_HI",
mgl@1371
 42423
+  "BFD_RELOC_PPC_GOT_TLSGD16_HA",
mgl@1371
 42424
+  "BFD_RELOC_PPC_GOT_TLSLD16",
mgl@1371
 42425
+  "BFD_RELOC_PPC_GOT_TLSLD16_LO",
mgl@1371
 42426
+  "BFD_RELOC_PPC_GOT_TLSLD16_HI",
mgl@1371
 42427
+  "BFD_RELOC_PPC_GOT_TLSLD16_HA",
mgl@1371
 42428
+  "BFD_RELOC_PPC_GOT_TPREL16",
mgl@1371
 42429
+  "BFD_RELOC_PPC_GOT_TPREL16_LO",
mgl@1371
 42430
+  "BFD_RELOC_PPC_GOT_TPREL16_HI",
mgl@1371
 42431
+  "BFD_RELOC_PPC_GOT_TPREL16_HA",
mgl@1371
 42432
+  "BFD_RELOC_PPC_GOT_DTPREL16",
mgl@1371
 42433
+  "BFD_RELOC_PPC_GOT_DTPREL16_LO",
mgl@1371
 42434
+  "BFD_RELOC_PPC_GOT_DTPREL16_HI",
mgl@1371
 42435
+  "BFD_RELOC_PPC_GOT_DTPREL16_HA",
mgl@1371
 42436
+  "BFD_RELOC_PPC64_TPREL16_DS",
mgl@1371
 42437
+  "BFD_RELOC_PPC64_TPREL16_LO_DS",
mgl@1371
 42438
+  "BFD_RELOC_PPC64_TPREL16_HIGHER",
mgl@1371
 42439
+  "BFD_RELOC_PPC64_TPREL16_HIGHERA",
mgl@1371
 42440
+  "BFD_RELOC_PPC64_TPREL16_HIGHEST",
mgl@1371
 42441
+  "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
mgl@1371
 42442
+  "BFD_RELOC_PPC64_DTPREL16_DS",
mgl@1371
 42443
+  "BFD_RELOC_PPC64_DTPREL16_LO_DS",
mgl@1371
 42444
+  "BFD_RELOC_PPC64_DTPREL16_HIGHER",
mgl@1371
 42445
+  "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
mgl@1371
 42446
+  "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
mgl@1371
 42447
+  "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
mgl@1371
 42448
+  "BFD_RELOC_I370_D12",
mgl@1371
 42449
+  "BFD_RELOC_CTOR",
mgl@1371
 42450
+  "BFD_RELOC_ARM_PCREL_BRANCH",
mgl@1371
 42451
+  "BFD_RELOC_ARM_PCREL_BLX",
mgl@1371
 42452
+  "BFD_RELOC_THUMB_PCREL_BLX",
mgl@1371
 42453
+  "BFD_RELOC_ARM_PCREL_CALL",
mgl@1371
 42454
+  "BFD_RELOC_ARM_PCREL_JUMP",
mgl@1371
 42455
+  "BFD_RELOC_THUMB_PCREL_BRANCH7",
mgl@1371
 42456
+  "BFD_RELOC_THUMB_PCREL_BRANCH9",
mgl@1371
 42457
+  "BFD_RELOC_THUMB_PCREL_BRANCH12",
mgl@1371
 42458
+  "BFD_RELOC_THUMB_PCREL_BRANCH20",
mgl@1371
 42459
+  "BFD_RELOC_THUMB_PCREL_BRANCH23",
mgl@1371
 42460
+  "BFD_RELOC_THUMB_PCREL_BRANCH25",
mgl@1371
 42461
+  "BFD_RELOC_ARM_OFFSET_IMM",
mgl@1371
 42462
+  "BFD_RELOC_ARM_THUMB_OFFSET",
mgl@1371
 42463
+  "BFD_RELOC_ARM_TARGET1",
mgl@1371
 42464
+  "BFD_RELOC_ARM_ROSEGREL32",
mgl@1371
 42465
+  "BFD_RELOC_ARM_SBREL32",
mgl@1371
 42466
+  "BFD_RELOC_ARM_TARGET2",
mgl@1371
 42467
+  "BFD_RELOC_ARM_PREL31",
mgl@1371
 42468
+  "BFD_RELOC_ARM_MOVW",
mgl@1371
 42469
+  "BFD_RELOC_ARM_MOVT",
mgl@1371
 42470
+  "BFD_RELOC_ARM_MOVW_PCREL",
mgl@1371
 42471
+  "BFD_RELOC_ARM_MOVT_PCREL",
mgl@1371
 42472
+  "BFD_RELOC_ARM_THUMB_MOVW",
mgl@1371
 42473
+  "BFD_RELOC_ARM_THUMB_MOVT",
mgl@1371
 42474
+  "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
mgl@1371
 42475
+  "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
mgl@1371
 42476
+  "BFD_RELOC_ARM_JUMP_SLOT",
mgl@1371
 42477
+  "BFD_RELOC_ARM_GLOB_DAT",
mgl@1371
 42478
+  "BFD_RELOC_ARM_GOT32",
mgl@1371
 42479
+  "BFD_RELOC_ARM_PLT32",
mgl@1371
 42480
+  "BFD_RELOC_ARM_RELATIVE",
mgl@1371
 42481
+  "BFD_RELOC_ARM_GOTOFF",
mgl@1371
 42482
+  "BFD_RELOC_ARM_GOTPC",
mgl@1371
 42483
+  "BFD_RELOC_ARM_TLS_GD32",
mgl@1371
 42484
+  "BFD_RELOC_ARM_TLS_LDO32",
mgl@1371
 42485
+  "BFD_RELOC_ARM_TLS_LDM32",
mgl@1371
 42486
+  "BFD_RELOC_ARM_TLS_DTPOFF32",
mgl@1371
 42487
+  "BFD_RELOC_ARM_TLS_DTPMOD32",
mgl@1371
 42488
+  "BFD_RELOC_ARM_TLS_TPOFF32",
mgl@1371
 42489
+  "BFD_RELOC_ARM_TLS_IE32",
mgl@1371
 42490
+  "BFD_RELOC_ARM_TLS_LE32",
mgl@1371
 42491
+  "BFD_RELOC_ARM_ALU_PC_G0_NC",
mgl@1371
 42492
+  "BFD_RELOC_ARM_ALU_PC_G0",
mgl@1371
 42493
+  "BFD_RELOC_ARM_ALU_PC_G1_NC",
mgl@1371
 42494
+  "BFD_RELOC_ARM_ALU_PC_G1",
mgl@1371
 42495
+  "BFD_RELOC_ARM_ALU_PC_G2",
mgl@1371
 42496
+  "BFD_RELOC_ARM_LDR_PC_G0",
mgl@1371
 42497
+  "BFD_RELOC_ARM_LDR_PC_G1",
mgl@1371
 42498
+  "BFD_RELOC_ARM_LDR_PC_G2",
mgl@1371
 42499
+  "BFD_RELOC_ARM_LDRS_PC_G0",
mgl@1371
 42500
+  "BFD_RELOC_ARM_LDRS_PC_G1",
mgl@1371
 42501
+  "BFD_RELOC_ARM_LDRS_PC_G2",
mgl@1371
 42502
+  "BFD_RELOC_ARM_LDC_PC_G0",
mgl@1371
 42503
+  "BFD_RELOC_ARM_LDC_PC_G1",
mgl@1371
 42504
+  "BFD_RELOC_ARM_LDC_PC_G2",
mgl@1371
 42505
+  "BFD_RELOC_ARM_ALU_SB_G0_NC",
mgl@1371
 42506
+  "BFD_RELOC_ARM_ALU_SB_G0",
mgl@1371
 42507
+  "BFD_RELOC_ARM_ALU_SB_G1_NC",
mgl@1371
 42508
+  "BFD_RELOC_ARM_ALU_SB_G1",
mgl@1371
 42509
+  "BFD_RELOC_ARM_ALU_SB_G2",
mgl@1371
 42510
+  "BFD_RELOC_ARM_LDR_SB_G0",
mgl@1371
 42511
+  "BFD_RELOC_ARM_LDR_SB_G1",
mgl@1371
 42512
+  "BFD_RELOC_ARM_LDR_SB_G2",
mgl@1371
 42513
+  "BFD_RELOC_ARM_LDRS_SB_G0",
mgl@1371
 42514
+  "BFD_RELOC_ARM_LDRS_SB_G1",
mgl@1371
 42515
+  "BFD_RELOC_ARM_LDRS_SB_G2",
mgl@1371
 42516
+  "BFD_RELOC_ARM_LDC_SB_G0",
mgl@1371
 42517
+  "BFD_RELOC_ARM_LDC_SB_G1",
mgl@1371
 42518
+  "BFD_RELOC_ARM_LDC_SB_G2",
mgl@1371
 42519
+  "BFD_RELOC_ARM_IMMEDIATE",
mgl@1371
 42520
+  "BFD_RELOC_ARM_ADRL_IMMEDIATE",
mgl@1371
 42521
+  "BFD_RELOC_ARM_T32_IMMEDIATE",
mgl@1371
 42522
+  "BFD_RELOC_ARM_T32_ADD_IMM",
mgl@1371
 42523
+  "BFD_RELOC_ARM_T32_IMM12",
mgl@1371
 42524
+  "BFD_RELOC_ARM_T32_ADD_PC12",
mgl@1371
 42525
+  "BFD_RELOC_ARM_SHIFT_IMM",
mgl@1371
 42526
+  "BFD_RELOC_ARM_SMC",
mgl@1371
 42527
+  "BFD_RELOC_ARM_SWI",
mgl@1371
 42528
+  "BFD_RELOC_ARM_MULTI",
mgl@1371
 42529
+  "BFD_RELOC_ARM_CP_OFF_IMM",
mgl@1371
 42530
+  "BFD_RELOC_ARM_CP_OFF_IMM_S2",
mgl@1371
 42531
+  "BFD_RELOC_ARM_T32_CP_OFF_IMM",
mgl@1371
 42532
+  "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
mgl@1371
 42533
+  "BFD_RELOC_ARM_ADR_IMM",
mgl@1371
 42534
+  "BFD_RELOC_ARM_LDR_IMM",
mgl@1371
 42535
+  "BFD_RELOC_ARM_LITERAL",
mgl@1371
 42536
+  "BFD_RELOC_ARM_IN_POOL",
mgl@1371
 42537
+  "BFD_RELOC_ARM_OFFSET_IMM8",
mgl@1371
 42538
+  "BFD_RELOC_ARM_T32_OFFSET_U8",
mgl@1371
 42539
+  "BFD_RELOC_ARM_T32_OFFSET_IMM",
mgl@1371
 42540
+  "BFD_RELOC_ARM_HWLITERAL",
mgl@1371
 42541
+  "BFD_RELOC_ARM_THUMB_ADD",
mgl@1371
 42542
+  "BFD_RELOC_ARM_THUMB_IMM",
mgl@1371
 42543
+  "BFD_RELOC_ARM_THUMB_SHIFT",
mgl@1371
 42544
+  "BFD_RELOC_SH_PCDISP8BY2",
mgl@1371
 42545
+  "BFD_RELOC_SH_PCDISP12BY2",
mgl@1371
 42546
+  "BFD_RELOC_SH_IMM3",
mgl@1371
 42547
+  "BFD_RELOC_SH_IMM3U",
mgl@1371
 42548
+  "BFD_RELOC_SH_DISP12",
mgl@1371
 42549
+  "BFD_RELOC_SH_DISP12BY2",
mgl@1371
 42550
+  "BFD_RELOC_SH_DISP12BY4",
mgl@1371
 42551
+  "BFD_RELOC_SH_DISP12BY8",
mgl@1371
 42552
+  "BFD_RELOC_SH_DISP20",
mgl@1371
 42553
+  "BFD_RELOC_SH_DISP20BY8",
mgl@1371
 42554
+  "BFD_RELOC_SH_IMM4",
mgl@1371
 42555
+  "BFD_RELOC_SH_IMM4BY2",
mgl@1371
 42556
+  "BFD_RELOC_SH_IMM4BY4",
mgl@1371
 42557
+  "BFD_RELOC_SH_IMM8",
mgl@1371
 42558
+  "BFD_RELOC_SH_IMM8BY2",
mgl@1371
 42559
+  "BFD_RELOC_SH_IMM8BY4",
mgl@1371
 42560
+  "BFD_RELOC_SH_PCRELIMM8BY2",
mgl@1371
 42561
+  "BFD_RELOC_SH_PCRELIMM8BY4",
mgl@1371
 42562
+  "BFD_RELOC_SH_SWITCH16",
mgl@1371
 42563
+  "BFD_RELOC_SH_SWITCH32",
mgl@1371
 42564
+  "BFD_RELOC_SH_USES",
mgl@1371
 42565
+  "BFD_RELOC_SH_COUNT",
mgl@1371
 42566
+  "BFD_RELOC_SH_ALIGN",
mgl@1371
 42567
+  "BFD_RELOC_SH_CODE",
mgl@1371
 42568
+  "BFD_RELOC_SH_DATA",
mgl@1371
 42569
+  "BFD_RELOC_SH_LABEL",
mgl@1371
 42570
+  "BFD_RELOC_SH_LOOP_START",
mgl@1371
 42571
+  "BFD_RELOC_SH_LOOP_END",
mgl@1371
 42572
+  "BFD_RELOC_SH_COPY",
mgl@1371
 42573
+  "BFD_RELOC_SH_GLOB_DAT",
mgl@1371
 42574
+  "BFD_RELOC_SH_JMP_SLOT",
mgl@1371
 42575
+  "BFD_RELOC_SH_RELATIVE",
mgl@1371
 42576
+  "BFD_RELOC_SH_GOTPC",
mgl@1371
 42577
+  "BFD_RELOC_SH_GOT_LOW16",
mgl@1371
 42578
+  "BFD_RELOC_SH_GOT_MEDLOW16",
mgl@1371
 42579
+  "BFD_RELOC_SH_GOT_MEDHI16",
mgl@1371
 42580
+  "BFD_RELOC_SH_GOT_HI16",
mgl@1371
 42581
+  "BFD_RELOC_SH_GOTPLT_LOW16",
mgl@1371
 42582
+  "BFD_RELOC_SH_GOTPLT_MEDLOW16",
mgl@1371
 42583
+  "BFD_RELOC_SH_GOTPLT_MEDHI16",
mgl@1371
 42584
+  "BFD_RELOC_SH_GOTPLT_HI16",
mgl@1371
 42585
+  "BFD_RELOC_SH_PLT_LOW16",
mgl@1371
 42586
+  "BFD_RELOC_SH_PLT_MEDLOW16",
mgl@1371
 42587
+  "BFD_RELOC_SH_PLT_MEDHI16",
mgl@1371
 42588
+  "BFD_RELOC_SH_PLT_HI16",
mgl@1371
 42589
+  "BFD_RELOC_SH_GOTOFF_LOW16",
mgl@1371
 42590
+  "BFD_RELOC_SH_GOTOFF_MEDLOW16",
mgl@1371
 42591
+  "BFD_RELOC_SH_GOTOFF_MEDHI16",
mgl@1371
 42592
+  "BFD_RELOC_SH_GOTOFF_HI16",
mgl@1371
 42593
+  "BFD_RELOC_SH_GOTPC_LOW16",
mgl@1371
 42594
+  "BFD_RELOC_SH_GOTPC_MEDLOW16",
mgl@1371
 42595
+  "BFD_RELOC_SH_GOTPC_MEDHI16",
mgl@1371
 42596
+  "BFD_RELOC_SH_GOTPC_HI16",
mgl@1371
 42597
+  "BFD_RELOC_SH_COPY64",
mgl@1371
 42598
+  "BFD_RELOC_SH_GLOB_DAT64",
mgl@1371
 42599
+  "BFD_RELOC_SH_JMP_SLOT64",
mgl@1371
 42600
+  "BFD_RELOC_SH_RELATIVE64",
mgl@1371
 42601
+  "BFD_RELOC_SH_GOT10BY4",
mgl@1371
 42602
+  "BFD_RELOC_SH_GOT10BY8",
mgl@1371
 42603
+  "BFD_RELOC_SH_GOTPLT10BY4",
mgl@1371
 42604
+  "BFD_RELOC_SH_GOTPLT10BY8",
mgl@1371
 42605
+  "BFD_RELOC_SH_GOTPLT32",
mgl@1371
 42606
+  "BFD_RELOC_SH_SHMEDIA_CODE",
mgl@1371
 42607
+  "BFD_RELOC_SH_IMMU5",
mgl@1371
 42608
+  "BFD_RELOC_SH_IMMS6",
mgl@1371
 42609
+  "BFD_RELOC_SH_IMMS6BY32",
mgl@1371
 42610
+  "BFD_RELOC_SH_IMMU6",
mgl@1371
 42611
+  "BFD_RELOC_SH_IMMS10",
mgl@1371
 42612
+  "BFD_RELOC_SH_IMMS10BY2",
mgl@1371
 42613
+  "BFD_RELOC_SH_IMMS10BY4",
mgl@1371
 42614
+  "BFD_RELOC_SH_IMMS10BY8",
mgl@1371
 42615
+  "BFD_RELOC_SH_IMMS16",
mgl@1371
 42616
+  "BFD_RELOC_SH_IMMU16",
mgl@1371
 42617
+  "BFD_RELOC_SH_IMM_LOW16",
mgl@1371
 42618
+  "BFD_RELOC_SH_IMM_LOW16_PCREL",
mgl@1371
 42619
+  "BFD_RELOC_SH_IMM_MEDLOW16",
mgl@1371
 42620
+  "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
mgl@1371
 42621
+  "BFD_RELOC_SH_IMM_MEDHI16",
mgl@1371
 42622
+  "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
mgl@1371
 42623
+  "BFD_RELOC_SH_IMM_HI16",
mgl@1371
 42624
+  "BFD_RELOC_SH_IMM_HI16_PCREL",
mgl@1371
 42625
+  "BFD_RELOC_SH_PT_16",
mgl@1371
 42626
+  "BFD_RELOC_SH_TLS_GD_32",
mgl@1371
 42627
+  "BFD_RELOC_SH_TLS_LD_32",
mgl@1371
 42628
+  "BFD_RELOC_SH_TLS_LDO_32",
mgl@1371
 42629
+  "BFD_RELOC_SH_TLS_IE_32",
mgl@1371
 42630
+  "BFD_RELOC_SH_TLS_LE_32",
mgl@1371
 42631
+  "BFD_RELOC_SH_TLS_DTPMOD32",
mgl@1371
 42632
+  "BFD_RELOC_SH_TLS_DTPOFF32",
mgl@1371
 42633
+  "BFD_RELOC_SH_TLS_TPOFF32",
mgl@1371
 42634
+  "BFD_RELOC_ARC_B22_PCREL",
mgl@1371
 42635
+  "BFD_RELOC_ARC_B26",
mgl@1371
 42636
+  "BFD_RELOC_BFIN_16_IMM",
mgl@1371
 42637
+  "BFD_RELOC_BFIN_16_HIGH",
mgl@1371
 42638
+  "BFD_RELOC_BFIN_4_PCREL",
mgl@1371
 42639
+  "BFD_RELOC_BFIN_5_PCREL",
mgl@1371
 42640
+  "BFD_RELOC_BFIN_16_LOW",
mgl@1371
 42641
+  "BFD_RELOC_BFIN_10_PCREL",
mgl@1371
 42642
+  "BFD_RELOC_BFIN_11_PCREL",
mgl@1371
 42643
+  "BFD_RELOC_BFIN_12_PCREL_JUMP",
mgl@1371
 42644
+  "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
mgl@1371
 42645
+  "BFD_RELOC_BFIN_24_PCREL_CALL_X",
mgl@1371
 42646
+  "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
mgl@1371
 42647
+  "BFD_RELOC_BFIN_GOT17M4",
mgl@1371
 42648
+  "BFD_RELOC_BFIN_GOTHI",
mgl@1371
 42649
+  "BFD_RELOC_BFIN_GOTLO",
mgl@1371
 42650
+  "BFD_RELOC_BFIN_FUNCDESC",
mgl@1371
 42651
+  "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
mgl@1371
 42652
+  "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
mgl@1371
 42653
+  "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
mgl@1371
 42654
+  "BFD_RELOC_BFIN_FUNCDESC_VALUE",
mgl@1371
 42655
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
mgl@1371
 42656
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
mgl@1371
 42657
+  "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
mgl@1371
 42658
+  "BFD_RELOC_BFIN_GOTOFF17M4",
mgl@1371
 42659
+  "BFD_RELOC_BFIN_GOTOFFHI",
mgl@1371
 42660
+  "BFD_RELOC_BFIN_GOTOFFLO",
mgl@1371
 42661
+  "BFD_RELOC_BFIN_GOT",
mgl@1371
 42662
+  "BFD_RELOC_BFIN_PLTPC",
mgl@1371
 42663
+  "BFD_ARELOC_BFIN_PUSH",
mgl@1371
 42664
+  "BFD_ARELOC_BFIN_CONST",
mgl@1371
 42665
+  "BFD_ARELOC_BFIN_ADD",
mgl@1371
 42666
+  "BFD_ARELOC_BFIN_SUB",
mgl@1371
 42667
+  "BFD_ARELOC_BFIN_MULT",
mgl@1371
 42668
+  "BFD_ARELOC_BFIN_DIV",
mgl@1371
 42669
+  "BFD_ARELOC_BFIN_MOD",
mgl@1371
 42670
+  "BFD_ARELOC_BFIN_LSHIFT",
mgl@1371
 42671
+  "BFD_ARELOC_BFIN_RSHIFT",
mgl@1371
 42672
+  "BFD_ARELOC_BFIN_AND",
mgl@1371
 42673
+  "BFD_ARELOC_BFIN_OR",
mgl@1371
 42674
+  "BFD_ARELOC_BFIN_XOR",
mgl@1371
 42675
+  "BFD_ARELOC_BFIN_LAND",
mgl@1371
 42676
+  "BFD_ARELOC_BFIN_LOR",
mgl@1371
 42677
+  "BFD_ARELOC_BFIN_LEN",
mgl@1371
 42678
+  "BFD_ARELOC_BFIN_NEG",
mgl@1371
 42679
+  "BFD_ARELOC_BFIN_COMP",
mgl@1371
 42680
+  "BFD_ARELOC_BFIN_PAGE",
mgl@1371
 42681
+  "BFD_ARELOC_BFIN_HWPAGE",
mgl@1371
 42682
+  "BFD_ARELOC_BFIN_ADDR",
mgl@1371
 42683
+  "BFD_RELOC_D10V_10_PCREL_R",
mgl@1371
 42684
+  "BFD_RELOC_D10V_10_PCREL_L",
mgl@1371
 42685
+  "BFD_RELOC_D10V_18",
mgl@1371
 42686
+  "BFD_RELOC_D10V_18_PCREL",
mgl@1371
 42687
+  "BFD_RELOC_D30V_6",
mgl@1371
 42688
+  "BFD_RELOC_D30V_9_PCREL",
mgl@1371
 42689
+  "BFD_RELOC_D30V_9_PCREL_R",
mgl@1371
 42690
+  "BFD_RELOC_D30V_15",
mgl@1371
 42691
+  "BFD_RELOC_D30V_15_PCREL",
mgl@1371
 42692
+  "BFD_RELOC_D30V_15_PCREL_R",
mgl@1371
 42693
+  "BFD_RELOC_D30V_21",
mgl@1371
 42694
+  "BFD_RELOC_D30V_21_PCREL",
mgl@1371
 42695
+  "BFD_RELOC_D30V_21_PCREL_R",
mgl@1371
 42696
+  "BFD_RELOC_D30V_32",
mgl@1371
 42697
+  "BFD_RELOC_D30V_32_PCREL",
mgl@1371
 42698
+  "BFD_RELOC_DLX_HI16_S",
mgl@1371
 42699
+  "BFD_RELOC_DLX_LO16",
mgl@1371
 42700
+  "BFD_RELOC_DLX_JMP26",
mgl@1371
 42701
+  "BFD_RELOC_M32C_HI8",
mgl@1371
 42702
+  "BFD_RELOC_M32C_RL_JUMP",
mgl@1371
 42703
+  "BFD_RELOC_M32C_RL_1ADDR",
mgl@1371
 42704
+  "BFD_RELOC_M32C_RL_2ADDR",
mgl@1371
 42705
+  "BFD_RELOC_M32R_24",
mgl@1371
 42706
+  "BFD_RELOC_M32R_10_PCREL",
mgl@1371
 42707
+  "BFD_RELOC_M32R_18_PCREL",
mgl@1371
 42708
+  "BFD_RELOC_M32R_26_PCREL",
mgl@1371
 42709
+  "BFD_RELOC_M32R_HI16_ULO",
mgl@1371
 42710
+  "BFD_RELOC_M32R_HI16_SLO",
mgl@1371
 42711
+  "BFD_RELOC_M32R_LO16",
mgl@1371
 42712
+  "BFD_RELOC_M32R_SDA16",
mgl@1371
 42713
+  "BFD_RELOC_M32R_GOT24",
mgl@1371
 42714
+  "BFD_RELOC_M32R_26_PLTREL",
mgl@1371
 42715
+  "BFD_RELOC_M32R_COPY",
mgl@1371
 42716
+  "BFD_RELOC_M32R_GLOB_DAT",
mgl@1371
 42717
+  "BFD_RELOC_M32R_JMP_SLOT",
mgl@1371
 42718
+  "BFD_RELOC_M32R_RELATIVE",
mgl@1371
 42719
+  "BFD_RELOC_M32R_GOTOFF",
mgl@1371
 42720
+  "BFD_RELOC_M32R_GOTOFF_HI_ULO",
mgl@1371
 42721
+  "BFD_RELOC_M32R_GOTOFF_HI_SLO",
mgl@1371
 42722
+  "BFD_RELOC_M32R_GOTOFF_LO",
mgl@1371
 42723
+  "BFD_RELOC_M32R_GOTPC24",
mgl@1371
 42724
+  "BFD_RELOC_M32R_GOT16_HI_ULO",
mgl@1371
 42725
+  "BFD_RELOC_M32R_GOT16_HI_SLO",
mgl@1371
 42726
+  "BFD_RELOC_M32R_GOT16_LO",
mgl@1371
 42727
+  "BFD_RELOC_M32R_GOTPC_HI_ULO",
mgl@1371
 42728
+  "BFD_RELOC_M32R_GOTPC_HI_SLO",
mgl@1371
 42729
+  "BFD_RELOC_M32R_GOTPC_LO",
mgl@1371
 42730
+  "BFD_RELOC_V850_9_PCREL",
mgl@1371
 42731
+  "BFD_RELOC_V850_22_PCREL",
mgl@1371
 42732
+  "BFD_RELOC_V850_SDA_16_16_OFFSET",
mgl@1371
 42733
+  "BFD_RELOC_V850_SDA_15_16_OFFSET",
mgl@1371
 42734
+  "BFD_RELOC_V850_ZDA_16_16_OFFSET",
mgl@1371
 42735
+  "BFD_RELOC_V850_ZDA_15_16_OFFSET",
mgl@1371
 42736
+  "BFD_RELOC_V850_TDA_6_8_OFFSET",
mgl@1371
 42737
+  "BFD_RELOC_V850_TDA_7_8_OFFSET",
mgl@1371
 42738
+  "BFD_RELOC_V850_TDA_7_7_OFFSET",
mgl@1371
 42739
+  "BFD_RELOC_V850_TDA_16_16_OFFSET",
mgl@1371
 42740
+  "BFD_RELOC_V850_TDA_4_5_OFFSET",
mgl@1371
 42741
+  "BFD_RELOC_V850_TDA_4_4_OFFSET",
mgl@1371
 42742
+  "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
mgl@1371
 42743
+  "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
mgl@1371
 42744
+  "BFD_RELOC_V850_CALLT_6_7_OFFSET",
mgl@1371
 42745
+  "BFD_RELOC_V850_CALLT_16_16_OFFSET",
mgl@1371
 42746
+  "BFD_RELOC_V850_LONGCALL",
mgl@1371
 42747
+  "BFD_RELOC_V850_LONGJUMP",
mgl@1371
 42748
+  "BFD_RELOC_V850_ALIGN",
mgl@1371
 42749
+  "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
mgl@1371
 42750
+  "BFD_RELOC_MN10300_32_PCREL",
mgl@1371
 42751
+  "BFD_RELOC_MN10300_16_PCREL",
mgl@1371
 42752
+  "BFD_RELOC_TIC30_LDP",
mgl@1371
 42753
+  "BFD_RELOC_TIC54X_PARTLS7",
mgl@1371
 42754
+  "BFD_RELOC_TIC54X_PARTMS9",
mgl@1371
 42755
+  "BFD_RELOC_TIC54X_23",
mgl@1371
 42756
+  "BFD_RELOC_TIC54X_16_OF_23",
mgl@1371
 42757
+  "BFD_RELOC_TIC54X_MS7_OF_23",
mgl@1371
 42758
+  "BFD_RELOC_FR30_48",
mgl@1371
 42759
+  "BFD_RELOC_FR30_20",
mgl@1371
 42760
+  "BFD_RELOC_FR30_6_IN_4",
mgl@1371
 42761
+  "BFD_RELOC_FR30_8_IN_8",
mgl@1371
 42762
+  "BFD_RELOC_FR30_9_IN_8",
mgl@1371
 42763
+  "BFD_RELOC_FR30_10_IN_8",
mgl@1371
 42764
+  "BFD_RELOC_FR30_9_PCREL",
mgl@1371
 42765
+  "BFD_RELOC_FR30_12_PCREL",
mgl@1371
 42766
+  "BFD_RELOC_MCORE_PCREL_IMM8BY4",
mgl@1371
 42767
+  "BFD_RELOC_MCORE_PCREL_IMM11BY2",
mgl@1371
 42768
+  "BFD_RELOC_MCORE_PCREL_IMM4BY2",
mgl@1371
 42769
+  "BFD_RELOC_MCORE_PCREL_32",
mgl@1371
 42770
+  "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
mgl@1371
 42771
+  "BFD_RELOC_MCORE_RVA",
mgl@1371
 42772
+  "BFD_RELOC_MEP_8",
mgl@1371
 42773
+  "BFD_RELOC_MEP_16",
mgl@1371
 42774
+  "BFD_RELOC_MEP_32",
mgl@1371
 42775
+  "BFD_RELOC_MEP_PCREL8A2",
mgl@1371
 42776
+  "BFD_RELOC_MEP_PCREL12A2",
mgl@1371
 42777
+  "BFD_RELOC_MEP_PCREL17A2",
mgl@1371
 42778
+  "BFD_RELOC_MEP_PCREL24A2",
mgl@1371
 42779
+  "BFD_RELOC_MEP_PCABS24A2",
mgl@1371
 42780
+  "BFD_RELOC_MEP_LOW16",
mgl@1371
 42781
+  "BFD_RELOC_MEP_HI16U",
mgl@1371
 42782
+  "BFD_RELOC_MEP_HI16S",
mgl@1371
 42783
+  "BFD_RELOC_MEP_GPREL",
mgl@1371
 42784
+  "BFD_RELOC_MEP_TPREL",
mgl@1371
 42785
+  "BFD_RELOC_MEP_TPREL7",
mgl@1371
 42786
+  "BFD_RELOC_MEP_TPREL7A2",
mgl@1371
 42787
+  "BFD_RELOC_MEP_TPREL7A4",
mgl@1371
 42788
+  "BFD_RELOC_MEP_UIMM24",
mgl@1371
 42789
+  "BFD_RELOC_MEP_ADDR24A4",
mgl@1371
 42790
+  "BFD_RELOC_MEP_GNU_VTINHERIT",
mgl@1371
 42791
+  "BFD_RELOC_MEP_GNU_VTENTRY",
mgl@1371
 42792
+
mgl@1371
 42793
+  "BFD_RELOC_MMIX_GETA",
mgl@1371
 42794
+  "BFD_RELOC_MMIX_GETA_1",
mgl@1371
 42795
+  "BFD_RELOC_MMIX_GETA_2",
mgl@1371
 42796
+  "BFD_RELOC_MMIX_GETA_3",
mgl@1371
 42797
+  "BFD_RELOC_MMIX_CBRANCH",
mgl@1371
 42798
+  "BFD_RELOC_MMIX_CBRANCH_J",
mgl@1371
 42799
+  "BFD_RELOC_MMIX_CBRANCH_1",
mgl@1371
 42800
+  "BFD_RELOC_MMIX_CBRANCH_2",
mgl@1371
 42801
+  "BFD_RELOC_MMIX_CBRANCH_3",
mgl@1371
 42802
+  "BFD_RELOC_MMIX_PUSHJ",
mgl@1371
 42803
+  "BFD_RELOC_MMIX_PUSHJ_1",
mgl@1371
 42804
+  "BFD_RELOC_MMIX_PUSHJ_2",
mgl@1371
 42805
+  "BFD_RELOC_MMIX_PUSHJ_3",
mgl@1371
 42806
+  "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
mgl@1371
 42807
+  "BFD_RELOC_MMIX_JMP",
mgl@1371
 42808
+  "BFD_RELOC_MMIX_JMP_1",
mgl@1371
 42809
+  "BFD_RELOC_MMIX_JMP_2",
mgl@1371
 42810
+  "BFD_RELOC_MMIX_JMP_3",
mgl@1371
 42811
+  "BFD_RELOC_MMIX_ADDR19",
mgl@1371
 42812
+  "BFD_RELOC_MMIX_ADDR27",
mgl@1371
 42813
+  "BFD_RELOC_MMIX_REG_OR_BYTE",
mgl@1371
 42814
+  "BFD_RELOC_MMIX_REG",
mgl@1371
 42815
+  "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
mgl@1371
 42816
+  "BFD_RELOC_MMIX_LOCAL",
mgl@1371
 42817
+  "BFD_RELOC_AVR_7_PCREL",
mgl@1371
 42818
+  "BFD_RELOC_AVR_13_PCREL",
mgl@1371
 42819
+  "BFD_RELOC_AVR_16_PM",
mgl@1371
 42820
+  "BFD_RELOC_AVR_LO8_LDI",
mgl@1371
 42821
+  "BFD_RELOC_AVR_HI8_LDI",
mgl@1371
 42822
+  "BFD_RELOC_AVR_HH8_LDI",
mgl@1371
 42823
+  "BFD_RELOC_AVR_MS8_LDI",
mgl@1371
 42824
+  "BFD_RELOC_AVR_LO8_LDI_NEG",
mgl@1371
 42825
+  "BFD_RELOC_AVR_HI8_LDI_NEG",
mgl@1371
 42826
+  "BFD_RELOC_AVR_HH8_LDI_NEG",
mgl@1371
 42827
+  "BFD_RELOC_AVR_MS8_LDI_NEG",
mgl@1371
 42828
+  "BFD_RELOC_AVR_LO8_LDI_PM",
mgl@1371
 42829
+  "BFD_RELOC_AVR_LO8_LDI_GS",
mgl@1371
 42830
+  "BFD_RELOC_AVR_HI8_LDI_PM",
mgl@1371
 42831
+  "BFD_RELOC_AVR_HI8_LDI_GS",
mgl@1371
 42832
+  "BFD_RELOC_AVR_HH8_LDI_PM",
mgl@1371
 42833
+  "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
mgl@1371
 42834
+  "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
mgl@1371
 42835
+  "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
mgl@1371
 42836
+  "BFD_RELOC_AVR_CALL",
mgl@1371
 42837
+  "BFD_RELOC_AVR_LDI",
mgl@1371
 42838
+  "BFD_RELOC_AVR_6",
mgl@1371
 42839
+  "BFD_RELOC_AVR_6_ADIW",
mgl@1371
 42840
+  "BFD_RELOC_AVR32_DIFF32",
mgl@1371
 42841
+  "BFD_RELOC_AVR32_DIFF16",
mgl@1371
 42842
+  "BFD_RELOC_AVR32_DIFF8",
mgl@1371
 42843
+  "BFD_RELOC_AVR32_GOT32",
mgl@1371
 42844
+  "BFD_RELOC_AVR32_GOT16",
mgl@1371
 42845
+  "BFD_RELOC_AVR32_GOT8",
mgl@1371
 42846
+  "BFD_RELOC_AVR32_21S",
mgl@1371
 42847
+  "BFD_RELOC_AVR32_16U",
mgl@1371
 42848
+  "BFD_RELOC_AVR32_16S",
mgl@1371
 42849
+  "BFD_RELOC_AVR32_SUB5",
mgl@1371
 42850
+  "BFD_RELOC_AVR32_8S_EXT",
mgl@1371
 42851
+  "BFD_RELOC_AVR32_8S",
mgl@1371
 42852
+  "BFD_RELOC_AVR32_15S",
mgl@1371
 42853
+  "BFD_RELOC_AVR32_22H_PCREL",
mgl@1371
 42854
+  "BFD_RELOC_AVR32_18W_PCREL",
mgl@1371
 42855
+  "BFD_RELOC_AVR32_16B_PCREL",
mgl@1371
 42856
+  "BFD_RELOC_AVR32_16N_PCREL",
mgl@1371
 42857
+  "BFD_RELOC_AVR32_14UW_PCREL",
mgl@1371
 42858
+  "BFD_RELOC_AVR32_11H_PCREL",
mgl@1371
 42859
+  "BFD_RELOC_AVR32_10UW_PCREL",
mgl@1371
 42860
+  "BFD_RELOC_AVR32_9H_PCREL",
mgl@1371
 42861
+  "BFD_RELOC_AVR32_9UW_PCREL",
mgl@1371
 42862
+  "BFD_RELOC_AVR32_GOTPC",
mgl@1371
 42863
+  "BFD_RELOC_AVR32_GOTCALL",
mgl@1371
 42864
+  "BFD_RELOC_AVR32_LDA_GOT",
mgl@1371
 42865
+  "BFD_RELOC_AVR32_GOT21S",
mgl@1371
 42866
+  "BFD_RELOC_AVR32_GOT18SW",
mgl@1371
 42867
+  "BFD_RELOC_AVR32_GOT16S",
mgl@1371
 42868
+  "BFD_RELOC_AVR32_32_CPENT",
mgl@1371
 42869
+  "BFD_RELOC_AVR32_CPCALL",
mgl@1371
 42870
+  "BFD_RELOC_AVR32_16_CP",
mgl@1371
 42871
+  "BFD_RELOC_AVR32_9W_CP",
mgl@1371
 42872
+  "BFD_RELOC_AVR32_ALIGN",
mgl@1371
 42873
+  "BFD_RELOC_AVR32_14UW",
mgl@1371
 42874
+  "BFD_RELOC_AVR32_10UW",
mgl@1371
 42875
+  "BFD_RELOC_AVR32_10SW",
mgl@1371
 42876
+  "BFD_RELOC_AVR32_STHH_W",
mgl@1371
 42877
+  "BFD_RELOC_AVR32_7UW",
mgl@1371
 42878
+  "BFD_RELOC_AVR32_6S",
mgl@1371
 42879
+  "BFD_RELOC_AVR32_6UW",
mgl@1371
 42880
+  "BFD_RELOC_AVR32_4UH",
mgl@1371
 42881
+  "BFD_RELOC_AVR32_3U",
mgl@1371
 42882
+  "BFD_RELOC_390_12",
mgl@1371
 42883
+  "BFD_RELOC_390_GOT12",
mgl@1371
 42884
+  "BFD_RELOC_390_PLT32",
mgl@1371
 42885
+  "BFD_RELOC_390_COPY",
mgl@1371
 42886
+  "BFD_RELOC_390_GLOB_DAT",
mgl@1371
 42887
+  "BFD_RELOC_390_JMP_SLOT",
mgl@1371
 42888
+  "BFD_RELOC_390_RELATIVE",
mgl@1371
 42889
+  "BFD_RELOC_390_GOTPC",
mgl@1371
 42890
+  "BFD_RELOC_390_GOT16",
mgl@1371
 42891
+  "BFD_RELOC_390_PC16DBL",
mgl@1371
 42892
+  "BFD_RELOC_390_PLT16DBL",
mgl@1371
 42893
+  "BFD_RELOC_390_PC32DBL",
mgl@1371
 42894
+  "BFD_RELOC_390_PLT32DBL",
mgl@1371
 42895
+  "BFD_RELOC_390_GOTPCDBL",
mgl@1371
 42896
+  "BFD_RELOC_390_GOT64",
mgl@1371
 42897
+  "BFD_RELOC_390_PLT64",
mgl@1371
 42898
+  "BFD_RELOC_390_GOTENT",
mgl@1371
 42899
+  "BFD_RELOC_390_GOTOFF64",
mgl@1371
 42900
+  "BFD_RELOC_390_GOTPLT12",
mgl@1371
 42901
+  "BFD_RELOC_390_GOTPLT16",
mgl@1371
 42902
+  "BFD_RELOC_390_GOTPLT32",
mgl@1371
 42903
+  "BFD_RELOC_390_GOTPLT64",
mgl@1371
 42904
+  "BFD_RELOC_390_GOTPLTENT",
mgl@1371
 42905
+  "BFD_RELOC_390_PLTOFF16",
mgl@1371
 42906
+  "BFD_RELOC_390_PLTOFF32",
mgl@1371
 42907
+  "BFD_RELOC_390_PLTOFF64",
mgl@1371
 42908
+  "BFD_RELOC_390_TLS_LOAD",
mgl@1371
 42909
+  "BFD_RELOC_390_TLS_GDCALL",
mgl@1371
 42910
+  "BFD_RELOC_390_TLS_LDCALL",
mgl@1371
 42911
+  "BFD_RELOC_390_TLS_GD32",
mgl@1371
 42912
+  "BFD_RELOC_390_TLS_GD64",
mgl@1371
 42913
+  "BFD_RELOC_390_TLS_GOTIE12",
mgl@1371
 42914
+  "BFD_RELOC_390_TLS_GOTIE32",
mgl@1371
 42915
+  "BFD_RELOC_390_TLS_GOTIE64",
mgl@1371
 42916
+  "BFD_RELOC_390_TLS_LDM32",
mgl@1371
 42917
+  "BFD_RELOC_390_TLS_LDM64",
mgl@1371
 42918
+  "BFD_RELOC_390_TLS_IE32",
mgl@1371
 42919
+  "BFD_RELOC_390_TLS_IE64",
mgl@1371
 42920
+  "BFD_RELOC_390_TLS_IEENT",
mgl@1371
 42921
+  "BFD_RELOC_390_TLS_LE32",
mgl@1371
 42922
+  "BFD_RELOC_390_TLS_LE64",
mgl@1371
 42923
+  "BFD_RELOC_390_TLS_LDO32",
mgl@1371
 42924
+  "BFD_RELOC_390_TLS_LDO64",
mgl@1371
 42925
+  "BFD_RELOC_390_TLS_DTPMOD",
mgl@1371
 42926
+  "BFD_RELOC_390_TLS_DTPOFF",
mgl@1371
 42927
+  "BFD_RELOC_390_TLS_TPOFF",
mgl@1371
 42928
+  "BFD_RELOC_390_20",
mgl@1371
 42929
+  "BFD_RELOC_390_GOT20",
mgl@1371
 42930
+  "BFD_RELOC_390_GOTPLT20",
mgl@1371
 42931
+  "BFD_RELOC_390_TLS_GOTIE20",
mgl@1371
 42932
+  "BFD_RELOC_SCORE_DUMMY1",
mgl@1371
 42933
+  "BFD_RELOC_SCORE_GPREL15",
mgl@1371
 42934
+  "BFD_RELOC_SCORE_DUMMY2",
mgl@1371
 42935
+  "BFD_RELOC_SCORE_JMP",
mgl@1371
 42936
+  "BFD_RELOC_SCORE_BRANCH",
mgl@1371
 42937
+  "BFD_RELOC_SCORE16_JMP",
mgl@1371
 42938
+  "BFD_RELOC_SCORE16_BRANCH",
mgl@1371
 42939
+  "BFD_RELOC_SCORE_GOT15",
mgl@1371
 42940
+  "BFD_RELOC_SCORE_GOT_LO16",
mgl@1371
 42941
+  "BFD_RELOC_SCORE_CALL15",
mgl@1371
 42942
+  "BFD_RELOC_SCORE_DUMMY_HI16",
mgl@1371
 42943
+  "BFD_RELOC_IP2K_FR9",
mgl@1371
 42944
+  "BFD_RELOC_IP2K_BANK",
mgl@1371
 42945
+  "BFD_RELOC_IP2K_ADDR16CJP",
mgl@1371
 42946
+  "BFD_RELOC_IP2K_PAGE3",
mgl@1371
 42947
+  "BFD_RELOC_IP2K_LO8DATA",
mgl@1371
 42948
+  "BFD_RELOC_IP2K_HI8DATA",
mgl@1371
 42949
+  "BFD_RELOC_IP2K_EX8DATA",
mgl@1371
 42950
+  "BFD_RELOC_IP2K_LO8INSN",
mgl@1371
 42951
+  "BFD_RELOC_IP2K_HI8INSN",
mgl@1371
 42952
+  "BFD_RELOC_IP2K_PC_SKIP",
mgl@1371
 42953
+  "BFD_RELOC_IP2K_TEXT",
mgl@1371
 42954
+  "BFD_RELOC_IP2K_FR_OFFSET",
mgl@1371
 42955
+  "BFD_RELOC_VPE4KMATH_DATA",
mgl@1371
 42956
+  "BFD_RELOC_VPE4KMATH_INSN",
mgl@1371
 42957
+  "BFD_RELOC_VTABLE_INHERIT",
mgl@1371
 42958
+  "BFD_RELOC_VTABLE_ENTRY",
mgl@1371
 42959
+  "BFD_RELOC_IA64_IMM14",
mgl@1371
 42960
+  "BFD_RELOC_IA64_IMM22",
mgl@1371
 42961
+  "BFD_RELOC_IA64_IMM64",
mgl@1371
 42962
+  "BFD_RELOC_IA64_DIR32MSB",
mgl@1371
 42963
+  "BFD_RELOC_IA64_DIR32LSB",
mgl@1371
 42964
+  "BFD_RELOC_IA64_DIR64MSB",
mgl@1371
 42965
+  "BFD_RELOC_IA64_DIR64LSB",
mgl@1371
 42966
+  "BFD_RELOC_IA64_GPREL22",
mgl@1371
 42967
+  "BFD_RELOC_IA64_GPREL64I",
mgl@1371
 42968
+  "BFD_RELOC_IA64_GPREL32MSB",
mgl@1371
 42969
+  "BFD_RELOC_IA64_GPREL32LSB",
mgl@1371
 42970
+  "BFD_RELOC_IA64_GPREL64MSB",
mgl@1371
 42971
+  "BFD_RELOC_IA64_GPREL64LSB",
mgl@1371
 42972
+  "BFD_RELOC_IA64_LTOFF22",
mgl@1371
 42973
+  "BFD_RELOC_IA64_LTOFF64I",
mgl@1371
 42974
+  "BFD_RELOC_IA64_PLTOFF22",
mgl@1371
 42975
+  "BFD_RELOC_IA64_PLTOFF64I",
mgl@1371
 42976
+  "BFD_RELOC_IA64_PLTOFF64MSB",
mgl@1371
 42977
+  "BFD_RELOC_IA64_PLTOFF64LSB",
mgl@1371
 42978
+  "BFD_RELOC_IA64_FPTR64I",
mgl@1371
 42979
+  "BFD_RELOC_IA64_FPTR32MSB",
mgl@1371
 42980
+  "BFD_RELOC_IA64_FPTR32LSB",
mgl@1371
 42981
+  "BFD_RELOC_IA64_FPTR64MSB",
mgl@1371
 42982
+  "BFD_RELOC_IA64_FPTR64LSB",
mgl@1371
 42983
+  "BFD_RELOC_IA64_PCREL21B",
mgl@1371
 42984
+  "BFD_RELOC_IA64_PCREL21BI",
mgl@1371
 42985
+  "BFD_RELOC_IA64_PCREL21M",
mgl@1371
 42986
+  "BFD_RELOC_IA64_PCREL21F",
mgl@1371
 42987
+  "BFD_RELOC_IA64_PCREL22",
mgl@1371
 42988
+  "BFD_RELOC_IA64_PCREL60B",
mgl@1371
 42989
+  "BFD_RELOC_IA64_PCREL64I",
mgl@1371
 42990
+  "BFD_RELOC_IA64_PCREL32MSB",
mgl@1371
 42991
+  "BFD_RELOC_IA64_PCREL32LSB",
mgl@1371
 42992
+  "BFD_RELOC_IA64_PCREL64MSB",
mgl@1371
 42993
+  "BFD_RELOC_IA64_PCREL64LSB",
mgl@1371
 42994
+  "BFD_RELOC_IA64_LTOFF_FPTR22",
mgl@1371
 42995
+  "BFD_RELOC_IA64_LTOFF_FPTR64I",
mgl@1371
 42996
+  "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
mgl@1371
 42997
+  "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
mgl@1371
 42998
+  "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
mgl@1371
 42999
+  "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
mgl@1371
 43000
+  "BFD_RELOC_IA64_SEGREL32MSB",
mgl@1371
 43001
+  "BFD_RELOC_IA64_SEGREL32LSB",
mgl@1371
 43002
+  "BFD_RELOC_IA64_SEGREL64MSB",
mgl@1371
 43003
+  "BFD_RELOC_IA64_SEGREL64LSB",
mgl@1371
 43004
+  "BFD_RELOC_IA64_SECREL32MSB",
mgl@1371
 43005
+  "BFD_RELOC_IA64_SECREL32LSB",
mgl@1371
 43006
+  "BFD_RELOC_IA64_SECREL64MSB",
mgl@1371
 43007
+  "BFD_RELOC_IA64_SECREL64LSB",
mgl@1371
 43008
+  "BFD_RELOC_IA64_REL32MSB",
mgl@1371
 43009
+  "BFD_RELOC_IA64_REL32LSB",
mgl@1371
 43010
+  "BFD_RELOC_IA64_REL64MSB",
mgl@1371
 43011
+  "BFD_RELOC_IA64_REL64LSB",
mgl@1371
 43012
+  "BFD_RELOC_IA64_LTV32MSB",
mgl@1371
 43013
+  "BFD_RELOC_IA64_LTV32LSB",
mgl@1371
 43014
+  "BFD_RELOC_IA64_LTV64MSB",
mgl@1371
 43015
+  "BFD_RELOC_IA64_LTV64LSB",
mgl@1371
 43016
+  "BFD_RELOC_IA64_IPLTMSB",
mgl@1371
 43017
+  "BFD_RELOC_IA64_IPLTLSB",
mgl@1371
 43018
+  "BFD_RELOC_IA64_COPY",
mgl@1371
 43019
+  "BFD_RELOC_IA64_LTOFF22X",
mgl@1371
 43020
+  "BFD_RELOC_IA64_LDXMOV",
mgl@1371
 43021
+  "BFD_RELOC_IA64_TPREL14",
mgl@1371
 43022
+  "BFD_RELOC_IA64_TPREL22",
mgl@1371
 43023
+  "BFD_RELOC_IA64_TPREL64I",
mgl@1371
 43024
+  "BFD_RELOC_IA64_TPREL64MSB",
mgl@1371
 43025
+  "BFD_RELOC_IA64_TPREL64LSB",
mgl@1371
 43026
+  "BFD_RELOC_IA64_LTOFF_TPREL22",
mgl@1371
 43027
+  "BFD_RELOC_IA64_DTPMOD64MSB",
mgl@1371
 43028
+  "BFD_RELOC_IA64_DTPMOD64LSB",
mgl@1371
 43029
+  "BFD_RELOC_IA64_LTOFF_DTPMOD22",
mgl@1371
 43030
+  "BFD_RELOC_IA64_DTPREL14",
mgl@1371
 43031
+  "BFD_RELOC_IA64_DTPREL22",
mgl@1371
 43032
+  "BFD_RELOC_IA64_DTPREL64I",
mgl@1371
 43033
+  "BFD_RELOC_IA64_DTPREL32MSB",
mgl@1371
 43034
+  "BFD_RELOC_IA64_DTPREL32LSB",
mgl@1371
 43035
+  "BFD_RELOC_IA64_DTPREL64MSB",
mgl@1371
 43036
+  "BFD_RELOC_IA64_DTPREL64LSB",
mgl@1371
 43037
+  "BFD_RELOC_IA64_LTOFF_DTPREL22",
mgl@1371
 43038
+  "BFD_RELOC_M68HC11_HI8",
mgl@1371
 43039
+  "BFD_RELOC_M68HC11_LO8",
mgl@1371
 43040
+  "BFD_RELOC_M68HC11_3B",
mgl@1371
 43041
+  "BFD_RELOC_M68HC11_RL_JUMP",
mgl@1371
 43042
+  "BFD_RELOC_M68HC11_RL_GROUP",
mgl@1371
 43043
+  "BFD_RELOC_M68HC11_LO16",
mgl@1371
 43044
+  "BFD_RELOC_M68HC11_PAGE",
mgl@1371
 43045
+  "BFD_RELOC_M68HC11_24",
mgl@1371
 43046
+  "BFD_RELOC_M68HC12_5B",
mgl@1371
 43047
+  "BFD_RELOC_16C_NUM08",
mgl@1371
 43048
+  "BFD_RELOC_16C_NUM08_C",
mgl@1371
 43049
+  "BFD_RELOC_16C_NUM16",
mgl@1371
 43050
+  "BFD_RELOC_16C_NUM16_C",
mgl@1371
 43051
+  "BFD_RELOC_16C_NUM32",
mgl@1371
 43052
+  "BFD_RELOC_16C_NUM32_C",
mgl@1371
 43053
+  "BFD_RELOC_16C_DISP04",
mgl@1371
 43054
+  "BFD_RELOC_16C_DISP04_C",
mgl@1371
 43055
+  "BFD_RELOC_16C_DISP08",
mgl@1371
 43056
+  "BFD_RELOC_16C_DISP08_C",
mgl@1371
 43057
+  "BFD_RELOC_16C_DISP16",
mgl@1371
 43058
+  "BFD_RELOC_16C_DISP16_C",
mgl@1371
 43059
+  "BFD_RELOC_16C_DISP24",
mgl@1371
 43060
+  "BFD_RELOC_16C_DISP24_C",
mgl@1371
 43061
+  "BFD_RELOC_16C_DISP24a",
mgl@1371
 43062
+  "BFD_RELOC_16C_DISP24a_C",
mgl@1371
 43063
+  "BFD_RELOC_16C_REG04",
mgl@1371
 43064
+  "BFD_RELOC_16C_REG04_C",
mgl@1371
 43065
+  "BFD_RELOC_16C_REG04a",
mgl@1371
 43066
+  "BFD_RELOC_16C_REG04a_C",
mgl@1371
 43067
+  "BFD_RELOC_16C_REG14",
mgl@1371
 43068
+  "BFD_RELOC_16C_REG14_C",
mgl@1371
 43069
+  "BFD_RELOC_16C_REG16",
mgl@1371
 43070
+  "BFD_RELOC_16C_REG16_C",
mgl@1371
 43071
+  "BFD_RELOC_16C_REG20",
mgl@1371
 43072
+  "BFD_RELOC_16C_REG20_C",
mgl@1371
 43073
+  "BFD_RELOC_16C_ABS20",
mgl@1371
 43074
+  "BFD_RELOC_16C_ABS20_C",
mgl@1371
 43075
+  "BFD_RELOC_16C_ABS24",
mgl@1371
 43076
+  "BFD_RELOC_16C_ABS24_C",
mgl@1371
 43077
+  "BFD_RELOC_16C_IMM04",
mgl@1371
 43078
+  "BFD_RELOC_16C_IMM04_C",
mgl@1371
 43079
+  "BFD_RELOC_16C_IMM16",
mgl@1371
 43080
+  "BFD_RELOC_16C_IMM16_C",
mgl@1371
 43081
+  "BFD_RELOC_16C_IMM20",
mgl@1371
 43082
+  "BFD_RELOC_16C_IMM20_C",
mgl@1371
 43083
+  "BFD_RELOC_16C_IMM24",
mgl@1371
 43084
+  "BFD_RELOC_16C_IMM24_C",
mgl@1371
 43085
+  "BFD_RELOC_16C_IMM32",
mgl@1371
 43086
+  "BFD_RELOC_16C_IMM32_C",
mgl@1371
 43087
+  "BFD_RELOC_CR16_NUM8",
mgl@1371
 43088
+  "BFD_RELOC_CR16_NUM16",
mgl@1371
 43089
+  "BFD_RELOC_CR16_NUM32",
mgl@1371
 43090
+  "BFD_RELOC_CR16_NUM32a",
mgl@1371
 43091
+  "BFD_RELOC_CR16_REGREL0",
mgl@1371
 43092
+  "BFD_RELOC_CR16_REGREL4",
mgl@1371
 43093
+  "BFD_RELOC_CR16_REGREL4a",
mgl@1371
 43094
+  "BFD_RELOC_CR16_REGREL14",
mgl@1371
 43095
+  "BFD_RELOC_CR16_REGREL14a",
mgl@1371
 43096
+  "BFD_RELOC_CR16_REGREL16",
mgl@1371
 43097
+  "BFD_RELOC_CR16_REGREL20",
mgl@1371
 43098
+  "BFD_RELOC_CR16_REGREL20a",
mgl@1371
 43099
+  "BFD_RELOC_CR16_ABS20",
mgl@1371
 43100
+  "BFD_RELOC_CR16_ABS24",
mgl@1371
 43101
+  "BFD_RELOC_CR16_IMM4",
mgl@1371
 43102
+  "BFD_RELOC_CR16_IMM8",
mgl@1371
 43103
+  "BFD_RELOC_CR16_IMM16",
mgl@1371
 43104
+  "BFD_RELOC_CR16_IMM20",
mgl@1371
 43105
+  "BFD_RELOC_CR16_IMM24",
mgl@1371
 43106
+  "BFD_RELOC_CR16_IMM32",
mgl@1371
 43107
+  "BFD_RELOC_CR16_IMM32a",
mgl@1371
 43108
+  "BFD_RELOC_CR16_DISP4",
mgl@1371
 43109
+  "BFD_RELOC_CR16_DISP8",
mgl@1371
 43110
+  "BFD_RELOC_CR16_DISP16",
mgl@1371
 43111
+  "BFD_RELOC_CR16_DISP20",
mgl@1371
 43112
+  "BFD_RELOC_CR16_DISP24",
mgl@1371
 43113
+  "BFD_RELOC_CR16_DISP24a",
mgl@1371
 43114
+  "BFD_RELOC_CRX_REL4",
mgl@1371
 43115
+  "BFD_RELOC_CRX_REL8",
mgl@1371
 43116
+  "BFD_RELOC_CRX_REL8_CMP",
mgl@1371
 43117
+  "BFD_RELOC_CRX_REL16",
mgl@1371
 43118
+  "BFD_RELOC_CRX_REL24",
mgl@1371
 43119
+  "BFD_RELOC_CRX_REL32",
mgl@1371
 43120
+  "BFD_RELOC_CRX_REGREL12",
mgl@1371
 43121
+  "BFD_RELOC_CRX_REGREL22",
mgl@1371
 43122
+  "BFD_RELOC_CRX_REGREL28",
mgl@1371
 43123
+  "BFD_RELOC_CRX_REGREL32",
mgl@1371
 43124
+  "BFD_RELOC_CRX_ABS16",
mgl@1371
 43125
+  "BFD_RELOC_CRX_ABS32",
mgl@1371
 43126
+  "BFD_RELOC_CRX_NUM8",
mgl@1371
 43127
+  "BFD_RELOC_CRX_NUM16",
mgl@1371
 43128
+  "BFD_RELOC_CRX_NUM32",
mgl@1371
 43129
+  "BFD_RELOC_CRX_IMM16",
mgl@1371
 43130
+  "BFD_RELOC_CRX_IMM32",
mgl@1371
 43131
+  "BFD_RELOC_CRX_SWITCH8",
mgl@1371
 43132
+  "BFD_RELOC_CRX_SWITCH16",
mgl@1371
 43133
+  "BFD_RELOC_CRX_SWITCH32",
mgl@1371
 43134
+  "BFD_RELOC_CRIS_BDISP8",
mgl@1371
 43135
+  "BFD_RELOC_CRIS_UNSIGNED_5",
mgl@1371
 43136
+  "BFD_RELOC_CRIS_SIGNED_6",
mgl@1371
 43137
+  "BFD_RELOC_CRIS_UNSIGNED_6",
mgl@1371
 43138
+  "BFD_RELOC_CRIS_SIGNED_8",
mgl@1371
 43139
+  "BFD_RELOC_CRIS_UNSIGNED_8",
mgl@1371
 43140
+  "BFD_RELOC_CRIS_SIGNED_16",
mgl@1371
 43141
+  "BFD_RELOC_CRIS_UNSIGNED_16",
mgl@1371
 43142
+  "BFD_RELOC_CRIS_LAPCQ_OFFSET",
mgl@1371
 43143
+  "BFD_RELOC_CRIS_UNSIGNED_4",
mgl@1371
 43144
+  "BFD_RELOC_CRIS_COPY",
mgl@1371
 43145
+  "BFD_RELOC_CRIS_GLOB_DAT",
mgl@1371
 43146
+  "BFD_RELOC_CRIS_JUMP_SLOT",
mgl@1371
 43147
+  "BFD_RELOC_CRIS_RELATIVE",
mgl@1371
 43148
+  "BFD_RELOC_CRIS_32_GOT",
mgl@1371
 43149
+  "BFD_RELOC_CRIS_16_GOT",
mgl@1371
 43150
+  "BFD_RELOC_CRIS_32_GOTPLT",
mgl@1371
 43151
+  "BFD_RELOC_CRIS_16_GOTPLT",
mgl@1371
 43152
+  "BFD_RELOC_CRIS_32_GOTREL",
mgl@1371
 43153
+  "BFD_RELOC_CRIS_32_PLT_GOTREL",
mgl@1371
 43154
+  "BFD_RELOC_CRIS_32_PLT_PCREL",
mgl@1371
 43155
+  "BFD_RELOC_860_COPY",
mgl@1371
 43156
+  "BFD_RELOC_860_GLOB_DAT",
mgl@1371
 43157
+  "BFD_RELOC_860_JUMP_SLOT",
mgl@1371
 43158
+  "BFD_RELOC_860_RELATIVE",
mgl@1371
 43159
+  "BFD_RELOC_860_PC26",
mgl@1371
 43160
+  "BFD_RELOC_860_PLT26",
mgl@1371
 43161
+  "BFD_RELOC_860_PC16",
mgl@1371
 43162
+  "BFD_RELOC_860_LOW0",
mgl@1371
 43163
+  "BFD_RELOC_860_SPLIT0",
mgl@1371
 43164
+  "BFD_RELOC_860_LOW1",
mgl@1371
 43165
+  "BFD_RELOC_860_SPLIT1",
mgl@1371
 43166
+  "BFD_RELOC_860_LOW2",
mgl@1371
 43167
+  "BFD_RELOC_860_SPLIT2",
mgl@1371
 43168
+  "BFD_RELOC_860_LOW3",
mgl@1371
 43169
+  "BFD_RELOC_860_LOGOT0",
mgl@1371
 43170
+  "BFD_RELOC_860_SPGOT0",
mgl@1371
 43171
+  "BFD_RELOC_860_LOGOT1",
mgl@1371
 43172
+  "BFD_RELOC_860_SPGOT1",
mgl@1371
 43173
+  "BFD_RELOC_860_LOGOTOFF0",
mgl@1371
 43174
+  "BFD_RELOC_860_SPGOTOFF0",
mgl@1371
 43175
+  "BFD_RELOC_860_LOGOTOFF1",
mgl@1371
 43176
+  "BFD_RELOC_860_SPGOTOFF1",
mgl@1371
 43177
+  "BFD_RELOC_860_LOGOTOFF2",
mgl@1371
 43178
+  "BFD_RELOC_860_LOGOTOFF3",
mgl@1371
 43179
+  "BFD_RELOC_860_LOPC",
mgl@1371
 43180
+  "BFD_RELOC_860_HIGHADJ",
mgl@1371
 43181
+  "BFD_RELOC_860_HAGOT",
mgl@1371
 43182
+  "BFD_RELOC_860_HAGOTOFF",
mgl@1371
 43183
+  "BFD_RELOC_860_HAPC",
mgl@1371
 43184
+  "BFD_RELOC_860_HIGH",
mgl@1371
 43185
+  "BFD_RELOC_860_HIGOT",
mgl@1371
 43186
+  "BFD_RELOC_860_HIGOTOFF",
mgl@1371
 43187
+  "BFD_RELOC_OPENRISC_ABS_26",
mgl@1371
 43188
+  "BFD_RELOC_OPENRISC_REL_26",
mgl@1371
 43189
+  "BFD_RELOC_H8_DIR16A8",
mgl@1371
 43190
+  "BFD_RELOC_H8_DIR16R8",
mgl@1371
 43191
+  "BFD_RELOC_H8_DIR24A8",
mgl@1371
 43192
+  "BFD_RELOC_H8_DIR24R8",
mgl@1371
 43193
+  "BFD_RELOC_H8_DIR32A16",
mgl@1371
 43194
+  "BFD_RELOC_XSTORMY16_REL_12",
mgl@1371
 43195
+  "BFD_RELOC_XSTORMY16_12",
mgl@1371
 43196
+  "BFD_RELOC_XSTORMY16_24",
mgl@1371
 43197
+  "BFD_RELOC_XSTORMY16_FPTR16",
mgl@1371
 43198
+  "BFD_RELOC_RELC",
mgl@1371
 43199
+
mgl@1371
 43200
+  "BFD_RELOC_XC16X_PAG",
mgl@1371
 43201
+  "BFD_RELOC_XC16X_POF",
mgl@1371
 43202
+  "BFD_RELOC_XC16X_SEG",
mgl@1371
 43203
+  "BFD_RELOC_XC16X_SOF",
mgl@1371
 43204
+  "BFD_RELOC_VAX_GLOB_DAT",
mgl@1371
 43205
+  "BFD_RELOC_VAX_JMP_SLOT",
mgl@1371
 43206
+  "BFD_RELOC_VAX_RELATIVE",
mgl@1371
 43207
+  "BFD_RELOC_MT_PC16",
mgl@1371
 43208
+  "BFD_RELOC_MT_HI16",
mgl@1371
 43209
+  "BFD_RELOC_MT_LO16",
mgl@1371
 43210
+  "BFD_RELOC_MT_GNU_VTINHERIT",
mgl@1371
 43211
+  "BFD_RELOC_MT_GNU_VTENTRY",
mgl@1371
 43212
+  "BFD_RELOC_MT_PCINSN8",
mgl@1371
 43213
+  "BFD_RELOC_MSP430_10_PCREL",
mgl@1371
 43214
+  "BFD_RELOC_MSP430_16_PCREL",
mgl@1371
 43215
+  "BFD_RELOC_MSP430_16",
mgl@1371
 43216
+  "BFD_RELOC_MSP430_16_PCREL_BYTE",
mgl@1371
 43217
+  "BFD_RELOC_MSP430_16_BYTE",
mgl@1371
 43218
+  "BFD_RELOC_MSP430_2X_PCREL",
mgl@1371
 43219
+  "BFD_RELOC_MSP430_RL_PCREL",
mgl@1371
 43220
+  "BFD_RELOC_IQ2000_OFFSET_16",
mgl@1371
 43221
+  "BFD_RELOC_IQ2000_OFFSET_21",
mgl@1371
 43222
+  "BFD_RELOC_IQ2000_UHI16",
mgl@1371
 43223
+  "BFD_RELOC_XTENSA_RTLD",
mgl@1371
 43224
+  "BFD_RELOC_XTENSA_GLOB_DAT",
mgl@1371
 43225
+  "BFD_RELOC_XTENSA_JMP_SLOT",
mgl@1371
 43226
+  "BFD_RELOC_XTENSA_RELATIVE",
mgl@1371
 43227
+  "BFD_RELOC_XTENSA_PLT",
mgl@1371
 43228
+  "BFD_RELOC_XTENSA_DIFF8",
mgl@1371
 43229
+  "BFD_RELOC_XTENSA_DIFF16",
mgl@1371
 43230
+  "BFD_RELOC_XTENSA_DIFF32",
mgl@1371
 43231
+  "BFD_RELOC_XTENSA_SLOT0_OP",
mgl@1371
 43232
+  "BFD_RELOC_XTENSA_SLOT1_OP",
mgl@1371
 43233
+  "BFD_RELOC_XTENSA_SLOT2_OP",
mgl@1371
 43234
+  "BFD_RELOC_XTENSA_SLOT3_OP",
mgl@1371
 43235
+  "BFD_RELOC_XTENSA_SLOT4_OP",
mgl@1371
 43236
+  "BFD_RELOC_XTENSA_SLOT5_OP",
mgl@1371
 43237
+  "BFD_RELOC_XTENSA_SLOT6_OP",
mgl@1371
 43238
+  "BFD_RELOC_XTENSA_SLOT7_OP",
mgl@1371
 43239
+  "BFD_RELOC_XTENSA_SLOT8_OP",
mgl@1371
 43240
+  "BFD_RELOC_XTENSA_SLOT9_OP",
mgl@1371
 43241
+  "BFD_RELOC_XTENSA_SLOT10_OP",
mgl@1371
 43242
+  "BFD_RELOC_XTENSA_SLOT11_OP",
mgl@1371
 43243
+  "BFD_RELOC_XTENSA_SLOT12_OP",
mgl@1371
 43244
+  "BFD_RELOC_XTENSA_SLOT13_OP",
mgl@1371
 43245
+  "BFD_RELOC_XTENSA_SLOT14_OP",
mgl@1371
 43246
+  "BFD_RELOC_XTENSA_SLOT0_ALT",
mgl@1371
 43247
+  "BFD_RELOC_XTENSA_SLOT1_ALT",
mgl@1371
 43248
+  "BFD_RELOC_XTENSA_SLOT2_ALT",
mgl@1371
 43249
+  "BFD_RELOC_XTENSA_SLOT3_ALT",
mgl@1371
 43250
+  "BFD_RELOC_XTENSA_SLOT4_ALT",
mgl@1371
 43251
+  "BFD_RELOC_XTENSA_SLOT5_ALT",
mgl@1371
 43252
+  "BFD_RELOC_XTENSA_SLOT6_ALT",
mgl@1371
 43253
+  "BFD_RELOC_XTENSA_SLOT7_ALT",
mgl@1371
 43254
+  "BFD_RELOC_XTENSA_SLOT8_ALT",
mgl@1371
 43255
+  "BFD_RELOC_XTENSA_SLOT9_ALT",
mgl@1371
 43256
+  "BFD_RELOC_XTENSA_SLOT10_ALT",
mgl@1371
 43257
+  "BFD_RELOC_XTENSA_SLOT11_ALT",
mgl@1371
 43258
+  "BFD_RELOC_XTENSA_SLOT12_ALT",
mgl@1371
 43259
+  "BFD_RELOC_XTENSA_SLOT13_ALT",
mgl@1371
 43260
+  "BFD_RELOC_XTENSA_SLOT14_ALT",
mgl@1371
 43261
+  "BFD_RELOC_XTENSA_OP0",
mgl@1371
 43262
+  "BFD_RELOC_XTENSA_OP1",
mgl@1371
 43263
+  "BFD_RELOC_XTENSA_OP2",
mgl@1371
 43264
+  "BFD_RELOC_XTENSA_ASM_EXPAND",
mgl@1371
 43265
+  "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
mgl@1371
 43266
+  "BFD_RELOC_Z80_DISP8",
mgl@1371
 43267
+  "BFD_RELOC_Z8K_DISP7",
mgl@1371
 43268
+  "BFD_RELOC_Z8K_CALLR",
mgl@1371
 43269
+  "BFD_RELOC_Z8K_IMM4L",
mgl@1371
 43270
+ "@@overflow: BFD_RELOC_UNUSED@@",
mgl@1371
 43271
+};
mgl@1371
 43272
+#endif
mgl@1371
 43273
+
mgl@1371
 43274
+reloc_howto_type *bfd_default_reloc_type_lookup
mgl@1371
 43275
+   (bfd *abfd, bfd_reloc_code_real_type  code);
mgl@1371
 43276
+
mgl@1371
 43277
+bfd_boolean bfd_generic_relax_section
mgl@1371
 43278
+   (bfd *abfd,
mgl@1371
 43279
+    asection *section,
mgl@1371
 43280
+    struct bfd_link_info *,
mgl@1371
 43281
+    bfd_boolean *);
mgl@1371
 43282
+
mgl@1371
 43283
+bfd_boolean bfd_generic_gc_sections
mgl@1371
 43284
+   (bfd *, struct bfd_link_info *);
mgl@1371
 43285
+
mgl@1371
 43286
+bfd_boolean bfd_generic_merge_sections
mgl@1371
 43287
+   (bfd *, struct bfd_link_info *);
mgl@1371
 43288
+
mgl@1371
 43289
+bfd_byte *bfd_generic_get_relocated_section_contents
mgl@1371
 43290
+   (bfd *abfd,
mgl@1371
 43291
+    struct bfd_link_info *link_info,
mgl@1371
 43292
+    struct bfd_link_order *link_order,
mgl@1371
 43293
+    bfd_byte *data,
mgl@1371
 43294
+    bfd_boolean relocatable,
mgl@1371
 43295
+    asymbol **symbols);
mgl@1371
 43296
+
mgl@1371
 43297
+/* Extracted from archures.c.  */
mgl@1371
 43298
+extern const bfd_arch_info_type bfd_default_arch_struct;
mgl@1371
 43299
+bfd_boolean bfd_default_set_arch_mach
mgl@1371
 43300
+   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
mgl@1371
 43301
+
mgl@1371
 43302
+const bfd_arch_info_type *bfd_default_compatible
mgl@1371
 43303
+   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
mgl@1371
 43304
+
mgl@1371
 43305
+bfd_boolean bfd_default_scan
mgl@1371
 43306
+   (const struct bfd_arch_info *info, const char *string);
mgl@1371
 43307
+
mgl@1371
 43308
+/* Extracted from elf.c.  */
mgl@1371
 43309
+struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
mgl@1371
 43310
+
mgl@1371
 43311
--- /dev/null
mgl@1371
 43312
+++ b/bfd/doc/libcoff.h
mgl@1371
 43313
@@ -0,0 +1,936 @@
mgl@1371
 43314
+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
mgl@1371
 43315
+   generated from "libcoff-in.h" and "coffcode.h".
mgl@1371
 43316
+   Run "make headers" in your build bfd/ to regenerate.  */
mgl@1371
 43317
+
mgl@1371
 43318
+/* BFD COFF object file private structure.
mgl@1371
 43319
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
mgl@1371
 43320
+   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
mgl@1371
 43321
+   Free Software Foundation, Inc.
mgl@1371
 43322
+   Written by Cygnus Support.
mgl@1371
 43323
+
mgl@1371
 43324
+   This file is part of BFD, the Binary File Descriptor library.
mgl@1371
 43325
+
mgl@1371
 43326
+   This program is free software; you can redistribute it and/or modify
mgl@1371
 43327
+   it under the terms of the GNU General Public License as published by
mgl@1371
 43328
+   the Free Software Foundation; either version 3 of the License, or
mgl@1371
 43329
+   (at your option) any later version.
mgl@1371
 43330
+
mgl@1371
 43331
+   This program is distributed in the hope that it will be useful,
mgl@1371
 43332
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 43333
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 43334
+   GNU General Public License for more details.
mgl@1371
 43335
+
mgl@1371
 43336
+   You should have received a copy of the GNU General Public License
mgl@1371
 43337
+   along with this program; if not, write to the Free Software
mgl@1371
 43338
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
mgl@1371
 43339
+   MA 02110-1301, USA.  */
mgl@1371
 43340
+
mgl@1371
 43341
+#include "bfdlink.h"
mgl@1371
 43342
+
mgl@1371
 43343
+/* Object file tdata; access macros.  */
mgl@1371
 43344
+
mgl@1371
 43345
+#define coff_data(bfd)		      ((bfd)->tdata.coff_obj_data)
mgl@1371
 43346
+#define exec_hdr(bfd)		      (coff_data (bfd)->hdr)
mgl@1371
 43347
+#define obj_pe(bfd)                   (coff_data (bfd)->pe)
mgl@1371
 43348
+#define obj_symbols(bfd)	      (coff_data (bfd)->symbols)
mgl@1371
 43349
+#define	obj_sym_filepos(bfd)	      (coff_data (bfd)->sym_filepos)
mgl@1371
 43350
+#define obj_relocbase(bfd)	      (coff_data (bfd)->relocbase)
mgl@1371
 43351
+#define obj_raw_syments(bfd)	      (coff_data (bfd)->raw_syments)
mgl@1371
 43352
+#define obj_raw_syment_count(bfd)     (coff_data (bfd)->raw_syment_count)
mgl@1371
 43353
+#define obj_convert(bfd)	      (coff_data (bfd)->conversion_table)
mgl@1371
 43354
+#define obj_conv_table_size(bfd)      (coff_data (bfd)->conv_table_size)
mgl@1371
 43355
+#define obj_coff_external_syms(bfd)   (coff_data (bfd)->external_syms)
mgl@1371
 43356
+#define obj_coff_keep_syms(bfd)	      (coff_data (bfd)->keep_syms)
mgl@1371
 43357
+#define obj_coff_strings(bfd)	      (coff_data (bfd)->strings)
mgl@1371
 43358
+#define obj_coff_keep_strings(bfd)    (coff_data (bfd)->keep_strings)
mgl@1371
 43359
+#define obj_coff_sym_hashes(bfd)      (coff_data (bfd)->sym_hashes)
mgl@1371
 43360
+#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
mgl@1371
 43361
+#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
mgl@1371
 43362
+
mgl@1371
 43363
+/* `Tdata' information kept for COFF files.  */
mgl@1371
 43364
+
mgl@1371
 43365
+typedef struct coff_tdata
mgl@1371
 43366
+{
mgl@1371
 43367
+  struct coff_symbol_struct *symbols;	/* Symtab for input bfd.  */
mgl@1371
 43368
+  unsigned int *conversion_table;
mgl@1371
 43369
+  int conv_table_size;
mgl@1371
 43370
+  file_ptr sym_filepos;
mgl@1371
 43371
+
mgl@1371
 43372
+  struct coff_ptr_struct *raw_syments;
mgl@1371
 43373
+  unsigned long raw_syment_count;
mgl@1371
 43374
+
mgl@1371
 43375
+  /* These are only valid once writing has begun.  */
mgl@1371
 43376
+  long int relocbase;
mgl@1371
 43377
+
mgl@1371
 43378
+  /* These members communicate important constants about the symbol table
mgl@1371
 43379
+     to GDB's symbol-reading code.  These `constants' unfortunately vary
mgl@1371
 43380
+     from coff implementation to implementation...  */
mgl@1371
 43381
+  unsigned local_n_btmask;
mgl@1371
 43382
+  unsigned local_n_btshft;
mgl@1371
 43383
+  unsigned local_n_tmask;
mgl@1371
 43384
+  unsigned local_n_tshift;
mgl@1371
 43385
+  unsigned local_symesz;
mgl@1371
 43386
+  unsigned local_auxesz;
mgl@1371
 43387
+  unsigned local_linesz;
mgl@1371
 43388
+
mgl@1371
 43389
+  /* The unswapped external symbols.  May be NULL.  Read by
mgl@1371
 43390
+     _bfd_coff_get_external_symbols.  */
mgl@1371
 43391
+  void * external_syms;
mgl@1371
 43392
+  /* If this is TRUE, the external_syms may not be freed.  */
mgl@1371
 43393
+  bfd_boolean keep_syms;
mgl@1371
 43394
+
mgl@1371
 43395
+  /* The string table.  May be NULL.  Read by
mgl@1371
 43396
+     _bfd_coff_read_string_table.  */
mgl@1371
 43397
+  char *strings;
mgl@1371
 43398
+  /* If this is TRUE, the strings may not be freed.  */
mgl@1371
 43399
+  bfd_boolean keep_strings;
mgl@1371
 43400
+  /* If this is TRUE, the strings have been written out already.  */
mgl@1371
 43401
+  bfd_boolean strings_written;
mgl@1371
 43402
+
mgl@1371
 43403
+  /* Is this a PE format coff file?  */
mgl@1371
 43404
+  int pe;
mgl@1371
 43405
+  /* Used by the COFF backend linker.  */
mgl@1371
 43406
+  struct coff_link_hash_entry **sym_hashes;
mgl@1371
 43407
+
mgl@1371
 43408
+  /* Used by the pe linker for PowerPC.  */
mgl@1371
 43409
+  int *local_toc_sym_map;
mgl@1371
 43410
+
mgl@1371
 43411
+  struct bfd_link_info *link_info;
mgl@1371
 43412
+
mgl@1371
 43413
+  /* Used by coff_find_nearest_line.  */
mgl@1371
 43414
+  void * line_info;
mgl@1371
 43415
+
mgl@1371
 43416
+  /* A place to stash dwarf2 info for this bfd.  */
mgl@1371
 43417
+  void * dwarf2_find_line_info;
mgl@1371
 43418
+
mgl@1371
 43419
+  /* The timestamp from the COFF file header.  */
mgl@1371
 43420
+  long timestamp;
mgl@1371
 43421
+
mgl@1371
 43422
+  /* Copy of some of the f_flags bits in the COFF filehdr structure,
mgl@1371
 43423
+     used by ARM code.  */
mgl@1371
 43424
+  flagword flags;
mgl@1371
 43425
+
mgl@1371
 43426
+} coff_data_type;
mgl@1371
 43427
+
mgl@1371
 43428
+/* Tdata for pe image files.  */
mgl@1371
 43429
+typedef struct pe_tdata
mgl@1371
 43430
+{
mgl@1371
 43431
+  coff_data_type coff;
mgl@1371
 43432
+  struct internal_extra_pe_aouthdr pe_opthdr;
mgl@1371
 43433
+  int dll;
mgl@1371
 43434
+  int has_reloc_section;
mgl@1371
 43435
+  bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
mgl@1371
 43436
+  flagword real_flags;
mgl@1371
 43437
+  int target_subsystem;
mgl@1371
 43438
+  bfd_boolean force_minimum_alignment;
mgl@1371
 43439
+} pe_data_type;
mgl@1371
 43440
+
mgl@1371
 43441
+#define pe_data(bfd)		((bfd)->tdata.pe_obj_data)
mgl@1371
 43442
+
mgl@1371
 43443
+/* Tdata for XCOFF files.  */
mgl@1371
 43444
+
mgl@1371
 43445
+struct xcoff_tdata
mgl@1371
 43446
+{
mgl@1371
 43447
+  /* Basic COFF information.  */
mgl@1371
 43448
+  coff_data_type coff;
mgl@1371
 43449
+
mgl@1371
 43450
+  /* TRUE if this is an XCOFF64 file. */
mgl@1371
 43451
+  bfd_boolean xcoff64;
mgl@1371
 43452
+
mgl@1371
 43453
+  /* TRUE if a large a.out header should be generated.  */
mgl@1371
 43454
+  bfd_boolean full_aouthdr;
mgl@1371
 43455
+
mgl@1371
 43456
+  /* TOC value.  */
mgl@1371
 43457
+  bfd_vma toc;
mgl@1371
 43458
+
mgl@1371
 43459
+  /* Index of section holding TOC.  */
mgl@1371
 43460
+  int sntoc;
mgl@1371
 43461
+
mgl@1371
 43462
+  /* Index of section holding entry point.  */
mgl@1371
 43463
+  int snentry;
mgl@1371
 43464
+
mgl@1371
 43465
+  /* .text alignment from optional header.  */
mgl@1371
 43466
+  int text_align_power;
mgl@1371
 43467
+
mgl@1371
 43468
+  /* .data alignment from optional header.  */
mgl@1371
 43469
+  int data_align_power;
mgl@1371
 43470
+
mgl@1371
 43471
+  /* modtype from optional header.  */
mgl@1371
 43472
+  short modtype;
mgl@1371
 43473
+
mgl@1371
 43474
+  /* cputype from optional header.  */
mgl@1371
 43475
+  short cputype;
mgl@1371
 43476
+
mgl@1371
 43477
+  /* maxdata from optional header.  */
mgl@1371
 43478
+  bfd_vma maxdata;
mgl@1371
 43479
+
mgl@1371
 43480
+  /* maxstack from optional header.  */
mgl@1371
 43481
+  bfd_vma maxstack;
mgl@1371
 43482
+
mgl@1371
 43483
+  /* Used by the XCOFF backend linker.  */
mgl@1371
 43484
+  asection **csects;
mgl@1371
 43485
+  unsigned long *debug_indices;
mgl@1371
 43486
+  unsigned int import_file_id;
mgl@1371
 43487
+};
mgl@1371
 43488
+
mgl@1371
 43489
+#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
mgl@1371
 43490
+
mgl@1371
 43491
+/* We take the address of the first element of an asymbol to ensure that the
mgl@1371
 43492
+   macro is only ever applied to an asymbol.  */
mgl@1371
 43493
+#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
mgl@1371
 43494
+
mgl@1371
 43495
+/* The used_by_bfd field of a section may be set to a pointer to this
mgl@1371
 43496
+   structure.  */
mgl@1371
 43497
+
mgl@1371
 43498
+struct coff_section_tdata
mgl@1371
 43499
+{
mgl@1371
 43500
+  /* The relocs, swapped into COFF internal form.  This may be NULL.  */
mgl@1371
 43501
+  struct internal_reloc *relocs;
mgl@1371
 43502
+  /* If this is TRUE, the relocs entry may not be freed.  */
mgl@1371
 43503
+  bfd_boolean keep_relocs;
mgl@1371
 43504
+  /* The section contents.  This may be NULL.  */
mgl@1371
 43505
+  bfd_byte *contents;
mgl@1371
 43506
+  /* If this is TRUE, the contents entry may not be freed.  */
mgl@1371
 43507
+  bfd_boolean keep_contents;
mgl@1371
 43508
+  /* Information cached by coff_find_nearest_line.  */
mgl@1371
 43509
+  bfd_vma offset;
mgl@1371
 43510
+  unsigned int i;
mgl@1371
 43511
+  const char *function;
mgl@1371
 43512
+  /* Optional information about a COMDAT entry; NULL if not COMDAT. */
mgl@1371
 43513
+  struct coff_comdat_info *comdat;
mgl@1371
 43514
+  int line_base;
mgl@1371
 43515
+  /* A pointer used for .stab linking optimizations.  */
mgl@1371
 43516
+  void * stab_info;
mgl@1371
 43517
+  /* Available for individual backends.  */
mgl@1371
 43518
+  void * tdata;
mgl@1371
 43519
+};
mgl@1371
 43520
+
mgl@1371
 43521
+/* An accessor macro for the coff_section_tdata structure.  */
mgl@1371
 43522
+#define coff_section_data(abfd, sec) \
mgl@1371
 43523
+  ((struct coff_section_tdata *) (sec)->used_by_bfd)
mgl@1371
 43524
+
mgl@1371
 43525
+/* Tdata for sections in XCOFF files.  This is used by the linker.  */
mgl@1371
 43526
+
mgl@1371
 43527
+struct xcoff_section_tdata
mgl@1371
 43528
+{
mgl@1371
 43529
+  /* Used for XCOFF csects created by the linker; points to the real
mgl@1371
 43530
+     XCOFF section which contains this csect.  */
mgl@1371
 43531
+  asection *enclosing;
mgl@1371
 43532
+  /* The lineno_count field for the enclosing section, because we are
mgl@1371
 43533
+     going to clobber it there.  */
mgl@1371
 43534
+  unsigned int lineno_count;
mgl@1371
 43535
+  /* The first and one past the last symbol indices for symbols used
mgl@1371
 43536
+     by this csect.  */
mgl@1371
 43537
+  unsigned long first_symndx;
mgl@1371
 43538
+  unsigned long last_symndx;
mgl@1371
 43539
+};
mgl@1371
 43540
+
mgl@1371
 43541
+/* An accessor macro the xcoff_section_tdata structure.  */
mgl@1371
 43542
+#define xcoff_section_data(abfd, sec) \
mgl@1371
 43543
+  ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
mgl@1371
 43544
+
mgl@1371
 43545
+/* Tdata for sections in PE files.  */
mgl@1371
 43546
+
mgl@1371
 43547
+struct pei_section_tdata
mgl@1371
 43548
+{
mgl@1371
 43549
+  /* The virtual size of the section.  */
mgl@1371
 43550
+  bfd_size_type virt_size;
mgl@1371
 43551
+  /* The PE section flags.  */
mgl@1371
 43552
+  long pe_flags;
mgl@1371
 43553
+};
mgl@1371
 43554
+
mgl@1371
 43555
+/* An accessor macro for the pei_section_tdata structure.  */
mgl@1371
 43556
+#define pei_section_data(abfd, sec) \
mgl@1371
 43557
+  ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
mgl@1371
 43558
+
mgl@1371
 43559
+/* COFF linker hash table entries.  */
mgl@1371
 43560
+
mgl@1371
 43561
+struct coff_link_hash_entry
mgl@1371
 43562
+{
mgl@1371
 43563
+  struct bfd_link_hash_entry root;
mgl@1371
 43564
+
mgl@1371
 43565
+  /* Symbol index in output file.  Set to -1 initially.  Set to -2 if
mgl@1371
 43566
+     there is a reloc against this symbol.  */
mgl@1371
 43567
+  long indx;
mgl@1371
 43568
+
mgl@1371
 43569
+  /* Symbol type.  */
mgl@1371
 43570
+  unsigned short type;
mgl@1371
 43571
+
mgl@1371
 43572
+  /* Symbol class.  */
mgl@1371
 43573
+  unsigned char class;
mgl@1371
 43574
+
mgl@1371
 43575
+  /* Number of auxiliary entries.  */
mgl@1371
 43576
+  char numaux;
mgl@1371
 43577
+
mgl@1371
 43578
+  /* BFD to take auxiliary entries from.  */
mgl@1371
 43579
+  bfd *auxbfd;
mgl@1371
 43580
+
mgl@1371
 43581
+  /* Pointer to array of auxiliary entries, if any.  */
mgl@1371
 43582
+  union internal_auxent *aux;
mgl@1371
 43583
+
mgl@1371
 43584
+  /* Flag word; legal values follow.  */
mgl@1371
 43585
+  unsigned short coff_link_hash_flags;
mgl@1371
 43586
+  /* Symbol is a PE section symbol.  */
mgl@1371
 43587
+#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
mgl@1371
 43588
+};
mgl@1371
 43589
+
mgl@1371
 43590
+/* COFF linker hash table.  */
mgl@1371
 43591
+
mgl@1371
 43592
+struct coff_link_hash_table
mgl@1371
 43593
+{
mgl@1371
 43594
+  struct bfd_link_hash_table root;
mgl@1371
 43595
+  /* A pointer to information used to link stabs in sections.  */
mgl@1371
 43596
+  struct stab_info stab_info;
mgl@1371
 43597
+};
mgl@1371
 43598
+
mgl@1371
 43599
+/* Look up an entry in a COFF linker hash table.  */
mgl@1371
 43600
+
mgl@1371
 43601
+#define coff_link_hash_lookup(table, string, create, copy, follow)	\
mgl@1371
 43602
+  ((struct coff_link_hash_entry *)					\
mgl@1371
 43603
+   bfd_link_hash_lookup (&(table)->root, (string), (create),		\
mgl@1371
 43604
+			 (copy), (follow)))
mgl@1371
 43605
+
mgl@1371
 43606
+/* Traverse a COFF linker hash table.  */
mgl@1371
 43607
+
mgl@1371
 43608
+#define coff_link_hash_traverse(table, func, info)			\
mgl@1371
 43609
+  (bfd_link_hash_traverse						\
mgl@1371
 43610
+   (&(table)->root,							\
mgl@1371
 43611
+    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
mgl@1371
 43612
+    (info)))
mgl@1371
 43613
+
mgl@1371
 43614
+/* Get the COFF linker hash table from a link_info structure.  */
mgl@1371
 43615
+
mgl@1371
 43616
+#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
mgl@1371
 43617
+
mgl@1371
 43618
+/* Functions in coffgen.c.  */
mgl@1371
 43619
+extern const bfd_target *coff_object_p
mgl@1371
 43620
+  (bfd *);
mgl@1371
 43621
+extern struct bfd_section *coff_section_from_bfd_index
mgl@1371
 43622
+  (bfd *, int);
mgl@1371
 43623
+extern long coff_get_symtab_upper_bound
mgl@1371
 43624
+  (bfd *);
mgl@1371
 43625
+extern long coff_canonicalize_symtab
mgl@1371
 43626
+  (bfd *, asymbol **);
mgl@1371
 43627
+extern int coff_count_linenumbers
mgl@1371
 43628
+  (bfd *);
mgl@1371
 43629
+extern struct coff_symbol_struct *coff_symbol_from
mgl@1371
 43630
+  (bfd *, asymbol *);
mgl@1371
 43631
+extern bfd_boolean coff_renumber_symbols
mgl@1371
 43632
+  (bfd *, int *);
mgl@1371
 43633
+extern void coff_mangle_symbols
mgl@1371
 43634
+  (bfd *);
mgl@1371
 43635
+extern bfd_boolean coff_write_symbols
mgl@1371
 43636
+  (bfd *);
mgl@1371
 43637
+extern bfd_boolean coff_write_linenumbers
mgl@1371
 43638
+  (bfd *);
mgl@1371
 43639
+extern alent *coff_get_lineno
mgl@1371
 43640
+  (bfd *, asymbol *);
mgl@1371
 43641
+extern asymbol *coff_section_symbol
mgl@1371
 43642
+  (bfd *, char *);
mgl@1371
 43643
+extern bfd_boolean _bfd_coff_get_external_symbols
mgl@1371
 43644
+  (bfd *);
mgl@1371
 43645
+extern const char *_bfd_coff_read_string_table
mgl@1371
 43646
+  (bfd *);
mgl@1371
 43647
+extern bfd_boolean _bfd_coff_free_symbols
mgl@1371
 43648
+  (bfd *);
mgl@1371
 43649
+extern struct coff_ptr_struct *coff_get_normalized_symtab
mgl@1371
 43650
+  (bfd *);
mgl@1371
 43651
+extern long coff_get_reloc_upper_bound
mgl@1371
 43652
+  (bfd *, sec_ptr);
mgl@1371
 43653
+extern asymbol *coff_make_empty_symbol
mgl@1371
 43654
+  (bfd *);
mgl@1371
 43655
+extern void coff_print_symbol
mgl@1371
 43656
+  (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
mgl@1371
 43657
+extern void coff_get_symbol_info
mgl@1371
 43658
+  (bfd *, asymbol *, symbol_info *ret);
mgl@1371
 43659
+extern bfd_boolean _bfd_coff_is_local_label_name
mgl@1371
 43660
+  (bfd *, const char *);
mgl@1371
 43661
+extern asymbol *coff_bfd_make_debug_symbol
mgl@1371
 43662
+  (bfd *, void *, unsigned long);
mgl@1371
 43663
+extern bfd_boolean coff_find_nearest_line
mgl@1371
 43664
+  (bfd *, asection *, asymbol **, bfd_vma, const char **,
mgl@1371
 43665
+   const char **, unsigned int *);
mgl@1371
 43666
+extern bfd_boolean coff_find_inliner_info
mgl@1371
 43667
+  (bfd *, const char **, const char **, unsigned int *);
mgl@1371
 43668
+extern int coff_sizeof_headers
mgl@1371
 43669
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43670
+extern bfd_boolean bfd_coff_reloc16_relax_section
mgl@1371
 43671
+  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
mgl@1371
 43672
+extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
mgl@1371
 43673
+  (bfd *, struct bfd_link_info *, struct bfd_link_order *,
mgl@1371
 43674
+   bfd_byte *, bfd_boolean, asymbol **);
mgl@1371
 43675
+extern bfd_vma bfd_coff_reloc16_get_value
mgl@1371
 43676
+  (arelent *, struct bfd_link_info *, asection *);
mgl@1371
 43677
+extern void bfd_perform_slip
mgl@1371
 43678
+  (bfd *, unsigned int, asection *, bfd_vma);
mgl@1371
 43679
+
mgl@1371
 43680
+/* Functions and types in cofflink.c.  */
mgl@1371
 43681
+
mgl@1371
 43682
+#define STRING_SIZE_SIZE 4
mgl@1371
 43683
+
mgl@1371
 43684
+/* We use a hash table to merge identical enum, struct, and union
mgl@1371
 43685
+   definitions in the linker.  */
mgl@1371
 43686
+
mgl@1371
 43687
+/* Information we keep for a single element (an enum value, a
mgl@1371
 43688
+   structure or union field) in the debug merge hash table.  */
mgl@1371
 43689
+
mgl@1371
 43690
+struct coff_debug_merge_element
mgl@1371
 43691
+{
mgl@1371
 43692
+  /* Next element.  */
mgl@1371
 43693
+  struct coff_debug_merge_element *next;
mgl@1371
 43694
+
mgl@1371
 43695
+  /* Name.  */
mgl@1371
 43696
+  const char *name;
mgl@1371
 43697
+
mgl@1371
 43698
+  /* Type.  */
mgl@1371
 43699
+  unsigned int type;
mgl@1371
 43700
+
mgl@1371
 43701
+  /* Symbol index for complex type.  */
mgl@1371
 43702
+  long tagndx;
mgl@1371
 43703
+};
mgl@1371
 43704
+
mgl@1371
 43705
+/* A linked list of debug merge entries for a given name.  */
mgl@1371
 43706
+
mgl@1371
 43707
+struct coff_debug_merge_type
mgl@1371
 43708
+{
mgl@1371
 43709
+  /* Next type with the same name.  */
mgl@1371
 43710
+  struct coff_debug_merge_type *next;
mgl@1371
 43711
+
mgl@1371
 43712
+  /* Class of type.  */
mgl@1371
 43713
+  int class;
mgl@1371
 43714
+
mgl@1371
 43715
+  /* Symbol index where this type is defined.  */
mgl@1371
 43716
+  long indx;
mgl@1371
 43717
+
mgl@1371
 43718
+  /* List of elements.  */
mgl@1371
 43719
+  struct coff_debug_merge_element *elements;
mgl@1371
 43720
+};
mgl@1371
 43721
+
mgl@1371
 43722
+/* Information we store in the debug merge hash table.  */
mgl@1371
 43723
+
mgl@1371
 43724
+struct coff_debug_merge_hash_entry
mgl@1371
 43725
+{
mgl@1371
 43726
+  struct bfd_hash_entry root;
mgl@1371
 43727
+
mgl@1371
 43728
+  /* A list of types with this name.  */
mgl@1371
 43729
+  struct coff_debug_merge_type *types;
mgl@1371
 43730
+};
mgl@1371
 43731
+
mgl@1371
 43732
+/* The debug merge hash table.  */
mgl@1371
 43733
+
mgl@1371
 43734
+struct coff_debug_merge_hash_table
mgl@1371
 43735
+{
mgl@1371
 43736
+  struct bfd_hash_table root;
mgl@1371
 43737
+};
mgl@1371
 43738
+
mgl@1371
 43739
+/* Initialize a COFF debug merge hash table.  */
mgl@1371
 43740
+
mgl@1371
 43741
+#define coff_debug_merge_hash_table_init(table) \
mgl@1371
 43742
+  (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
mgl@1371
 43743
+			sizeof (struct coff_debug_merge_hash_entry)))
mgl@1371
 43744
+
mgl@1371
 43745
+/* Free a COFF debug merge hash table.  */
mgl@1371
 43746
+
mgl@1371
 43747
+#define coff_debug_merge_hash_table_free(table) \
mgl@1371
 43748
+  (bfd_hash_table_free (&(table)->root))
mgl@1371
 43749
+
mgl@1371
 43750
+/* Look up an entry in a COFF debug merge hash table.  */
mgl@1371
 43751
+
mgl@1371
 43752
+#define coff_debug_merge_hash_lookup(table, string, create, copy) \
mgl@1371
 43753
+  ((struct coff_debug_merge_hash_entry *) \
mgl@1371
 43754
+   bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
mgl@1371
 43755
+
mgl@1371
 43756
+/* Information we keep for each section in the output file when doing
mgl@1371
 43757
+   a relocatable link.  */
mgl@1371
 43758
+
mgl@1371
 43759
+struct coff_link_section_info
mgl@1371
 43760
+{
mgl@1371
 43761
+  /* The relocs to be output.  */
mgl@1371
 43762
+  struct internal_reloc *relocs;
mgl@1371
 43763
+  /* For each reloc against a global symbol whose index was not known
mgl@1371
 43764
+     when the reloc was handled, the global hash table entry.  */
mgl@1371
 43765
+  struct coff_link_hash_entry **rel_hashes;
mgl@1371
 43766
+};
mgl@1371
 43767
+
mgl@1371
 43768
+/* Information that we pass around while doing the final link step.  */
mgl@1371
 43769
+
mgl@1371
 43770
+struct coff_final_link_info
mgl@1371
 43771
+{
mgl@1371
 43772
+  /* General link information.  */
mgl@1371
 43773
+  struct bfd_link_info *info;
mgl@1371
 43774
+  /* Output BFD.  */
mgl@1371
 43775
+  bfd *output_bfd;
mgl@1371
 43776
+  /* Used to indicate failure in traversal routine.  */
mgl@1371
 43777
+  bfd_boolean failed;
mgl@1371
 43778
+  /* If doing "task linking" set only during the time when we want the
mgl@1371
 43779
+     global symbol writer to convert the storage class of defined global
mgl@1371
 43780
+     symbols from global to static. */
mgl@1371
 43781
+  bfd_boolean global_to_static;
mgl@1371
 43782
+  /* Hash table for long symbol names.  */
mgl@1371
 43783
+  struct bfd_strtab_hash *strtab;
mgl@1371
 43784
+  /* When doing a relocatable link, an array of information kept for
mgl@1371
 43785
+     each output section, indexed by the target_index field.  */
mgl@1371
 43786
+  struct coff_link_section_info *section_info;
mgl@1371
 43787
+  /* Symbol index of last C_FILE symbol (-1 if none).  */
mgl@1371
 43788
+  long last_file_index;
mgl@1371
 43789
+  /* Contents of last C_FILE symbol.  */
mgl@1371
 43790
+  struct internal_syment last_file;
mgl@1371
 43791
+  /* Symbol index of first aux entry of last .bf symbol with an empty
mgl@1371
 43792
+     endndx field (-1 if none).  */
mgl@1371
 43793
+  long last_bf_index;
mgl@1371
 43794
+  /* Contents of last_bf_index aux entry.  */
mgl@1371
 43795
+  union internal_auxent last_bf;
mgl@1371
 43796
+  /* Hash table used to merge debug information.  */
mgl@1371
 43797
+  struct coff_debug_merge_hash_table debug_merge;
mgl@1371
 43798
+  /* Buffer large enough to hold swapped symbols of any input file.  */
mgl@1371
 43799
+  struct internal_syment *internal_syms;
mgl@1371
 43800
+  /* Buffer large enough to hold sections of symbols of any input file.  */
mgl@1371
 43801
+  asection **sec_ptrs;
mgl@1371
 43802
+  /* Buffer large enough to hold output indices of symbols of any
mgl@1371
 43803
+     input file.  */
mgl@1371
 43804
+  long *sym_indices;
mgl@1371
 43805
+  /* Buffer large enough to hold output symbols for any input file.  */
mgl@1371
 43806
+  bfd_byte *outsyms;
mgl@1371
 43807
+  /* Buffer large enough to hold external line numbers for any input
mgl@1371
 43808
+     section.  */
mgl@1371
 43809
+  bfd_byte *linenos;
mgl@1371
 43810
+  /* Buffer large enough to hold any input section.  */
mgl@1371
 43811
+  bfd_byte *contents;
mgl@1371
 43812
+  /* Buffer large enough to hold external relocs of any input section.  */
mgl@1371
 43813
+  bfd_byte *external_relocs;
mgl@1371
 43814
+  /* Buffer large enough to hold swapped relocs of any input section.  */
mgl@1371
 43815
+  struct internal_reloc *internal_relocs;
mgl@1371
 43816
+};
mgl@1371
 43817
+
mgl@1371
 43818
+/* Most COFF variants have no way to record the alignment of a
mgl@1371
 43819
+   section.  This struct is used to set a specific alignment based on
mgl@1371
 43820
+   the name of the section.  */
mgl@1371
 43821
+
mgl@1371
 43822
+struct coff_section_alignment_entry
mgl@1371
 43823
+{
mgl@1371
 43824
+  /* The section name.  */
mgl@1371
 43825
+  const char *name;
mgl@1371
 43826
+
mgl@1371
 43827
+  /* This is either (unsigned int) -1, indicating that the section
mgl@1371
 43828
+     name must match exactly, or it is the number of letters which
mgl@1371
 43829
+     must match at the start of the name.  */
mgl@1371
 43830
+  unsigned int comparison_length;
mgl@1371
 43831
+
mgl@1371
 43832
+  /* These macros may be used to fill in the first two fields in a
mgl@1371
 43833
+     structure initialization.  */
mgl@1371
 43834
+#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
mgl@1371
 43835
+#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
mgl@1371
 43836
+
mgl@1371
 43837
+  /* Only use this entry if the default section alignment for this
mgl@1371
 43838
+     target is at least that much (as a power of two).  If this field
mgl@1371
 43839
+     is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
mgl@1371
 43840
+  unsigned int default_alignment_min;
mgl@1371
 43841
+
mgl@1371
 43842
+  /* Only use this entry if the default section alignment for this
mgl@1371
 43843
+     target is no greater than this (as a power of two).  If this
mgl@1371
 43844
+     field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored.  */
mgl@1371
 43845
+  unsigned int default_alignment_max;
mgl@1371
 43846
+
mgl@1371
 43847
+#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
mgl@1371
 43848
+
mgl@1371
 43849
+  /* The desired alignment for this section (as a power of two).  */
mgl@1371
 43850
+  unsigned int alignment_power;
mgl@1371
 43851
+};
mgl@1371
 43852
+
mgl@1371
 43853
+extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
mgl@1371
 43854
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 43855
+extern bfd_boolean _bfd_coff_link_hash_table_init
mgl@1371
 43856
+  (struct coff_link_hash_table *, bfd *,
mgl@1371
 43857
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
mgl@1371
 43858
+			       struct bfd_hash_table *,
mgl@1371
 43859
+			       const char *),
mgl@1371
 43860
+   unsigned int);
mgl@1371
 43861
+extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
mgl@1371
 43862
+  (bfd *);
mgl@1371
 43863
+extern const char *_bfd_coff_internal_syment_name
mgl@1371
 43864
+  (bfd *, const struct internal_syment *, char *);
mgl@1371
 43865
+extern bfd_boolean _bfd_coff_link_add_symbols
mgl@1371
 43866
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43867
+extern bfd_boolean _bfd_coff_final_link
mgl@1371
 43868
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43869
+extern struct internal_reloc *_bfd_coff_read_internal_relocs
mgl@1371
 43870
+  (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
mgl@1371
 43871
+   struct internal_reloc *);
mgl@1371
 43872
+extern bfd_boolean _bfd_coff_generic_relocate_section
mgl@1371
 43873
+  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
mgl@1371
 43874
+   struct internal_reloc *, struct internal_syment *, asection **);
mgl@1371
 43875
+extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
mgl@1371
 43876
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
mgl@1371
 43877
+extern bfd_boolean _bfd_coff_write_global_sym
mgl@1371
 43878
+  (struct coff_link_hash_entry *, void *);
mgl@1371
 43879
+extern bfd_boolean _bfd_coff_write_task_globals
mgl@1371
 43880
+  (struct coff_link_hash_entry *, void *);
mgl@1371
 43881
+extern bfd_boolean _bfd_coff_link_input_bfd
mgl@1371
 43882
+  (struct coff_final_link_info *, bfd *);
mgl@1371
 43883
+extern bfd_boolean _bfd_coff_reloc_link_order
mgl@1371
 43884
+  (bfd *, struct coff_final_link_info *, asection *,
mgl@1371
 43885
+   struct bfd_link_order *);
mgl@1371
 43886
+
mgl@1371
 43887
+
mgl@1371
 43888
+#define coff_get_section_contents_in_window \
mgl@1371
 43889
+  _bfd_generic_get_section_contents_in_window
mgl@1371
 43890
+
mgl@1371
 43891
+/* Functions in xcofflink.c.  */
mgl@1371
 43892
+
mgl@1371
 43893
+extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
mgl@1371
 43894
+  (bfd *);
mgl@1371
 43895
+extern long _bfd_xcoff_canonicalize_dynamic_symtab
mgl@1371
 43896
+  (bfd *, asymbol **);
mgl@1371
 43897
+extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
mgl@1371
 43898
+  (bfd *);
mgl@1371
 43899
+extern long _bfd_xcoff_canonicalize_dynamic_reloc
mgl@1371
 43900
+  (bfd *, arelent **, asymbol **);
mgl@1371
 43901
+extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
mgl@1371
 43902
+  (bfd *);
mgl@1371
 43903
+extern void _bfd_xcoff_bfd_link_hash_table_free
mgl@1371
 43904
+  (struct bfd_link_hash_table *);
mgl@1371
 43905
+extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
mgl@1371
 43906
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43907
+extern bfd_boolean _bfd_xcoff_bfd_final_link
mgl@1371
 43908
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43909
+extern bfd_boolean _bfd_ppc_xcoff_relocate_section
mgl@1371
 43910
+  (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
mgl@1371
 43911
+   struct internal_reloc *, struct internal_syment *, asection **);
mgl@1371
 43912
+
mgl@1371
 43913
+/* Functions in coff-ppc.c.  FIXME: These are called be pe.em in the
mgl@1371
 43914
+   linker, and so should start with bfd and be declared in bfd.h.  */
mgl@1371
 43915
+
mgl@1371
 43916
+extern bfd_boolean ppc_allocate_toc_section
mgl@1371
 43917
+  (struct bfd_link_info *);
mgl@1371
 43918
+extern bfd_boolean ppc_process_before_allocation
mgl@1371
 43919
+  (bfd *, struct bfd_link_info *);
mgl@1371
 43920
+
mgl@1371
 43921
+/* Extracted from coffcode.h.  */
mgl@1371
 43922
+typedef struct coff_ptr_struct
mgl@1371
 43923
+{
mgl@1371
 43924
+  /* Remembers the offset from the first symbol in the file for
mgl@1371
 43925
+     this symbol. Generated by coff_renumber_symbols. */
mgl@1371
 43926
+  unsigned int offset;
mgl@1371
 43927
+
mgl@1371
 43928
+  /* Should the value of this symbol be renumbered.  Used for
mgl@1371
 43929
+     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
mgl@1371
 43930
+  unsigned int fix_value : 1;
mgl@1371
 43931
+
mgl@1371
 43932
+  /* Should the tag field of this symbol be renumbered.
mgl@1371
 43933
+     Created by coff_pointerize_aux. */
mgl@1371
 43934
+  unsigned int fix_tag : 1;
mgl@1371
 43935
+
mgl@1371
 43936
+  /* Should the endidx field of this symbol be renumbered.
mgl@1371
 43937
+     Created by coff_pointerize_aux. */
mgl@1371
 43938
+  unsigned int fix_end : 1;
mgl@1371
 43939
+
mgl@1371
 43940
+  /* Should the x_csect.x_scnlen field be renumbered.
mgl@1371
 43941
+     Created by coff_pointerize_aux. */
mgl@1371
 43942
+  unsigned int fix_scnlen : 1;
mgl@1371
 43943
+
mgl@1371
 43944
+  /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
mgl@1371
 43945
+     index into the line number entries.  Set by coff_slurp_symbol_table.  */
mgl@1371
 43946
+  unsigned int fix_line : 1;
mgl@1371
 43947
+
mgl@1371
 43948
+  /* The container for the symbol structure as read and translated
mgl@1371
 43949
+     from the file. */
mgl@1371
 43950
+  union
mgl@1371
 43951
+  {
mgl@1371
 43952
+    union internal_auxent auxent;
mgl@1371
 43953
+    struct internal_syment syment;
mgl@1371
 43954
+  } u;
mgl@1371
 43955
+} combined_entry_type;
mgl@1371
 43956
+
mgl@1371
 43957
+
mgl@1371
 43958
+/* Each canonical asymbol really looks like this: */
mgl@1371
 43959
+
mgl@1371
 43960
+typedef struct coff_symbol_struct
mgl@1371
 43961
+{
mgl@1371
 43962
+  /* The actual symbol which the rest of BFD works with */
mgl@1371
 43963
+  asymbol symbol;
mgl@1371
 43964
+
mgl@1371
 43965
+  /* A pointer to the hidden information for this symbol */
mgl@1371
 43966
+  combined_entry_type *native;
mgl@1371
 43967
+
mgl@1371
 43968
+  /* A pointer to the linenumber information for this symbol */
mgl@1371
 43969
+  struct lineno_cache_entry *lineno;
mgl@1371
 43970
+
mgl@1371
 43971
+  /* Have the line numbers been relocated yet ? */
mgl@1371
 43972
+  bfd_boolean done_lineno;
mgl@1371
 43973
+} coff_symbol_type;
mgl@1371
 43974
+/* COFF symbol classifications.  */
mgl@1371
 43975
+
mgl@1371
 43976
+enum coff_symbol_classification
mgl@1371
 43977
+{
mgl@1371
 43978
+  /* Global symbol.  */
mgl@1371
 43979
+  COFF_SYMBOL_GLOBAL,
mgl@1371
 43980
+  /* Common symbol.  */
mgl@1371
 43981
+  COFF_SYMBOL_COMMON,
mgl@1371
 43982
+  /* Undefined symbol.  */
mgl@1371
 43983
+  COFF_SYMBOL_UNDEFINED,
mgl@1371
 43984
+  /* Local symbol.  */
mgl@1371
 43985
+  COFF_SYMBOL_LOCAL,
mgl@1371
 43986
+  /* PE section symbol.  */
mgl@1371
 43987
+  COFF_SYMBOL_PE_SECTION
mgl@1371
 43988
+};
mgl@1371
 43989
+
mgl@1371
 43990
+typedef struct
mgl@1371
 43991
+{
mgl@1371
 43992
+  void (*_bfd_coff_swap_aux_in)
mgl@1371
 43993
+    (bfd *, void *, int, int, int, int, void *);
mgl@1371
 43994
+
mgl@1371
 43995
+  void (*_bfd_coff_swap_sym_in)
mgl@1371
 43996
+    (bfd *, void *, void *);
mgl@1371
 43997
+
mgl@1371
 43998
+  void (*_bfd_coff_swap_lineno_in)
mgl@1371
 43999
+    (bfd *, void *, void *);
mgl@1371
 44000
+
mgl@1371
 44001
+  unsigned int (*_bfd_coff_swap_aux_out)
mgl@1371
 44002
+    (bfd *, void *, int, int, int, int, void *);
mgl@1371
 44003
+
mgl@1371
 44004
+  unsigned int (*_bfd_coff_swap_sym_out)
mgl@1371
 44005
+    (bfd *, void *, void *);
mgl@1371
 44006
+
mgl@1371
 44007
+  unsigned int (*_bfd_coff_swap_lineno_out)
mgl@1371
 44008
+    (bfd *, void *, void *);
mgl@1371
 44009
+
mgl@1371
 44010
+  unsigned int (*_bfd_coff_swap_reloc_out)
mgl@1371
 44011
+    (bfd *, void *, void *);
mgl@1371
 44012
+
mgl@1371
 44013
+  unsigned int (*_bfd_coff_swap_filehdr_out)
mgl@1371
 44014
+    (bfd *, void *, void *);
mgl@1371
 44015
+
mgl@1371
 44016
+  unsigned int (*_bfd_coff_swap_aouthdr_out)
mgl@1371
 44017
+    (bfd *, void *, void *);
mgl@1371
 44018
+
mgl@1371
 44019
+  unsigned int (*_bfd_coff_swap_scnhdr_out)
mgl@1371
 44020
+    (bfd *, void *, void *);
mgl@1371
 44021
+
mgl@1371
 44022
+  unsigned int _bfd_filhsz;
mgl@1371
 44023
+  unsigned int _bfd_aoutsz;
mgl@1371
 44024
+  unsigned int _bfd_scnhsz;
mgl@1371
 44025
+  unsigned int _bfd_symesz;
mgl@1371
 44026
+  unsigned int _bfd_auxesz;
mgl@1371
 44027
+  unsigned int _bfd_relsz;
mgl@1371
 44028
+  unsigned int _bfd_linesz;
mgl@1371
 44029
+  unsigned int _bfd_filnmlen;
mgl@1371
 44030
+  bfd_boolean _bfd_coff_long_filenames;
mgl@1371
 44031
+  bfd_boolean _bfd_coff_long_section_names;
mgl@1371
 44032
+  unsigned int _bfd_coff_default_section_alignment_power;
mgl@1371
 44033
+  bfd_boolean _bfd_coff_force_symnames_in_strings;
mgl@1371
 44034
+  unsigned int _bfd_coff_debug_string_prefix_length;
mgl@1371
 44035
+
mgl@1371
 44036
+  void (*_bfd_coff_swap_filehdr_in)
mgl@1371
 44037
+    (bfd *, void *, void *);
mgl@1371
 44038
+
mgl@1371
 44039
+  void (*_bfd_coff_swap_aouthdr_in)
mgl@1371
 44040
+    (bfd *, void *, void *);
mgl@1371
 44041
+
mgl@1371
 44042
+  void (*_bfd_coff_swap_scnhdr_in)
mgl@1371
 44043
+    (bfd *, void *, void *);
mgl@1371
 44044
+
mgl@1371
 44045
+  void (*_bfd_coff_swap_reloc_in)
mgl@1371
 44046
+    (bfd *abfd, void *, void *);
mgl@1371
 44047
+
mgl@1371
 44048
+  bfd_boolean (*_bfd_coff_bad_format_hook)
mgl@1371
 44049
+    (bfd *, void *);
mgl@1371
 44050
+
mgl@1371
 44051
+  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
mgl@1371
 44052
+    (bfd *, void *);
mgl@1371
 44053
+
mgl@1371
 44054
+  void * (*_bfd_coff_mkobject_hook)
mgl@1371
 44055
+    (bfd *, void *, void *);
mgl@1371
 44056
+
mgl@1371
 44057
+  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
mgl@1371
 44058
+    (bfd *, void *, const char *, asection *, flagword *);
mgl@1371
 44059
+
mgl@1371
 44060
+  void (*_bfd_set_alignment_hook)
mgl@1371
 44061
+    (bfd *, asection *, void *);
mgl@1371
 44062
+
mgl@1371
 44063
+  bfd_boolean (*_bfd_coff_slurp_symbol_table)
mgl@1371
 44064
+    (bfd *);
mgl@1371
 44065
+
mgl@1371
 44066
+  bfd_boolean (*_bfd_coff_symname_in_debug)
mgl@1371
 44067
+    (bfd *, struct internal_syment *);
mgl@1371
 44068
+
mgl@1371
 44069
+  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
mgl@1371
 44070
+    (bfd *, combined_entry_type *, combined_entry_type *,
mgl@1371
 44071
+            unsigned int, combined_entry_type *);
mgl@1371
 44072
+
mgl@1371
 44073
+  bfd_boolean (*_bfd_coff_print_aux)
mgl@1371
 44074
+    (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
mgl@1371
 44075
+            combined_entry_type *, unsigned int);
mgl@1371
 44076
+
mgl@1371
 44077
+  void (*_bfd_coff_reloc16_extra_cases)
mgl@1371
 44078
+    (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
mgl@1371
 44079
+           bfd_byte *, unsigned int *, unsigned int *);
mgl@1371
 44080
+
mgl@1371
 44081
+  int (*_bfd_coff_reloc16_estimate)
mgl@1371
 44082
+    (bfd *, asection *, arelent *, unsigned int,
mgl@1371
 44083
+            struct bfd_link_info *);
mgl@1371
 44084
+
mgl@1371
 44085
+  enum coff_symbol_classification (*_bfd_coff_classify_symbol)
mgl@1371
 44086
+    (bfd *, struct internal_syment *);
mgl@1371
 44087
+
mgl@1371
 44088
+  bfd_boolean (*_bfd_coff_compute_section_file_positions)
mgl@1371
 44089
+    (bfd *);
mgl@1371
 44090
+
mgl@1371
 44091
+  bfd_boolean (*_bfd_coff_start_final_link)
mgl@1371
 44092
+    (bfd *, struct bfd_link_info *);
mgl@1371
 44093
+
mgl@1371
 44094
+  bfd_boolean (*_bfd_coff_relocate_section)
mgl@1371
 44095
+    (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
mgl@1371
 44096
+            struct internal_reloc *, struct internal_syment *, asection **);
mgl@1371
 44097
+
mgl@1371
 44098
+  reloc_howto_type *(*_bfd_coff_rtype_to_howto)
mgl@1371
 44099
+    (bfd *, asection *, struct internal_reloc *,
mgl@1371
 44100
+            struct coff_link_hash_entry *, struct internal_syment *,
mgl@1371
 44101
+            bfd_vma *);
mgl@1371
 44102
+
mgl@1371
 44103
+  bfd_boolean (*_bfd_coff_adjust_symndx)
mgl@1371
 44104
+    (bfd *, struct bfd_link_info *, bfd *, asection *,
mgl@1371
 44105
+            struct internal_reloc *, bfd_boolean *);
mgl@1371
 44106
+
mgl@1371
 44107
+  bfd_boolean (*_bfd_coff_link_add_one_symbol)
mgl@1371
 44108
+    (struct bfd_link_info *, bfd *, const char *, flagword,
mgl@1371
 44109
+            asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
mgl@1371
 44110
+            struct bfd_link_hash_entry **);
mgl@1371
 44111
+
mgl@1371
 44112
+  bfd_boolean (*_bfd_coff_link_output_has_begun)
mgl@1371
 44113
+    (bfd *, struct coff_final_link_info *);
mgl@1371
 44114
+
mgl@1371
 44115
+  bfd_boolean (*_bfd_coff_final_link_postscript)
mgl@1371
 44116
+    (bfd *, struct coff_final_link_info *);
mgl@1371
 44117
+
mgl@1371
 44118
+} bfd_coff_backend_data;
mgl@1371
 44119
+
mgl@1371
 44120
+#define coff_backend_info(abfd) \
mgl@1371
 44121
+  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
mgl@1371
 44122
+
mgl@1371
 44123
+#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
mgl@1371
 44124
+  ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
mgl@1371
 44125
+
mgl@1371
 44126
+#define bfd_coff_swap_sym_in(a,e,i) \
mgl@1371
 44127
+  ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
mgl@1371
 44128
+
mgl@1371
 44129
+#define bfd_coff_swap_lineno_in(a,e,i) \
mgl@1371
 44130
+  ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
mgl@1371
 44131
+
mgl@1371
 44132
+#define bfd_coff_swap_reloc_out(abfd, i, o) \
mgl@1371
 44133
+  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
mgl@1371
 44134
+
mgl@1371
 44135
+#define bfd_coff_swap_lineno_out(abfd, i, o) \
mgl@1371
 44136
+  ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
mgl@1371
 44137
+
mgl@1371
 44138
+#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
mgl@1371
 44139
+  ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
mgl@1371
 44140
+
mgl@1371
 44141
+#define bfd_coff_swap_sym_out(abfd, i,o) \
mgl@1371
 44142
+  ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
mgl@1371
 44143
+
mgl@1371
 44144
+#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
mgl@1371
 44145
+  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
mgl@1371
 44146
+
mgl@1371
 44147
+#define bfd_coff_swap_filehdr_out(abfd, i,o) \
mgl@1371
 44148
+  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
mgl@1371
 44149
+
mgl@1371
 44150
+#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
mgl@1371
 44151
+  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
mgl@1371
 44152
+
mgl@1371
 44153
+#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
mgl@1371
 44154
+#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
mgl@1371
 44155
+#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
mgl@1371
 44156
+#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
mgl@1371
 44157
+#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
mgl@1371
 44158
+#define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
mgl@1371
 44159
+#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
mgl@1371
 44160
+#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
mgl@1371
 44161
+#define bfd_coff_long_filenames(abfd) \
mgl@1371
 44162
+  (coff_backend_info (abfd)->_bfd_coff_long_filenames)
mgl@1371
 44163
+#define bfd_coff_long_section_names(abfd) \
mgl@1371
 44164
+  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
mgl@1371
 44165
+#define bfd_coff_default_section_alignment_power(abfd) \
mgl@1371
 44166
+  (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
mgl@1371
 44167
+#define bfd_coff_swap_filehdr_in(abfd, i,o) \
mgl@1371
 44168
+  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
mgl@1371
 44169
+
mgl@1371
 44170
+#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
mgl@1371
 44171
+  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
mgl@1371
 44172
+
mgl@1371
 44173
+#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
mgl@1371
 44174
+  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
mgl@1371
 44175
+
mgl@1371
 44176
+#define bfd_coff_swap_reloc_in(abfd, i, o) \
mgl@1371
 44177
+  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
mgl@1371
 44178
+
mgl@1371
 44179
+#define bfd_coff_bad_format_hook(abfd, filehdr) \
mgl@1371
 44180
+  ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
mgl@1371
 44181
+
mgl@1371
 44182
+#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
mgl@1371
 44183
+  ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
mgl@1371
 44184
+#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
mgl@1371
 44185
+  ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
mgl@1371
 44186
+   (abfd, filehdr, aouthdr))
mgl@1371
 44187
+
mgl@1371
 44188
+#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
mgl@1371
 44189
+  ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
mgl@1371
 44190
+   (abfd, scnhdr, name, section, flags_ptr))
mgl@1371
 44191
+
mgl@1371
 44192
+#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
mgl@1371
 44193
+  ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
mgl@1371
 44194
+
mgl@1371
 44195
+#define bfd_coff_slurp_symbol_table(abfd)\
mgl@1371
 44196
+  ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
mgl@1371
 44197
+
mgl@1371
 44198
+#define bfd_coff_symname_in_debug(abfd, sym)\
mgl@1371
 44199
+  ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
mgl@1371
 44200
+
mgl@1371
 44201
+#define bfd_coff_force_symnames_in_strings(abfd)\
mgl@1371
 44202
+  (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
mgl@1371
 44203
+
mgl@1371
 44204
+#define bfd_coff_debug_string_prefix_length(abfd)\
mgl@1371
 44205
+  (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
mgl@1371
 44206
+
mgl@1371
 44207
+#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
mgl@1371
 44208
+  ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
mgl@1371
 44209
+   (abfd, file, base, symbol, aux, indaux))
mgl@1371
 44210
+
mgl@1371
 44211
+#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
mgl@1371
 44212
+                                     reloc, data, src_ptr, dst_ptr)\
mgl@1371
 44213
+  ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
mgl@1371
 44214
+   (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
mgl@1371
 44215
+
mgl@1371
 44216
+#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
mgl@1371
 44217
+  ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
mgl@1371
 44218
+   (abfd, section, reloc, shrink, link_info))
mgl@1371
 44219
+
mgl@1371
 44220
+#define bfd_coff_classify_symbol(abfd, sym)\
mgl@1371
 44221
+  ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
mgl@1371
 44222
+   (abfd, sym))
mgl@1371
 44223
+
mgl@1371
 44224
+#define bfd_coff_compute_section_file_positions(abfd)\
mgl@1371
 44225
+  ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
mgl@1371
 44226
+   (abfd))
mgl@1371
 44227
+
mgl@1371
 44228
+#define bfd_coff_start_final_link(obfd, info)\
mgl@1371
 44229
+  ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
mgl@1371
 44230
+   (obfd, info))
mgl@1371
 44231
+#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
mgl@1371
 44232
+  ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
mgl@1371
 44233
+   (obfd, info, ibfd, o, con, rel, isyms, secs))
mgl@1371
 44234
+#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
mgl@1371
 44235
+  ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
mgl@1371
 44236
+   (abfd, sec, rel, h, sym, addendp))
mgl@1371
 44237
+#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
mgl@1371
 44238
+  ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
mgl@1371
 44239
+   (obfd, info, ibfd, sec, rel, adjustedp))
mgl@1371
 44240
+#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
mgl@1371
 44241
+                                     value, string, cp, coll, hashp)\
mgl@1371
 44242
+  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
mgl@1371
 44243
+   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
mgl@1371
 44244
+
mgl@1371
 44245
+#define bfd_coff_link_output_has_begun(a,p) \
mgl@1371
 44246
+  ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
mgl@1371
 44247
+#define bfd_coff_final_link_postscript(a,p) \
mgl@1371
 44248
+  ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
mgl@1371
 44249
+
mgl@1371
 44250
--- a/bfd/libbfd.h
mgl@1371
 44251
+++ b/bfd/libbfd.h
mgl@1371
 44252
@@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
mgl@1371
 44253
   "BFD_RELOC_AVR_LDI",
mgl@1371
 44254
   "BFD_RELOC_AVR_6",
mgl@1371
 44255
   "BFD_RELOC_AVR_6_ADIW",
mgl@1371
 44256
+  "BFD_RELOC_AVR32_DIFF32",
mgl@1371
 44257
+  "BFD_RELOC_AVR32_DIFF16",
mgl@1371
 44258
+  "BFD_RELOC_AVR32_DIFF8",
mgl@1371
 44259
+  "BFD_RELOC_AVR32_GOT32",
mgl@1371
 44260
+  "BFD_RELOC_AVR32_GOT16",
mgl@1371
 44261
+  "BFD_RELOC_AVR32_GOT8",
mgl@1371
 44262
+  "BFD_RELOC_AVR32_21S",
mgl@1371
 44263
+  "BFD_RELOC_AVR32_16U",
mgl@1371
 44264
+  "BFD_RELOC_AVR32_16S",
mgl@1371
 44265
+  "BFD_RELOC_AVR32_SUB5",
mgl@1371
 44266
+  "BFD_RELOC_AVR32_8S_EXT",
mgl@1371
 44267
+  "BFD_RELOC_AVR32_8S",
mgl@1371
 44268
+  "BFD_RELOC_AVR32_15S",
mgl@1371
 44269
+  "BFD_RELOC_AVR32_22H_PCREL",
mgl@1371
 44270
+  "BFD_RELOC_AVR32_18W_PCREL",
mgl@1371
 44271
+  "BFD_RELOC_AVR32_16B_PCREL",
mgl@1371
 44272
+  "BFD_RELOC_AVR32_16N_PCREL",
mgl@1371
 44273
+  "BFD_RELOC_AVR32_14UW_PCREL",
mgl@1371
 44274
+  "BFD_RELOC_AVR32_11H_PCREL",
mgl@1371
 44275
+  "BFD_RELOC_AVR32_10UW_PCREL",
mgl@1371
 44276
+  "BFD_RELOC_AVR32_9H_PCREL",
mgl@1371
 44277
+  "BFD_RELOC_AVR32_9UW_PCREL",
mgl@1371
 44278
+  "BFD_RELOC_AVR32_GOTPC",
mgl@1371
 44279
+  "BFD_RELOC_AVR32_GOTCALL",
mgl@1371
 44280
+  "BFD_RELOC_AVR32_LDA_GOT",
mgl@1371
 44281
+  "BFD_RELOC_AVR32_GOT21S",
mgl@1371
 44282
+  "BFD_RELOC_AVR32_GOT18SW",
mgl@1371
 44283
+  "BFD_RELOC_AVR32_GOT16S",
mgl@1371
 44284
+  "BFD_RELOC_AVR32_32_CPENT",
mgl@1371
 44285
+  "BFD_RELOC_AVR32_CPCALL",
mgl@1371
 44286
+  "BFD_RELOC_AVR32_16_CP",
mgl@1371
 44287
+  "BFD_RELOC_AVR32_9W_CP",
mgl@1371
 44288
+  "BFD_RELOC_AVR32_ALIGN",
mgl@1371
 44289
+  "BFD_RELOC_AVR32_14UW",
mgl@1371
 44290
+  "BFD_RELOC_AVR32_10UW",
mgl@1371
 44291
+  "BFD_RELOC_AVR32_10SW",
mgl@1371
 44292
+  "BFD_RELOC_AVR32_STHH_W",
mgl@1371
 44293
+  "BFD_RELOC_AVR32_7UW",
mgl@1371
 44294
+  "BFD_RELOC_AVR32_6S",
mgl@1371
 44295
+  "BFD_RELOC_AVR32_6UW",
mgl@1371
 44296
+  "BFD_RELOC_AVR32_4UH",
mgl@1371
 44297
+  "BFD_RELOC_AVR32_3U",
mgl@1371
 44298
   "BFD_RELOC_390_12",
mgl@1371
 44299
   "BFD_RELOC_390_GOT12",
mgl@1371
 44300
   "BFD_RELOC_390_PLT32",
mgl@1371
 44301
--- /dev/null
mgl@1371
 44302
+++ b/bfd/libtool
mgl@1371
 44303
@@ -0,0 +1,7871 @@
mgl@1371
 44304
+#! /bin/bash
mgl@1371
 44305
+
mgl@1371
 44306
+# libtool - Provide generalized library-building support services.
mgl@1371
 44307
+# Generated automatically by config.status (bfd) 2.18.atmel.1.0.1
mgl@1371
 44308
+# Libtool was configured on host hcegtvedt:
mgl@1371
 44309
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
mgl@1371
 44310
+#
mgl@1371
 44311
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
mgl@1371
 44312
+#                 2006, 2007, 2008 Free Software Foundation, Inc.
mgl@1371
 44313
+#   Written by Gordon Matzigkeit, 1996
mgl@1371
 44314
+#
mgl@1371
 44315
+#   This file is part of GNU Libtool.
mgl@1371
 44316
+#
mgl@1371
 44317
+# GNU Libtool is free software; you can redistribute it and/or
mgl@1371
 44318
+# modify it under the terms of the GNU General Public License as
mgl@1371
 44319
+# published by the Free Software Foundation; either version 2 of
mgl@1371
 44320
+# the License, or (at your option) any later version.
mgl@1371
 44321
+#
mgl@1371
 44322
+# As a special exception to the GNU General Public License,
mgl@1371
 44323
+# if you distribute this file as part of a program or library that
mgl@1371
 44324
+# is built using GNU Libtool, you may include this file under the
mgl@1371
 44325
+# same distribution terms that you use for the rest of that program.
mgl@1371
 44326
+#
mgl@1371
 44327
+# GNU Libtool is distributed in the hope that it will be useful,
mgl@1371
 44328
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 44329
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
mgl@1371
 44330
+# GNU General Public License for more details.
mgl@1371
 44331
+#
mgl@1371
 44332
+# You should have received a copy of the GNU General Public License
mgl@1371
 44333
+# along with GNU Libtool; see the file COPYING.  If not, a copy
mgl@1371
 44334
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
mgl@1371
 44335
+# obtained by writing to the Free Software Foundation, Inc.,
mgl@1371
 44336
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
mgl@1371
 44337
+
mgl@1371
 44338
+
mgl@1371
 44339
+# The names of the tagged configurations supported by this script.
mgl@1371
 44340
+available_tags=""
mgl@1371
 44341
+
mgl@1371
 44342
+# ### BEGIN LIBTOOL CONFIG
mgl@1371
 44343
+
mgl@1371
 44344
+# Whether or not to build shared libraries.
mgl@1371
 44345
+build_libtool_libs=no
mgl@1371
 44346
+
mgl@1371
 44347
+# Which release of libtool.m4 was used?
mgl@1371
 44348
+macro_version=2.2.4
mgl@1371
 44349
+macro_revision=1.2976
mgl@1371
 44350
+
mgl@1371
 44351
+# Whether or not to build static libraries.
mgl@1371
 44352
+build_old_libs=yes
mgl@1371
 44353
+
mgl@1371
 44354
+# What type of objects to build.
mgl@1371
 44355
+pic_mode=default
mgl@1371
 44356
+
mgl@1371
 44357
+# Whether or not to optimize for fast installation.
mgl@1371
 44358
+fast_install=needless
mgl@1371
 44359
+
mgl@1371
 44360
+# The host system.
mgl@1371
 44361
+host_alias=i686-pc-linux-gnu
mgl@1371
 44362
+host=i686-pc-linux-gnu
mgl@1371
 44363
+host_os=linux-gnu
mgl@1371
 44364
+
mgl@1371
 44365
+# The build system.
mgl@1371
 44366
+build_alias=i686-pc-linux-gnu
mgl@1371
 44367
+build=i686-pc-linux-gnu
mgl@1371
 44368
+build_os=linux-gnu
mgl@1371
 44369
+
mgl@1371
 44370
+# A sed program that does not truncate output.
mgl@1371
 44371
+SED="/bin/sed"
mgl@1371
 44372
+
mgl@1371
 44373
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
mgl@1371
 44374
+Xsed="$SED -e 1s/^X//"
mgl@1371
 44375
+
mgl@1371
 44376
+# A grep program that handles long lines.
mgl@1371
 44377
+GREP="/bin/grep"
mgl@1371
 44378
+
mgl@1371
 44379
+# An ERE matcher.
mgl@1371
 44380
+EGREP="/bin/grep -E"
mgl@1371
 44381
+
mgl@1371
 44382
+# A literal string matcher.
mgl@1371
 44383
+FGREP="/bin/grep -F"
mgl@1371
 44384
+
mgl@1371
 44385
+# A BSD- or MS-compatible name lister.
mgl@1371
 44386
+NM="nm"
mgl@1371
 44387
+
mgl@1371
 44388
+# Whether we need soft or hard links.
mgl@1371
 44389
+LN_S="ln -s"
mgl@1371
 44390
+
mgl@1371
 44391
+# What is the maximum length of a command?
mgl@1371
 44392
+max_cmd_len=805306365
mgl@1371
 44393
+
mgl@1371
 44394
+# Object file suffix (normally "o").
mgl@1371
 44395
+objext=o
mgl@1371
 44396
+
mgl@1371
 44397
+# Executable file suffix (normally "").
mgl@1371
 44398
+exeext=
mgl@1371
 44399
+
mgl@1371
 44400
+# whether the shell understands "unset".
mgl@1371
 44401
+lt_unset=unset
mgl@1371
 44402
+
mgl@1371
 44403
+# turn spaces into newlines.
mgl@1371
 44404
+SP2NL="tr \\040 \\012"
mgl@1371
 44405
+
mgl@1371
 44406
+# turn newlines into spaces.
mgl@1371
 44407
+NL2SP="tr \\015\\012 \\040\\040"
mgl@1371
 44408
+
mgl@1371
 44409
+# How to create reloadable object files.
mgl@1371
 44410
+reload_flag=" -r"
mgl@1371
 44411
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
mgl@1371
 44412
+
mgl@1371
 44413
+# Method to check whether dependent libraries are shared objects.
mgl@1371
 44414
+deplibs_check_method="pass_all"
mgl@1371
 44415
+
mgl@1371
 44416
+# Command to use when deplibs_check_method == "file_magic".
mgl@1371
 44417
+file_magic_cmd="\$MAGIC_CMD"
mgl@1371
 44418
+
mgl@1371
 44419
+# The archiver.
mgl@1371
 44420
+AR="ar"
mgl@1371
 44421
+AR_FLAGS="cru"
mgl@1371
 44422
+
mgl@1371
 44423
+# A symbol stripping program.
mgl@1371
 44424
+STRIP="strip"
mgl@1371
 44425
+
mgl@1371
 44426
+# Commands used to install an old-style archive.
mgl@1371
 44427
+RANLIB="ranlib"
mgl@1371
 44428
+old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
mgl@1371
 44429
+old_postuninstall_cmds=""
mgl@1371
 44430
+
mgl@1371
 44431
+# A C compiler.
mgl@1371
 44432
+LTCC="gcc"
mgl@1371
 44433
+
mgl@1371
 44434
+# LTCC compiler flags.
mgl@1371
 44435
+LTCFLAGS="-g -O2"
mgl@1371
 44436
+
mgl@1371
 44437
+# Take the output of nm and produce a listing of raw symbols and C names.
mgl@1371
 44438
+global_symbol_pipe="sed -n -e 's/^.*[	 ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[	 ][	 ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
mgl@1371
 44439
+
mgl@1371
 44440
+# Transform the output of nm in a proper C declaration.
mgl@1371
 44441
+global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
mgl@1371
 44442
+
mgl@1371
 44443
+# Transform the output of nm in a C name address pair.
mgl@1371
 44444
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (void *) \\&\\2},/p'"
mgl@1371
 44445
+
mgl@1371
 44446
+# Transform the output of nm in a C name address pair when lib prefix is needed.
mgl@1371
 44447
+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'"
mgl@1371
 44448
+
mgl@1371
 44449
+# The name of the directory that contains temporary libtool files.
mgl@1371
 44450
+objdir=.libs
mgl@1371
 44451
+
mgl@1371
 44452
+# Shell to use when invoking shell scripts.
mgl@1371
 44453
+SHELL="/bin/bash"
mgl@1371
 44454
+
mgl@1371
 44455
+# An echo program that does not interpret backslashes.
mgl@1371
 44456
+ECHO="echo"
mgl@1371
 44457
+
mgl@1371
 44458
+# Used to examine libraries when file_magic_cmd begins with "file".
mgl@1371
 44459
+MAGIC_CMD=file
mgl@1371
 44460
+
mgl@1371
 44461
+# Must we lock files when doing compilation?
mgl@1371
 44462
+need_locks="no"
mgl@1371
 44463
+
mgl@1371
 44464
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
mgl@1371
 44465
+DSYMUTIL=""
mgl@1371
 44466
+
mgl@1371
 44467
+# Tool to change global to local symbols on Mac OS X.
mgl@1371
 44468
+NMEDIT=""
mgl@1371
 44469
+
mgl@1371
 44470
+# Tool to manipulate fat objects and archives on Mac OS X.
mgl@1371
 44471
+LIPO=""
mgl@1371
 44472
+
mgl@1371
 44473
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
mgl@1371
 44474
+OTOOL=""
mgl@1371
 44475
+
mgl@1371
 44476
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
mgl@1371
 44477
+OTOOL64=""
mgl@1371
 44478
+
mgl@1371
 44479
+# Old archive suffix (normally "a").
mgl@1371
 44480
+libext=a
mgl@1371
 44481
+
mgl@1371
 44482
+# Shared library suffix (normally ".so").
mgl@1371
 44483
+shrext_cmds=".so"
mgl@1371
 44484
+
mgl@1371
 44485
+# The commands to extract the exported symbol list from a shared archive.
mgl@1371
 44486
+extract_expsyms_cmds=""
mgl@1371
 44487
+
mgl@1371
 44488
+# Variables whose values should be saved in libtool wrapper scripts and
mgl@1371
 44489
+# restored at link time.
mgl@1371
 44490
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
mgl@1371
 44491
+
mgl@1371
 44492
+# Do we need the "lib" prefix for modules?
mgl@1371
 44493
+need_lib_prefix=no
mgl@1371
 44494
+
mgl@1371
 44495
+# Do we need a version for libraries?
mgl@1371
 44496
+need_version=no
mgl@1371
 44497
+
mgl@1371
 44498
+# Library versioning type.
mgl@1371
 44499
+version_type=linux
mgl@1371
 44500
+
mgl@1371
 44501
+# Shared library runtime path variable.
mgl@1371
 44502
+runpath_var=LD_RUN_PATH
mgl@1371
 44503
+
mgl@1371
 44504
+# Shared library path variable.
mgl@1371
 44505
+shlibpath_var=LD_LIBRARY_PATH
mgl@1371
 44506
+
mgl@1371
 44507
+# Is shlibpath searched before the hard-coded library search path?
mgl@1371
 44508
+shlibpath_overrides_runpath=no
mgl@1371
 44509
+
mgl@1371
 44510
+# Format of library name prefix.
mgl@1371
 44511
+libname_spec="lib\$name"
mgl@1371
 44512
+
mgl@1371
 44513
+# List of archive names.  First name is the real one, the rest are links.
mgl@1371
 44514
+# The last name is the one that the linker finds with -lNAME
mgl@1371
 44515
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
mgl@1371
 44516
+
mgl@1371
 44517
+# The coded name of the library, if different from the real name.
mgl@1371
 44518
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
mgl@1371
 44519
+
mgl@1371
 44520
+# Command to use after installation of a shared archive.
mgl@1371
 44521
+postinstall_cmds=""
mgl@1371
 44522
+
mgl@1371
 44523
+# Command to use after uninstallation of a shared archive.
mgl@1371
 44524
+postuninstall_cmds=""
mgl@1371
 44525
+
mgl@1371
 44526
+# Commands used to finish a libtool library installation in a directory.
mgl@1371
 44527
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
mgl@1371
 44528
+
mgl@1371
 44529
+# As "finish_cmds", except a single script fragment to be evaled but
mgl@1371
 44530
+# not shown.
mgl@1371
 44531
+finish_eval=""
mgl@1371
 44532
+
mgl@1371
 44533
+# Whether we should hardcode library paths into libraries.
mgl@1371
 44534
+hardcode_into_libs=yes
mgl@1371
 44535
+
mgl@1371
 44536
+# Compile-time system search path for libraries.
mgl@1371
 44537
+sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
mgl@1371
 44538
+
mgl@1371
 44539
+# Run-time system search path for libraries.
mgl@1371
 44540
+sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
mgl@1371
 44541
+
mgl@1371
 44542
+# Whether dlopen is supported.
mgl@1371
 44543
+dlopen_support=unknown
mgl@1371
 44544
+
mgl@1371
 44545
+# Whether dlopen of programs is supported.
mgl@1371
 44546
+dlopen_self=unknown
mgl@1371
 44547
+
mgl@1371
 44548
+# Whether dlopen of statically linked programs is supported.
mgl@1371
 44549
+dlopen_self_static=unknown
mgl@1371
 44550
+
mgl@1371
 44551
+# Commands to strip libraries.
mgl@1371
 44552
+old_striplib="strip --strip-debug"
mgl@1371
 44553
+striplib="strip --strip-unneeded"
mgl@1371
 44554
+
mgl@1371
 44555
+
mgl@1371
 44556
+# The linker used to build libraries.
mgl@1371
 44557
+LD="ld"
mgl@1371
 44558
+
mgl@1371
 44559
+# Commands used to build an old-style archive.
mgl@1371
 44560
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
mgl@1371
 44561
+
mgl@1371
 44562
+# A language specific compiler.
mgl@1371
 44563
+CC="gcc"
mgl@1371
 44564
+
mgl@1371
 44565
+# Is the compiler the GNU compiler?
mgl@1371
 44566
+with_gcc=yes
mgl@1371
 44567
+
mgl@1371
 44568
+# Compiler flag to turn off builtin functions.
mgl@1371
 44569
+no_builtin_flag=" -fno-builtin"
mgl@1371
 44570
+
mgl@1371
 44571
+# How to pass a linker flag through the compiler.
mgl@1371
 44572
+wl="-Wl,"
mgl@1371
 44573
+
mgl@1371
 44574
+# Additional compiler flags for building library objects.
mgl@1371
 44575
+pic_flag=" -fPIC -DPIC"
mgl@1371
 44576
+
mgl@1371
 44577
+# Compiler flag to prevent dynamic linking.
mgl@1371
 44578
+link_static_flag="-static"
mgl@1371
 44579
+
mgl@1371
 44580
+# Does compiler simultaneously support -c and -o options?
mgl@1371
 44581
+compiler_c_o="yes"
mgl@1371
 44582
+
mgl@1371
 44583
+# Whether or not to add -lc for building shared libraries.
mgl@1371
 44584
+build_libtool_need_lc=yes
mgl@1371
 44585
+
mgl@1371
 44586
+# Whether or not to disallow shared libs when runtime libs are static.
mgl@1371
 44587
+allow_libtool_libs_with_static_runtimes=no
mgl@1371
 44588
+
mgl@1371
 44589
+# Compiler flag to allow reflexive dlopens.
mgl@1371
 44590
+export_dynamic_flag_spec="\${wl}--export-dynamic"
mgl@1371
 44591
+
mgl@1371
 44592
+# Compiler flag to generate shared objects directly from archives.
mgl@1371
 44593
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
mgl@1371
 44594
+
mgl@1371
 44595
+# Whether the compiler copes with passing no objects directly.
mgl@1371
 44596
+compiler_needs_object="no"
mgl@1371
 44597
+
mgl@1371
 44598
+# Create an old-style archive from a shared archive.
mgl@1371
 44599
+old_archive_from_new_cmds=""
mgl@1371
 44600
+
mgl@1371
 44601
+# Create a temporary old-style archive to link instead of a shared archive.
mgl@1371
 44602
+old_archive_from_expsyms_cmds=""
mgl@1371
 44603
+
mgl@1371
 44604
+# Commands used to build a shared archive.
mgl@1371
 44605
+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
mgl@1371
 44606
+archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
mgl@1371
 44607
+	    cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
mgl@1371
 44608
+	    echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
mgl@1371
 44609
+	    \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
mgl@1371
 44610
+
mgl@1371
 44611
+# Commands used to build a loadable module if different from building
mgl@1371
 44612
+# a shared archive.
mgl@1371
 44613
+module_cmds=""
mgl@1371
 44614
+module_expsym_cmds=""
mgl@1371
 44615
+
mgl@1371
 44616
+# Whether we are building with GNU ld or not.
mgl@1371
 44617
+with_gnu_ld="yes"
mgl@1371
 44618
+
mgl@1371
 44619
+# Flag that allows shared libraries with undefined symbols to be built.
mgl@1371
 44620
+allow_undefined_flag=""
mgl@1371
 44621
+
mgl@1371
 44622
+# Flag that enforces no undefined symbols.
mgl@1371
 44623
+no_undefined_flag=""
mgl@1371
 44624
+
mgl@1371
 44625
+# Flag to hardcode $libdir into a binary during linking.
mgl@1371
 44626
+# This must work even if $libdir does not exist
mgl@1371
 44627
+hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
mgl@1371
 44628
+
mgl@1371
 44629
+# If ld is used when linking, flag to hardcode $libdir into a binary
mgl@1371
 44630
+# during linking.  This must work even if $libdir does not exist.
mgl@1371
 44631
+hardcode_libdir_flag_spec_ld=""
mgl@1371
 44632
+
mgl@1371
 44633
+# Whether we need a single "-rpath" flag with a separated argument.
mgl@1371
 44634
+hardcode_libdir_separator=""
mgl@1371
 44635
+
mgl@1371
 44636
+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
mgl@1371
 44637
+# DIR into the resulting binary.
mgl@1371
 44638
+hardcode_direct=no
mgl@1371
 44639
+
mgl@1371
 44640
+# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
mgl@1371
 44641
+# DIR into the resulting binary and the resulting library dependency is
mgl@1371
 44642
+# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
mgl@1371
 44643
+# library is relocated.
mgl@1371
 44644
+hardcode_direct_absolute=no
mgl@1371
 44645
+
mgl@1371
 44646
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
mgl@1371
 44647
+# into the resulting binary.
mgl@1371
 44648
+hardcode_minus_L=no
mgl@1371
 44649
+
mgl@1371
 44650
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
mgl@1371
 44651
+# into the resulting binary.
mgl@1371
 44652
+hardcode_shlibpath_var=unsupported
mgl@1371
 44653
+
mgl@1371
 44654
+# Set to "yes" if building a shared library automatically hardcodes DIR
mgl@1371
 44655
+# into the library and all subsequent libraries and executables linked
mgl@1371
 44656
+# against it.
mgl@1371
 44657
+hardcode_automatic=no
mgl@1371
 44658
+
mgl@1371
 44659
+# Set to yes if linker adds runtime paths of dependent libraries
mgl@1371
 44660
+# to runtime path list.
mgl@1371
 44661
+inherit_rpath=no
mgl@1371
 44662
+
mgl@1371
 44663
+# Whether libtool must link a program against all its dependency libraries.
mgl@1371
 44664
+link_all_deplibs=unknown
mgl@1371
 44665
+
mgl@1371
 44666
+# Fix the shell variable $srcfile for the compiler.
mgl@1371
 44667
+fix_srcfile_path=""
mgl@1371
 44668
+
mgl@1371
 44669
+# Set to "yes" if exported symbols are required.
mgl@1371
 44670
+always_export_symbols=no
mgl@1371
 44671
+
mgl@1371
 44672
+# The commands to list exported symbols.
mgl@1371
 44673
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
mgl@1371
 44674
+
mgl@1371
 44675
+# Symbols that should not be listed in the preloaded symbols.
mgl@1371
 44676
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
mgl@1371
 44677
+
mgl@1371
 44678
+# Symbols that must always be exported.
mgl@1371
 44679
+include_expsyms=""
mgl@1371
 44680
+
mgl@1371
 44681
+# Commands necessary for linking programs (against libraries) with templates.
mgl@1371
 44682
+prelink_cmds=""
mgl@1371
 44683
+
mgl@1371
 44684
+# Specify filename containing input files.
mgl@1371
 44685
+file_list_spec=""
mgl@1371
 44686
+
mgl@1371
 44687
+# How to hardcode a shared library path into an executable.
mgl@1371
 44688
+hardcode_action=immediate
mgl@1371
 44689
+
mgl@1371
 44690
+# ### END LIBTOOL CONFIG
mgl@1371
 44691
+
mgl@1371
 44692
+# Generated from ltmain.m4sh; do not edit by hand
mgl@1371
 44693
+
mgl@1371
 44694
+# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
mgl@1371
 44695
+# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
mgl@1371
 44696
+
mgl@1371
 44697
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
mgl@1371
 44698
+# This is free software; see the source for copying conditions.  There is NO
mgl@1371
 44699
+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
mgl@1371
 44700
+
mgl@1371
 44701
+# This program is free software; you can redistribute it and/or modify
mgl@1371
 44702
+# it under the terms of the GNU General Public License as published by
mgl@1371
 44703
+# the Free Software Foundation; either version 2 of the License, or
mgl@1371
 44704
+# (at your option) any later version.
mgl@1371
 44705
+#
mgl@1371
 44706
+# This program is distributed in the hope that it will be useful, but
mgl@1371
 44707
+# WITHOUT ANY WARRANTY; without even the implied warranty of
mgl@1371
 44708
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
mgl@1371
 44709
+# General Public License for more details.
mgl@1371
 44710
+#
mgl@1371
 44711
+# You should have received a copy of the GNU General Public License
mgl@1371
 44712
+# along with this program; if not, write to the Free Software
mgl@1371
 44713
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
mgl@1371
 44714
+#
mgl@1371
 44715
+# As a special exception to the GNU General Public License, if you
mgl@1371
 44716
+# distribute this file as part of a program that contains a
mgl@1371
 44717
+# configuration script generated by Autoconf, you may include it under
mgl@1371
 44718
+# the same distribution terms that you use for the rest of that program.
mgl@1371
 44719
+
mgl@1371
 44720
+# Usage: $progname [OPTION]... [MODE-ARG]...
mgl@1371
 44721
+#
mgl@1371
 44722
+# Provide generalized library-building support services.
mgl@1371
 44723
+#
mgl@1371
 44724
+#     --config             show all configuration variables
mgl@1371
 44725
+#     --debug              enable verbose shell tracing
mgl@1371
 44726
+# -n, --dry-run            display commands without modifying any files
mgl@1371
 44727
+#     --features           display basic configuration information and exit
mgl@1371
 44728
+#     --mode=MODE          use operation mode MODE
mgl@1371
 44729
+#     --preserve-dup-deps  don't remove duplicate dependency libraries
mgl@1371
 44730
+#     --quiet, --silent    don't print informational messages
mgl@1371
 44731
+#     --tag=TAG            use configuration variables from tag TAG
mgl@1371
 44732
+# -v, --verbose            print informational messages (default)
mgl@1371
 44733
+#     --version            print version information
mgl@1371
 44734
+# -h, --help               print short or long help message
mgl@1371
 44735
+#
mgl@1371
 44736
+# MODE must be one of the following:
mgl@1371
 44737
+#
mgl@1371
 44738
+#       clean              remove files from the build directory
mgl@1371
 44739
+#       compile            compile a source file into a libtool object
mgl@1371
 44740
+#       execute            automatically set library path, then run a program
mgl@1371
 44741
+#       finish             complete the installation of libtool libraries
mgl@1371
 44742
+#       install            install libraries or executables
mgl@1371
 44743
+#       link               create a library or an executable
mgl@1371
 44744
+#       uninstall          remove libraries from an installed directory
mgl@1371
 44745
+#
mgl@1371
 44746
+# MODE-ARGS vary depending on the MODE.
mgl@1371
 44747
+# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
mgl@1371
 44748
+#
mgl@1371
 44749
+# When reporting a bug, please describe a test case to reproduce it and
mgl@1371
 44750
+# include the following information:
mgl@1371
 44751
+#
mgl@1371
 44752
+#       host-triplet:	$host
mgl@1371
 44753
+#       shell:		$SHELL
mgl@1371
 44754
+#       compiler:		$LTCC
mgl@1371
 44755
+#       compiler flags:		$LTCFLAGS
mgl@1371
 44756
+#       linker:		$LD (gnu? $with_gnu_ld)
mgl@1371
 44757
+#       $progname:		(GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
mgl@1371
 44758
+#       automake:		$automake_version
mgl@1371
 44759
+#       autoconf:		$autoconf_version
mgl@1371
 44760
+#
mgl@1371
 44761
+# Report bugs to <bug-libtool@gnu.org>.
mgl@1371
 44762
+
mgl@1371
 44763
+PROGRAM=ltmain.sh
mgl@1371
 44764
+PACKAGE=libtool
mgl@1371
 44765
+VERSION=2.1a
mgl@1371
 44766
+TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
mgl@1371
 44767
+package_revision=1.2435
mgl@1371
 44768
+
mgl@1371
 44769
+# Be Bourne compatible
mgl@1371
 44770
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
mgl@1371
 44771
+  emulate sh
mgl@1371
 44772
+  NULLCMD=:
mgl@1371
 44773
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
mgl@1371
 44774
+  # is contrary to our usage.  Disable this feature.
mgl@1371
 44775
+  alias -g '${1+"$@"}'='"$@"'
mgl@1371
 44776
+  setopt NO_GLOB_SUBST
mgl@1371
 44777
+else
mgl@1371
 44778
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
mgl@1371
 44779
+fi
mgl@1371
 44780
+BIN_SH=xpg4; export BIN_SH # for Tru64
mgl@1371
 44781
+DUALCASE=1; export DUALCASE # for MKS sh
mgl@1371
 44782
+
mgl@1371
 44783
+# NLS nuisances: We save the old values to restore during execute mode.
mgl@1371
 44784
+# Only set LANG and LC_ALL to C if already set.
mgl@1371
 44785
+# These must not be set unconditionally because not all systems understand
mgl@1371
 44786
+# e.g. LANG=C (notably SCO).
mgl@1371
 44787
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
mgl@1371
 44788
+do
mgl@1371
 44789
+  eval "if test \"\${$lt_var+set}\" = set; then
mgl@1371
 44790
+          save_$lt_var=\$$lt_var
mgl@1371
 44791
+          $lt_var=C
mgl@1371
 44792
+	  export $lt_var
mgl@1371
 44793
+	fi"
mgl@1371
 44794
+done
mgl@1371
 44795
+
mgl@1371
 44796
+$lt_unset CDPATH
mgl@1371
 44797
+
mgl@1371
 44798
+
mgl@1371
 44799
+
mgl@1371
 44800
+
mgl@1371
 44801
+
mgl@1371
 44802
+: ${CP="cp -f"}
mgl@1371
 44803
+: ${ECHO="echo"}
mgl@1371
 44804
+: ${EGREP="/bin/grep -E"}
mgl@1371
 44805
+: ${FGREP="/bin/grep -F"}
mgl@1371
 44806
+: ${GREP="/bin/grep"}
mgl@1371
 44807
+: ${LN_S="ln -s"}
mgl@1371
 44808
+: ${MAKE="make"}
mgl@1371
 44809
+: ${MKDIR="mkdir"}
mgl@1371
 44810
+: ${MV="mv -f"}
mgl@1371
 44811
+: ${RM="rm -f"}
mgl@1371
 44812
+: ${SED="/bin/sed"}
mgl@1371
 44813
+: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
mgl@1371
 44814
+: ${Xsed="$SED -e 1s/^X//"}
mgl@1371
 44815
+
mgl@1371
 44816
+# Global variables:
mgl@1371
 44817
+EXIT_SUCCESS=0
mgl@1371
 44818
+EXIT_FAILURE=1
mgl@1371
 44819
+EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
mgl@1371
 44820
+EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
mgl@1371
 44821
+
mgl@1371
 44822
+exit_status=$EXIT_SUCCESS
mgl@1371
 44823
+
mgl@1371
 44824
+# Make sure IFS has a sensible default
mgl@1371
 44825
+lt_nl='
mgl@1371
 44826
+'
mgl@1371
 44827
+IFS=" 	$lt_nl"
mgl@1371
 44828
+
mgl@1371
 44829
+dirname="s,/[^/]*$,,"
mgl@1371
 44830
+basename="s,^.*/,,"
mgl@1371
 44831
+
mgl@1371
 44832
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
mgl@1371
 44833
+# is ksh but when the shell is invoked as "sh" and the current value of
mgl@1371
 44834
+# the _XPG environment variable is not equal to 1 (one), the special
mgl@1371
 44835
+# positional parameter $0, within a function call, is the name of the
mgl@1371
 44836
+# function.
mgl@1371
 44837
+progpath="$0"
mgl@1371
 44838
+
mgl@1371
 44839
+# The name of this program:
mgl@1371
 44840
+# In the unlikely event $progname began with a '-', it would play havoc with
mgl@1371
 44841
+# func_echo (imagine progname=-n), so we prepend ./ in that case:
mgl@1371
 44842
+progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
mgl@1371
 44843
+
mgl@1371
 44844
+# Make sure we have an absolute path for reexecution:
mgl@1371
 44845
+case $progpath in
mgl@1371
 44846
+  [\\/]*|[A-Za-z]:\\*) ;;
mgl@1371
 44847
+  *[\\/]*)
mgl@1371
 44848
+     progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
mgl@1371
 44849
+     progdir=`cd "$progdir" && pwd`
mgl@1371
 44850
+     progpath="$progdir/$progname"
mgl@1371
 44851
+     ;;
mgl@1371
 44852
+  *)
mgl@1371
 44853
+     save_IFS="$IFS"
mgl@1371
 44854
+     IFS=:
mgl@1371
 44855
+     for progdir in $PATH; do
mgl@1371
 44856
+       IFS="$save_IFS"
mgl@1371
 44857
+       test -x "$progdir/$progname" && break
mgl@1371
 44858
+     done
mgl@1371
 44859
+     IFS="$save_IFS"
mgl@1371
 44860
+     test -n "$progdir" || progdir=`pwd`
mgl@1371
 44861
+     progpath="$progdir/$progname"
mgl@1371
 44862
+     ;;
mgl@1371
 44863
+esac
mgl@1371
 44864
+
mgl@1371
 44865
+# Sed substitution that helps us do robust quoting.  It backslashifies
mgl@1371
 44866
+# metacharacters that are still active within double-quoted strings.
mgl@1371
 44867
+Xsed="${SED}"' -e 1s/^X//'
mgl@1371
 44868
+sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
mgl@1371
 44869
+
mgl@1371
 44870
+# Same as above, but do not quote variable references.
mgl@1371
 44871
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
mgl@1371
 44872
+
mgl@1371
 44873
+# Re-`\' parameter expansions in output of double_quote_subst that were
mgl@1371
 44874
+# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
mgl@1371
 44875
+# in input to double_quote_subst, that '$' was protected from expansion.
mgl@1371
 44876
+# Since each input `\' is now two `\'s, look for any number of runs of
mgl@1371
 44877
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
mgl@1371
 44878
+bs='\\'
mgl@1371
 44879
+bs2='\\\\'
mgl@1371
 44880
+bs4='\\\\\\\\'
mgl@1371
 44881
+dollar='\$'
mgl@1371
 44882
+sed_double_backslash="\
mgl@1371
 44883
+  s/$bs4/&\\
mgl@1371
 44884
+/g
mgl@1371
 44885
+  s/^$bs2$dollar/$bs&/
mgl@1371
 44886
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
mgl@1371
 44887
+  s/\n//g"
mgl@1371
 44888
+
mgl@1371
 44889
+# Standard options:
mgl@1371
 44890
+opt_dry_run=false
mgl@1371
 44891
+opt_help=false
mgl@1371
 44892
+opt_quiet=false
mgl@1371
 44893
+opt_verbose=false
mgl@1371
 44894
+
mgl@1371
 44895
+# func_echo arg...
mgl@1371
 44896
+# Echo program name prefixed message, along with the current mode
mgl@1371
 44897
+# name if it has been set yet.
mgl@1371
 44898
+func_echo ()
mgl@1371
 44899
+{
mgl@1371
 44900
+    $ECHO "$progname${mode+: }$mode: "${1+"$@"}
mgl@1371
 44901
+}
mgl@1371
 44902
+
mgl@1371
 44903
+# func_verbose arg...
mgl@1371
 44904
+# Echo program name prefixed message in verbose mode only.
mgl@1371
 44905
+func_verbose ()
mgl@1371
 44906
+{
mgl@1371
 44907
+    $opt_verbose && func_echo ${1+"$@"}
mgl@1371
 44908
+
mgl@1371
 44909
+    # A bug in bash halts the script if the last line of a function
mgl@1371
 44910
+    # fails when set -e is in force, so we need another command to
mgl@1371
 44911
+    # work around that:
mgl@1371
 44912
+    :
mgl@1371
 44913
+}
mgl@1371
 44914
+
mgl@1371
 44915
+# func_error arg...
mgl@1371
 44916
+# Echo program name prefixed message to standard error.
mgl@1371
 44917
+func_error ()
mgl@1371
 44918
+{
mgl@1371
 44919
+    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
mgl@1371
 44920
+}
mgl@1371
 44921
+
mgl@1371
 44922
+# func_warning arg...
mgl@1371
 44923
+# Echo program name prefixed warning message to standard error.
mgl@1371
 44924
+func_warning ()
mgl@1371
 44925
+{
mgl@1371
 44926
+    $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
mgl@1371
 44927
+}
mgl@1371
 44928
+
mgl@1371
 44929
+# func_fatal_error arg...
mgl@1371
 44930
+# Echo program name prefixed message to standard error, and exit.
mgl@1371
 44931
+func_fatal_error ()
mgl@1371
 44932
+{
mgl@1371
 44933
+    func_error ${1+"$@"}
mgl@1371
 44934
+    exit $EXIT_FAILURE
mgl@1371
 44935
+}
mgl@1371
 44936
+
mgl@1371
 44937
+# func_fatal_help arg...
mgl@1371
 44938
+# Echo program name prefixed message to standard error, followed by
mgl@1371
 44939
+# a help hint, and exit.
mgl@1371
 44940
+func_fatal_help ()
mgl@1371
 44941
+{
mgl@1371
 44942
+    func_error ${1+"$@"}
mgl@1371
 44943
+    func_fatal_error "$help"
mgl@1371
 44944
+}
mgl@1371
 44945
+help="Try \`$progname --help' for more information."  ## default
mgl@1371
 44946
+
mgl@1371
 44947
+
mgl@1371
 44948
+# func_grep expression filename
mgl@1371
 44949
+# Check whether EXPRESSION matches any line of FILENAME, without output.
mgl@1371
 44950
+func_grep ()
mgl@1371
 44951
+{
mgl@1371
 44952
+    $GREP "$1" "$2" >/dev/null 2>&1
mgl@1371
 44953
+}
mgl@1371
 44954
+
mgl@1371
 44955
+
mgl@1371
 44956
+# func_mkdir_p directory-path
mgl@1371
 44957
+# Make sure the entire path to DIRECTORY-PATH is available.
mgl@1371
 44958
+func_mkdir_p ()
mgl@1371
 44959
+{
mgl@1371
 44960
+    my_directory_path="$1"
mgl@1371
 44961
+    my_dir_list=
mgl@1371
 44962
+
mgl@1371
 44963
+    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
mgl@1371
 44964
+
mgl@1371
 44965
+      # Protect directory names starting with `-'
mgl@1371
 44966
+      case $my_directory_path in
mgl@1371
 44967
+        -*) my_directory_path="./$my_directory_path" ;;
mgl@1371
 44968
+      esac
mgl@1371
 44969
+
mgl@1371
 44970
+      # While some portion of DIR does not yet exist...
mgl@1371
 44971
+      while test ! -d "$my_directory_path"; do
mgl@1371
 44972
+        # ...make a list in topmost first order.  Use a colon delimited
mgl@1371
 44973
+	# list incase some portion of path contains whitespace.
mgl@1371
 44974
+        my_dir_list="$my_directory_path:$my_dir_list"
mgl@1371
 44975
+
mgl@1371
 44976
+        # If the last portion added has no slash in it, the list is done
mgl@1371
 44977
+        case $my_directory_path in */*) ;; *) break ;; esac
mgl@1371
 44978
+
mgl@1371
 44979
+        # ...otherwise throw away the child directory and loop
mgl@1371
 44980
+        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
mgl@1371
 44981
+      done
mgl@1371
 44982
+      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
mgl@1371
 44983
+
mgl@1371
 44984
+      save_mkdir_p_IFS="$IFS"; IFS=':'
mgl@1371
 44985
+      for my_dir in $my_dir_list; do
mgl@1371
 44986
+	IFS="$save_mkdir_p_IFS"
mgl@1371
 44987
+        # mkdir can fail with a `File exist' error if two processes
mgl@1371
 44988
+        # try to create one of the directories concurrently.  Don't
mgl@1371
 44989
+        # stop in that case!
mgl@1371
 44990
+        $MKDIR "$my_dir" 2>/dev/null || :
mgl@1371
 44991
+      done
mgl@1371
 44992
+      IFS="$save_mkdir_p_IFS"
mgl@1371
 44993
+
mgl@1371
 44994
+      # Bail out if we (or some other process) failed to create a directory.
mgl@1371
 44995
+      test -d "$my_directory_path" || \
mgl@1371
 44996
+        func_fatal_error "Failed to create \`$1'"
mgl@1371
 44997
+    fi
mgl@1371
 44998
+}
mgl@1371
 44999
+
mgl@1371
 45000
+
mgl@1371
 45001
+# func_mktempdir [string]
mgl@1371
 45002
+# Make a temporary directory that won't clash with other running
mgl@1371
 45003
+# libtool processes, and avoids race conditions if possible.  If
mgl@1371
 45004
+# given, STRING is the basename for that directory.
mgl@1371
 45005
+func_mktempdir ()
mgl@1371
 45006
+{
mgl@1371
 45007
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
mgl@1371
 45008
+
mgl@1371
 45009
+    if test "$opt_dry_run" = ":"; then
mgl@1371
 45010
+      # Return a directory name, but don't create it in dry-run mode
mgl@1371
 45011
+      my_tmpdir="${my_template}-$$"
mgl@1371
 45012
+    else
mgl@1371
 45013
+
mgl@1371
 45014
+      # If mktemp works, use that first and foremost
mgl@1371
 45015
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
mgl@1371
 45016
+
mgl@1371
 45017
+      if test ! -d "$my_tmpdir"; then
mgl@1371
 45018
+        # Failing that, at least try and use $RANDOM to avoid a race
mgl@1371
 45019
+        my_tmpdir="${my_template}-${RANDOM-0}$$"
mgl@1371
 45020
+
mgl@1371
 45021
+        save_mktempdir_umask=`umask`
mgl@1371
 45022
+        umask 0077
mgl@1371
 45023
+        $MKDIR "$my_tmpdir"
mgl@1371
 45024
+        umask $save_mktempdir_umask
mgl@1371
 45025
+      fi
mgl@1371
 45026
+
mgl@1371
 45027
+      # If we're not in dry-run mode, bomb out on failure
mgl@1371
 45028
+      test -d "$my_tmpdir" || \
mgl@1371
 45029
+        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
mgl@1371
 45030
+    fi
mgl@1371
 45031
+
mgl@1371
 45032
+    $ECHO "X$my_tmpdir" | $Xsed
mgl@1371
 45033
+}
mgl@1371
 45034
+
mgl@1371
 45035
+
mgl@1371
 45036
+# func_quote_for_eval arg
mgl@1371
 45037
+# Aesthetically quote ARG to be evaled later.
mgl@1371
 45038
+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
mgl@1371
 45039
+# is double-quoted, suitable for a subsequent eval, whereas
mgl@1371
 45040
+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
mgl@1371
 45041
+# which are still active within double quotes backslashified.
mgl@1371
 45042
+func_quote_for_eval ()
mgl@1371
 45043
+{
mgl@1371
 45044
+    case $1 in
mgl@1371
 45045
+      *[\\\`\"\$]*)
mgl@1371
 45046
+	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
mgl@1371
 45047
+      *)
mgl@1371
 45048
+        func_quote_for_eval_unquoted_result="$1" ;;
mgl@1371
 45049
+    esac
mgl@1371
 45050
+
mgl@1371
 45051
+    case $func_quote_for_eval_unquoted_result in
mgl@1371
 45052
+      # Double-quote args containing shell metacharacters to delay
mgl@1371
 45053
+      # word splitting, command substitution and and variable
mgl@1371
 45054
+      # expansion for a subsequent eval.
mgl@1371
 45055
+      # Many Bourne shells cannot handle close brackets correctly
mgl@1371
 45056
+      # in scan sets, so we specify it separately.
mgl@1371
 45057
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
mgl@1371
 45058
+        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
mgl@1371
 45059
+        ;;
mgl@1371
 45060
+      *)
mgl@1371
 45061
+        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
mgl@1371
 45062
+    esac
mgl@1371
 45063
+}
mgl@1371
 45064
+
mgl@1371
 45065
+
mgl@1371
 45066
+# func_quote_for_expand arg
mgl@1371
 45067
+# Aesthetically quote ARG to be evaled later; same as above,
mgl@1371
 45068
+# but do not quote variable references.
mgl@1371
 45069
+func_quote_for_expand ()
mgl@1371
 45070
+{
mgl@1371
 45071
+    case $1 in
mgl@1371
 45072
+      *[\\\`\"]*)
mgl@1371
 45073
+	my_arg=`$ECHO "X$1" | $Xsed \
mgl@1371
 45074
+	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
mgl@1371
 45075
+      *)
mgl@1371
 45076
+        my_arg="$1" ;;
mgl@1371
 45077
+    esac
mgl@1371
 45078
+
mgl@1371
 45079
+    case $my_arg in
mgl@1371
 45080
+      # Double-quote args containing shell metacharacters to delay
mgl@1371
 45081
+      # word splitting and command substitution for a subsequent eval.
mgl@1371
 45082
+      # Many Bourne shells cannot handle close brackets correctly
mgl@1371
 45083
+      # in scan sets, so we specify it separately.
mgl@1371
 45084
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
mgl@1371
 45085
+        my_arg="\"$my_arg\""
mgl@1371
 45086
+        ;;
mgl@1371
 45087
+    esac
mgl@1371
 45088
+
mgl@1371
 45089
+    func_quote_for_expand_result="$my_arg"
mgl@1371
 45090
+}
mgl@1371
 45091
+
mgl@1371
 45092
+
mgl@1371
 45093
+# func_show_eval cmd [fail_exp]
mgl@1371
 45094
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
mgl@1371
 45095
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
mgl@1371
 45096
+# is given, then evaluate it.
mgl@1371
 45097
+func_show_eval ()
mgl@1371
 45098
+{
mgl@1371
 45099
+    my_cmd="$1"
mgl@1371
 45100
+    my_fail_exp="${2-:}"
mgl@1371
 45101
+
mgl@1371
 45102
+    ${opt_silent-false} || {
mgl@1371
 45103
+      func_quote_for_expand "$my_cmd"
mgl@1371
 45104
+      eval "func_echo $func_quote_for_expand_result"
mgl@1371
 45105
+    }
mgl@1371
 45106
+
mgl@1371
 45107
+    if ${opt_dry_run-false}; then :; else
mgl@1371
 45108
+      eval "$my_cmd"
mgl@1371
 45109
+      my_status=$?
mgl@1371
 45110
+      if test "$my_status" -eq 0; then :; else
mgl@1371
 45111
+	eval "(exit $my_status); $my_fail_exp"
mgl@1371
 45112
+      fi
mgl@1371
 45113
+    fi
mgl@1371
 45114
+}
mgl@1371
 45115
+
mgl@1371
 45116
+
mgl@1371
 45117
+
mgl@1371
 45118
+
mgl@1371
 45119
+
mgl@1371
 45120
+# func_version
mgl@1371
 45121
+# Echo version message to standard output and exit.
mgl@1371
 45122
+func_version ()
mgl@1371
 45123
+{
mgl@1371
 45124
+    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
mgl@1371
 45125
+        s/^# //
mgl@1371
 45126
+	s/^# *$//
mgl@1371
 45127
+        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
mgl@1371
 45128
+        p
mgl@1371
 45129
+     }' < "$progpath"
mgl@1371
 45130
+     exit $?
mgl@1371
 45131
+}
mgl@1371
 45132
+
mgl@1371
 45133
+# func_usage
mgl@1371
 45134
+# Echo short help message to standard output and exit.
mgl@1371
 45135
+func_usage ()
mgl@1371
 45136
+{
mgl@1371
 45137
+    $SED -n '/^# Usage:/,/# -h/ {
mgl@1371
 45138
+        s/^# //
mgl@1371
 45139
+	s/^# *$//
mgl@1371
 45140
+	s/\$progname/'$progname'/
mgl@1371
 45141
+	p
mgl@1371
 45142
+    }' < "$progpath"
mgl@1371
 45143
+    $ECHO
mgl@1371
 45144
+    $ECHO "run \`$progname --help | more' for full usage"
mgl@1371
 45145
+    exit $?
mgl@1371
 45146
+}
mgl@1371
 45147
+
mgl@1371
 45148
+# func_help
mgl@1371
 45149
+# Echo long help message to standard output and exit.
mgl@1371
 45150
+func_help ()
mgl@1371
 45151
+{
mgl@1371
 45152
+    $SED -n '/^# Usage:/,/# Report bugs to/ {
mgl@1371
 45153
+        s/^# //
mgl@1371
 45154
+	s/^# *$//
mgl@1371
 45155
+	s*\$progname*'$progname'*
mgl@1371
 45156
+	s*\$host*'"$host"'*
mgl@1371
 45157
+	s*\$SHELL*'"$SHELL"'*
mgl@1371
 45158
+	s*\$LTCC*'"$LTCC"'*
mgl@1371
 45159
+	s*\$LTCFLAGS*'"$LTCFLAGS"'*
mgl@1371
 45160
+	s*\$LD*'"$LD"'*
mgl@1371
 45161
+	s/\$with_gnu_ld/'"$with_gnu_ld"'/
mgl@1371
 45162
+	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
mgl@1371
 45163
+	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
mgl@1371
 45164
+	p
mgl@1371
 45165
+     }' < "$progpath"
mgl@1371
 45166
+    exit $?
mgl@1371
 45167
+}
mgl@1371
 45168
+
mgl@1371
 45169
+# func_missing_arg argname
mgl@1371
 45170
+# Echo program name prefixed message to standard error and set global
mgl@1371
 45171
+# exit_cmd.
mgl@1371
 45172
+func_missing_arg ()
mgl@1371
 45173
+{
mgl@1371
 45174
+    func_error "missing argument for $1"
mgl@1371
 45175
+    exit_cmd=exit
mgl@1371
 45176
+}
mgl@1371
 45177
+
mgl@1371
 45178
+exit_cmd=:
mgl@1371
 45179
+
mgl@1371
 45180
+
mgl@1371
 45181
+
mgl@1371
 45182
+
mgl@1371
 45183
+
mgl@1371
 45184
+# Check that we have a working $ECHO.
mgl@1371
 45185
+if test "X$1" = X--no-reexec; then
mgl@1371
 45186
+  # Discard the --no-reexec flag, and continue.
mgl@1371
 45187
+  shift
mgl@1371
 45188
+elif test "X$1" = X--fallback-echo; then
mgl@1371
 45189
+  # Avoid inline document here, it may be left over
mgl@1371
 45190
+  :
mgl@1371
 45191
+elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
mgl@1371
 45192
+  # Yippee, $ECHO works!
mgl@1371
 45193
+  :
mgl@1371
 45194
+else
mgl@1371
 45195
+  # Restart under the correct shell, and then maybe $ECHO will work.
mgl@1371
 45196
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
mgl@1371
 45197
+fi
mgl@1371
 45198
+
mgl@1371
 45199
+if test "X$1" = X--fallback-echo; then
mgl@1371
 45200
+  # used as fallback echo
mgl@1371
 45201
+  shift
mgl@1371
 45202
+  cat <<EOF
mgl@1371
 45203
+$*
mgl@1371
 45204
+EOF
mgl@1371
 45205
+  exit $EXIT_SUCCESS
mgl@1371
 45206
+fi
mgl@1371
 45207
+
mgl@1371
 45208
+magic="%%%MAGIC variable%%%"
mgl@1371
 45209
+
mgl@1371
 45210
+
mgl@1371
 45211
+# Global variables.
mgl@1371
 45212
+# $mode is unset
mgl@1371
 45213
+nonopt=
mgl@1371
 45214
+execute_dlfiles=
mgl@1371
 45215
+preserve_args=
mgl@1371
 45216
+lo2o="s/\\.lo\$/.${objext}/"
mgl@1371
 45217
+o2lo="s/\\.${objext}\$/.lo/"
mgl@1371
 45218
+extracted_archives=
mgl@1371
 45219
+extracted_serial=0
mgl@1371
 45220
+
mgl@1371
 45221
+opt_dry_run=false
mgl@1371
 45222
+opt_duplicate_deps=false
mgl@1371
 45223
+opt_silent=false
mgl@1371
 45224
+opt_debug=:
mgl@1371
 45225
+
mgl@1371
 45226
+# If this variable is set in any of the actions, the command in it
mgl@1371
 45227
+# will be execed at the end.  This prevents here-documents from being
mgl@1371
 45228
+# left over by shells.
mgl@1371
 45229
+exec_cmd=
mgl@1371
 45230
+
mgl@1371
 45231
+# func_fatal_configuration arg...
mgl@1371
 45232
+# Echo program name prefixed message to standard error, followed by
mgl@1371
 45233
+# a configuration failure hint, and exit.
mgl@1371
 45234
+func_fatal_configuration ()
mgl@1371
 45235
+{
mgl@1371
 45236
+    func_error ${1+"$@"}
mgl@1371
 45237
+    func_error "See the $PACKAGE documentation for more information."
mgl@1371
 45238
+    func_fatal_error "Fatal configuration error."
mgl@1371
 45239
+}
mgl@1371
 45240
+
mgl@1371
 45241
+
mgl@1371
 45242
+# func_config
mgl@1371
 45243
+# Display the configuration for all the tags in this script.
mgl@1371
 45244
+func_config ()
mgl@1371
 45245
+{
mgl@1371
 45246
+    re_begincf='^# ### BEGIN LIBTOOL'
mgl@1371
 45247
+    re_endcf='^# ### END LIBTOOL'
mgl@1371
 45248
+
mgl@1371
 45249
+    # Default configuration.
mgl@1371
 45250
+    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
mgl@1371
 45251
+
mgl@1371
 45252
+    # Now print the configurations for the tags.
mgl@1371
 45253
+    for tagname in $taglist; do
mgl@1371
 45254
+      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
mgl@1371
 45255
+    done
mgl@1371
 45256
+
mgl@1371
 45257
+    exit $?
mgl@1371
 45258
+}
mgl@1371
 45259
+
mgl@1371
 45260
+# func_features
mgl@1371
 45261
+# Display the features supported by this script.
mgl@1371
 45262
+func_features ()
mgl@1371
 45263
+{
mgl@1371
 45264
+    $ECHO "host: $host"
mgl@1371
 45265
+    if test "$build_libtool_libs" = yes; then
mgl@1371
 45266
+      $ECHO "enable shared libraries"
mgl@1371
 45267
+    else
mgl@1371
 45268
+      $ECHO "disable shared libraries"
mgl@1371
 45269
+    fi
mgl@1371
 45270
+    if test "$build_old_libs" = yes; then
mgl@1371
 45271
+      $ECHO "enable static libraries"
mgl@1371
 45272
+    else
mgl@1371
 45273
+      $ECHO "disable static libraries"
mgl@1371
 45274
+    fi
mgl@1371
 45275
+
mgl@1371
 45276
+    exit $?
mgl@1371
 45277
+}
mgl@1371
 45278
+
mgl@1371
 45279
+# func_enable_tag tagname
mgl@1371
 45280
+# Verify that TAGNAME is valid, and either flag an error and exit, or
mgl@1371
 45281
+# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
mgl@1371
 45282
+# variable here.
mgl@1371
 45283
+func_enable_tag ()
mgl@1371
 45284
+{
mgl@1371
 45285
+  # Global variable:
mgl@1371
 45286
+  tagname="$1"
mgl@1371
 45287
+
mgl@1371
 45288
+  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
mgl@1371
 45289
+  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
mgl@1371
 45290
+  sed_extractcf="/$re_begincf/,/$re_endcf/p"
mgl@1371
 45291
+
mgl@1371
 45292
+  # Validate tagname.
mgl@1371
 45293
+  case $tagname in
mgl@1371
 45294
+    *[!-_A-Za-z0-9,/]*)
mgl@1371
 45295
+      func_fatal_error "invalid tag name: $tagname"
mgl@1371
 45296
+      ;;
mgl@1371
 45297
+  esac
mgl@1371
 45298
+
mgl@1371
 45299
+  # Don't test for the "default" C tag, as we know it's
mgl@1371
 45300
+  # there but not specially marked.
mgl@1371
 45301
+  case $tagname in
mgl@1371
 45302
+    CC) ;;
mgl@1371
 45303
+    *)
mgl@1371
 45304
+      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
mgl@1371
 45305
+	taglist="$taglist $tagname"
mgl@1371
 45306
+
mgl@1371
 45307
+	# Evaluate the configuration.  Be careful to quote the path
mgl@1371
 45308
+	# and the sed script, to avoid splitting on whitespace, but
mgl@1371
 45309
+	# also don't use non-portable quotes within backquotes within
mgl@1371
 45310
+	# quotes we have to do it in 2 steps:
mgl@1371
 45311
+	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
mgl@1371
 45312
+	eval "$extractedcf"
mgl@1371
 45313
+      else
mgl@1371
 45314
+	func_error "ignoring unknown tag $tagname"
mgl@1371
 45315
+      fi
mgl@1371
 45316
+      ;;
mgl@1371
 45317
+  esac
mgl@1371
 45318
+}
mgl@1371
 45319
+
mgl@1371
 45320
+
mgl@1371
 45321
+func_mode_help ()
mgl@1371
 45322
+{
mgl@1371
 45323
+    # We need to display help for each of the modes.
mgl@1371
 45324
+    case $mode in
mgl@1371
 45325
+      "")
mgl@1371
 45326
+        # Generic help is extracted from the usage comments
mgl@1371
 45327
+        # at the start of this file.
mgl@1371
 45328
+        func_help
mgl@1371
 45329
+        ;;
mgl@1371
 45330
+
mgl@1371
 45331
+      clean)
mgl@1371
 45332
+        $ECHO \
mgl@1371
 45333
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
mgl@1371
 45334
+
mgl@1371
 45335
+Remove files from the build directory.
mgl@1371
 45336
+
mgl@1371
 45337
+RM is the name of the program to use to delete files associated with each FILE
mgl@1371
 45338
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
mgl@1371
 45339
+to RM.
mgl@1371
 45340
+
mgl@1371
 45341
+If FILE is a libtool library, object or program, all the files associated
mgl@1371
 45342
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
mgl@1371
 45343
+        ;;
mgl@1371
 45344
+
mgl@1371
 45345
+      compile)
mgl@1371
 45346
+      $ECHO \
mgl@1371
 45347
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
mgl@1371
 45348
+
mgl@1371
 45349
+Compile a source file into a libtool library object.
mgl@1371
 45350
+
mgl@1371
 45351
+This mode accepts the following additional options:
mgl@1371
 45352
+
mgl@1371
 45353
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
mgl@1371
 45354
+  -no-suppress      do not suppress compiler output for multiple passes
mgl@1371
 45355
+  -prefer-pic       try to building PIC objects only
mgl@1371
 45356
+  -prefer-non-pic   try to building non-PIC objects only
mgl@1371
 45357
+  -shared           do not build a \`.o' file suitable for static linking
mgl@1371
 45358
+  -static           only build a \`.o' file suitable for static linking
mgl@1371
 45359
+
mgl@1371
 45360
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
mgl@1371
 45361
+from the given SOURCEFILE.
mgl@1371
 45362
+
mgl@1371
 45363
+The output file name is determined by removing the directory component from
mgl@1371
 45364
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
mgl@1371
 45365
+library object suffix, \`.lo'."
mgl@1371
 45366
+        ;;
mgl@1371
 45367
+
mgl@1371
 45368
+      execute)
mgl@1371
 45369
+        $ECHO \
mgl@1371
 45370
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
mgl@1371
 45371
+
mgl@1371
 45372
+Automatically set library path, then run a program.
mgl@1371
 45373
+
mgl@1371
 45374
+This mode accepts the following additional options:
mgl@1371
 45375
+
mgl@1371
 45376
+  -dlopen FILE      add the directory containing FILE to the library path
mgl@1371
 45377
+
mgl@1371
 45378
+This mode sets the library path environment variable according to \`-dlopen'
mgl@1371
 45379
+flags.
mgl@1371
 45380
+
mgl@1371
 45381
+If any of the ARGS are libtool executable wrappers, then they are translated
mgl@1371
 45382
+into their corresponding uninstalled binary, and any of their required library
mgl@1371
 45383
+directories are added to the library path.
mgl@1371
 45384
+
mgl@1371
 45385
+Then, COMMAND is executed, with ARGS as arguments."
mgl@1371
 45386
+        ;;
mgl@1371
 45387
+
mgl@1371
 45388
+      finish)
mgl@1371
 45389
+        $ECHO \
mgl@1371
 45390
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
mgl@1371
 45391
+
mgl@1371
 45392
+Complete the installation of libtool libraries.
mgl@1371
 45393
+
mgl@1371
 45394
+Each LIBDIR is a directory that contains libtool libraries.
mgl@1371
 45395
+
mgl@1371
 45396
+The commands that this mode executes may require superuser privileges.  Use
mgl@1371
 45397
+the \`--dry-run' option if you just want to see what would be executed."
mgl@1371
 45398
+        ;;
mgl@1371
 45399
+
mgl@1371
 45400
+      install)
mgl@1371
 45401
+        $ECHO \
mgl@1371
 45402
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
mgl@1371
 45403
+
mgl@1371
 45404
+Install executables or libraries.
mgl@1371
 45405
+
mgl@1371
 45406
+INSTALL-COMMAND is the installation command.  The first component should be
mgl@1371
 45407
+either the \`install' or \`cp' program.
mgl@1371
 45408
+
mgl@1371
 45409
+The following components of INSTALL-COMMAND are treated specially:
mgl@1371
 45410
+
mgl@1371
 45411
+  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
mgl@1371
 45412
+
mgl@1371
 45413
+The rest of the components are interpreted as arguments to that command (only
mgl@1371
 45414
+BSD-compatible install options are recognized)."
mgl@1371
 45415
+        ;;
mgl@1371
 45416
+
mgl@1371
 45417
+      link)
mgl@1371
 45418
+        $ECHO \
mgl@1371
 45419
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
mgl@1371
 45420
+
mgl@1371
 45421
+Link object files or libraries together to form another library, or to
mgl@1371
 45422
+create an executable program.
mgl@1371
 45423
+
mgl@1371
 45424
+LINK-COMMAND is a command using the C compiler that you would use to create
mgl@1371
 45425
+a program from several object files.
mgl@1371
 45426
+
mgl@1371
 45427
+The following components of LINK-COMMAND are treated specially:
mgl@1371
 45428
+
mgl@1371
 45429
+  -all-static       do not do any dynamic linking at all
mgl@1371
 45430
+  -avoid-version    do not add a version suffix if possible
mgl@1371
 45431
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
mgl@1371
 45432
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
mgl@1371
 45433
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
mgl@1371
 45434
+  -export-symbols SYMFILE
mgl@1371
 45435
+                    try to export only the symbols listed in SYMFILE
mgl@1371
 45436
+  -export-symbols-regex REGEX
mgl@1371
 45437
+                    try to export only the symbols matching REGEX
mgl@1371
 45438
+  -LLIBDIR          search LIBDIR for required installed libraries
mgl@1371
 45439
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
mgl@1371
 45440
+  -module           build a library that can dlopened
mgl@1371
 45441
+  -no-fast-install  disable the fast-install mode
mgl@1371
 45442
+  -no-install       link a not-installable executable
mgl@1371
 45443
+  -no-undefined     declare that a library does not refer to external symbols
mgl@1371
 45444
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
mgl@1371
 45445
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
mgl@1371
 45446
+  -precious-files-regex REGEX
mgl@1371
 45447
+                    don't remove output files matching REGEX
mgl@1371
 45448
+  -release RELEASE  specify package release information
mgl@1371
 45449
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
mgl@1371
 45450
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
mgl@1371
 45451
+  -shared           only do dynamic linking of libtool libraries
mgl@1371
 45452
+  -shrext SUFFIX    override the standard shared library file extension
mgl@1371
 45453
+  -static           do not do any dynamic linking of uninstalled libtool libraries
mgl@1371
 45454
+  -static-libtool-libs
mgl@1371
 45455
+                    do not do any dynamic linking of libtool libraries
mgl@1371
 45456
+  -version-info CURRENT[:REVISION[:AGE]]
mgl@1371
 45457
+                    specify library version info [each variable defaults to 0]
mgl@1371
 45458
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
mgl@1371
 45459
+
mgl@1371
 45460
+All other options (arguments beginning with \`-') are ignored.
mgl@1371
 45461
+
mgl@1371
 45462
+Every other argument is treated as a filename.  Files ending in \`.la' are
mgl@1371
 45463
+treated as uninstalled libtool libraries, other files are standard or library
mgl@1371
 45464
+object files.
mgl@1371
 45465
+
mgl@1371
 45466
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
mgl@1371
 45467
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
mgl@1371
 45468
+required, except when creating a convenience library.
mgl@1371
 45469
+
mgl@1371
 45470
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
mgl@1371
 45471
+using \`ar' and \`ranlib', or on Windows using \`lib'.
mgl@1371
 45472
+
mgl@1371
 45473
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
mgl@1371
 45474
+is created, otherwise an executable program is created."
mgl@1371
 45475
+        ;;
mgl@1371
 45476
+
mgl@1371
 45477
+      uninstall)
mgl@1371
 45478
+        $ECHO \
mgl@1371
 45479
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
mgl@1371
 45480
+
mgl@1371
 45481
+Remove libraries from an installation directory.
mgl@1371
 45482
+
mgl@1371
 45483
+RM is the name of the program to use to delete files associated with each FILE
mgl@1371
 45484
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
mgl@1371
 45485
+to RM.
mgl@1371
 45486
+
mgl@1371
 45487
+If FILE is a libtool library, all the files associated with it are deleted.
mgl@1371
 45488
+Otherwise, only FILE itself is deleted using RM."
mgl@1371
 45489
+        ;;
mgl@1371
 45490
+
mgl@1371
 45491
+      *)
mgl@1371
 45492
+        func_fatal_help "invalid operation mode \`$mode'"
mgl@1371
 45493
+        ;;
mgl@1371
 45494
+    esac
mgl@1371
 45495
+
mgl@1371
 45496
+    $ECHO
mgl@1371
 45497
+    $ECHO "Try \`$progname --help' for more information about other modes."
mgl@1371
 45498
+
mgl@1371
 45499
+    exit $?
mgl@1371
 45500
+}
mgl@1371
 45501
+
mgl@1371
 45502
+# Generated shell functions inserted here.
mgl@1371
 45503
+
mgl@1371
 45504
+# func_dirname file append nondir_replacement
mgl@1371
 45505
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
mgl@1371
 45506
+# otherwise set result to NONDIR_REPLACEMENT.
mgl@1371
 45507
+func_dirname ()
mgl@1371
 45508
+{
mgl@1371
 45509
+  case ${1} in
mgl@1371
 45510
+    */*) func_dirname_result="${1%/*}${2}" ;;
mgl@1371
 45511
+    *  ) func_dirname_result="${3}" ;;
mgl@1371
 45512
+  esac
mgl@1371
 45513
+}
mgl@1371
 45514
+
mgl@1371
 45515
+# func_basename file
mgl@1371
 45516
+func_basename ()
mgl@1371
 45517
+{
mgl@1371
 45518
+  func_basename_result="${1##*/}"
mgl@1371
 45519
+}
mgl@1371
 45520
+
mgl@1371
 45521
+# func_dirname_and_basename file append nondir_replacement
mgl@1371
 45522
+# perform func_basename and func_dirname in a single function
mgl@1371
 45523
+# call:
mgl@1371
 45524
+#   dirname:  Compute the dirname of FILE.  If nonempty,
mgl@1371
 45525
+#             add APPEND to the result, otherwise set result
mgl@1371
 45526
+#             to NONDIR_REPLACEMENT.
mgl@1371
 45527
+#             value returned in "$func_dirname_result"
mgl@1371
 45528
+#   basename: Compute filename of FILE.
mgl@1371
 45529
+#             value retuned in "$func_basename_result"
mgl@1371
 45530
+# Implementation must be kept synchronized with func_dirname
mgl@1371
 45531
+# and func_basename. For efficiency, we do not delegate to
mgl@1371
 45532
+# those functions but instead duplicate the functionality here.
mgl@1371
 45533
+func_dirname_and_basename ()
mgl@1371
 45534
+{
mgl@1371
 45535
+  case ${1} in
mgl@1371
 45536
+    */*) func_dirname_result="${1%/*}${2}" ;;
mgl@1371
 45537
+    *  ) func_dirname_result="${3}" ;;
mgl@1371
 45538
+  esac
mgl@1371
 45539
+  func_basename_result="${1##*/}"
mgl@1371
 45540
+}
mgl@1371
 45541
+
mgl@1371
 45542
+# func_stripname prefix suffix name
mgl@1371
 45543
+# strip PREFIX and SUFFIX off of NAME.
mgl@1371
 45544
+# PREFIX and SUFFIX must not contain globbing or regex special
mgl@1371
 45545
+# characters, hashes, percent signs, but SUFFIX may contain a leading
mgl@1371
 45546
+# dot (in which case that matches only a dot).
mgl@1371
 45547
+func_stripname ()
mgl@1371
 45548
+{
mgl@1371
 45549
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
mgl@1371
 45550
+  # positional parameters, so assign one to ordinary parameter first.
mgl@1371
 45551
+  func_stripname_result=${3}
mgl@1371
 45552
+  func_stripname_result=${func_stripname_result#"${1}"}
mgl@1371
 45553
+  func_stripname_result=${func_stripname_result%"${2}"}
mgl@1371
 45554
+}
mgl@1371
 45555
+
mgl@1371
 45556
+# func_opt_split
mgl@1371
 45557
+func_opt_split ()
mgl@1371
 45558
+{
mgl@1371
 45559
+  func_opt_split_opt=${1%%=*}
mgl@1371
 45560
+  func_opt_split_arg=${1#*=}
mgl@1371
 45561
+}
mgl@1371
 45562
+
mgl@1371
 45563
+# func_lo2o object
mgl@1371
 45564
+func_lo2o ()
mgl@1371
 45565
+{
mgl@1371
 45566
+  case ${1} in
mgl@1371
 45567
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
mgl@1371
 45568
+    *)    func_lo2o_result=${1} ;;
mgl@1371
 45569
+  esac
mgl@1371
 45570
+}
mgl@1371
 45571
+
mgl@1371
 45572
+# func_xform libobj-or-source
mgl@1371
 45573
+func_xform ()
mgl@1371
 45574
+{
mgl@1371
 45575
+  func_xform_result=${1%.*}.lo
mgl@1371
 45576
+}
mgl@1371
 45577
+
mgl@1371
 45578
+# func_arith arithmetic-term...
mgl@1371
 45579
+func_arith ()
mgl@1371
 45580
+{
mgl@1371
 45581
+  func_arith_result=$(( $* ))
mgl@1371
 45582
+}
mgl@1371
 45583
+
mgl@1371
 45584
+# func_len string
mgl@1371
 45585
+# STRING may not start with a hyphen.
mgl@1371
 45586
+func_len ()
mgl@1371
 45587
+{
mgl@1371
 45588
+  func_len_result=${#1}
mgl@1371
 45589
+}
mgl@1371
 45590
+
mgl@1371
 45591
+
mgl@1371
 45592
+# func_append var value
mgl@1371
 45593
+# Append VALUE to the end of shell variable VAR.
mgl@1371
 45594
+func_append ()
mgl@1371
 45595
+{
mgl@1371
 45596
+  eval "$1+=\$2"
mgl@1371
 45597
+}
mgl@1371
 45598
+# Generated shell functions inserted here.
mgl@1371
 45599
+
mgl@1371
 45600
+
mgl@1371
 45601
+# Parse options once, thoroughly.  This comes as soon as possible in
mgl@1371
 45602
+# the script to make things like `libtool --version' happen quickly.
mgl@1371
 45603
+{
mgl@1371
 45604
+
mgl@1371
 45605
+  # Shorthand for --mode=foo, only valid as the first argument
mgl@1371
 45606
+  case $1 in
mgl@1371
 45607
+  clean|clea|cle|cl)
mgl@1371
 45608
+    shift; set dummy --mode clean ${1+"$@"}; shift
mgl@1371
 45609
+    ;;
mgl@1371
 45610
+  compile|compil|compi|comp|com|co|c)
mgl@1371
 45611
+    shift; set dummy --mode compile ${1+"$@"}; shift
mgl@1371
 45612
+    ;;
mgl@1371
 45613
+  execute|execut|execu|exec|exe|ex|e)
mgl@1371
 45614
+    shift; set dummy --mode execute ${1+"$@"}; shift
mgl@1371
 45615
+    ;;
mgl@1371
 45616
+  finish|finis|fini|fin|fi|f)
mgl@1371
 45617
+    shift; set dummy --mode finish ${1+"$@"}; shift
mgl@1371
 45618
+    ;;
mgl@1371
 45619
+  install|instal|insta|inst|ins|in|i)
mgl@1371
 45620
+    shift; set dummy --mode install ${1+"$@"}; shift
mgl@1371
 45621
+    ;;
mgl@1371
 45622
+  link|lin|li|l)
mgl@1371
 45623
+    shift; set dummy --mode link ${1+"$@"}; shift
mgl@1371
 45624
+    ;;
mgl@1371
 45625
+  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
mgl@1371
 45626
+    shift; set dummy --mode uninstall ${1+"$@"}; shift
mgl@1371
 45627
+    ;;
mgl@1371
 45628
+  esac
mgl@1371
 45629
+
mgl@1371
 45630
+  # Parse non-mode specific arguments:
mgl@1371
 45631
+  while test "$#" -gt 0; do
mgl@1371
 45632
+    opt="$1"
mgl@1371
 45633
+    shift
mgl@1371
 45634
+
mgl@1371
 45635
+    case $opt in
mgl@1371
 45636
+      --config)		func_config 					;;
mgl@1371
 45637
+
mgl@1371
 45638
+      --debug)		preserve_args="$preserve_args $opt"
mgl@1371
 45639
+	    		func_echo "enabling shell trace mode"
mgl@1371
 45640
+	    		opt_debug='set -x'
mgl@1371
 45641
+			$opt_debug
mgl@1371
 45642
+			;;
mgl@1371
 45643
+
mgl@1371
 45644
+      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
mgl@1371
 45645
+			execute_dlfiles="$execute_dlfiles $1"
mgl@1371
 45646
+			shift
mgl@1371
 45647
+			;;
mgl@1371
 45648
+
mgl@1371
 45649
+      --dry-run | -n)	opt_dry_run=:					;;
mgl@1371
 45650
+      --features)       func_features					;;
mgl@1371
 45651
+      --finish)		mode="finish"					;;
mgl@1371
 45652
+
mgl@1371
 45653
+      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
mgl@1371
 45654
+	    		case $1 in
mgl@1371
 45655
+			  # Valid mode arguments:
mgl@1371
 45656
+			  clean)	;;
mgl@1371
 45657
+			  compile)	;;
mgl@1371
 45658
+			  execute)	;;
mgl@1371
 45659
+			  finish)	;;
mgl@1371
 45660
+			  install)	;;
mgl@1371
 45661
+			  link)		;;
mgl@1371
 45662
+			  relink)	;;
mgl@1371
 45663
+			  uninstall)	;;
mgl@1371
 45664
+
mgl@1371
 45665
+			  # Catch anything else as an error
mgl@1371
 45666
+			  *) func_error "invalid argument for $opt"
mgl@1371
 45667
+			     exit_cmd=exit
mgl@1371
 45668
+			     break
mgl@1371
 45669
+			     ;;
mgl@1371
 45670
+		        esac
mgl@1371
 45671
+
mgl@1371
 45672
+	    		mode="$1"
mgl@1371
 45673
+			shift
mgl@1371
 45674
+			;;
mgl@1371
 45675
+
mgl@1371
 45676
+      --preserve-dup-deps)
mgl@1371
 45677
+      			opt_duplicate_deps=:				;;
mgl@1371
 45678
+
mgl@1371
 45679
+      --quiet|--silent)	preserve_args="$preserve_args $opt"
mgl@1371
 45680
+	    		opt_silent=:
mgl@1371
 45681
+			;;
mgl@1371
 45682
+
mgl@1371
 45683
+      --verbose| -v)	preserve_args="$preserve_args $opt"
mgl@1371
 45684
+	    		opt_silent=false
mgl@1371
 45685
+			;;
mgl@1371
 45686
+
mgl@1371
 45687
+      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
mgl@1371
 45688
+			preserve_args="$preserve_args $opt $1"
mgl@1371
 45689
+			func_enable_tag "$1"	# tagname is set here
mgl@1371
 45690
+			shift
mgl@1371
 45691
+			;;
mgl@1371
 45692
+
mgl@1371
 45693
+      # Separate optargs to long options:
mgl@1371
 45694
+      -dlopen=*|--mode=*|--tag=*)
mgl@1371
 45695
+			func_opt_split "$opt"
mgl@1371
 45696
+			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
mgl@1371
 45697
+			shift
mgl@1371
 45698
+			;;
mgl@1371
 45699
+
mgl@1371
 45700
+      -\?|-h)		func_usage					;;
mgl@1371
 45701
+      --help)		opt_help=:					;;
mgl@1371
 45702
+      --version)	func_version					;;
mgl@1371
 45703
+
mgl@1371
 45704
+      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
mgl@1371
 45705
+
mgl@1371
 45706
+      *)		nonopt="$opt"
mgl@1371
 45707
+      			break
mgl@1371
 45708
+			;;
mgl@1371
 45709
+    esac
mgl@1371
 45710
+  done
mgl@1371
 45711
+
mgl@1371
 45712
+  # Now that we've collected a possible --mode arg, show help if necessary
mgl@1371
 45713
+  $opt_help && func_mode_help
mgl@1371
 45714
+
mgl@1371
 45715
+  case $host in
mgl@1371
 45716
+    *cygwin* | *mingw* | *pw32*)
mgl@1371
 45717
+      # don't eliminate duplications in $postdeps and $predeps
mgl@1371
 45718
+      opt_duplicate_compiler_generated_deps=:
mgl@1371
 45719
+      ;;
mgl@1371
 45720
+    *)
mgl@1371
 45721
+      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
mgl@1371
 45722
+      ;;
mgl@1371
 45723
+  esac
mgl@1371
 45724
+
mgl@1371
 45725
+  # Having warned about all mis-specified options, bail out if
mgl@1371
 45726
+  # anything was wrong.
mgl@1371
 45727
+  $exit_cmd $EXIT_FAILURE
mgl@1371
 45728
+}
mgl@1371
 45729
+
mgl@1371
 45730
+# func_check_version_match
mgl@1371
 45731
+# Ensure that we are using m4 macros, and libtool script from the same
mgl@1371
 45732
+# release of libtool.
mgl@1371
 45733
+func_check_version_match ()
mgl@1371
 45734
+{
mgl@1371
 45735
+  if test "$package_revision" != "$macro_revision"; then
mgl@1371
 45736
+    if test "$VERSION" != "$macro_version"; then
mgl@1371
 45737
+      if test -z "$macro_version"; then
mgl@1371
 45738
+        cat >&2 <<_LT_EOF
mgl@1371
 45739
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
mgl@1371
 45740
+$progname: definition of this LT_INIT comes from an older release.
mgl@1371
 45741
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
mgl@1371
 45742
+$progname: and run autoconf again.
mgl@1371
 45743
+_LT_EOF
mgl@1371
 45744
+      else
mgl@1371
 45745
+        cat >&2 <<_LT_EOF
mgl@1371
 45746
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
mgl@1371
 45747
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
mgl@1371
 45748
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
mgl@1371
 45749
+$progname: and run autoconf again.
mgl@1371
 45750
+_LT_EOF
mgl@1371
 45751
+      fi
mgl@1371
 45752
+    else
mgl@1371
 45753
+      cat >&2 <<_LT_EOF
mgl@1371
 45754
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
mgl@1371
 45755
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
mgl@1371
 45756
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
mgl@1371
 45757
+$progname: of $PACKAGE $VERSION and run autoconf again.
mgl@1371
 45758
+_LT_EOF
mgl@1371
 45759
+    fi
mgl@1371
 45760
+
mgl@1371
 45761
+    exit $EXIT_MISMATCH
mgl@1371
 45762
+  fi
mgl@1371
 45763
+}
mgl@1371
 45764
+
mgl@1371
 45765
+
mgl@1371
 45766
+## ----------- ##
mgl@1371
 45767
+##    Main.    ##
mgl@1371
 45768
+## ----------- ##
mgl@1371
 45769
+
mgl@1371
 45770
+{
mgl@1371
 45771
+  # Sanity checks first:
mgl@1371
 45772
+  func_check_version_match
mgl@1371
 45773
+
mgl@1371
 45774
+  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
mgl@1371
 45775
+    func_fatal_configuration "not configured to build any kind of library"
mgl@1371
 45776
+  fi
mgl@1371
 45777
+
mgl@1371
 45778
+  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
mgl@1371
 45779
+
mgl@1371
 45780
+
mgl@1371
 45781
+  # Darwin sucks
mgl@1371
 45782
+  eval std_shrext=\"$shrext_cmds\"
mgl@1371
 45783
+
mgl@1371
 45784
+
mgl@1371
 45785
+  # Only execute mode is allowed to have -dlopen flags.
mgl@1371
 45786
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
mgl@1371
 45787
+    func_error "unrecognized option \`-dlopen'"
mgl@1371
 45788
+    $ECHO "$help" 1>&2
mgl@1371
 45789
+    exit $EXIT_FAILURE
mgl@1371
 45790
+  fi
mgl@1371
 45791
+
mgl@1371
 45792
+  # Change the help message to a mode-specific one.
mgl@1371
 45793
+  generic_help="$help"
mgl@1371
 45794
+  help="Try \`$progname --help --mode=$mode' for more information."
mgl@1371
 45795
+}
mgl@1371
 45796
+
mgl@1371
 45797
+
mgl@1371
 45798
+# func_lalib_p file
mgl@1371
 45799
+# True iff FILE is a libtool `.la' library or `.lo' object file.
mgl@1371
 45800
+# This function is only a basic sanity check; it will hardly flush out
mgl@1371
 45801
+# determined imposters.
mgl@1371
 45802
+func_lalib_p ()
mgl@1371
 45803
+{
mgl@1371
 45804
+    $SED -e 4q "$1" 2>/dev/null \
mgl@1371
 45805
+      | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
mgl@1371
 45806
+}
mgl@1371
 45807
+
mgl@1371
 45808
+# func_lalib_unsafe_p file
mgl@1371
 45809
+# True iff FILE is a libtool `.la' library or `.lo' object file.
mgl@1371
 45810
+# This function implements the same check as func_lalib_p without
mgl@1371
 45811
+# resorting to external programs.  To this end, it redirects stdin and
mgl@1371
 45812
+# closes it afterwards, without saving the original file descriptor.
mgl@1371
 45813
+# As a safety measure, use it only where a negative result would be
mgl@1371
 45814
+# fatal anyway.  Works if `file' does not exist.
mgl@1371
 45815
+func_lalib_unsafe_p ()
mgl@1371
 45816
+{
mgl@1371
 45817
+    lalib_p=no
mgl@1371
 45818
+    if test -r "$1" && exec 5<&1 <"$1"; then
mgl@1371
 45819
+	for lalib_p_l in 1 2 3 4
mgl@1371
 45820
+	do
mgl@1371
 45821
+	    read lalib_p_line
mgl@1371
 45822
+	    case "$lalib_p_line" in
mgl@1371
 45823
+		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
mgl@1371
 45824
+	    esac
mgl@1371
 45825
+	done
mgl@1371
 45826
+	exec 1<&5 5<&-
mgl@1371
 45827
+    fi
mgl@1371
 45828
+    test "$lalib_p" = yes
mgl@1371
 45829
+}
mgl@1371
 45830
+
mgl@1371
 45831
+# func_ltwrapper_p file
mgl@1371
 45832
+# True iff FILE is a libtool wrapper script.
mgl@1371
 45833
+# This function is only a basic sanity check; it will hardly flush out
mgl@1371
 45834
+# determined imposters.
mgl@1371
 45835
+func_ltwrapper_p ()
mgl@1371
 45836
+{
mgl@1371
 45837
+    func_lalib_p "$1"
mgl@1371
 45838
+}
mgl@1371
 45839
+
mgl@1371
 45840
+
mgl@1371
 45841
+# func_execute_cmds commands fail_cmd
mgl@1371
 45842
+# Execute tilde-delimited COMMANDS.
mgl@1371
 45843
+# If FAIL_CMD is given, eval that upon failure.
mgl@1371
 45844
+# FAIL_CMD may read-access the current command in variable CMD!
mgl@1371
 45845
+func_execute_cmds ()
mgl@1371
 45846
+{
mgl@1371
 45847
+    $opt_debug
mgl@1371
 45848
+    save_ifs=$IFS; IFS='~'
mgl@1371
 45849
+    for cmd in $1; do
mgl@1371
 45850
+      IFS=$save_ifs
mgl@1371
 45851
+      eval cmd=\"$cmd\"
mgl@1371
 45852
+      func_show_eval "$cmd" "${2-:}"
mgl@1371
 45853
+    done
mgl@1371
 45854
+    IFS=$save_ifs
mgl@1371
 45855
+}
mgl@1371
 45856
+
mgl@1371
 45857
+
mgl@1371
 45858
+# func_source file
mgl@1371
 45859
+# Source FILE, adding directory component if necessary.
mgl@1371
 45860
+# Note that it is not necessary on cygwin/mingw to append a dot to
mgl@1371
 45861
+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
mgl@1371
 45862
+# behavior happens only for exec(3), not for open(2)!  Also, sourcing
mgl@1371
 45863
+# `FILE.' does not work on cygwin managed mounts.
mgl@1371
 45864
+func_source ()
mgl@1371
 45865
+{
mgl@1371
 45866
+    $opt_debug
mgl@1371
 45867
+    case $1 in
mgl@1371
 45868
+    */* | *\\*)	. "$1" ;;
mgl@1371
 45869
+    *)		. "./$1" ;;
mgl@1371
 45870
+    esac
mgl@1371
 45871
+}
mgl@1371
 45872
+
mgl@1371
 45873
+
mgl@1371
 45874
+# func_win32_libid arg
mgl@1371
 45875
+# return the library type of file 'arg'
mgl@1371
 45876
+#
mgl@1371
 45877
+# Need a lot of goo to handle *both* DLLs and import libs
mgl@1371
 45878
+# Has to be a shell function in order to 'eat' the argument
mgl@1371
 45879
+# that is supplied when $file_magic_command is called.
mgl@1371
 45880
+func_win32_libid ()
mgl@1371
 45881
+{
mgl@1371
 45882
+  $opt_debug
mgl@1371
 45883
+  win32_libid_type="unknown"
mgl@1371
 45884
+  win32_fileres=`file -L $1 2>/dev/null`
mgl@1371
 45885
+  case $win32_fileres in
mgl@1371
 45886
+  *ar\ archive\ import\ library*) # definitely import
mgl@1371
 45887
+    win32_libid_type="x86 archive import"
mgl@1371
 45888
+    ;;
mgl@1371
 45889
+  *ar\ archive*) # could be an import, or static
mgl@1371
 45890
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
mgl@1371
 45891
+       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
mgl@1371
 45892
+      win32_nmres=`eval $NM -f posix -A $1 |
mgl@1371
 45893
+	$SED -n -e '
mgl@1371
 45894
+	    1,100{
mgl@1371
 45895
+		/ I /{
mgl@1371
 45896
+		    s,.*,import,
mgl@1371
 45897
+		    p
mgl@1371
 45898
+		    q
mgl@1371
 45899
+		}
mgl@1371
 45900
+	    }'`
mgl@1371
 45901
+      case $win32_nmres in
mgl@1371
 45902
+      import*)  win32_libid_type="x86 archive import";;
mgl@1371
 45903
+      *)        win32_libid_type="x86 archive static";;
mgl@1371
 45904
+      esac
mgl@1371
 45905
+    fi
mgl@1371
 45906
+    ;;
mgl@1371
 45907
+  *DLL*)
mgl@1371
 45908
+    win32_libid_type="x86 DLL"
mgl@1371
 45909
+    ;;
mgl@1371
 45910
+  *executable*) # but shell scripts are "executable" too...
mgl@1371
 45911
+    case $win32_fileres in
mgl@1371
 45912
+    *MS\ Windows\ PE\ Intel*)
mgl@1371
 45913
+      win32_libid_type="x86 DLL"
mgl@1371
 45914
+      ;;
mgl@1371
 45915
+    esac
mgl@1371
 45916
+    ;;
mgl@1371
 45917
+  esac
mgl@1371
 45918
+  $ECHO "$win32_libid_type"
mgl@1371
 45919
+}
mgl@1371
 45920
+
mgl@1371
 45921
+
mgl@1371
 45922
+
mgl@1371
 45923
+# func_infer_tag arg
mgl@1371
 45924
+# Infer tagged configuration to use if any are available and
mgl@1371
 45925
+# if one wasn't chosen via the "--tag" command line option.
mgl@1371
 45926
+# Only attempt this if the compiler in the base compile
mgl@1371
 45927
+# command doesn't match the default compiler.
mgl@1371
 45928
+# arg is usually of the form 'gcc ...'
mgl@1371
 45929
+func_infer_tag ()
mgl@1371
 45930
+{
mgl@1371
 45931
+    $opt_debug
mgl@1371
 45932
+    if test -n "$available_tags" && test -z "$tagname"; then
mgl@1371
 45933
+      CC_quoted=
mgl@1371
 45934
+      for arg in $CC; do
mgl@1371
 45935
+        func_quote_for_eval "$arg"
mgl@1371
 45936
+	CC_quoted="$CC_quoted $func_quote_for_eval_result"
mgl@1371
 45937
+      done
mgl@1371
 45938
+      case $@ in
mgl@1371
 45939
+      # Blanks in the command may have been stripped by the calling shell,
mgl@1371
 45940
+      # but not from the CC environment variable when configure was run.
mgl@1371
 45941
+      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
mgl@1371
 45942
+      # Blanks at the start of $base_compile will cause this to fail
mgl@1371
 45943
+      # if we don't check for them as well.
mgl@1371
 45944
+      *)
mgl@1371
 45945
+	for z in $available_tags; do
mgl@1371
 45946
+	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
mgl@1371
 45947
+	    # Evaluate the configuration.
mgl@1371
 45948
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
mgl@1371
 45949
+	    CC_quoted=
mgl@1371
 45950
+	    for arg in $CC; do
mgl@1371
 45951
+	      # Double-quote args containing other shell metacharacters.
mgl@1371
 45952
+	      func_quote_for_eval "$arg"
mgl@1371
 45953
+	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
mgl@1371
 45954
+	    done
mgl@1371
 45955
+	    case "$@ " in
mgl@1371
 45956
+	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
mgl@1371
 45957
+	      # The compiler in the base compile command matches
mgl@1371
 45958
+	      # the one in the tagged configuration.
mgl@1371
 45959
+	      # Assume this is the tagged configuration we want.
mgl@1371
 45960
+	      tagname=$z
mgl@1371
 45961
+	      break
mgl@1371
 45962
+	      ;;
mgl@1371
 45963
+	    esac
mgl@1371
 45964
+	  fi
mgl@1371
 45965
+	done
mgl@1371
 45966
+	# If $tagname still isn't set, then no tagged configuration
mgl@1371
 45967
+	# was found and let the user know that the "--tag" command
mgl@1371
 45968
+	# line option must be used.
mgl@1371
 45969
+	if test -z "$tagname"; then
mgl@1371
 45970
+	  func_echo "unable to infer tagged configuration"
mgl@1371
 45971
+	  func_fatal_error "specify a tag with \`--tag'"
mgl@1371
 45972
+#	else
mgl@1371
 45973
+#	  func_verbose "using $tagname tagged configuration"
mgl@1371
 45974
+	fi
mgl@1371
 45975
+	;;
mgl@1371
 45976
+      esac
mgl@1371
 45977
+    fi
mgl@1371
 45978
+}
mgl@1371
 45979
+
mgl@1371
 45980
+
mgl@1371
 45981
+
mgl@1371
 45982
+# func_generate_dlsyms outputname originator pic_p
mgl@1371
 45983
+# Extract symbols from dlprefiles and create ${outputname}S.o with
mgl@1371
 45984
+# a dlpreopen symbol table.
mgl@1371
 45985
+func_generate_dlsyms ()
mgl@1371
 45986
+{
mgl@1371
 45987
+    $opt_debug
mgl@1371
 45988
+    my_outputname="$1"
mgl@1371
 45989
+    my_originator="$2"
mgl@1371
 45990
+    my_pic_p="${3-no}"
mgl@1371
 45991
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
mgl@1371
 45992
+    my_dlsyms=
mgl@1371
 45993
+
mgl@1371
 45994
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
mgl@1371
 45995
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
mgl@1371
 45996
+	my_dlsyms="${my_outputname}S.c"
mgl@1371
 45997
+      else
mgl@1371
 45998
+	func_error "not configured to extract global symbols from dlpreopened files"
mgl@1371
 45999
+      fi
mgl@1371
 46000
+    fi
mgl@1371
 46001
+
mgl@1371
 46002
+    if test -n "$my_dlsyms"; then
mgl@1371
 46003
+      case $my_dlsyms in
mgl@1371
 46004
+      "") ;;
mgl@1371
 46005
+      *.c)
mgl@1371
 46006
+	# Discover the nlist of each of the dlfiles.
mgl@1371
 46007
+	nlist="$output_objdir/${my_outputname}.nm"
mgl@1371
 46008
+
mgl@1371
 46009
+	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
mgl@1371
 46010
+
mgl@1371
 46011
+	# Parse the name list into a source file.
mgl@1371
 46012
+	func_echo "creating $output_objdir/$my_dlsyms"
mgl@1371
 46013
+
mgl@1371
 46014
+	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
mgl@1371
 46015
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
mgl@1371
 46016
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
mgl@1371
 46017
+
mgl@1371
 46018
+#ifdef __cplusplus
mgl@1371
 46019
+extern \"C\" {
mgl@1371
 46020
+#endif
mgl@1371
 46021
+
mgl@1371
 46022
+/* External symbol declarations for the compiler. */\
mgl@1371
 46023
+"
mgl@1371
 46024
+
mgl@1371
 46025
+	if test "$dlself" = yes; then
mgl@1371
 46026
+	  func_echo "generating symbol list for \`$output'"
mgl@1371
 46027
+
mgl@1371
 46028
+	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
mgl@1371
 46029
+
mgl@1371
 46030
+	  # Add our own program objects to the symbol list.
mgl@1371
 46031
+	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
mgl@1371
 46032
+	  for progfile in $progfiles; do
mgl@1371
 46033
+	    func_echo "extracting global C symbols from \`$progfile'"
mgl@1371
 46034
+	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
mgl@1371
 46035
+	  done
mgl@1371
 46036
+
mgl@1371
 46037
+	  if test -n "$exclude_expsyms"; then
mgl@1371
 46038
+	    $opt_dry_run || {
mgl@1371
 46039
+	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
mgl@1371
 46040
+	      eval '$MV "$nlist"T "$nlist"'
mgl@1371
 46041
+	    }
mgl@1371
 46042
+	  fi
mgl@1371
 46043
+
mgl@1371
 46044
+	  if test -n "$export_symbols_regex"; then
mgl@1371
 46045
+	    $opt_dry_run || {
mgl@1371
 46046
+	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
mgl@1371
 46047
+	      eval '$MV "$nlist"T "$nlist"'
mgl@1371
 46048
+	    }
mgl@1371
 46049
+	  fi
mgl@1371
 46050
+
mgl@1371
 46051
+	  # Prepare the list of exported symbols
mgl@1371
 46052
+	  if test -z "$export_symbols"; then
mgl@1371
 46053
+	    export_symbols="$output_objdir/$outputname.exp"
mgl@1371
 46054
+	    $opt_dry_run || {
mgl@1371
 46055
+	      $RM $export_symbols
mgl@1371
 46056
+	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
mgl@1371
 46057
+	      case $host in
mgl@1371
 46058
+	      *cygwin* | *mingw* )
mgl@1371
 46059
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
mgl@1371
 46060
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
mgl@1371
 46061
+	        ;;
mgl@1371
 46062
+	      esac
mgl@1371
 46063
+	    }
mgl@1371
 46064
+	  else
mgl@1371
 46065
+	    $opt_dry_run || {
mgl@1371
 46066
+	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
mgl@1371
 46067
+	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
mgl@1371
 46068
+	      eval '$MV "$nlist"T "$nlist"'
mgl@1371
 46069
+	      case $host in
mgl@1371
 46070
+	        *cygwin | *mingw* )
mgl@1371
 46071
+	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
mgl@1371
 46072
+	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
mgl@1371
 46073
+	          ;;
mgl@1371
 46074
+	      esac
mgl@1371
 46075
+	    }
mgl@1371
 46076
+	  fi
mgl@1371
 46077
+	fi
mgl@1371
 46078
+
mgl@1371
 46079
+	for dlprefile in $dlprefiles; do
mgl@1371
 46080
+	  func_echo "extracting global C symbols from \`$dlprefile'"
mgl@1371
 46081
+	  func_basename "$dlprefile"
mgl@1371
 46082
+	  name="$func_basename_result"
mgl@1371
 46083
+	  $opt_dry_run || {
mgl@1371
 46084
+	    eval '$ECHO ": $name " >> "$nlist"'
mgl@1371
 46085
+	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
mgl@1371
 46086
+	  }
mgl@1371
 46087
+	done
mgl@1371
 46088
+
mgl@1371
 46089
+	$opt_dry_run || {
mgl@1371
 46090
+	  # Make sure we have at least an empty file.
mgl@1371
 46091
+	  test -f "$nlist" || : > "$nlist"
mgl@1371
 46092
+
mgl@1371
 46093
+	  if test -n "$exclude_expsyms"; then
mgl@1371
 46094
+	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
mgl@1371
 46095
+	    $MV "$nlist"T "$nlist"
mgl@1371
 46096
+	  fi
mgl@1371
 46097
+
mgl@1371
 46098
+	  # Try sorting and uniquifying the output.
mgl@1371
 46099
+	  if $GREP -v "^: " < "$nlist" |
mgl@1371
 46100
+	      if sort -k 3 </dev/null >/dev/null 2>&1; then
mgl@1371
 46101
+		sort -k 3
mgl@1371
 46102
+	      else
mgl@1371
 46103
+		sort +2
mgl@1371
 46104
+	      fi |
mgl@1371
 46105
+	      uniq > "$nlist"S; then
mgl@1371
 46106
+	    :
mgl@1371
 46107
+	  else
mgl@1371
 46108
+	    $GREP -v "^: " < "$nlist" > "$nlist"S
mgl@1371
 46109
+	  fi
mgl@1371
 46110
+
mgl@1371
 46111
+	  if test -f "$nlist"S; then
mgl@1371
 46112
+	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
mgl@1371
 46113
+	  else
mgl@1371
 46114
+	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
mgl@1371
 46115
+	  fi
mgl@1371
 46116
+
mgl@1371
 46117
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
mgl@1371
 46118
+
mgl@1371
 46119
+/* The mapping between symbol names and symbols.  */
mgl@1371
 46120
+typedef struct {
mgl@1371
 46121
+  const char *name;
mgl@1371
 46122
+  void *address;
mgl@1371
 46123
+} lt_dlsymlist;
mgl@1371
 46124
+"
mgl@1371
 46125
+	  case $host in
mgl@1371
 46126
+	  *cygwin* | *mingw* )
mgl@1371
 46127
+	    $ECHO >> "$output_objdir/$my_dlsyms" "\
mgl@1371
 46128
+/* DATA imports from DLLs on WIN32 con't be const, because
mgl@1371
 46129
+   runtime relocations are performed -- see ld's documentation
mgl@1371
 46130
+   on pseudo-relocs.  */"
mgl@1371
 46131
+	    lt_dlsym_const= ;;
mgl@1371
 46132
+	  *osf5*)
mgl@1371
 46133
+	    echo >> "$output_objdir/$my_dlsyms" "\
mgl@1371
 46134
+/* This system does not cope well with relocations in const data */"
mgl@1371
 46135
+	    lt_dlsym_const= ;;
mgl@1371
 46136
+	  *)
mgl@1371
 46137
+	    lt_dlsym_const=const ;;
mgl@1371
 46138
+	  esac
mgl@1371
 46139
+
mgl@1371
 46140
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
mgl@1371
 46141
+extern $lt_dlsym_const lt_dlsymlist
mgl@1371
 46142
+lt_${my_prefix}_LTX_preloaded_symbols[];
mgl@1371
 46143
+$lt_dlsym_const lt_dlsymlist
mgl@1371
 46144
+lt_${my_prefix}_LTX_preloaded_symbols[] =
mgl@1371
 46145
+{\
mgl@1371
 46146
+  { \"$my_originator\", (void *) 0 },"
mgl@1371
 46147
+
mgl@1371
 46148
+	  eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
mgl@1371
 46149
+
mgl@1371
 46150
+	  $ECHO >> "$output_objdir/$my_dlsyms" "\
mgl@1371
 46151
+  {0, (void *) 0}
mgl@1371
 46152
+};
mgl@1371
 46153
+
mgl@1371
 46154
+/* This works around a problem in FreeBSD linker */
mgl@1371
 46155
+#ifdef FREEBSD_WORKAROUND
mgl@1371
 46156
+static const void *lt_preloaded_setup() {
mgl@1371
 46157
+  return lt_${my_prefix}_LTX_preloaded_symbols;
mgl@1371
 46158
+}
mgl@1371
 46159
+#endif
mgl@1371
 46160
+
mgl@1371
 46161
+#ifdef __cplusplus
mgl@1371
 46162
+}
mgl@1371
 46163
+#endif\
mgl@1371
 46164
+"
mgl@1371
 46165
+	} # !$opt_dry_run
mgl@1371
 46166
+
mgl@1371
 46167
+  	pic_flag_for_symtable=
mgl@1371
 46168
+	case "$compile_command " in
mgl@1371
 46169
+	*" -static "*) ;;
mgl@1371
 46170
+	*)
mgl@1371
 46171
+	  case $host in
mgl@1371
 46172
+	  # compiling the symbol table file with pic_flag works around
mgl@1371
 46173
+	  # a FreeBSD bug that causes programs to crash when -lm is
mgl@1371
 46174
+	  # linked before any other PIC object.  But we must not use
mgl@1371
 46175
+	  # pic_flag when linking with -static.  The problem exists in
mgl@1371
 46176
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
mgl@1371
 46177
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
mgl@1371
 46178
+	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
mgl@1371
 46179
+	  *-*-hpux*)
mgl@1371
 46180
+	    pic_flag_for_symtable=" $pic_flag"  ;;
mgl@1371
 46181
+	  *)
mgl@1371
 46182
+	    if test "X$my_pic_p" != Xno; then
mgl@1371
 46183
+	      pic_flag_for_symtable=" $pic_flag"
mgl@1371
 46184
+	    fi
mgl@1371
 46185
+	    ;;
mgl@1371
 46186
+	  esac
mgl@1371
 46187
+	  ;;
mgl@1371
 46188
+	esac
mgl@1371
 46189
+	symtab_cflags=
mgl@1371
 46190
+	for arg in $LTCFLAGS; do
mgl@1371
 46191
+	  case $arg in
mgl@1371
 46192
+	  -pie | -fpie | -fPIE) ;;
mgl@1371
 46193
+	  *) symtab_cflags="$symtab_cflags $arg" ;;
mgl@1371
 46194
+	  esac
mgl@1371
 46195
+	done
mgl@1371
 46196
+
mgl@1371
 46197
+	# Now compile the dynamic symbol file.
mgl@1371
 46198
+	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
mgl@1371
 46199
+
mgl@1371
 46200
+	# Clean up the generated files.
mgl@1371
 46201
+	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
mgl@1371
 46202
+
mgl@1371
 46203
+	# Transform the symbol file into the correct name.
mgl@1371
 46204
+	symfileobj="$output_objdir/${my_outputname}S.$objext"
mgl@1371
 46205
+	case $host in
mgl@1371
 46206
+	*cygwin* | *mingw* )
mgl@1371
 46207
+	  if test -f "$output_objdir/$my_outputname.def"; then
mgl@1371
 46208
+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
mgl@1371
 46209
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
mgl@1371
 46210
+	  else
mgl@1371
 46211
+	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
mgl@1371
 46212
+	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
mgl@1371
 46213
+	  fi
mgl@1371
 46214
+	  ;;
mgl@1371
 46215
+	*)
mgl@1371
 46216
+	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
mgl@1371
 46217
+	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
mgl@1371
 46218
+	  ;;
mgl@1371
 46219
+	esac
mgl@1371
 46220
+	;;
mgl@1371
 46221
+      *)
mgl@1371
 46222
+	func_fatal_error "unknown suffix for \`$my_dlsyms'"
mgl@1371
 46223
+	;;
mgl@1371
 46224
+      esac
mgl@1371
 46225
+    else
mgl@1371
 46226
+      # We keep going just in case the user didn't refer to
mgl@1371
 46227
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
mgl@1371
 46228
+      # really was required.
mgl@1371
 46229
+
mgl@1371
 46230
+      # Nullify the symbol file.
mgl@1371
 46231
+      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
mgl@1371
 46232
+      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
mgl@1371
 46233
+    fi
mgl@1371
 46234
+}
mgl@1371
 46235
+
mgl@1371
 46236
+# func_extract_an_archive dir oldlib
mgl@1371
 46237
+func_extract_an_archive ()
mgl@1371
 46238
+{
mgl@1371
 46239
+    $opt_debug
mgl@1371
 46240
+    f_ex_an_ar_dir="$1"; shift
mgl@1371
 46241
+    f_ex_an_ar_oldlib="$1"
mgl@1371
 46242
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
mgl@1371
 46243
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
mgl@1371
 46244
+     :
mgl@1371
 46245
+    else
mgl@1371
 46246
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
mgl@1371
 46247
+    fi
mgl@1371
 46248
+}
mgl@1371
 46249
+
mgl@1371
 46250
+
mgl@1371
 46251
+# func_extract_archives gentop oldlib ...
mgl@1371
 46252
+func_extract_archives ()
mgl@1371
 46253
+{
mgl@1371
 46254
+    $opt_debug
mgl@1371
 46255
+    my_gentop="$1"; shift
mgl@1371
 46256
+    my_oldlibs=${1+"$@"}
mgl@1371
 46257
+    my_oldobjs=""
mgl@1371
 46258
+    my_xlib=""
mgl@1371
 46259
+    my_xabs=""
mgl@1371
 46260
+    my_xdir=""
mgl@1371
 46261
+
mgl@1371
 46262
+    for my_xlib in $my_oldlibs; do
mgl@1371
 46263
+      # Extract the objects.
mgl@1371
 46264
+      case $my_xlib in
mgl@1371
 46265
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
mgl@1371
 46266
+	*) my_xabs=`pwd`"/$my_xlib" ;;
mgl@1371
 46267
+      esac
mgl@1371
 46268
+      func_basename "$my_xlib"
mgl@1371
 46269
+      my_xlib="$func_basename_result"
mgl@1371
 46270
+      my_xlib_u=$my_xlib
mgl@1371
 46271
+      while :; do
mgl@1371
 46272
+        case " $extracted_archives " in
mgl@1371
 46273
+	*" $my_xlib_u "*)
mgl@1371
 46274
+	  extracted_serial=`expr $extracted_serial + 1`
mgl@1371
 46275
+	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
mgl@1371
 46276
+	*) break ;;
mgl@1371
 46277
+	esac
mgl@1371
 46278
+      done
mgl@1371
 46279
+      extracted_archives="$extracted_archives $my_xlib_u"
mgl@1371
 46280
+      my_xdir="$my_gentop/$my_xlib_u"
mgl@1371
 46281
+
mgl@1371
 46282
+      func_mkdir_p "$my_xdir"
mgl@1371
 46283
+
mgl@1371
 46284
+      case $host in
mgl@1371
 46285
+      *-darwin*)
mgl@1371
 46286
+	func_echo "Extracting $my_xabs"
mgl@1371
 46287
+	# Do not bother doing anything if just a dry run
mgl@1371
 46288
+	$opt_dry_run || {
mgl@1371
 46289
+	  darwin_orig_dir=`pwd`
mgl@1371
 46290
+	  cd $my_xdir || exit $?
mgl@1371
 46291
+	  darwin_archive=$my_xabs
mgl@1371
 46292
+	  darwin_curdir=`pwd`
mgl@1371
 46293
+	  darwin_base_archive=`basename $darwin_archive`
mgl@1371
 46294
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
mgl@1371
 46295
+	  if test -n "$darwin_arches"; then
mgl@1371
 46296
+	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
mgl@1371
 46297
+	    darwin_arch=
mgl@1371
 46298
+	    func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
mgl@1371
 46299
+	    for darwin_arch in  $darwin_arches ; do
mgl@1371
 46300
+	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
mgl@1371
 46301
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
mgl@1371
 46302
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
mgl@1371
 46303
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
mgl@1371
 46304
+	      cd "$darwin_curdir"
mgl@1371
 46305
+	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
mgl@1371
 46306
+	    done # $darwin_arches
mgl@1371
 46307
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
mgl@1371
 46308
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
mgl@1371
 46309
+	    darwin_file=
mgl@1371
 46310
+	    darwin_files=
mgl@1371
 46311
+	    for darwin_file in $darwin_filelist; do
mgl@1371
 46312
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
mgl@1371
 46313
+	      lipo -create -output "$darwin_file" $darwin_files
mgl@1371
 46314
+	    done # $darwin_filelist
mgl@1371
 46315
+	    $RM -rf unfat-$$
mgl@1371
 46316
+	    cd "$darwin_orig_dir"
mgl@1371
 46317
+	  else
mgl@1371
 46318
+	    cd $darwin_orig_dir
mgl@1371
 46319
+	    func_extract_an_archive "$my_xdir" "$my_xabs"
mgl@1371
 46320
+	  fi # $darwin_arches
mgl@1371
 46321
+	} # !$opt_dry_run
mgl@1371
 46322
+	;;
mgl@1371
 46323
+      *)
mgl@1371
 46324
+        func_extract_an_archive "$my_xdir" "$my_xabs"
mgl@1371
 46325
+	;;
mgl@1371
 46326
+      esac
mgl@1371
 46327
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
mgl@1371
 46328
+    done
mgl@1371
 46329
+
mgl@1371
 46330
+    func_extract_archives_result="$my_oldobjs"
mgl@1371
 46331
+}
mgl@1371
 46332
+
mgl@1371
 46333
+
mgl@1371
 46334
+
mgl@1371
 46335
+# func_write_libtool_object output_name pic_name nonpic_name
mgl@1371
 46336
+# Create a libtool object file (analogous to a ".la" file),
mgl@1371
 46337
+# but don't create it if we're doing a dry run.
mgl@1371
 46338
+func_write_libtool_object ()
mgl@1371
 46339
+{
mgl@1371
 46340
+    write_libobj=${1}
mgl@1371
 46341
+    if test "$build_libtool_libs" = yes; then
mgl@1371
 46342
+      write_lobj=\'${2}\'
mgl@1371
 46343
+    else
mgl@1371
 46344
+      write_lobj=none
mgl@1371
 46345
+    fi
mgl@1371
 46346
+
mgl@1371
 46347
+    if test "$build_old_libs" = yes; then
mgl@1371
 46348
+      write_oldobj=\'${3}\'
mgl@1371
 46349
+    else
mgl@1371
 46350
+      write_oldobj=none
mgl@1371
 46351
+    fi
mgl@1371
 46352
+
mgl@1371
 46353
+    $opt_dry_run || {
mgl@1371
 46354
+      cat >${write_libobj}T <<EOF
mgl@1371
 46355
+# $write_libobj - a libtool object file
mgl@1371
 46356
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
mgl@1371
 46357
+#
mgl@1371
 46358
+# Please DO NOT delete this file!
mgl@1371
 46359
+# It is necessary for linking the library.
mgl@1371
 46360
+
mgl@1371
 46361
+# Name of the PIC object.
mgl@1371
 46362
+pic_object=$write_lobj
mgl@1371
 46363
+
mgl@1371
 46364
+# Name of the non-PIC object
mgl@1371
 46365
+non_pic_object=$write_oldobj
mgl@1371
 46366
+
mgl@1371
 46367
+EOF
mgl@1371
 46368
+      mv -f "${write_libobj}T" "${write_libobj}"
mgl@1371
 46369
+    }
mgl@1371
 46370
+}
mgl@1371
 46371
+
mgl@1371
 46372
+# func_mode_compile arg...
mgl@1371
 46373
+func_mode_compile ()
mgl@1371
 46374
+{
mgl@1371
 46375
+    $opt_debug
mgl@1371
 46376
+    # Get the compilation command and the source file.
mgl@1371
 46377
+    base_compile=
mgl@1371
 46378
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
mgl@1371
 46379
+    suppress_opt=yes
mgl@1371
 46380
+    suppress_output=
mgl@1371
 46381
+    arg_mode=normal
mgl@1371
 46382
+    libobj=
mgl@1371
 46383
+    later=
mgl@1371
 46384
+    pie_flag=
mgl@1371
 46385
+
mgl@1371
 46386
+    for arg
mgl@1371
 46387
+    do
mgl@1371
 46388
+      case $arg_mode in
mgl@1371
 46389
+      arg  )
mgl@1371
 46390
+	# do not "continue".  Instead, add this to base_compile
mgl@1371
 46391
+	lastarg="$arg"
mgl@1371
 46392
+	arg_mode=normal
mgl@1371
 46393
+	;;
mgl@1371
 46394
+
mgl@1371
 46395
+      target )
mgl@1371
 46396
+	libobj="$arg"
mgl@1371
 46397
+	arg_mode=normal
mgl@1371
 46398
+	continue
mgl@1371
 46399
+	;;
mgl@1371
 46400
+
mgl@1371
 46401
+      normal )
mgl@1371
 46402
+	# Accept any command-line options.
mgl@1371
 46403
+	case $arg in
mgl@1371
 46404
+	-o)
mgl@1371
 46405
+	  test -n "$libobj" && \
mgl@1371
 46406
+	    func_fatal_error "you cannot specify \`-o' more than once"
mgl@1371
 46407
+	  arg_mode=target
mgl@1371
 46408
+	  continue
mgl@1371
 46409
+	  ;;
mgl@1371
 46410
+
mgl@1371
 46411
+	-pie | -fpie | -fPIE)
mgl@1371
 46412
+          pie_flag="$pie_flag $arg"
mgl@1371
 46413
+	  continue
mgl@1371
 46414
+	  ;;
mgl@1371
 46415
+
mgl@1371
 46416
+	-shared | -static | -prefer-pic | -prefer-non-pic)
mgl@1371
 46417
+	  later="$later $arg"
mgl@1371
 46418
+	  continue
mgl@1371
 46419
+	  ;;
mgl@1371
 46420
+
mgl@1371
 46421
+	-no-suppress)
mgl@1371
 46422
+	  suppress_opt=no
mgl@1371
 46423
+	  continue
mgl@1371
 46424
+	  ;;
mgl@1371
 46425
+
mgl@1371
 46426
+	-Xcompiler)
mgl@1371
 46427
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
mgl@1371
 46428
+	  continue      #  The current "srcfile" will either be retained or
mgl@1371
 46429
+	  ;;            #  replaced later.  I would guess that would be a bug.
mgl@1371
 46430
+
mgl@1371
 46431
+	-Wc,*)
mgl@1371
 46432
+	  func_stripname '-Wc,' '' "$arg"
mgl@1371
 46433
+	  args=$func_stripname_result
mgl@1371
 46434
+	  lastarg=
mgl@1371
 46435
+	  save_ifs="$IFS"; IFS=','
mgl@1371
 46436
+	  for arg in $args; do
mgl@1371
 46437
+	    IFS="$save_ifs"
mgl@1371
 46438
+	    func_quote_for_eval "$arg"
mgl@1371
 46439
+	    lastarg="$lastarg $func_quote_for_eval_result"
mgl@1371
 46440
+	  done
mgl@1371
 46441
+	  IFS="$save_ifs"
mgl@1371
 46442
+	  func_stripname ' ' '' "$lastarg"
mgl@1371
 46443
+	  lastarg=$func_stripname_result
mgl@1371
 46444
+
mgl@1371
 46445
+	  # Add the arguments to base_compile.
mgl@1371
 46446
+	  base_compile="$base_compile $lastarg"
mgl@1371
 46447
+	  continue
mgl@1371
 46448
+	  ;;
mgl@1371
 46449
+
mgl@1371
 46450
+	*)
mgl@1371
 46451
+	  # Accept the current argument as the source file.
mgl@1371
 46452
+	  # The previous "srcfile" becomes the current argument.
mgl@1371
 46453
+	  #
mgl@1371
 46454
+	  lastarg="$srcfile"
mgl@1371
 46455
+	  srcfile="$arg"
mgl@1371
 46456
+	  ;;
mgl@1371
 46457
+	esac  #  case $arg
mgl@1371
 46458
+	;;
mgl@1371
 46459
+      esac    #  case $arg_mode
mgl@1371
 46460
+
mgl@1371
 46461
+      # Aesthetically quote the previous argument.
mgl@1371
 46462
+      func_quote_for_eval "$lastarg"
mgl@1371
 46463
+      base_compile="$base_compile $func_quote_for_eval_result"
mgl@1371
 46464
+    done # for arg
mgl@1371
 46465
+
mgl@1371
 46466
+    case $arg_mode in
mgl@1371
 46467
+    arg)
mgl@1371
 46468
+      func_fatal_error "you must specify an argument for -Xcompile"
mgl@1371
 46469
+      ;;
mgl@1371
 46470
+    target)
mgl@1371
 46471
+      func_fatal_error "you must specify a target with \`-o'"
mgl@1371
 46472
+      ;;
mgl@1371
 46473
+    *)
mgl@1371
 46474
+      # Get the name of the library object.
mgl@1371
 46475
+      test -z "$libobj" && {
mgl@1371
 46476
+	func_basename "$srcfile"
mgl@1371
 46477
+	libobj="$func_basename_result"
mgl@1371
 46478
+      }
mgl@1371
 46479
+      ;;
mgl@1371
 46480
+    esac
mgl@1371
 46481
+
mgl@1371
 46482
+    # Recognize several different file suffixes.
mgl@1371
 46483
+    # If the user specifies -o file.o, it is replaced with file.lo
mgl@1371
 46484
+    xform='[cCFSifmso]'
mgl@1371
 46485
+    case $libobj in
mgl@1371
 46486
+    *.ada) xform=ada ;;
mgl@1371
 46487
+    *.adb) xform=adb ;;
mgl@1371
 46488
+    *.ads) xform=ads ;;
mgl@1371
 46489
+    *.asm) xform=asm ;;
mgl@1371
 46490
+    *.c++) xform=c++ ;;
mgl@1371
 46491
+    *.cc) xform=cc ;;
mgl@1371
 46492
+    *.ii) xform=ii ;;
mgl@1371
 46493
+    *.class) xform=class ;;
mgl@1371
 46494
+    *.cpp) xform=cpp ;;
mgl@1371
 46495
+    *.cxx) xform=cxx ;;
mgl@1371
 46496
+    *.[fF][09]?) xform='[fF][09].' ;;
mgl@1371
 46497
+    *.for) xform=for ;;
mgl@1371
 46498
+    *.java) xform=java ;;
mgl@1371
 46499
+    *.obj) xform=obj ;;
mgl@1371
 46500
+    esac
mgl@1371
 46501
+
mgl@1371
 46502
+    libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
mgl@1371
 46503
+
mgl@1371
 46504
+    case $libobj in
mgl@1371
 46505
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
mgl@1371
 46506
+    *)
mgl@1371
 46507
+      func_fatal_error "cannot determine name of library object from \`$libobj'"
mgl@1371
 46508
+      ;;
mgl@1371
 46509
+    esac
mgl@1371
 46510
+
mgl@1371
 46511
+    func_infer_tag $base_compile
mgl@1371
 46512
+
mgl@1371
 46513
+    for arg in $later; do
mgl@1371
 46514
+      case $arg in
mgl@1371
 46515
+      -shared)
mgl@1371
 46516
+	test "$build_libtool_libs" != yes && \
mgl@1371
 46517
+	  func_fatal_configuration "can not build a shared library"
mgl@1371
 46518
+	build_old_libs=no
mgl@1371
 46519
+	continue
mgl@1371
 46520
+	;;
mgl@1371
 46521
+
mgl@1371
 46522
+      -static)
mgl@1371
 46523
+	build_libtool_libs=no
mgl@1371
 46524
+	build_old_libs=yes
mgl@1371
 46525
+	continue
mgl@1371
 46526
+	;;
mgl@1371
 46527
+
mgl@1371
 46528
+      -prefer-pic)
mgl@1371
 46529
+	pic_mode=yes
mgl@1371
 46530
+	continue
mgl@1371
 46531
+	;;
mgl@1371
 46532
+
mgl@1371
 46533
+      -prefer-non-pic)
mgl@1371
 46534
+	pic_mode=no
mgl@1371
 46535
+	continue
mgl@1371
 46536
+	;;
mgl@1371
 46537
+      esac
mgl@1371
 46538
+    done
mgl@1371
 46539
+
mgl@1371
 46540
+    func_quote_for_eval "$libobj"
mgl@1371
 46541
+    test "X$libobj" != "X$func_quote_for_eval_result" \
mgl@1371
 46542
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
mgl@1371
 46543
+      && func_warning "libobj name \`$libobj' may not contain shell special characters."
mgl@1371
 46544
+    func_basename "$obj"
mgl@1371
 46545
+    objname="$func_basename_result"
mgl@1371
 46546
+    func_dirname "$obj" "/" ""
mgl@1371
 46547
+    xdir="$func_dirname_result"
mgl@1371
 46548
+    lobj=${xdir}$objdir/$objname
mgl@1371
 46549
+
mgl@1371
 46550
+    test -z "$base_compile" && \
mgl@1371
 46551
+      func_fatal_help "you must specify a compilation command"
mgl@1371
 46552
+
mgl@1371
 46553
+    # Delete any leftover library objects.
mgl@1371
 46554
+    if test "$build_old_libs" = yes; then
mgl@1371
 46555
+      removelist="$obj $lobj $libobj ${libobj}T"
mgl@1371
 46556
+    else
mgl@1371
 46557
+      removelist="$lobj $libobj ${libobj}T"
mgl@1371
 46558
+    fi
mgl@1371
 46559
+
mgl@1371
 46560
+    $opt_dry_run || $RM $removelist
mgl@1371
 46561
+    trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
mgl@1371
 46562
+
mgl@1371
 46563
+    # On Cygwin there's no "real" PIC flag so we must build both object types
mgl@1371
 46564
+    case $host_os in
mgl@1371
 46565
+    cygwin* | mingw* | pw32* | os2*)
mgl@1371
 46566
+      pic_mode=default
mgl@1371
 46567
+      ;;
mgl@1371
 46568
+    esac
mgl@1371
 46569
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
mgl@1371
 46570
+      # non-PIC code in shared libraries is not supported
mgl@1371
 46571
+      pic_mode=default
mgl@1371
 46572
+    fi
mgl@1371
 46573
+
mgl@1371
 46574
+    # Calculate the filename of the output object if compiler does
mgl@1371
 46575
+    # not support -o with -c
mgl@1371
 46576
+    if test "$compiler_c_o" = no; then
mgl@1371
 46577
+      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
mgl@1371
 46578
+      lockfile="$output_obj.lock"
mgl@1371
 46579
+      removelist="$removelist $output_obj $lockfile"
mgl@1371
 46580
+      trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
mgl@1371
 46581
+    else
mgl@1371
 46582
+      output_obj=
mgl@1371
 46583
+      need_locks=no
mgl@1371
 46584
+      lockfile=
mgl@1371
 46585
+    fi
mgl@1371
 46586
+
mgl@1371
 46587
+    # Lock this critical section if it is needed
mgl@1371
 46588
+    # We use this script file to make the link, it avoids creating a new file
mgl@1371
 46589
+    if test "$need_locks" = yes; then
mgl@1371
 46590
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
mgl@1371
 46591
+	func_echo "Waiting for $lockfile to be removed"
mgl@1371
 46592
+	sleep 2
mgl@1371
 46593
+      done
mgl@1371
 46594
+    elif test "$need_locks" = warn; then
mgl@1371
 46595
+      if test -f "$lockfile"; then
mgl@1371
 46596
+	$ECHO "\
mgl@1371
 46597
+*** ERROR, $lockfile exists and contains:
mgl@1371
 46598
+`cat $lockfile 2>/dev/null`
mgl@1371
 46599
+
mgl@1371
 46600
+This indicates that another process is trying to use the same
mgl@1371
 46601
+temporary object file, and libtool could not work around it because
mgl@1371
 46602
+your compiler does not support \`-c' and \`-o' together.  If you
mgl@1371
 46603
+repeat this compilation, it may succeed, by chance, but you had better
mgl@1371
 46604
+avoid parallel builds (make -j) in this platform, or get a better
mgl@1371
 46605
+compiler."
mgl@1371
 46606
+
mgl@1371
 46607
+	$opt_dry_run || $RM $removelist
mgl@1371
 46608
+	exit $EXIT_FAILURE
mgl@1371
 46609
+      fi
mgl@1371
 46610
+      $ECHO "$srcfile" > "$lockfile"
mgl@1371
 46611
+    fi
mgl@1371
 46612
+
mgl@1371
 46613
+    if test -n "$fix_srcfile_path"; then
mgl@1371
 46614
+      eval srcfile=\"$fix_srcfile_path\"
mgl@1371
 46615
+    fi
mgl@1371
 46616
+    func_quote_for_eval "$srcfile"
mgl@1371
 46617
+    qsrcfile=$func_quote_for_eval_result
mgl@1371
 46618
+
mgl@1371
 46619
+    $opt_dry_run || $RM "$libobj" "${libobj}T"
mgl@1371
 46620
+
mgl@1371
 46621
+    # Only build a PIC object if we are building libtool libraries.
mgl@1371
 46622
+    if test "$build_libtool_libs" = yes; then
mgl@1371
 46623
+      # Without this assignment, base_compile gets emptied.
mgl@1371
 46624
+      fbsd_hideous_sh_bug=$base_compile
mgl@1371
 46625
+
mgl@1371
 46626
+      if test "$pic_mode" != no; then
mgl@1371
 46627
+	command="$base_compile $qsrcfile $pic_flag"
mgl@1371
 46628
+      else
mgl@1371
 46629
+	# Don't build PIC code
mgl@1371
 46630
+	command="$base_compile $qsrcfile"
mgl@1371
 46631
+      fi
mgl@1371
 46632
+
mgl@1371
 46633
+      func_mkdir_p "$xdir$objdir"
mgl@1371
 46634
+
mgl@1371
 46635
+      if test -z "$output_obj"; then
mgl@1371
 46636
+	# Place PIC objects in $objdir
mgl@1371
 46637
+	command="$command -o $lobj"
mgl@1371
 46638
+      fi
mgl@1371
 46639
+
mgl@1371
 46640
+      $opt_dry_run || $RM "$lobj" "$output_obj"
mgl@1371
 46641
+
mgl@1371
 46642
+      func_show_eval "$command"	\
mgl@1371
 46643
+          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
mgl@1371
 46644
+
mgl@1371
 46645
+      if test "$need_locks" = warn &&
mgl@1371
 46646
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
mgl@1371
 46647
+	$ECHO "\
mgl@1371
 46648
+*** ERROR, $lockfile contains:
mgl@1371
 46649
+`cat $lockfile 2>/dev/null`
mgl@1371
 46650
+
mgl@1371
 46651
+but it should contain:
mgl@1371
 46652
+$srcfile
mgl@1371
 46653
+
mgl@1371
 46654
+This indicates that another process is trying to use the same
mgl@1371
 46655
+temporary object file, and libtool could not work around it because
mgl@1371
 46656
+your compiler does not support \`-c' and \`-o' together.  If you
mgl@1371
 46657
+repeat this compilation, it may succeed, by chance, but you had better
mgl@1371
 46658
+avoid parallel builds (make -j) in this platform, or get a better
mgl@1371
 46659
+compiler."
mgl@1371
 46660
+
mgl@1371
 46661
+	$opt_dry_run || $RM $removelist
mgl@1371
 46662
+	exit $EXIT_FAILURE
mgl@1371
 46663
+      fi
mgl@1371
 46664
+
mgl@1371
 46665
+      # Just move the object if needed, then go on to compile the next one
mgl@1371
 46666
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
mgl@1371
 46667
+	func_show_eval '$MV "$output_obj" "$lobj"' \
mgl@1371
 46668
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
mgl@1371
 46669
+      fi
mgl@1371
 46670
+
mgl@1371
 46671
+      # Allow error messages only from the first compilation.
mgl@1371
 46672
+      if test "$suppress_opt" = yes; then
mgl@1371
 46673
+	suppress_output=' >/dev/null 2>&1'
mgl@1371
 46674
+      fi
mgl@1371
 46675
+    fi
mgl@1371
 46676
+
mgl@1371
 46677
+    # Only build a position-dependent object if we build old libraries.
mgl@1371
 46678
+    if test "$build_old_libs" = yes; then
mgl@1371
 46679
+      if test "$pic_mode" != yes; then
mgl@1371
 46680
+	# Don't build PIC code
mgl@1371
 46681
+	command="$base_compile $qsrcfile$pie_flag"
mgl@1371
 46682
+      else
mgl@1371
 46683
+	command="$base_compile $qsrcfile $pic_flag"
mgl@1371
 46684
+      fi
mgl@1371
 46685
+      if test "$compiler_c_o" = yes; then
mgl@1371
 46686
+	command="$command -o $obj"
mgl@1371
 46687
+      fi
mgl@1371
 46688
+
mgl@1371
 46689
+      # Suppress compiler output if we already did a PIC compilation.
mgl@1371
 46690
+      command="$command$suppress_output"
mgl@1371
 46691
+      $opt_dry_run || $RM "$obj" "$output_obj"
mgl@1371
 46692
+      func_show_eval "$command" \
mgl@1371
 46693
+        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
mgl@1371
 46694
+
mgl@1371
 46695
+      if test "$need_locks" = warn &&
mgl@1371
 46696
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
mgl@1371
 46697
+	$ECHO "\
mgl@1371
 46698
+*** ERROR, $lockfile contains:
mgl@1371
 46699
+`cat $lockfile 2>/dev/null`
mgl@1371
 46700
+
mgl@1371
 46701
+but it should contain:
mgl@1371
 46702
+$srcfile
mgl@1371
 46703
+
mgl@1371
 46704
+This indicates that another process is trying to use the same
mgl@1371
 46705
+temporary object file, and libtool could not work around it because
mgl@1371
 46706
+your compiler does not support \`-c' and \`-o' together.  If you
mgl@1371
 46707
+repeat this compilation, it may succeed, by chance, but you had better
mgl@1371
 46708
+avoid parallel builds (make -j) in this platform, or get a better
mgl@1371
 46709
+compiler."
mgl@1371
 46710
+
mgl@1371
 46711
+	$opt_dry_run || $RM $removelist
mgl@1371
 46712
+	exit $EXIT_FAILURE
mgl@1371
 46713
+      fi
mgl@1371
 46714
+
mgl@1371
 46715
+      # Just move the object if needed
mgl@1371
 46716
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
mgl@1371
 46717
+	func_show_eval '$MV "$output_obj" "$obj"' \
mgl@1371
 46718
+	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
mgl@1371
 46719
+      fi
mgl@1371
 46720
+    fi
mgl@1371
 46721
+
mgl@1371
 46722
+    $opt_dry_run || {
mgl@1371
 46723
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
mgl@1371
 46724
+
mgl@1371
 46725
+      # Unlock the critical section if it was locked
mgl@1371
 46726
+      if test "$need_locks" != no; then
mgl@1371
 46727
+        $RM "$lockfile"
mgl@1371
 46728
+      fi
mgl@1371
 46729
+    }
mgl@1371
 46730
+
mgl@1371
 46731
+    exit $EXIT_SUCCESS
mgl@1371
 46732
+}
mgl@1371
 46733
+
mgl@1371
 46734
+test "$mode" = compile && func_mode_compile ${1+"$@"}
mgl@1371
 46735
+
mgl@1371
 46736
+
mgl@1371
 46737
+# func_mode_execute arg...
mgl@1371
 46738
+func_mode_execute ()
mgl@1371
 46739
+{
mgl@1371
 46740
+    $opt_debug
mgl@1371
 46741
+    # The first argument is the command name.
mgl@1371
 46742
+    cmd="$nonopt"
mgl@1371
 46743
+    test -z "$cmd" && \
mgl@1371
 46744
+      func_fatal_help "you must specify a COMMAND"
mgl@1371
 46745
+
mgl@1371
 46746
+    # Handle -dlopen flags immediately.
mgl@1371
 46747
+    for file in $execute_dlfiles; do
mgl@1371
 46748
+      test -f "$file" \
mgl@1371
 46749
+	|| func_fatal_help "\`$file' is not a file"
mgl@1371
 46750
+
mgl@1371
 46751
+      dir=
mgl@1371
 46752
+      case $file in
mgl@1371
 46753
+      *.la)
mgl@1371
 46754
+	# Check to see that this really is a libtool archive.
mgl@1371
 46755
+	func_lalib_unsafe_p "$file" \
mgl@1371
 46756
+	  || func_fatal_help "\`$lib' is not a valid libtool archive"
mgl@1371
 46757
+
mgl@1371
 46758
+	# Read the libtool library.
mgl@1371
 46759
+	dlname=
mgl@1371
 46760
+	library_names=
mgl@1371
 46761
+	func_source "$file"
mgl@1371
 46762
+
mgl@1371
 46763
+	# Skip this library if it cannot be dlopened.
mgl@1371
 46764
+	if test -z "$dlname"; then
mgl@1371
 46765
+	  # Warn if it was a shared library.
mgl@1371
 46766
+	  test -n "$library_names" && \
mgl@1371
 46767
+	    func_warning "\`$file' was not linked with \`-export-dynamic'"
mgl@1371
 46768
+	  continue
mgl@1371
 46769
+	fi
mgl@1371
 46770
+
mgl@1371
 46771
+	func_dirname "$file" "" "."
mgl@1371
 46772
+	dir="$func_dirname_result"
mgl@1371
 46773
+
mgl@1371
 46774
+	if test -f "$dir/$objdir/$dlname"; then
mgl@1371
 46775
+	  dir="$dir/$objdir"
mgl@1371
 46776
+	else
mgl@1371
 46777
+	  if test ! -f "$dir/$dlname"; then
mgl@1371
 46778
+	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
mgl@1371
 46779
+	  fi
mgl@1371
 46780
+	fi
mgl@1371
 46781
+	;;
mgl@1371
 46782
+
mgl@1371
 46783
+      *.lo)
mgl@1371
 46784
+	# Just add the directory containing the .lo file.
mgl@1371
 46785
+	func_dirname "$file" "" "."
mgl@1371
 46786
+	dir="$func_dirname_result"
mgl@1371
 46787
+	;;
mgl@1371
 46788
+
mgl@1371
 46789
+      *)
mgl@1371
 46790
+	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
mgl@1371
 46791
+	continue
mgl@1371
 46792
+	;;
mgl@1371
 46793
+      esac
mgl@1371
 46794
+
mgl@1371
 46795
+      # Get the absolute pathname.
mgl@1371
 46796
+      absdir=`cd "$dir" && pwd`
mgl@1371
 46797
+      test -n "$absdir" && dir="$absdir"
mgl@1371
 46798
+
mgl@1371
 46799
+      # Now add the directory to shlibpath_var.
mgl@1371
 46800
+      if eval "test -z \"\$$shlibpath_var\""; then
mgl@1371
 46801
+	eval "$shlibpath_var=\"\$dir\""
mgl@1371
 46802
+      else
mgl@1371
 46803
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
mgl@1371
 46804
+      fi
mgl@1371
 46805
+    done
mgl@1371
 46806
+
mgl@1371
 46807
+    # This variable tells wrapper scripts just to set shlibpath_var
mgl@1371
 46808
+    # rather than running their programs.
mgl@1371
 46809
+    libtool_execute_magic="$magic"
mgl@1371
 46810
+
mgl@1371
 46811
+    # Check if any of the arguments is a wrapper script.
mgl@1371
 46812
+    args=
mgl@1371
 46813
+    for file
mgl@1371
 46814
+    do
mgl@1371
 46815
+      case $file in
mgl@1371
 46816
+      -*) ;;
mgl@1371
 46817
+      *)
mgl@1371
 46818
+	# Do a test to see if this is really a libtool program.
mgl@1371
 46819
+	if func_ltwrapper_p "$file"; then
mgl@1371
 46820
+	  func_source "$file"
mgl@1371
 46821
+
mgl@1371
 46822
+	  # Transform arg to wrapped name.
mgl@1371
 46823
+	  file="$progdir/$program"
mgl@1371
 46824
+	fi
mgl@1371
 46825
+	;;
mgl@1371
 46826
+      esac
mgl@1371
 46827
+      # Quote arguments (to preserve shell metacharacters).
mgl@1371
 46828
+      func_quote_for_eval "$file"
mgl@1371
 46829
+      args="$args $func_quote_for_eval_result"
mgl@1371
 46830
+    done
mgl@1371
 46831
+
mgl@1371
 46832
+    if test "X$opt_dry_run" = Xfalse; then
mgl@1371
 46833
+      if test -n "$shlibpath_var"; then
mgl@1371
 46834
+	# Export the shlibpath_var.
mgl@1371
 46835
+	eval "export $shlibpath_var"
mgl@1371
 46836
+      fi
mgl@1371
 46837
+
mgl@1371
 46838
+      # Restore saved environment variables
mgl@1371
 46839
+      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
mgl@1371
 46840
+      do
mgl@1371
 46841
+	eval "if test \"\${save_$lt_var+set}\" = set; then
mgl@1371
 46842
+                $lt_var=\$save_$lt_var; export $lt_var
mgl@1371
 46843
+	      else
mgl@1371
 46844
+		$lt_unset $lt_var
mgl@1371
 46845
+	      fi"
mgl@1371
 46846
+      done
mgl@1371
 46847
+
mgl@1371
 46848
+      # Now prepare to actually exec the command.
mgl@1371
 46849
+      exec_cmd="\$cmd$args"
mgl@1371
 46850
+    else
mgl@1371
 46851
+      # Display what would be done.
mgl@1371
 46852
+      if test -n "$shlibpath_var"; then
mgl@1371
 46853
+	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
mgl@1371
 46854
+	$ECHO "export $shlibpath_var"
mgl@1371
 46855
+      fi
mgl@1371
 46856
+      $ECHO "$cmd$args"
mgl@1371
 46857
+      exit $EXIT_SUCCESS
mgl@1371
 46858
+    fi
mgl@1371
 46859
+}
mgl@1371
 46860
+
mgl@1371
 46861
+test "$mode" = execute && func_mode_execute ${1+"$@"}
mgl@1371
 46862
+
mgl@1371
 46863
+
mgl@1371
 46864
+# func_mode_finish arg...
mgl@1371
 46865
+func_mode_finish ()
mgl@1371
 46866
+{
mgl@1371
 46867
+    $opt_debug
mgl@1371
 46868
+    libdirs="$nonopt"
mgl@1371
 46869
+    admincmds=
mgl@1371
 46870
+
mgl@1371
 46871
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
mgl@1371
 46872
+      for dir
mgl@1371
 46873
+      do
mgl@1371
 46874
+	libdirs="$libdirs $dir"
mgl@1371
 46875
+      done
mgl@1371
 46876
+
mgl@1371
 46877
+      for libdir in $libdirs; do
mgl@1371
 46878
+	if test -n "$finish_cmds"; then
mgl@1371
 46879
+	  # Do each command in the finish commands.
mgl@1371
 46880
+	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
mgl@1371
 46881
+'"$cmd"'"'
mgl@1371
 46882
+	fi
mgl@1371
 46883
+	if test -n "$finish_eval"; then
mgl@1371
 46884
+	  # Do the single finish_eval.
mgl@1371
 46885
+	  eval cmds=\"$finish_eval\"
mgl@1371
 46886
+	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
mgl@1371
 46887
+       $cmds"
mgl@1371
 46888
+	fi
mgl@1371
 46889
+      done
mgl@1371
 46890
+    fi
mgl@1371
 46891
+
mgl@1371
 46892
+    # Exit here if they wanted silent mode.
mgl@1371
 46893
+    $opt_silent && exit $EXIT_SUCCESS
mgl@1371
 46894
+
mgl@1371
 46895
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
mgl@1371
 46896
+    $ECHO "Libraries have been installed in:"
mgl@1371
 46897
+    for libdir in $libdirs; do
mgl@1371
 46898
+      $ECHO "   $libdir"
mgl@1371
 46899
+    done
mgl@1371
 46900
+    $ECHO
mgl@1371
 46901
+    $ECHO "If you ever happen to want to link against installed libraries"
mgl@1371
 46902
+    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
mgl@1371
 46903
+    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
mgl@1371
 46904
+    $ECHO "flag during linking and do at least one of the following:"
mgl@1371
 46905
+    if test -n "$shlibpath_var"; then
mgl@1371
 46906
+      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
mgl@1371
 46907
+      $ECHO "     during execution"
mgl@1371
 46908
+    fi
mgl@1371
 46909
+    if test -n "$runpath_var"; then
mgl@1371
 46910
+      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
mgl@1371
 46911
+      $ECHO "     during linking"
mgl@1371
 46912
+    fi
mgl@1371
 46913
+    if test -n "$hardcode_libdir_flag_spec"; then
mgl@1371
 46914
+      libdir=LIBDIR
mgl@1371
 46915
+      eval flag=\"$hardcode_libdir_flag_spec\"
mgl@1371
 46916
+
mgl@1371
 46917
+      $ECHO "   - use the \`$flag' linker flag"
mgl@1371
 46918
+    fi
mgl@1371
 46919
+    if test -n "$admincmds"; then
mgl@1371
 46920
+      $ECHO "   - have your system administrator run these commands:$admincmds"
mgl@1371
 46921
+    fi
mgl@1371
 46922
+    if test -f /etc/ld.so.conf; then
mgl@1371
 46923
+      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
mgl@1371
 46924
+    fi
mgl@1371
 46925
+    $ECHO
mgl@1371
 46926
+
mgl@1371
 46927
+    $ECHO "See any operating system documentation about shared libraries for"
mgl@1371
 46928
+    case $host in
mgl@1371
 46929
+      solaris2.[6789]|solaris2.1[0-9])
mgl@1371
 46930
+        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
mgl@1371
 46931
+	$ECHO "pages."
mgl@1371
 46932
+	;;
mgl@1371
 46933
+      *)
mgl@1371
 46934
+        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
mgl@1371
 46935
+        ;;
mgl@1371
 46936
+    esac
mgl@1371
 46937
+    $ECHO "X----------------------------------------------------------------------" | $Xsed
mgl@1371
 46938
+    exit $EXIT_SUCCESS
mgl@1371
 46939
+}
mgl@1371
 46940
+
mgl@1371
 46941
+test "$mode" = finish && func_mode_finish ${1+"$@"}
mgl@1371
 46942
+
mgl@1371
 46943
+
mgl@1371
 46944
+# func_mode_install arg...
mgl@1371
 46945
+func_mode_install ()
mgl@1371
 46946
+{
mgl@1371
 46947
+    $opt_debug
mgl@1371
 46948
+    # There may be an optional sh(1) argument at the beginning of
mgl@1371
 46949
+    # install_prog (especially on Windows NT).
mgl@1371
 46950
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
mgl@1371
 46951
+       # Allow the use of GNU shtool's install command.
mgl@1371
 46952
+       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
mgl@1371
 46953
+      # Aesthetically quote it.
mgl@1371
 46954
+      func_quote_for_eval "$nonopt"
mgl@1371
 46955
+      install_prog="$func_quote_for_eval_result "
mgl@1371
 46956
+      arg=$1
mgl@1371
 46957
+      shift
mgl@1371
 46958
+    else
mgl@1371
 46959
+      install_prog=
mgl@1371
 46960
+      arg=$nonopt
mgl@1371
 46961
+    fi
mgl@1371
 46962
+
mgl@1371
 46963
+    # The real first argument should be the name of the installation program.
mgl@1371
 46964
+    # Aesthetically quote it.
mgl@1371
 46965
+    func_quote_for_eval "$arg"
mgl@1371
 46966
+    install_prog="$install_prog$func_quote_for_eval_result"
mgl@1371
 46967
+
mgl@1371
 46968
+    # We need to accept at least all the BSD install flags.
mgl@1371
 46969
+    dest=
mgl@1371
 46970
+    files=
mgl@1371
 46971
+    opts=
mgl@1371
 46972
+    prev=
mgl@1371
 46973
+    install_type=
mgl@1371
 46974
+    isdir=no
mgl@1371
 46975
+    stripme=
mgl@1371
 46976
+    for arg
mgl@1371
 46977
+    do
mgl@1371
 46978
+      if test -n "$dest"; then
mgl@1371
 46979
+	files="$files $dest"
mgl@1371
 46980
+	dest=$arg
mgl@1371
 46981
+	continue
mgl@1371
 46982
+      fi
mgl@1371
 46983
+
mgl@1371
 46984
+      case $arg in
mgl@1371
 46985
+      -d) isdir=yes ;;
mgl@1371
 46986
+      -f)
mgl@1371
 46987
+      	case " $install_prog " in
mgl@1371
 46988
+	*[\\\ /]cp\ *) ;;
mgl@1371
 46989
+	*) prev=$arg ;;
mgl@1371
 46990
+	esac
mgl@1371
 46991
+	;;
mgl@1371
 46992
+      -g | -m | -o)
mgl@1371
 46993
+	prev=$arg
mgl@1371
 46994
+	;;
mgl@1371
 46995
+      -s)
mgl@1371
 46996
+	stripme=" -s"
mgl@1371
 46997
+	continue
mgl@1371
 46998
+	;;
mgl@1371
 46999
+      -*)
mgl@1371
 47000
+	;;
mgl@1371
 47001
+      *)
mgl@1371
 47002
+	# If the previous option needed an argument, then skip it.
mgl@1371
 47003
+	if test -n "$prev"; then
mgl@1371
 47004
+	  prev=
mgl@1371
 47005
+	else
mgl@1371
 47006
+	  dest=$arg
mgl@1371
 47007
+	  continue
mgl@1371
 47008
+	fi
mgl@1371
 47009
+	;;
mgl@1371
 47010
+      esac
mgl@1371
 47011
+
mgl@1371
 47012
+      # Aesthetically quote the argument.
mgl@1371
 47013
+      func_quote_for_eval "$arg"
mgl@1371
 47014
+      install_prog="$install_prog $func_quote_for_eval_result"
mgl@1371
 47015
+    done
mgl@1371
 47016
+
mgl@1371
 47017
+    test -z "$install_prog" && \
mgl@1371
 47018
+      func_fatal_help "you must specify an install program"
mgl@1371
 47019
+
mgl@1371
 47020
+    test -n "$prev" && \
mgl@1371
 47021
+      func_fatal_help "the \`$prev' option requires an argument"
mgl@1371
 47022
+
mgl@1371
 47023
+    if test -z "$files"; then
mgl@1371
 47024
+      if test -z "$dest"; then
mgl@1371
 47025
+	func_fatal_help "no file or destination specified"
mgl@1371
 47026
+      else
mgl@1371
 47027
+	func_fatal_help "you must specify a destination"
mgl@1371
 47028
+      fi
mgl@1371
 47029
+    fi
mgl@1371
 47030
+
mgl@1371
 47031
+    # Strip any trailing slash from the destination.
mgl@1371
 47032
+    func_stripname '' '/' "$dest"
mgl@1371
 47033
+    dest=$func_stripname_result
mgl@1371
 47034
+
mgl@1371
 47035
+    # Check to see that the destination is a directory.
mgl@1371
 47036
+    test -d "$dest" && isdir=yes
mgl@1371
 47037
+    if test "$isdir" = yes; then
mgl@1371
 47038
+      destdir="$dest"
mgl@1371
 47039
+      destname=
mgl@1371
 47040
+    else
mgl@1371
 47041
+      func_dirname "$dest" "" "."
mgl@1371
 47042
+      destdir="$func_dirname_result"
mgl@1371
 47043
+      func_basename "$dest"
mgl@1371
 47044
+      destname="$func_basename_result"
mgl@1371
 47045
+
mgl@1371
 47046
+      # Not a directory, so check to see that there is only one file specified.
mgl@1371
 47047
+      set dummy $files; shift
mgl@1371
 47048
+      test "$#" -gt 1 && \
mgl@1371
 47049
+	func_fatal_help "\`$dest' is not a directory"
mgl@1371
 47050
+    fi
mgl@1371
 47051
+    case $destdir in
mgl@1371
 47052
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
mgl@1371
 47053
+    *)
mgl@1371
 47054
+      for file in $files; do
mgl@1371
 47055
+	case $file in
mgl@1371
 47056
+	*.lo) ;;
mgl@1371
 47057
+	*)
mgl@1371
 47058
+	  func_fatal_help "\`$destdir' must be an absolute directory name"
mgl@1371
 47059
+	  ;;
mgl@1371
 47060
+	esac
mgl@1371
 47061
+      done
mgl@1371
 47062
+      ;;
mgl@1371
 47063
+    esac
mgl@1371
 47064
+
mgl@1371
 47065
+    # This variable tells wrapper scripts just to set variables rather
mgl@1371
 47066
+    # than running their programs.
mgl@1371
 47067
+    libtool_install_magic="$magic"
mgl@1371
 47068
+
mgl@1371
 47069
+    staticlibs=
mgl@1371
 47070
+    future_libdirs=
mgl@1371
 47071
+    current_libdirs=
mgl@1371
 47072
+    for file in $files; do
mgl@1371
 47073
+
mgl@1371
 47074
+      # Do each installation.
mgl@1371
 47075
+      case $file in
mgl@1371
 47076
+      *.$libext)
mgl@1371
 47077
+	# Do the static libraries later.
mgl@1371
 47078
+	staticlibs="$staticlibs $file"
mgl@1371
 47079
+	;;
mgl@1371
 47080
+
mgl@1371
 47081
+      *.la)
mgl@1371
 47082
+	# Check to see that this really is a libtool archive.
mgl@1371
 47083
+	func_lalib_unsafe_p "$file" \
mgl@1371
 47084
+	  || func_fatal_help "\`$file' is not a valid libtool archive"
mgl@1371
 47085
+
mgl@1371
 47086
+	library_names=
mgl@1371
 47087
+	old_library=
mgl@1371
 47088
+	relink_command=
mgl@1371
 47089
+	func_source "$file"
mgl@1371
 47090
+
mgl@1371
 47091
+	# Add the libdir to current_libdirs if it is the destination.
mgl@1371
 47092
+	if test "X$destdir" = "X$libdir"; then
mgl@1371
 47093
+	  case "$current_libdirs " in
mgl@1371
 47094
+	  *" $libdir "*) ;;
mgl@1371
 47095
+	  *) current_libdirs="$current_libdirs $libdir" ;;
mgl@1371
 47096
+	  esac
mgl@1371
 47097
+	else
mgl@1371
 47098
+	  # Note the libdir as a future libdir.
mgl@1371
 47099
+	  case "$future_libdirs " in
mgl@1371
 47100
+	  *" $libdir "*) ;;
mgl@1371
 47101
+	  *) future_libdirs="$future_libdirs $libdir" ;;
mgl@1371
 47102
+	  esac
mgl@1371
 47103
+	fi
mgl@1371
 47104
+
mgl@1371
 47105
+	func_dirname "$file" "/" ""
mgl@1371
 47106
+	dir="$func_dirname_result"
mgl@1371
 47107
+	dir="$dir$objdir"
mgl@1371
 47108
+
mgl@1371
 47109
+	if test -n "$relink_command"; then
mgl@1371
 47110
+	  # Determine the prefix the user has applied to our future dir.
mgl@1371
 47111
+	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
mgl@1371
 47112
+
mgl@1371
 47113
+	  # Don't allow the user to place us outside of our expected
mgl@1371
 47114
+	  # location b/c this prevents finding dependent libraries that
mgl@1371
 47115
+	  # are installed to the same prefix.
mgl@1371
 47116
+	  # At present, this check doesn't affect windows .dll's that
mgl@1371
 47117
+	  # are installed into $libdir/../bin (currently, that works fine)
mgl@1371
 47118
+	  # but it's something to keep an eye on.
mgl@1371
 47119
+	  test "$inst_prefix_dir" = "$destdir" && \
mgl@1371
 47120
+	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
mgl@1371
 47121
+
mgl@1371
 47122
+	  if test -n "$inst_prefix_dir"; then
mgl@1371
 47123
+	    # Stick the inst_prefix_dir data into the link command.
mgl@1371
 47124
+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
mgl@1371
 47125
+	  else
mgl@1371
 47126
+	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
mgl@1371
 47127
+	  fi
mgl@1371
 47128
+
mgl@1371
 47129
+	  func_warning "relinking \`$file'"
mgl@1371
 47130
+	  func_show_eval "$relink_command" \
mgl@1371
 47131
+	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
mgl@1371
 47132
+	fi
mgl@1371
 47133
+
mgl@1371
 47134
+	# See the names of the shared library.
mgl@1371
 47135
+	set dummy $library_names; shift
mgl@1371
 47136
+	if test -n "$1"; then
mgl@1371
 47137
+	  realname="$1"
mgl@1371
 47138
+	  shift
mgl@1371
 47139
+
mgl@1371
 47140
+	  srcname="$realname"
mgl@1371
 47141
+	  test -n "$relink_command" && srcname="$realname"T
mgl@1371
 47142
+
mgl@1371
 47143
+	  # Install the shared library and build the symlinks.
mgl@1371
 47144
+	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
mgl@1371
 47145
+	      'exit $?'
mgl@1371
 47146
+	  tstripme="$stripme"
mgl@1371
 47147
+	  case $host_os in
mgl@1371
 47148
+	  cygwin* | mingw* | pw32*)
mgl@1371
 47149
+	    case $realname in
mgl@1371
 47150
+	    *.dll.a)
mgl@1371
 47151
+	      tstripme=""
mgl@1371
 47152
+	      ;;
mgl@1371
 47153
+	    esac
mgl@1371
 47154
+	    ;;
mgl@1371
 47155
+	  esac
mgl@1371
 47156
+	  if test -n "$tstripme" && test -n "$striplib"; then
mgl@1371
 47157
+	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
mgl@1371
 47158
+	  fi
mgl@1371
 47159
+
mgl@1371
 47160
+	  if test "$#" -gt 0; then
mgl@1371
 47161
+	    # Delete the old symlinks, and create new ones.
mgl@1371
 47162
+	    # Try `ln -sf' first, because the `ln' binary might depend on
mgl@1371
 47163
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
mgl@1371
 47164
+	    # so we also need to try rm && ln -s.
mgl@1371
 47165
+	    for linkname
mgl@1371
 47166
+	    do
mgl@1371
 47167
+	      test "$linkname" != "$realname" \
mgl@1371
 47168
+		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
mgl@1371
 47169
+	    done
mgl@1371
 47170
+	  fi
mgl@1371
 47171
+
mgl@1371
 47172
+	  # Do each command in the postinstall commands.
mgl@1371
 47173
+	  lib="$destdir/$realname"
mgl@1371
 47174
+	  func_execute_cmds "$postinstall_cmds" 'exit $?'
mgl@1371
 47175
+	fi
mgl@1371
 47176
+
mgl@1371
 47177
+	# Install the pseudo-library for information purposes.
mgl@1371
 47178
+	func_basename "$file"
mgl@1371
 47179
+	name="$func_basename_result"
mgl@1371
 47180
+	instname="$dir/$name"i
mgl@1371
 47181
+	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
mgl@1371
 47182
+
mgl@1371
 47183
+	# Maybe install the static library, too.
mgl@1371
 47184
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
mgl@1371
 47185
+	;;
mgl@1371
 47186
+
mgl@1371
 47187
+      *.lo)
mgl@1371
 47188
+	# Install (i.e. copy) a libtool object.
mgl@1371
 47189
+
mgl@1371
 47190
+	# Figure out destination file name, if it wasn't already specified.
mgl@1371
 47191
+	if test -n "$destname"; then
mgl@1371
 47192
+	  destfile="$destdir/$destname"
mgl@1371
 47193
+	else
mgl@1371
 47194
+	  func_basename "$file"
mgl@1371
 47195
+	  destfile="$func_basename_result"
mgl@1371
 47196
+	  destfile="$destdir/$destfile"
mgl@1371
 47197
+	fi
mgl@1371
 47198
+
mgl@1371
 47199
+	# Deduce the name of the destination old-style object file.
mgl@1371
 47200
+	case $destfile in
mgl@1371
 47201
+	*.lo)
mgl@1371
 47202
+	  func_lo2o "$destfile"
mgl@1371
 47203
+	  staticdest=$func_lo2o_result
mgl@1371
 47204
+	  ;;
mgl@1371
 47205
+	*.$objext)
mgl@1371
 47206
+	  staticdest="$destfile"
mgl@1371
 47207
+	  destfile=
mgl@1371
 47208
+	  ;;
mgl@1371
 47209
+	*)
mgl@1371
 47210
+	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
mgl@1371
 47211
+	  ;;
mgl@1371
 47212
+	esac
mgl@1371
 47213
+
mgl@1371
 47214
+	# Install the libtool object if requested.
mgl@1371
 47215
+	test -n "$destfile" && \
mgl@1371
 47216
+	  func_show_eval "$install_prog $file $destfile" 'exit $?'
mgl@1371
 47217
+
mgl@1371
 47218
+	# Install the old object if enabled.
mgl@1371
 47219
+	if test "$build_old_libs" = yes; then
mgl@1371
 47220
+	  # Deduce the name of the old-style object file.
mgl@1371
 47221
+	  func_lo2o "$file"
mgl@1371
 47222
+	  staticobj=$func_lo2o_result
mgl@1371
 47223
+	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
mgl@1371
 47224
+	fi
mgl@1371
 47225
+	exit $EXIT_SUCCESS
mgl@1371
 47226
+	;;
mgl@1371
 47227
+
mgl@1371
 47228
+      *)
mgl@1371
 47229
+	# Figure out destination file name, if it wasn't already specified.
mgl@1371
 47230
+	if test -n "$destname"; then
mgl@1371
 47231
+	  destfile="$destdir/$destname"
mgl@1371
 47232
+	else
mgl@1371
 47233
+	  func_basename "$file"
mgl@1371
 47234
+	  destfile="$func_basename_result"
mgl@1371
 47235
+	  destfile="$destdir/$destfile"
mgl@1371
 47236
+	fi
mgl@1371
 47237
+
mgl@1371
 47238
+	# If the file is missing, and there is a .exe on the end, strip it
mgl@1371
 47239
+	# because it is most likely a libtool script we actually want to
mgl@1371
 47240
+	# install
mgl@1371
 47241
+	stripped_ext=""
mgl@1371
 47242
+	case $file in
mgl@1371
 47243
+	  *.exe)
mgl@1371
 47244
+	    if test ! -f "$file"; then
mgl@1371
 47245
+	      func_stripname '' '.exe' "$file"
mgl@1371
 47246
+	      file=$func_stripname_result
mgl@1371
 47247
+	      stripped_ext=".exe"
mgl@1371
 47248
+	    fi
mgl@1371
 47249
+	    ;;
mgl@1371
 47250
+	esac
mgl@1371
 47251
+
mgl@1371
 47252
+	# Do a test to see if this is really a libtool program.
mgl@1371
 47253
+	case $host in
mgl@1371
 47254
+	*cygwin*|*mingw*)
mgl@1371
 47255
+	    func_stripname '' '.exe' "$file"
mgl@1371
 47256
+	    wrapper=$func_stripname_result
mgl@1371
 47257
+	    ;;
mgl@1371
 47258
+	*)
mgl@1371
 47259
+	    wrapper=$file
mgl@1371
 47260
+	    ;;
mgl@1371
 47261
+	esac
mgl@1371
 47262
+	if func_ltwrapper_p "$wrapper"; then
mgl@1371
 47263
+	  notinst_deplibs=
mgl@1371
 47264
+	  relink_command=
mgl@1371
 47265
+
mgl@1371
 47266
+	  func_source "$wrapper"
mgl@1371
 47267
+
mgl@1371
 47268
+	  # Check the variables that should have been set.
mgl@1371
 47269
+	  test -z "$generated_by_libtool_version" && \
mgl@1371
 47270
+	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
mgl@1371
 47271
+
mgl@1371
 47272
+	  finalize=yes
mgl@1371
 47273
+	  for lib in $notinst_deplibs; do
mgl@1371
 47274
+	    # Check to see that each library is installed.
mgl@1371
 47275
+	    libdir=
mgl@1371
 47276
+	    if test -f "$lib"; then
mgl@1371
 47277
+	      func_source "$lib"
mgl@1371
 47278
+	    fi
mgl@1371
 47279
+	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
mgl@1371
 47280
+	    if test -n "$libdir" && test ! -f "$libfile"; then
mgl@1371
 47281
+	      func_warning "\`$lib' has not been installed in \`$libdir'"
mgl@1371
 47282
+	      finalize=no
mgl@1371
 47283
+	    fi
mgl@1371
 47284
+	  done
mgl@1371
 47285
+
mgl@1371
 47286
+	  relink_command=
mgl@1371
 47287
+	  func_source "$wrapper"
mgl@1371
 47288
+
mgl@1371
 47289
+	  outputname=
mgl@1371
 47290
+	  if test "$fast_install" = no && test -n "$relink_command"; then
mgl@1371
 47291
+	    $opt_dry_run || {
mgl@1371
 47292
+	      if test "$finalize" = yes; then
mgl@1371
 47293
+	        tmpdir=`func_mktempdir`
mgl@1371
 47294
+		func_basename "$file$stripped_ext"
mgl@1371
 47295
+		file="$func_basename_result"
mgl@1371
 47296
+	        outputname="$tmpdir/$file"
mgl@1371
 47297
+	        # Replace the output file specification.
mgl@1371
 47298
+	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
mgl@1371
 47299
+
mgl@1371
 47300
+	        $opt_silent || {
mgl@1371
 47301
+	          func_quote_for_expand "$relink_command"
mgl@1371
 47302
+		  eval "func_echo $func_quote_for_expand_result"
mgl@1371
 47303
+	        }
mgl@1371
 47304
+	        if eval "$relink_command"; then :
mgl@1371
 47305
+	          else
mgl@1371
 47306
+		  func_error "error: relink \`$file' with the above command before installing it"
mgl@1371
 47307
+		  $opt_dry_run || ${RM}r "$tmpdir"
mgl@1371
 47308
+		  continue
mgl@1371
 47309
+	        fi
mgl@1371
 47310
+	        file="$outputname"
mgl@1371
 47311
+	      else
mgl@1371
 47312
+	        func_warning "cannot relink \`$file'"
mgl@1371
 47313
+	      fi
mgl@1371
 47314
+	    }
mgl@1371
 47315
+	  else
mgl@1371
 47316
+	    # Install the binary that we compiled earlier.
mgl@1371
 47317
+	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
mgl@1371
 47318
+	  fi
mgl@1371
 47319
+	fi
mgl@1371
 47320
+
mgl@1371
 47321
+	# remove .exe since cygwin /usr/bin/install will append another
mgl@1371
 47322
+	# one anyway
mgl@1371
 47323
+	case $install_prog,$host in
mgl@1371
 47324
+	*/usr/bin/install*,*cygwin*)
mgl@1371
 47325
+	  case $file:$destfile in
mgl@1371
 47326
+	  *.exe:*.exe)
mgl@1371
 47327
+	    # this is ok
mgl@1371
 47328
+	    ;;
mgl@1371
 47329
+	  *.exe:*)
mgl@1371
 47330
+	    destfile=$destfile.exe
mgl@1371
 47331
+	    ;;
mgl@1371
 47332
+	  *:*.exe)
mgl@1371
 47333
+	    func_stripname '' '.exe' "$destfile"
mgl@1371
 47334
+	    destfile=$func_stripname_result
mgl@1371
 47335
+	    ;;
mgl@1371
 47336
+	  esac
mgl@1371
 47337
+	  ;;
mgl@1371
 47338
+	esac
mgl@1371
 47339
+	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
mgl@1371
 47340
+	$opt_dry_run || if test -n "$outputname"; then
mgl@1371
 47341
+	  ${RM}r "$tmpdir"
mgl@1371
 47342
+	fi
mgl@1371
 47343
+	;;
mgl@1371
 47344
+      esac
mgl@1371
 47345
+    done
mgl@1371
 47346
+
mgl@1371
 47347
+    for file in $staticlibs; do
mgl@1371
 47348
+      func_basename "$file"
mgl@1371
 47349
+      name="$func_basename_result"
mgl@1371
 47350
+
mgl@1371
 47351
+      # Set up the ranlib parameters.
mgl@1371
 47352
+      oldlib="$destdir/$name"
mgl@1371
 47353
+
mgl@1371
 47354
+      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
mgl@1371
 47355
+
mgl@1371
 47356
+      if test -n "$stripme" && test -n "$old_striplib"; then
mgl@1371
 47357
+	func_show_eval "$old_striplib $oldlib" 'exit $?'
mgl@1371
 47358
+      fi
mgl@1371
 47359
+
mgl@1371
 47360
+      # Do each command in the postinstall commands.
mgl@1371
 47361
+      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
mgl@1371
 47362
+    done
mgl@1371
 47363
+
mgl@1371
 47364
+    test -n "$future_libdirs" && \
mgl@1371
 47365
+      func_warning "remember to run \`$progname --finish$future_libdirs'"
mgl@1371
 47366
+
mgl@1371
 47367
+    if test -n "$current_libdirs"; then
mgl@1371
 47368
+      # Maybe just do a dry run.
mgl@1371
 47369
+      $opt_dry_run && current_libdirs=" -n$current_libdirs"
mgl@1371
 47370
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
mgl@1371
 47371
+    else
mgl@1371
 47372
+      exit $EXIT_SUCCESS
mgl@1371
 47373
+    fi
mgl@1371
 47374
+}
mgl@1371
 47375
+
mgl@1371
 47376
+test "$mode" = install && func_mode_install ${1+"$@"}
mgl@1371
 47377
+
mgl@1371
 47378
+
mgl@1371
 47379
+# func_mode_link arg...
mgl@1371
 47380
+func_mode_link ()
mgl@1371
 47381
+{
mgl@1371
 47382
+    $opt_debug
mgl@1371
 47383
+    case $host in
mgl@1371
 47384
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
mgl@1371
 47385
+      # It is impossible to link a dll without this setting, and
mgl@1371
 47386
+      # we shouldn't force the makefile maintainer to figure out
mgl@1371
 47387
+      # which system we are compiling for in order to pass an extra
mgl@1371
 47388
+      # flag for every libtool invocation.
mgl@1371
 47389
+      # allow_undefined=no
mgl@1371
 47390
+
mgl@1371
 47391
+      # FIXME: Unfortunately, there are problems with the above when trying
mgl@1371
 47392
+      # to make a dll which has undefined symbols, in which case not
mgl@1371
 47393
+      # even a static library is built.  For now, we need to specify
mgl@1371
 47394
+      # -no-undefined on the libtool link line when we can be certain
mgl@1371
 47395
+      # that all symbols are satisfied, otherwise we get a static library.
mgl@1371
 47396
+      allow_undefined=yes
mgl@1371
 47397
+      ;;
mgl@1371
 47398
+    *)
mgl@1371
 47399
+      allow_undefined=yes
mgl@1371
 47400
+      ;;
mgl@1371
 47401
+    esac
mgl@1371
 47402
+    libtool_args=$nonopt
mgl@1371
 47403
+    base_compile="$nonopt $@"
mgl@1371
 47404
+    compile_command=$nonopt
mgl@1371
 47405
+    finalize_command=$nonopt
mgl@1371
 47406
+
mgl@1371
 47407
+    compile_rpath=
mgl@1371
 47408
+    finalize_rpath=
mgl@1371
 47409
+    compile_shlibpath=
mgl@1371
 47410
+    finalize_shlibpath=
mgl@1371
 47411
+    convenience=
mgl@1371
 47412
+    old_convenience=
mgl@1371
 47413
+    deplibs=
mgl@1371
 47414
+    old_deplibs=
mgl@1371
 47415
+    compiler_flags=
mgl@1371
 47416
+    linker_flags=
mgl@1371
 47417
+    dllsearchpath=
mgl@1371
 47418
+    lib_search_path=`pwd`
mgl@1371
 47419
+    inst_prefix_dir=
mgl@1371
 47420
+    new_inherited_linker_flags=
mgl@1371
 47421
+
mgl@1371
 47422
+    avoid_version=no
mgl@1371
 47423
+    dlfiles=
mgl@1371
 47424
+    dlprefiles=
mgl@1371
 47425
+    dlself=no
mgl@1371
 47426
+    export_dynamic=no
mgl@1371
 47427
+    export_symbols=
mgl@1371
 47428
+    export_symbols_regex=
mgl@1371
 47429
+    generated=
mgl@1371
 47430
+    libobjs=
mgl@1371
 47431
+    ltlibs=
mgl@1371
 47432
+    module=no
mgl@1371
 47433
+    no_install=no
mgl@1371
 47434
+    objs=
mgl@1371
 47435
+    non_pic_objects=
mgl@1371
 47436
+    precious_files_regex=
mgl@1371
 47437
+    prefer_static_libs=no
mgl@1371
 47438
+    preload=no
mgl@1371
 47439
+    prev=
mgl@1371
 47440
+    prevarg=
mgl@1371
 47441
+    release=
mgl@1371
 47442
+    rpath=
mgl@1371
 47443
+    xrpath=
mgl@1371
 47444
+    perm_rpath=
mgl@1371
 47445
+    temp_rpath=
mgl@1371
 47446
+    thread_safe=no
mgl@1371
 47447
+    vinfo=
mgl@1371
 47448
+    vinfo_number=no
mgl@1371
 47449
+    weak_libs=
mgl@1371
 47450
+    single_module="${wl}-single_module"
mgl@1371
 47451
+    func_infer_tag $base_compile
mgl@1371
 47452
+
mgl@1371
 47453
+    # We need to know -static, to get the right output filenames.
mgl@1371
 47454
+    for arg
mgl@1371
 47455
+    do
mgl@1371
 47456
+      case $arg in
mgl@1371
 47457
+      -shared)
mgl@1371
 47458
+	test "$build_libtool_libs" != yes && \
mgl@1371
 47459
+	  func_fatal_configuration "can not build a shared library"
mgl@1371
 47460
+	build_old_libs=no
mgl@1371
 47461
+	break
mgl@1371
 47462
+	;;
mgl@1371
 47463
+      -all-static | -static | -static-libtool-libs)
mgl@1371
 47464
+	case $arg in
mgl@1371
 47465
+	-all-static)
mgl@1371
 47466
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
mgl@1371
 47467
+	    func_warning "complete static linking is impossible in this configuration"
mgl@1371
 47468
+	  fi
mgl@1371
 47469
+	  if test -n "$link_static_flag"; then
mgl@1371
 47470
+	    dlopen_self=$dlopen_self_static
mgl@1371
 47471
+	    # See comment for -static flag below, for more details.
mgl@1371
 47472
+	    func_append compile_command " $link_static_flag"
mgl@1371
 47473
+	    func_append finalize_command " $link_static_flag"
mgl@1371
 47474
+	  fi
mgl@1371
 47475
+	  prefer_static_libs=yes
mgl@1371
 47476
+	  ;;
mgl@1371
 47477
+	-static)
mgl@1371
 47478
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
mgl@1371
 47479
+	    dlopen_self=$dlopen_self_static
mgl@1371
 47480
+	  fi
mgl@1371
 47481
+	  prefer_static_libs=built
mgl@1371
 47482
+	  ;;
mgl@1371
 47483
+	-static-libtool-libs)
mgl@1371
 47484
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
mgl@1371
 47485
+	    dlopen_self=$dlopen_self_static
mgl@1371
 47486
+	  fi
mgl@1371
 47487
+	  prefer_static_libs=yes
mgl@1371
 47488
+	  ;;
mgl@1371
 47489
+	esac
mgl@1371
 47490
+	build_libtool_libs=no
mgl@1371
 47491
+	build_old_libs=yes
mgl@1371
 47492
+	break
mgl@1371
 47493
+	;;
mgl@1371
 47494
+      esac
mgl@1371
 47495
+    done
mgl@1371
 47496
+
mgl@1371
 47497
+    # See if our shared archives depend on static archives.
mgl@1371
 47498
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
mgl@1371
 47499
+
mgl@1371
 47500
+    # Go through the arguments, transforming them on the way.
mgl@1371
 47501
+    while test "$#" -gt 0; do
mgl@1371
 47502
+      arg="$1"
mgl@1371
 47503
+      shift
mgl@1371
 47504
+      func_quote_for_eval "$arg"
mgl@1371
 47505
+      qarg=$func_quote_for_eval_unquoted_result
mgl@1371
 47506
+      func_append libtool_args " $func_quote_for_eval_result"
mgl@1371
 47507
+
mgl@1371
 47508
+      # If the previous option needs an argument, assign it.
mgl@1371
 47509
+      if test -n "$prev"; then
mgl@1371
 47510
+	case $prev in
mgl@1371
 47511
+	output)
mgl@1371
 47512
+	  func_append compile_command " @OUTPUT@"
mgl@1371
 47513
+	  func_append finalize_command " @OUTPUT@"
mgl@1371
 47514
+	  ;;
mgl@1371
 47515
+	esac
mgl@1371
 47516
+
mgl@1371
 47517
+	case $prev in
mgl@1371
 47518
+	dlfiles|dlprefiles)
mgl@1371
 47519
+	  if test "$preload" = no; then
mgl@1371
 47520
+	    # Add the symbol object into the linking commands.
mgl@1371
 47521
+	    func_append compile_command " @SYMFILE@"
mgl@1371
 47522
+	    func_append finalize_command " @SYMFILE@"
mgl@1371
 47523
+	    preload=yes
mgl@1371
 47524
+	  fi
mgl@1371
 47525
+	  case $arg in
mgl@1371
 47526
+	  *.la | *.lo) ;;  # We handle these cases below.
mgl@1371
 47527
+	  force)
mgl@1371
 47528
+	    if test "$dlself" = no; then
mgl@1371
 47529
+	      dlself=needless
mgl@1371
 47530
+	      export_dynamic=yes
mgl@1371
 47531
+	    fi
mgl@1371
 47532
+	    prev=
mgl@1371
 47533
+	    continue
mgl@1371
 47534
+	    ;;
mgl@1371
 47535
+	  self)
mgl@1371
 47536
+	    if test "$prev" = dlprefiles; then
mgl@1371
 47537
+	      dlself=yes
mgl@1371
 47538
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
mgl@1371
 47539
+	      dlself=yes
mgl@1371
 47540
+	    else
mgl@1371
 47541
+	      dlself=needless
mgl@1371
 47542
+	      export_dynamic=yes
mgl@1371
 47543
+	    fi
mgl@1371
 47544
+	    prev=
mgl@1371
 47545
+	    continue
mgl@1371
 47546
+	    ;;
mgl@1371
 47547
+	  *)
mgl@1371
 47548
+	    if test "$prev" = dlfiles; then
mgl@1371
 47549
+	      dlfiles="$dlfiles $arg"
mgl@1371
 47550
+	    else
mgl@1371
 47551
+	      dlprefiles="$dlprefiles $arg"
mgl@1371
 47552
+	    fi
mgl@1371
 47553
+	    prev=
mgl@1371
 47554
+	    continue
mgl@1371
 47555
+	    ;;
mgl@1371
 47556
+	  esac
mgl@1371
 47557
+	  ;;
mgl@1371
 47558
+	expsyms)
mgl@1371
 47559
+	  export_symbols="$arg"
mgl@1371
 47560
+	  test -f "$arg" \
mgl@1371
 47561
+	    || func_fatal_error "symbol file \`$arg' does not exist"
mgl@1371
 47562
+	  prev=
mgl@1371
 47563
+	  continue
mgl@1371
 47564
+	  ;;
mgl@1371
 47565
+	expsyms_regex)
mgl@1371
 47566
+	  export_symbols_regex="$arg"
mgl@1371
 47567
+	  prev=
mgl@1371
 47568
+	  continue
mgl@1371
 47569
+	  ;;
mgl@1371
 47570
+	framework)
mgl@1371
 47571
+	  case $host in
mgl@1371
 47572
+	    *-*-darwin*)
mgl@1371
 47573
+	      case "$deplibs " in
mgl@1371
 47574
+		*" $qarg.ltframework "*) ;;
mgl@1371
 47575
+		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
mgl@1371
 47576
+		   ;;
mgl@1371
 47577
+	      esac
mgl@1371
 47578
+	      ;;
mgl@1371
 47579
+   	  esac
mgl@1371
 47580
+	  prev=
mgl@1371
 47581
+	  continue
mgl@1371
 47582
+	  ;;
mgl@1371
 47583
+	inst_prefix)
mgl@1371
 47584
+	  inst_prefix_dir="$arg"
mgl@1371
 47585
+	  prev=
mgl@1371
 47586
+	  continue
mgl@1371
 47587
+	  ;;
mgl@1371
 47588
+	objectlist)
mgl@1371
 47589
+	  if test -f "$arg"; then
mgl@1371
 47590
+	    save_arg=$arg
mgl@1371
 47591
+	    moreargs=
mgl@1371
 47592
+	    for fil in `cat "$save_arg"`
mgl@1371
 47593
+	    do
mgl@1371
 47594
+#	      moreargs="$moreargs $fil"
mgl@1371
 47595
+	      arg=$fil
mgl@1371
 47596
+	      # A libtool-controlled object.
mgl@1371
 47597
+
mgl@1371
 47598
+	      # Check to see that this really is a libtool object.
mgl@1371
 47599
+	      if func_lalib_unsafe_p "$arg"; then
mgl@1371
 47600
+		pic_object=
mgl@1371
 47601
+		non_pic_object=
mgl@1371
 47602
+
mgl@1371
 47603
+		# Read the .lo file
mgl@1371
 47604
+		func_source "$arg"
mgl@1371
 47605
+
mgl@1371
 47606
+		if test -z "$pic_object" ||
mgl@1371
 47607
+		   test -z "$non_pic_object" ||
mgl@1371
 47608
+		   test "$pic_object" = none &&
mgl@1371
 47609
+		   test "$non_pic_object" = none; then
mgl@1371
 47610
+		  func_fatal_error "cannot find name of object for \`$arg'"
mgl@1371
 47611
+		fi
mgl@1371
 47612
+
mgl@1371
 47613
+		# Extract subdirectory from the argument.
mgl@1371
 47614
+		func_dirname "$arg" "/" ""
mgl@1371
 47615
+		xdir="$func_dirname_result"
mgl@1371
 47616
+
mgl@1371
 47617
+		if test "$pic_object" != none; then
mgl@1371
 47618
+		  # Prepend the subdirectory the object is found in.
mgl@1371
 47619
+		  pic_object="$xdir$pic_object"
mgl@1371
 47620
+
mgl@1371
 47621
+		  if test "$prev" = dlfiles; then
mgl@1371
 47622
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
mgl@1371
 47623
+		      dlfiles="$dlfiles $pic_object"
mgl@1371
 47624
+		      prev=
mgl@1371
 47625
+		      continue
mgl@1371
 47626
+		    else
mgl@1371
 47627
+		      # If libtool objects are unsupported, then we need to preload.
mgl@1371
 47628
+		      prev=dlprefiles
mgl@1371
 47629
+		    fi
mgl@1371
 47630
+		  fi
mgl@1371
 47631
+
mgl@1371
 47632
+		  # CHECK ME:  I think I busted this.  -Ossama
mgl@1371
 47633
+		  if test "$prev" = dlprefiles; then
mgl@1371
 47634
+		    # Preload the old-style object.
mgl@1371
 47635
+		    dlprefiles="$dlprefiles $pic_object"
mgl@1371
 47636
+		    prev=
mgl@1371
 47637
+		  fi
mgl@1371
 47638
+
mgl@1371
 47639
+		  # A PIC object.
mgl@1371
 47640
+		  func_append libobjs " $pic_object"
mgl@1371
 47641
+		  arg="$pic_object"
mgl@1371
 47642
+		fi
mgl@1371
 47643
+
mgl@1371
 47644
+		# Non-PIC object.
mgl@1371
 47645
+		if test "$non_pic_object" != none; then
mgl@1371
 47646
+		  # Prepend the subdirectory the object is found in.
mgl@1371
 47647
+		  non_pic_object="$xdir$non_pic_object"
mgl@1371
 47648
+
mgl@1371
 47649
+		  # A standard non-PIC object
mgl@1371
 47650
+		  func_append non_pic_objects " $non_pic_object"
mgl@1371
 47651
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
mgl@1371
 47652
+		    arg="$non_pic_object"
mgl@1371
 47653
+		  fi
mgl@1371
 47654
+		else
mgl@1371
 47655
+		  # If the PIC object exists, use it instead.
mgl@1371
 47656
+		  # $xdir was prepended to $pic_object above.
mgl@1371
 47657
+		  non_pic_object="$pic_object"
mgl@1371
 47658
+		  func_append non_pic_objects " $non_pic_object"
mgl@1371
 47659
+		fi
mgl@1371
 47660
+	      else
mgl@1371
 47661
+		# Only an error if not doing a dry-run.
mgl@1371
 47662
+		if $opt_dry_run; then
mgl@1371
 47663
+		  # Extract subdirectory from the argument.
mgl@1371
 47664
+		  func_dirname "$arg" "/" ""
mgl@1371
 47665
+		  xdir="$func_dirname_result"
mgl@1371
 47666
+
mgl@1371
 47667
+		  func_lo2o "$arg"
mgl@1371
 47668
+		  pic_object=$xdir$objdir/$func_lo2o_result
mgl@1371
 47669
+		  non_pic_object=$xdir$func_lo2o_result
mgl@1371
 47670
+		  func_append libobjs " $pic_object"
mgl@1371
 47671
+		  func_append non_pic_objects " $non_pic_object"
mgl@1371
 47672
+	        else
mgl@1371
 47673
+		  func_fatal_error "\`$arg' is not a valid libtool object"
mgl@1371
 47674
+		fi
mgl@1371
 47675
+	      fi
mgl@1371
 47676
+	    done
mgl@1371
 47677
+	  else
mgl@1371
 47678
+	    func_fatal_error "link input file \`$arg' does not exist"
mgl@1371
 47679
+	  fi
mgl@1371
 47680
+	  arg=$save_arg
mgl@1371
 47681
+	  prev=
mgl@1371
 47682
+	  continue
mgl@1371
 47683
+	  ;;
mgl@1371
 47684
+	precious_regex)
mgl@1371
 47685
+	  precious_files_regex="$arg"
mgl@1371
 47686
+	  prev=
mgl@1371
 47687
+	  continue
mgl@1371
 47688
+	  ;;
mgl@1371
 47689
+	release)
mgl@1371
 47690
+	  release="-$arg"
mgl@1371
 47691
+	  prev=
mgl@1371
 47692
+	  continue
mgl@1371
 47693
+	  ;;
mgl@1371
 47694
+	rpath | xrpath)
mgl@1371
 47695
+	  # We need an absolute path.
mgl@1371
 47696
+	  case $arg in
mgl@1371
 47697
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
mgl@1371
 47698
+	  *)
mgl@1371
 47699
+	    func_fatal_error "only absolute run-paths are allowed"
mgl@1371
 47700
+	    ;;
mgl@1371
 47701
+	  esac
mgl@1371
 47702
+	  if test "$prev" = rpath; then
mgl@1371
 47703
+	    case "$rpath " in
mgl@1371
 47704
+	    *" $arg "*) ;;
mgl@1371
 47705
+	    *) rpath="$rpath $arg" ;;
mgl@1371
 47706
+	    esac
mgl@1371
 47707
+	  else
mgl@1371
 47708
+	    case "$xrpath " in
mgl@1371
 47709
+	    *" $arg "*) ;;
mgl@1371
 47710
+	    *) xrpath="$xrpath $arg" ;;
mgl@1371
 47711
+	    esac
mgl@1371
 47712
+	  fi
mgl@1371
 47713
+	  prev=
mgl@1371
 47714
+	  continue
mgl@1371
 47715
+	  ;;
mgl@1371
 47716
+	shrext)
mgl@1371
 47717
+  	  shrext_cmds="$arg"
mgl@1371
 47718
+	  prev=
mgl@1371
 47719
+	  continue
mgl@1371
 47720
+	  ;;
mgl@1371
 47721
+	weak)
mgl@1371
 47722
+	  weak_libs="$weak_libs $arg"
mgl@1371
 47723
+	  prev=
mgl@1371
 47724
+	  continue
mgl@1371
 47725
+	  ;;
mgl@1371
 47726
+	xcclinker)
mgl@1371
 47727
+	  linker_flags="$linker_flags $qarg"
mgl@1371
 47728
+	  compiler_flags="$compiler_flags $qarg"
mgl@1371
 47729
+	  prev=
mgl@1371
 47730
+	  func_append compile_command " $qarg"
mgl@1371
 47731
+	  func_append finalize_command " $qarg"
mgl@1371
 47732
+	  continue
mgl@1371
 47733
+	  ;;
mgl@1371
 47734
+	xcompiler)
mgl@1371
 47735
+	  compiler_flags="$compiler_flags $qarg"
mgl@1371
 47736
+	  prev=
mgl@1371
 47737
+	  func_append compile_command " $qarg"
mgl@1371
 47738
+	  func_append finalize_command " $qarg"
mgl@1371
 47739
+	  continue
mgl@1371
 47740
+	  ;;
mgl@1371
 47741
+	xlinker)
mgl@1371
 47742
+	  linker_flags="$linker_flags $qarg"
mgl@1371
 47743
+	  compiler_flags="$compiler_flags $wl$qarg"
mgl@1371
 47744
+	  prev=
mgl@1371
 47745
+	  func_append compile_command " $wl$qarg"
mgl@1371
 47746
+	  func_append finalize_command " $wl$qarg"
mgl@1371
 47747
+	  continue
mgl@1371
 47748
+	  ;;
mgl@1371
 47749
+	*)
mgl@1371
 47750
+	  eval "$prev=\"\$arg\""
mgl@1371
 47751
+	  prev=
mgl@1371
 47752
+	  continue
mgl@1371
 47753
+	  ;;
mgl@1371
 47754
+	esac
mgl@1371
 47755
+      fi # test -n "$prev"
mgl@1371
 47756
+
mgl@1371
 47757
+      prevarg="$arg"
mgl@1371
 47758
+
mgl@1371
 47759
+      case $arg in
mgl@1371
 47760
+      -all-static)
mgl@1371
 47761
+	# The effects of -all-static are defined in a previous loop.
mgl@1371
 47762
+	continue
mgl@1371
 47763
+	;;
mgl@1371
 47764
+
mgl@1371
 47765
+      -allow-undefined)
mgl@1371
 47766
+	# FIXME: remove this flag sometime in the future.
mgl@1371
 47767
+	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
mgl@1371
 47768
+	;;
mgl@1371
 47769
+
mgl@1371
 47770
+      -avoid-version)
mgl@1371
 47771
+	avoid_version=yes
mgl@1371
 47772
+	continue
mgl@1371
 47773
+	;;
mgl@1371
 47774
+
mgl@1371
 47775
+      -dlopen)
mgl@1371
 47776
+	prev=dlfiles
mgl@1371
 47777
+	continue
mgl@1371
 47778
+	;;
mgl@1371
 47779
+
mgl@1371
 47780
+      -dlpreopen)
mgl@1371
 47781
+	prev=dlprefiles
mgl@1371
 47782
+	continue
mgl@1371
 47783
+	;;
mgl@1371
 47784
+
mgl@1371
 47785
+      -export-dynamic)
mgl@1371
 47786
+	export_dynamic=yes
mgl@1371
 47787
+	continue
mgl@1371
 47788
+	;;
mgl@1371
 47789
+
mgl@1371
 47790
+      -export-symbols | -export-symbols-regex)
mgl@1371
 47791
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
mgl@1371
 47792
+	  func_fatal_error "more than one -exported-symbols argument is not allowed"
mgl@1371
 47793
+	fi
mgl@1371
 47794
+	if test "X$arg" = "X-export-symbols"; then
mgl@1371
 47795
+	  prev=expsyms
mgl@1371
 47796
+	else
mgl@1371
 47797
+	  prev=expsyms_regex
mgl@1371
 47798
+	fi
mgl@1371
 47799
+	continue
mgl@1371
 47800
+	;;
mgl@1371
 47801
+
mgl@1371
 47802
+      -framework)
mgl@1371
 47803
+	prev=framework
mgl@1371
 47804
+	continue
mgl@1371
 47805
+	;;
mgl@1371
 47806
+
mgl@1371
 47807
+      -inst-prefix-dir)
mgl@1371
 47808
+	prev=inst_prefix
mgl@1371
 47809
+	continue
mgl@1371
 47810
+	;;
mgl@1371
 47811
+
mgl@1371
 47812
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
mgl@1371
 47813
+      # so, if we see these flags be careful not to treat them like -L
mgl@1371
 47814
+      -L[A-Z][A-Z]*:*)
mgl@1371
 47815
+	case $with_gcc/$host in
mgl@1371
 47816
+	no/*-*-irix* | /*-*-irix*)
mgl@1371
 47817
+	  func_append compile_command " $arg"
mgl@1371
 47818
+	  func_append finalize_command " $arg"
mgl@1371
 47819
+	  ;;
mgl@1371
 47820
+	esac
mgl@1371
 47821
+	continue
mgl@1371
 47822
+	;;
mgl@1371
 47823
+
mgl@1371
 47824
+      -L*)
mgl@1371
 47825
+	func_stripname '-L' '' "$arg"
mgl@1371
 47826
+	dir=$func_stripname_result
mgl@1371
 47827
+	# We need an absolute path.
mgl@1371
 47828
+	case $dir in
mgl@1371
 47829
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
mgl@1371
 47830
+	*)
mgl@1371
 47831
+	  absdir=`cd "$dir" && pwd`
mgl@1371
 47832
+	  test -z "$absdir" && \
mgl@1371
 47833
+	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
mgl@1371
 47834
+	  dir="$absdir"
mgl@1371
 47835
+	  ;;
mgl@1371
 47836
+	esac
mgl@1371
 47837
+	case "$deplibs " in
mgl@1371
 47838
+	*" -L$dir "*) ;;
mgl@1371
 47839
+	*)
mgl@1371
 47840
+	  deplibs="$deplibs -L$dir"
mgl@1371
 47841
+	  lib_search_path="$lib_search_path $dir"
mgl@1371
 47842
+	  ;;
mgl@1371
 47843
+	esac
mgl@1371
 47844
+	case $host in
mgl@1371
 47845
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
mgl@1371
 47846
+	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
mgl@1371
 47847
+	  case :$dllsearchpath: in
mgl@1371
 47848
+	  *":$dir:"*) ;;
mgl@1371
 47849
+	  *) dllsearchpath="$dllsearchpath:$dir";;
mgl@1371
 47850
+	  esac
mgl@1371
 47851
+	  case :$dllsearchpath: in
mgl@1371
 47852
+	  *":$testbindir:"*) ;;
mgl@1371
 47853
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
mgl@1371
 47854
+	  esac
mgl@1371
 47855
+	  ;;
mgl@1371
 47856
+	esac
mgl@1371
 47857
+	continue
mgl@1371
 47858
+	;;
mgl@1371
 47859
+
mgl@1371
 47860
+      -l*)
mgl@1371
 47861
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
mgl@1371
 47862
+	  case $host in
mgl@1371
 47863
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
mgl@1371
 47864
+	    # These systems don't actually have a C or math library (as such)
mgl@1371
 47865
+	    continue
mgl@1371
 47866
+	    ;;
mgl@1371
 47867
+	  *-*-os2*)
mgl@1371
 47868
+	    # These systems don't actually have a C library (as such)
mgl@1371
 47869
+	    test "X$arg" = "X-lc" && continue
mgl@1371
 47870
+	    ;;
mgl@1371
 47871
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
mgl@1371
 47872
+	    # Do not include libc due to us having libc/libc_r.
mgl@1371
 47873
+	    test "X$arg" = "X-lc" && continue
mgl@1371
 47874
+	    ;;
mgl@1371
 47875
+	  *-*-rhapsody* | *-*-darwin1.[012])
mgl@1371
 47876
+	    # Rhapsody C and math libraries are in the System framework
mgl@1371
 47877
+	    deplibs="$deplibs System.ltframework"
mgl@1371
 47878
+	    continue
mgl@1371
 47879
+	    ;;
mgl@1371
 47880
+	  *-*-sco3.2v5* | *-*-sco5v6*)
mgl@1371
 47881
+	    # Causes problems with __ctype
mgl@1371
 47882
+	    test "X$arg" = "X-lc" && continue
mgl@1371
 47883
+	    ;;
mgl@1371
 47884
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
mgl@1371
 47885
+	    # Compiler inserts libc in the correct place for threads to work
mgl@1371
 47886
+	    test "X$arg" = "X-lc" && continue
mgl@1371
 47887
+	    ;;
mgl@1371
 47888
+	  esac
mgl@1371
 47889
+	elif test "X$arg" = "X-lc_r"; then
mgl@1371
 47890
+	 case $host in
mgl@1371
 47891
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
mgl@1371
 47892
+	   # Do not include libc_r directly, use -pthread flag.
mgl@1371
 47893
+	   continue
mgl@1371
 47894
+	   ;;
mgl@1371
 47895
+	 esac
mgl@1371
 47896
+	fi
mgl@1371
 47897
+	deplibs="$deplibs $arg"
mgl@1371
 47898
+	continue
mgl@1371
 47899
+	;;
mgl@1371
 47900
+
mgl@1371
 47901
+      -module)
mgl@1371
 47902
+	module=yes
mgl@1371
 47903
+	continue
mgl@1371
 47904
+	;;
mgl@1371
 47905
+
mgl@1371
 47906
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
mgl@1371
 47907
+      # classes, name mangling, and exception handling.
mgl@1371
 47908
+      # Darwin uses the -arch flag to determine output architecture.
mgl@1371
 47909
+      -model|-arch|-isysroot)
mgl@1371
 47910
+	compiler_flags="$compiler_flags $arg"
mgl@1371
 47911
+	func_append compile_command " $arg"
mgl@1371
 47912
+	func_append finalize_command " $arg"
mgl@1371
 47913
+	prev=xcompiler
mgl@1371
 47914
+	continue
mgl@1371
 47915
+	;;
mgl@1371
 47916
+
mgl@1371
 47917
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
mgl@1371
 47918
+	compiler_flags="$compiler_flags $arg"
mgl@1371
 47919
+	func_append compile_command " $arg"
mgl@1371
 47920
+	func_append finalize_command " $arg"
mgl@1371
 47921
+	case "$new_inherited_linker_flags " in
mgl@1371
 47922
+	    *" $arg "*) ;;
mgl@1371
 47923
+	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
mgl@1371
 47924
+	esac
mgl@1371
 47925
+	continue
mgl@1371
 47926
+	;;
mgl@1371
 47927
+
mgl@1371
 47928
+      -multi_module)
mgl@1371
 47929
+	single_module="${wl}-multi_module"
mgl@1371
 47930
+	continue
mgl@1371
 47931
+	;;
mgl@1371
 47932
+
mgl@1371
 47933
+      -no-fast-install)
mgl@1371
 47934
+	fast_install=no
mgl@1371
 47935
+	continue
mgl@1371
 47936
+	;;
mgl@1371
 47937
+
mgl@1371
 47938
+      -no-install)
mgl@1371
 47939
+	case $host in
mgl@1371
 47940
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
mgl@1371
 47941
+	  # The PATH hackery in wrapper scripts is required on Windows
mgl@1371
 47942
+	  # in order for the loader to find any dlls it needs.
mgl@1371
 47943
+	  func_warning "\`-no-install' is ignored for $host"
mgl@1371
 47944
+	  func_warning "assuming \`-no-fast-install' instead"
mgl@1371
 47945
+	  fast_install=no
mgl@1371
 47946
+	  ;;
mgl@1371
 47947
+	*) no_install=yes ;;
mgl@1371
 47948
+	esac
mgl@1371
 47949
+	continue
mgl@1371
 47950
+	;;
mgl@1371
 47951
+
mgl@1371
 47952
+      -no-undefined)
mgl@1371
 47953
+	allow_undefined=no
mgl@1371
 47954
+	continue
mgl@1371
 47955
+	;;
mgl@1371
 47956
+
mgl@1371
 47957
+      -objectlist)
mgl@1371
 47958
+	prev=objectlist
mgl@1371
 47959
+	continue
mgl@1371
 47960
+	;;
mgl@1371
 47961
+
mgl@1371
 47962
+      -o) prev=output ;;
mgl@1371
 47963
+
mgl@1371
 47964
+      -precious-files-regex)
mgl@1371
 47965
+	prev=precious_regex
mgl@1371
 47966
+	continue
mgl@1371
 47967
+	;;
mgl@1371
 47968
+
mgl@1371
 47969
+      -release)
mgl@1371
 47970
+	prev=release
mgl@1371
 47971
+	continue
mgl@1371
 47972
+	;;
mgl@1371
 47973
+
mgl@1371
 47974
+      -rpath)
mgl@1371
 47975
+	prev=rpath
mgl@1371
 47976
+	continue
mgl@1371
 47977
+	;;
mgl@1371
 47978
+
mgl@1371
 47979
+      -R)
mgl@1371
 47980
+	prev=xrpath
mgl@1371
 47981
+	continue
mgl@1371
 47982
+	;;
mgl@1371
 47983
+
mgl@1371
 47984
+      -R*)
mgl@1371
 47985
+	func_stripname '-R' '' "$arg"
mgl@1371
 47986
+	dir=$func_stripname_result
mgl@1371
 47987
+	# We need an absolute path.
mgl@1371
 47988
+	case $dir in
mgl@1371
 47989
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
mgl@1371
 47990
+	*)
mgl@1371
 47991
+	  func_fatal_error "only absolute run-paths are allowed"
mgl@1371
 47992
+	  ;;
mgl@1371
 47993
+	esac
mgl@1371
 47994
+	case "$xrpath " in
mgl@1371
 47995
+	*" $dir "*) ;;
mgl@1371
 47996
+	*) xrpath="$xrpath $dir" ;;
mgl@1371
 47997
+	esac
mgl@1371
 47998
+	continue
mgl@1371
 47999
+	;;
mgl@1371
 48000
+
mgl@1371
 48001
+      -shared)
mgl@1371
 48002
+	# The effects of -shared are defined in a previous loop.
mgl@1371
 48003
+	continue
mgl@1371
 48004
+	;;
mgl@1371
 48005
+
mgl@1371
 48006
+      -shrext)
mgl@1371
 48007
+	prev=shrext
mgl@1371
 48008
+	continue
mgl@1371
 48009
+	;;
mgl@1371
 48010
+
mgl@1371
 48011
+      -static | -static-libtool-libs)
mgl@1371
 48012
+	# The effects of -static are defined in a previous loop.
mgl@1371
 48013
+	# We used to do the same as -all-static on platforms that
mgl@1371
 48014
+	# didn't have a PIC flag, but the assumption that the effects
mgl@1371
 48015
+	# would be equivalent was wrong.  It would break on at least
mgl@1371
 48016
+	# Digital Unix and AIX.
mgl@1371
 48017
+	continue
mgl@1371
 48018
+	;;
mgl@1371
 48019
+
mgl@1371
 48020
+      -thread-safe)
mgl@1371
 48021
+	thread_safe=yes
mgl@1371
 48022
+	continue
mgl@1371
 48023
+	;;
mgl@1371
 48024
+
mgl@1371
 48025
+      -version-info)
mgl@1371
 48026
+	prev=vinfo
mgl@1371
 48027
+	continue
mgl@1371
 48028
+	;;
mgl@1371
 48029
+
mgl@1371
 48030
+      -version-number)
mgl@1371
 48031
+	prev=vinfo
mgl@1371
 48032
+	vinfo_number=yes
mgl@1371
 48033
+	continue
mgl@1371
 48034
+	;;
mgl@1371
 48035
+
mgl@1371
 48036
+      -weak)
mgl@1371
 48037
+        prev=weak
mgl@1371
 48038
+	continue
mgl@1371
 48039
+	;;
mgl@1371
 48040
+
mgl@1371
 48041
+      -Wc,*)
mgl@1371
 48042
+	func_stripname '-Wc,' '' "$arg"
mgl@1371
 48043
+	args=$func_stripname_result
mgl@1371
 48044
+	arg=
mgl@1371
 48045
+	save_ifs="$IFS"; IFS=','
mgl@1371
 48046
+	for flag in $args; do
mgl@1371
 48047
+	  IFS="$save_ifs"
mgl@1371
 48048
+          func_quote_for_eval "$flag"
mgl@1371
 48049
+	  arg="$arg $wl$func_quote_for_eval_result"
mgl@1371
 48050
+	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
mgl@1371
 48051
+	done
mgl@1371
 48052
+	IFS="$save_ifs"
mgl@1371
 48053
+	func_stripname ' ' '' "$arg"
mgl@1371
 48054
+	arg=$func_stripname_result
mgl@1371
 48055
+	;;
mgl@1371
 48056
+
mgl@1371
 48057
+      -Wl,*)
mgl@1371
 48058
+	func_stripname '-Wl,' '' "$arg"
mgl@1371
 48059
+	args=$func_stripname_result
mgl@1371
 48060
+	arg=
mgl@1371
 48061
+	save_ifs="$IFS"; IFS=','
mgl@1371
 48062
+	for flag in $args; do
mgl@1371
 48063
+	  IFS="$save_ifs"
mgl@1371
 48064
+          func_quote_for_eval "$flag"
mgl@1371
 48065
+	  arg="$arg $wl$func_quote_for_eval_result"
mgl@1371
 48066
+	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
mgl@1371
 48067
+	  linker_flags="$linker_flags $func_quote_for_eval_result"
mgl@1371
 48068
+	done
mgl@1371
 48069
+	IFS="$save_ifs"
mgl@1371
 48070
+	func_stripname ' ' '' "$arg"
mgl@1371
 48071
+	arg=$func_stripname_result
mgl@1371
 48072
+	;;
mgl@1371
 48073
+
mgl@1371
 48074
+      -Xcompiler)
mgl@1371
 48075
+	prev=xcompiler
mgl@1371
 48076
+	continue
mgl@1371
 48077
+	;;
mgl@1371
 48078
+
mgl@1371
 48079
+      -Xlinker)
mgl@1371
 48080
+	prev=xlinker
mgl@1371
 48081
+	continue
mgl@1371
 48082
+	;;
mgl@1371
 48083
+
mgl@1371
 48084
+      -XCClinker)
mgl@1371
 48085
+	prev=xcclinker
mgl@1371
 48086
+	continue
mgl@1371
 48087
+	;;
mgl@1371
 48088
+
mgl@1371
 48089
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
mgl@1371
 48090
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
mgl@1371
 48091
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
mgl@1371
 48092
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
mgl@1371
 48093
+      # -q* pass through compiler args for the IBM compiler
mgl@1371
 48094
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
mgl@1371
 48095
+      # compiler args for GCC
mgl@1371
 48096
+      # -F/path gives path to uninstalled frameworks, gcc on darwin
mgl@1371
 48097
+      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
mgl@1371
 48098
+      # @file GCC response files
mgl@1371
 48099
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
mgl@1371
 48100
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
mgl@1371
 48101
+        func_quote_for_eval "$arg"
mgl@1371
 48102
+	arg="$func_quote_for_eval_result"
mgl@1371
 48103
+        func_append compile_command " $arg"
mgl@1371
 48104
+        func_append finalize_command " $arg"
mgl@1371
 48105
+        compiler_flags="$compiler_flags $arg"
mgl@1371
 48106
+        continue
mgl@1371
 48107
+        ;;
mgl@1371
 48108
+
mgl@1371
 48109
+      # Some other compiler flag.
mgl@1371
 48110
+      -* | +*)
mgl@1371
 48111
+        func_quote_for_eval "$arg"
mgl@1371
 48112
+	arg="$func_quote_for_eval_result"
mgl@1371
 48113
+	;;
mgl@1371
 48114
+
mgl@1371
 48115
+      *.$objext)
mgl@1371
 48116
+	# A standard object.
mgl@1371
 48117
+	objs="$objs $arg"
mgl@1371
 48118
+	;;
mgl@1371
 48119
+
mgl@1371
 48120
+      *.lo)
mgl@1371
 48121
+	# A libtool-controlled object.
mgl@1371
 48122
+
mgl@1371
 48123
+	# Check to see that this really is a libtool object.
mgl@1371
 48124
+	if func_lalib_unsafe_p "$arg"; then
mgl@1371
 48125
+	  pic_object=
mgl@1371
 48126
+	  non_pic_object=
mgl@1371
 48127
+
mgl@1371
 48128
+	  # Read the .lo file
mgl@1371
 48129
+	  func_source "$arg"
mgl@1371
 48130
+
mgl@1371
 48131
+	  if test -z "$pic_object" ||
mgl@1371
 48132
+	     test -z "$non_pic_object" ||
mgl@1371
 48133
+	     test "$pic_object" = none &&
mgl@1371
 48134
+	     test "$non_pic_object" = none; then
mgl@1371
 48135
+	    func_fatal_error "cannot find name of object for \`$arg'"
mgl@1371
 48136
+	  fi
mgl@1371
 48137
+
mgl@1371
 48138
+	  # Extract subdirectory from the argument.
mgl@1371
 48139
+	  func_dirname "$arg" "/" ""
mgl@1371
 48140
+	  xdir="$func_dirname_result"
mgl@1371
 48141
+
mgl@1371
 48142
+	  if test "$pic_object" != none; then
mgl@1371
 48143
+	    # Prepend the subdirectory the object is found in.
mgl@1371
 48144
+	    pic_object="$xdir$pic_object"
mgl@1371
 48145
+
mgl@1371
 48146
+	    if test "$prev" = dlfiles; then
mgl@1371
 48147
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
mgl@1371
 48148
+		dlfiles="$dlfiles $pic_object"
mgl@1371
 48149
+		prev=
mgl@1371
 48150
+		continue
mgl@1371
 48151
+	      else
mgl@1371
 48152
+		# If libtool objects are unsupported, then we need to preload.
mgl@1371
 48153
+		prev=dlprefiles
mgl@1371
 48154
+	      fi
mgl@1371
 48155
+	    fi
mgl@1371
 48156
+
mgl@1371
 48157
+	    # CHECK ME:  I think I busted this.  -Ossama
mgl@1371
 48158
+	    if test "$prev" = dlprefiles; then
mgl@1371
 48159
+	      # Preload the old-style object.
mgl@1371
 48160
+	      dlprefiles="$dlprefiles $pic_object"
mgl@1371
 48161
+	      prev=
mgl@1371
 48162
+	    fi
mgl@1371
 48163
+
mgl@1371
 48164
+	    # A PIC object.
mgl@1371
 48165
+	    func_append libobjs " $pic_object"
mgl@1371
 48166
+	    arg="$pic_object"
mgl@1371
 48167
+	  fi
mgl@1371
 48168
+
mgl@1371
 48169
+	  # Non-PIC object.
mgl@1371
 48170
+	  if test "$non_pic_object" != none; then
mgl@1371
 48171
+	    # Prepend the subdirectory the object is found in.
mgl@1371
 48172
+	    non_pic_object="$xdir$non_pic_object"
mgl@1371
 48173
+
mgl@1371
 48174
+	    # A standard non-PIC object
mgl@1371
 48175
+	    func_append non_pic_objects " $non_pic_object"
mgl@1371
 48176
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
mgl@1371
 48177
+	      arg="$non_pic_object"
mgl@1371
 48178
+	    fi
mgl@1371
 48179
+	  else
mgl@1371
 48180
+	    # If the PIC object exists, use it instead.
mgl@1371
 48181
+	    # $xdir was prepended to $pic_object above.
mgl@1371
 48182
+	    non_pic_object="$pic_object"
mgl@1371
 48183
+	    func_append non_pic_objects " $non_pic_object"
mgl@1371
 48184
+	  fi
mgl@1371
 48185
+	else
mgl@1371
 48186
+	  # Only an error if not doing a dry-run.
mgl@1371
 48187
+	  if $opt_dry_run; then
mgl@1371
 48188
+	    # Extract subdirectory from the argument.
mgl@1371
 48189
+	    func_dirname "$arg" "/" ""
mgl@1371
 48190
+	    xdir="$func_dirname_result"
mgl@1371
 48191
+
mgl@1371
 48192
+	    func_lo2o "$arg"
mgl@1371
 48193
+	    pic_object=$xdir$objdir/$func_lo2o_result
mgl@1371
 48194
+	    non_pic_object=$xdir$func_lo2o_result
mgl@1371
 48195
+	    func_append libobjs " $pic_object"
mgl@1371
 48196
+	    func_append non_pic_objects " $non_pic_object"
mgl@1371
 48197
+	  else
mgl@1371
 48198
+	    func_fatal_error "\`$arg' is not a valid libtool object"
mgl@1371
 48199
+	  fi
mgl@1371
 48200
+	fi
mgl@1371
 48201
+	;;
mgl@1371
 48202
+
mgl@1371
 48203
+      *.$libext)
mgl@1371
 48204
+	# An archive.
mgl@1371
 48205
+	deplibs="$deplibs $arg"
mgl@1371
 48206
+	old_deplibs="$old_deplibs $arg"
mgl@1371
 48207
+	continue
mgl@1371
 48208
+	;;
mgl@1371
 48209
+
mgl@1371
 48210
+      *.la)
mgl@1371
 48211
+	# A libtool-controlled library.
mgl@1371
 48212
+
mgl@1371
 48213
+	if test "$prev" = dlfiles; then
mgl@1371
 48214
+	  # This library was specified with -dlopen.
mgl@1371
 48215
+	  dlfiles="$dlfiles $arg"
mgl@1371
 48216
+	  prev=
mgl@1371
 48217
+	elif test "$prev" = dlprefiles; then
mgl@1371
 48218
+	  # The library was specified with -dlpreopen.
mgl@1371
 48219
+	  dlprefiles="$dlprefiles $arg"
mgl@1371
 48220
+	  prev=
mgl@1371
 48221
+	else
mgl@1371
 48222
+	  deplibs="$deplibs $arg"
mgl@1371
 48223
+	fi
mgl@1371
 48224
+	continue
mgl@1371
 48225
+	;;
mgl@1371
 48226
+
mgl@1371
 48227
+      # Some other compiler argument.
mgl@1371
 48228
+      *)
mgl@1371
 48229
+	# Unknown arguments in both finalize_command and compile_command need
mgl@1371
 48230
+	# to be aesthetically quoted because they are evaled later.
mgl@1371
 48231
+	func_quote_for_eval "$arg"
mgl@1371
 48232
+	arg="$func_quote_for_eval_result"
mgl@1371
 48233
+	;;
mgl@1371
 48234
+      esac # arg
mgl@1371
 48235
+
mgl@1371
 48236
+      # Now actually substitute the argument into the commands.
mgl@1371
 48237
+      if test -n "$arg"; then
mgl@1371
 48238
+	func_append compile_command " $arg"
mgl@1371
 48239
+	func_append finalize_command " $arg"
mgl@1371
 48240
+      fi
mgl@1371
 48241
+    done # argument parsing loop
mgl@1371
 48242
+
mgl@1371
 48243
+    test -n "$prev" && \
mgl@1371
 48244
+      func_fatal_help "the \`$prevarg' option requires an argument"
mgl@1371
 48245
+
mgl@1371
 48246
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
mgl@1371
 48247
+      eval arg=\"$export_dynamic_flag_spec\"
mgl@1371
 48248
+      func_append compile_command " $arg"
mgl@1371
 48249
+      func_append finalize_command " $arg"
mgl@1371
 48250
+    fi
mgl@1371
 48251
+
mgl@1371
 48252
+    oldlibs=
mgl@1371
 48253
+    # calculate the name of the file, without its directory
mgl@1371
 48254
+    func_basename "$output"
mgl@1371
 48255
+    outputname="$func_basename_result"
mgl@1371
 48256
+    libobjs_save="$libobjs"
mgl@1371
 48257
+
mgl@1371
 48258
+    if test -n "$shlibpath_var"; then
mgl@1371
 48259
+      # get the directories listed in $shlibpath_var
mgl@1371
 48260
+      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
mgl@1371
 48261
+    else
mgl@1371
 48262
+      shlib_search_path=
mgl@1371
 48263
+    fi
mgl@1371
 48264
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
mgl@1371
 48265
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
mgl@1371
 48266
+
mgl@1371
 48267
+    func_dirname "$output" "/" ""
mgl@1371
 48268
+    output_objdir="$func_dirname_result$objdir"
mgl@1371
 48269
+    # Create the object directory.
mgl@1371
 48270
+    func_mkdir_p "$output_objdir"
mgl@1371
 48271
+
mgl@1371
 48272
+    # Determine the type of output
mgl@1371
 48273
+    case $output in
mgl@1371
 48274
+    "")
mgl@1371
 48275
+      func_fatal_help "you must specify an output file"
mgl@1371
 48276
+      ;;
mgl@1371
 48277
+    *.$libext) linkmode=oldlib ;;
mgl@1371
 48278
+    *.lo | *.$objext) linkmode=obj ;;
mgl@1371
 48279
+    *.la) linkmode=lib ;;
mgl@1371
 48280
+    *) linkmode=prog ;; # Anything else should be a program.
mgl@1371
 48281
+    esac
mgl@1371
 48282
+
mgl@1371
 48283
+    specialdeplibs=
mgl@1371
 48284
+
mgl@1371
 48285
+    libs=
mgl@1371
 48286
+    # Find all interdependent deplibs by searching for libraries
mgl@1371
 48287
+    # that are linked more than once (e.g. -la -lb -la)
mgl@1371
 48288
+    for deplib in $deplibs; do
mgl@1371
 48289
+      if $opt_duplicate_deps ; then
mgl@1371
 48290
+	case "$libs " in
mgl@1371
 48291
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
mgl@1371
 48292
+	esac
mgl@1371
 48293
+      fi
mgl@1371
 48294
+      libs="$libs $deplib"
mgl@1371
 48295
+    done
mgl@1371
 48296
+
mgl@1371
 48297
+    if test "$linkmode" = lib; then
mgl@1371
 48298
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
mgl@1371
 48299
+
mgl@1371
 48300
+      # Compute libraries that are listed more than once in $predeps
mgl@1371
 48301
+      # $postdeps and mark them as special (i.e., whose duplicates are
mgl@1371
 48302
+      # not to be eliminated).
mgl@1371
 48303
+      pre_post_deps=
mgl@1371
 48304
+      if $opt_duplicate_compiler_generated_deps; then
mgl@1371
 48305
+	for pre_post_dep in $predeps $postdeps; do
mgl@1371
 48306
+	  case "$pre_post_deps " in
mgl@1371
 48307
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
mgl@1371
 48308
+	  esac
mgl@1371
 48309
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
mgl@1371
 48310
+	done
mgl@1371
 48311
+      fi
mgl@1371
 48312
+      pre_post_deps=
mgl@1371
 48313
+    fi
mgl@1371
 48314
+
mgl@1371
 48315
+    deplibs=
mgl@1371
 48316
+    newdependency_libs=
mgl@1371
 48317
+    newlib_search_path=
mgl@1371
 48318
+    need_relink=no # whether we're linking any uninstalled libtool libraries
mgl@1371
 48319
+    notinst_deplibs= # not-installed libtool libraries
mgl@1371
 48320
+    notinst_path= # paths that contain not-installed libtool libraries
mgl@1371
 48321
+
mgl@1371
 48322
+    case $linkmode in
mgl@1371
 48323
+    lib)
mgl@1371
 48324
+	passes="conv dlpreopen link"
mgl@1371
 48325
+	for file in $dlfiles $dlprefiles; do
mgl@1371
 48326
+	  case $file in
mgl@1371
 48327
+	  *.la) ;;
mgl@1371
 48328
+	  *)
mgl@1371
 48329
+	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
mgl@1371
 48330
+	    ;;
mgl@1371
 48331
+	  esac
mgl@1371
 48332
+	done
mgl@1371
 48333
+	;;
mgl@1371
 48334
+    prog)
mgl@1371
 48335
+	compile_deplibs=
mgl@1371
 48336
+	finalize_deplibs=
mgl@1371
 48337
+	alldeplibs=no
mgl@1371
 48338
+	newdlfiles=
mgl@1371
 48339
+	newdlprefiles=
mgl@1371
 48340
+	passes="conv scan dlopen dlpreopen link"
mgl@1371
 48341
+	;;
mgl@1371
 48342
+    *)  passes="conv"
mgl@1371
 48343
+	;;
mgl@1371
 48344
+    esac
mgl@1371
 48345
+
mgl@1371
 48346
+    for pass in $passes; do
mgl@1371
 48347
+      # The preopen pass in lib mode reverses $deplibs; put it back here
mgl@1371
 48348
+      # so that -L comes before libs that need it for instance...
mgl@1371
 48349
+      if test "$linkmode,$pass" = "lib,link"; then
mgl@1371
 48350
+	## FIXME: Find the place where the list is rebuilt in the wrong
mgl@1371
 48351
+	##        order, and fix it there properly
mgl@1371
 48352
+        tmp_deplibs=
mgl@1371
 48353
+	for deplib in $deplibs; do
mgl@1371
 48354
+	  tmp_deplibs="$deplib $tmp_deplibs"
mgl@1371
 48355
+	done
mgl@1371
 48356
+	deplibs="$tmp_deplibs"
mgl@1371
 48357
+      fi
mgl@1371
 48358
+
mgl@1371
 48359
+      if test "$linkmode,$pass" = "lib,link" ||
mgl@1371
 48360
+	 test "$linkmode,$pass" = "prog,scan"; then
mgl@1371
 48361
+	libs="$deplibs"
mgl@1371
 48362
+	deplibs=
mgl@1371
 48363
+      fi
mgl@1371
 48364
+      if test "$linkmode" = prog; then
mgl@1371
 48365
+	case $pass in
mgl@1371
 48366
+	dlopen) libs="$dlfiles" ;;
mgl@1371
 48367
+	dlpreopen) libs="$dlprefiles" ;;
mgl@1371
 48368
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
mgl@1371
 48369
+	esac
mgl@1371
 48370
+      fi
mgl@1371
 48371
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
mgl@1371
 48372
+	# Collect and forward deplibs of preopened libtool libs
mgl@1371
 48373
+	for lib in $dlprefiles; do
mgl@1371
 48374
+	  # Ignore non-libtool-libs
mgl@1371
 48375
+	  dependency_libs=
mgl@1371
 48376
+	  case $lib in
mgl@1371
 48377
+	  *.la)	func_source "$lib" ;;
mgl@1371
 48378
+	  esac
mgl@1371
 48379
+
mgl@1371
 48380
+	  # Collect preopened libtool deplibs, except any this library
mgl@1371
 48381
+	  # has declared as weak libs
mgl@1371
 48382
+	  for deplib in $dependency_libs; do
mgl@1371
 48383
+            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
mgl@1371
 48384
+	    case " $weak_libs " in
mgl@1371
 48385
+	    *" $deplib_base "*) ;;
mgl@1371
 48386
+	    *) deplibs="$deplibs $deplib" ;;
mgl@1371
 48387
+	    esac
mgl@1371
 48388
+	  done
mgl@1371
 48389
+	done
mgl@1371
 48390
+	libs="$dlprefiles"
mgl@1371
 48391
+      fi
mgl@1371
 48392
+      if test "$pass" = dlopen; then
mgl@1371
 48393
+	# Collect dlpreopened libraries
mgl@1371
 48394
+	save_deplibs="$deplibs"
mgl@1371
 48395
+	deplibs=
mgl@1371
 48396
+      fi
mgl@1371
 48397
+
mgl@1371
 48398
+      for deplib in $libs; do
mgl@1371
 48399
+	lib=
mgl@1371
 48400
+	found=no
mgl@1371
 48401
+	case $deplib in
mgl@1371
 48402
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
mgl@1371
 48403
+	  if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48404
+	    compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48405
+	    finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48406
+	  else
mgl@1371
 48407
+	    compiler_flags="$compiler_flags $deplib"
mgl@1371
 48408
+	    if test "$linkmode" = lib ; then
mgl@1371
 48409
+		case "$new_inherited_linker_flags " in
mgl@1371
 48410
+		    *" $deplib "*) ;;
mgl@1371
 48411
+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
mgl@1371
 48412
+		esac
mgl@1371
 48413
+	    fi
mgl@1371
 48414
+	  fi
mgl@1371
 48415
+	  continue
mgl@1371
 48416
+	  ;;
mgl@1371
 48417
+	-l*)
mgl@1371
 48418
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
mgl@1371
 48419
+	    func_warning "\`-l' is ignored for archives/objects"
mgl@1371
 48420
+	    continue
mgl@1371
 48421
+	  fi
mgl@1371
 48422
+	  func_stripname '-l' '' "$deplib"
mgl@1371
 48423
+	  name=$func_stripname_result
mgl@1371
 48424
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
mgl@1371
 48425
+	    for search_ext in .la $std_shrext .so .a; do
mgl@1371
 48426
+	      # Search the libtool library
mgl@1371
 48427
+	      lib="$searchdir/lib${name}${search_ext}"
mgl@1371
 48428
+	      if test -f "$lib"; then
mgl@1371
 48429
+		if test "$search_ext" = ".la"; then
mgl@1371
 48430
+		  found=yes
mgl@1371
 48431
+		else
mgl@1371
 48432
+		  found=no
mgl@1371
 48433
+		fi
mgl@1371
 48434
+		break 2
mgl@1371
 48435
+	      fi
mgl@1371
 48436
+	    done
mgl@1371
 48437
+	  done
mgl@1371
 48438
+	  if test "$found" != yes; then
mgl@1371
 48439
+	    # deplib doesn't seem to be a libtool library
mgl@1371
 48440
+	    if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48441
+	      compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48442
+	      finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48443
+	    else
mgl@1371
 48444
+	      deplibs="$deplib $deplibs"
mgl@1371
 48445
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
mgl@1371
 48446
+	    fi
mgl@1371
 48447
+	    continue
mgl@1371
 48448
+	  else # deplib is a libtool library
mgl@1371
 48449
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
mgl@1371
 48450
+	    # We need to do some special things here, and not later.
mgl@1371
 48451
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 48452
+	      case " $predeps $postdeps " in
mgl@1371
 48453
+	      *" $deplib "*)
mgl@1371
 48454
+		if func_lalib_p "$lib"; then
mgl@1371
 48455
+		  library_names=
mgl@1371
 48456
+		  old_library=
mgl@1371
 48457
+		  func_source "$lib"
mgl@1371
 48458
+		  for l in $old_library $library_names; do
mgl@1371
 48459
+		    ll="$l"
mgl@1371
 48460
+		  done
mgl@1371
 48461
+		  if test "X$ll" = "X$old_library" ; then # only static version available
mgl@1371
 48462
+		    found=no
mgl@1371
 48463
+		    func_dirname "$lib" "" "."
mgl@1371
 48464
+		    ladir="$func_dirname_result"
mgl@1371
 48465
+		    lib=$ladir/$old_library
mgl@1371
 48466
+		    if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48467
+		      compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48468
+		      finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48469
+		    else
mgl@1371
 48470
+		      deplibs="$deplib $deplibs"
mgl@1371
 48471
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
mgl@1371
 48472
+		    fi
mgl@1371
 48473
+		    continue
mgl@1371
 48474
+		  fi
mgl@1371
 48475
+		fi
mgl@1371
 48476
+		;;
mgl@1371
 48477
+	      *) ;;
mgl@1371
 48478
+	      esac
mgl@1371
 48479
+	    fi
mgl@1371
 48480
+	  fi
mgl@1371
 48481
+	  ;; # -l
mgl@1371
 48482
+	*.ltframework)
mgl@1371
 48483
+	  if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48484
+	    compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48485
+	    finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48486
+	  else
mgl@1371
 48487
+	    deplibs="$deplib $deplibs"
mgl@1371
 48488
+	    if test "$linkmode" = lib ; then
mgl@1371
 48489
+		case "$new_inherited_linker_flags " in
mgl@1371
 48490
+		    *" $deplib "*) ;;
mgl@1371
 48491
+		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
mgl@1371
 48492
+		esac
mgl@1371
 48493
+	    fi
mgl@1371
 48494
+	  fi
mgl@1371
 48495
+	  continue
mgl@1371
 48496
+	  ;;
mgl@1371
 48497
+	-L*)
mgl@1371
 48498
+	  case $linkmode in
mgl@1371
 48499
+	  lib)
mgl@1371
 48500
+	    deplibs="$deplib $deplibs"
mgl@1371
 48501
+	    test "$pass" = conv && continue
mgl@1371
 48502
+	    newdependency_libs="$deplib $newdependency_libs"
mgl@1371
 48503
+	    func_stripname '-L' '' "$deplib"
mgl@1371
 48504
+	    newlib_search_path="$newlib_search_path $func_stripname_result"
mgl@1371
 48505
+	    ;;
mgl@1371
 48506
+	  prog)
mgl@1371
 48507
+	    if test "$pass" = conv; then
mgl@1371
 48508
+	      deplibs="$deplib $deplibs"
mgl@1371
 48509
+	      continue
mgl@1371
 48510
+	    fi
mgl@1371
 48511
+	    if test "$pass" = scan; then
mgl@1371
 48512
+	      deplibs="$deplib $deplibs"
mgl@1371
 48513
+	    else
mgl@1371
 48514
+	      compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48515
+	      finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48516
+	    fi
mgl@1371
 48517
+	    func_stripname '-L' '' "$deplib"
mgl@1371
 48518
+	    newlib_search_path="$newlib_search_path $func_stripname_result"
mgl@1371
 48519
+	    ;;
mgl@1371
 48520
+	  *)
mgl@1371
 48521
+	    func_warning "\`-L' is ignored for archives/objects"
mgl@1371
 48522
+	    ;;
mgl@1371
 48523
+	  esac # linkmode
mgl@1371
 48524
+	  continue
mgl@1371
 48525
+	  ;; # -L
mgl@1371
 48526
+	-R*)
mgl@1371
 48527
+	  if test "$pass" = link; then
mgl@1371
 48528
+	    func_stripname '-R' '' "$deplib"
mgl@1371
 48529
+	    dir=$func_stripname_result
mgl@1371
 48530
+	    # Make sure the xrpath contains only unique directories.
mgl@1371
 48531
+	    case "$xrpath " in
mgl@1371
 48532
+	    *" $dir "*) ;;
mgl@1371
 48533
+	    *) xrpath="$xrpath $dir" ;;
mgl@1371
 48534
+	    esac
mgl@1371
 48535
+	  fi
mgl@1371
 48536
+	  deplibs="$deplib $deplibs"
mgl@1371
 48537
+	  continue
mgl@1371
 48538
+	  ;;
mgl@1371
 48539
+	*.la) lib="$deplib" ;;
mgl@1371
 48540
+	*.$libext)
mgl@1371
 48541
+	  if test "$pass" = conv; then
mgl@1371
 48542
+	    deplibs="$deplib $deplibs"
mgl@1371
 48543
+	    continue
mgl@1371
 48544
+	  fi
mgl@1371
 48545
+	  case $linkmode in
mgl@1371
 48546
+	  lib)
mgl@1371
 48547
+	    # Linking convenience modules into shared libraries is allowed,
mgl@1371
 48548
+	    # but linking other static libraries is non-portable.
mgl@1371
 48549
+	    case " $dlpreconveniencelibs " in
mgl@1371
 48550
+	    *" $deplib "*) ;;
mgl@1371
 48551
+	    *)
mgl@1371
 48552
+	      valid_a_lib=no
mgl@1371
 48553
+	      case $deplibs_check_method in
mgl@1371
 48554
+		match_pattern*)
mgl@1371
 48555
+		  set dummy $deplibs_check_method; shift
mgl@1371
 48556
+		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
mgl@1371
 48557
+		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
mgl@1371
 48558
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
mgl@1371
 48559
+		    valid_a_lib=yes
mgl@1371
 48560
+		  fi
mgl@1371
 48561
+		;;
mgl@1371
 48562
+		pass_all)
mgl@1371
 48563
+		  valid_a_lib=yes
mgl@1371
 48564
+		;;
mgl@1371
 48565
+	      esac
mgl@1371
 48566
+	      if test "$valid_a_lib" != yes; then
mgl@1371
 48567
+		$ECHO
mgl@1371
 48568
+		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
mgl@1371
 48569
+		$ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 48570
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 48571
+		$ECHO "*** shared version of the library, which you do not appear to have"
mgl@1371
 48572
+		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
mgl@1371
 48573
+		$ECHO "*** that it is just a static archive that I should not use here."
mgl@1371
 48574
+	      else
mgl@1371
 48575
+		$ECHO
mgl@1371
 48576
+		$ECHO "*** Warning: Linking the shared library $output against the"
mgl@1371
 48577
+		$ECHO "*** static library $deplib is not portable!"
mgl@1371
 48578
+		deplibs="$deplib $deplibs"
mgl@1371
 48579
+	      fi
mgl@1371
 48580
+	      ;;
mgl@1371
 48581
+	    esac
mgl@1371
 48582
+	    continue
mgl@1371
 48583
+	    ;;
mgl@1371
 48584
+	  prog)
mgl@1371
 48585
+	    if test "$pass" != link; then
mgl@1371
 48586
+	      deplibs="$deplib $deplibs"
mgl@1371
 48587
+	    else
mgl@1371
 48588
+	      compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48589
+	      finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48590
+	    fi
mgl@1371
 48591
+	    continue
mgl@1371
 48592
+	    ;;
mgl@1371
 48593
+	  esac # linkmode
mgl@1371
 48594
+	  ;; # *.$libext
mgl@1371
 48595
+	*.lo | *.$objext)
mgl@1371
 48596
+	  if test "$pass" = conv; then
mgl@1371
 48597
+	    deplibs="$deplib $deplibs"
mgl@1371
 48598
+	  elif test "$linkmode" = prog; then
mgl@1371
 48599
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
mgl@1371
 48600
+	      # If there is no dlopen support or we're linking statically,
mgl@1371
 48601
+	      # we need to preload.
mgl@1371
 48602
+	      newdlprefiles="$newdlprefiles $deplib"
mgl@1371
 48603
+	      compile_deplibs="$deplib $compile_deplibs"
mgl@1371
 48604
+	      finalize_deplibs="$deplib $finalize_deplibs"
mgl@1371
 48605
+	    else
mgl@1371
 48606
+	      newdlfiles="$newdlfiles $deplib"
mgl@1371
 48607
+	    fi
mgl@1371
 48608
+	  fi
mgl@1371
 48609
+	  continue
mgl@1371
 48610
+	  ;;
mgl@1371
 48611
+	%DEPLIBS%)
mgl@1371
 48612
+	  alldeplibs=yes
mgl@1371
 48613
+	  continue
mgl@1371
 48614
+	  ;;
mgl@1371
 48615
+	esac # case $deplib
mgl@1371
 48616
+
mgl@1371
 48617
+	if test "$found" = yes || test -f "$lib"; then :
mgl@1371
 48618
+	else
mgl@1371
 48619
+	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
mgl@1371
 48620
+	fi
mgl@1371
 48621
+
mgl@1371
 48622
+	# Check to see that this really is a libtool archive.
mgl@1371
 48623
+	func_lalib_unsafe_p "$lib" \
mgl@1371
 48624
+	  || func_fatal_error "\`$lib' is not a valid libtool archive"
mgl@1371
 48625
+
mgl@1371
 48626
+	func_dirname "$lib" "" "."
mgl@1371
 48627
+	ladir="$func_dirname_result"
mgl@1371
 48628
+
mgl@1371
 48629
+	dlname=
mgl@1371
 48630
+	dlopen=
mgl@1371
 48631
+	dlpreopen=
mgl@1371
 48632
+	libdir=
mgl@1371
 48633
+	library_names=
mgl@1371
 48634
+	old_library=
mgl@1371
 48635
+	inherited_linker_flags=
mgl@1371
 48636
+	# If the library was installed with an old release of libtool,
mgl@1371
 48637
+	# it will not redefine variables installed, or shouldnotlink
mgl@1371
 48638
+	installed=yes
mgl@1371
 48639
+	shouldnotlink=no
mgl@1371
 48640
+	avoidtemprpath=
mgl@1371
 48641
+
mgl@1371
 48642
+
mgl@1371
 48643
+	# Read the .la file
mgl@1371
 48644
+	func_source "$lib"
mgl@1371
 48645
+
mgl@1371
 48646
+	# Convert "-framework foo" to "foo.ltframework"
mgl@1371
 48647
+	if test -n "$inherited_linker_flags"; then
mgl@1371
 48648
+	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
mgl@1371
 48649
+	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
mgl@1371
 48650
+	    case " $new_inherited_linker_flags " in
mgl@1371
 48651
+	      *" $tmp_inherited_linker_flag "*) ;;
mgl@1371
 48652
+	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
mgl@1371
 48653
+	    esac
mgl@1371
 48654
+	  done
mgl@1371
 48655
+	fi
mgl@1371
 48656
+	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 48657
+	if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48658
+	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
mgl@1371
 48659
+	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
mgl@1371
 48660
+	else
mgl@1371
 48661
+	  compiler_flags="$compiler_flags $inherited_linker_flags"
mgl@1371
 48662
+	fi
mgl@1371
 48663
+	if test "$linkmode,$pass" = "lib,link" ||
mgl@1371
 48664
+	   test "$linkmode,$pass" = "prog,scan" ||
mgl@1371
 48665
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
mgl@1371
 48666
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
mgl@1371
 48667
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
mgl@1371
 48668
+	fi
mgl@1371
 48669
+
mgl@1371
 48670
+	if test "$pass" = conv; then
mgl@1371
 48671
+	  # Only check for convenience libraries
mgl@1371
 48672
+	  deplibs="$lib $deplibs"
mgl@1371
 48673
+	  if test -z "$libdir"; then
mgl@1371
 48674
+	    if test -z "$old_library"; then
mgl@1371
 48675
+	      func_fatal_error "cannot find name of link library for \`$lib'"
mgl@1371
 48676
+	    fi
mgl@1371
 48677
+	    # It is a libtool convenience library, so add in its objects.
mgl@1371
 48678
+	    convenience="$convenience $ladir/$objdir/$old_library"
mgl@1371
 48679
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
mgl@1371
 48680
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
mgl@1371
 48681
+	    func_fatal_error "\`$lib' is not a convenience library"
mgl@1371
 48682
+	  fi
mgl@1371
 48683
+	  tmp_libs=
mgl@1371
 48684
+	  for deplib in $dependency_libs; do
mgl@1371
 48685
+	    deplibs="$deplib $deplibs"
mgl@1371
 48686
+	    if $opt_duplicate_deps ; then
mgl@1371
 48687
+	      case "$tmp_libs " in
mgl@1371
 48688
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
mgl@1371
 48689
+	      esac
mgl@1371
 48690
+	    fi
mgl@1371
 48691
+	    tmp_libs="$tmp_libs $deplib"
mgl@1371
 48692
+	  done
mgl@1371
 48693
+	  continue
mgl@1371
 48694
+	fi # $pass = conv
mgl@1371
 48695
+
mgl@1371
 48696
+
mgl@1371
 48697
+	# Get the name of the library we link against.
mgl@1371
 48698
+	linklib=
mgl@1371
 48699
+	for l in $old_library $library_names; do
mgl@1371
 48700
+	  linklib="$l"
mgl@1371
 48701
+	done
mgl@1371
 48702
+	if test -z "$linklib"; then
mgl@1371
 48703
+	  func_fatal_error "cannot find name of link library for \`$lib'"
mgl@1371
 48704
+	fi
mgl@1371
 48705
+
mgl@1371
 48706
+	# This library was specified with -dlopen.
mgl@1371
 48707
+	if test "$pass" = dlopen; then
mgl@1371
 48708
+	  if test -z "$libdir"; then
mgl@1371
 48709
+	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
mgl@1371
 48710
+	  fi
mgl@1371
 48711
+	  if test -z "$dlname" ||
mgl@1371
 48712
+	     test "$dlopen_support" != yes ||
mgl@1371
 48713
+	     test "$build_libtool_libs" = no; then
mgl@1371
 48714
+	    # If there is no dlname, no dlopen support or we're linking
mgl@1371
 48715
+	    # statically, we need to preload.  We also need to preload any
mgl@1371
 48716
+	    # dependent libraries so libltdl's deplib preloader doesn't
mgl@1371
 48717
+	    # bomb out in the load deplibs phase.
mgl@1371
 48718
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
mgl@1371
 48719
+	  else
mgl@1371
 48720
+	    newdlfiles="$newdlfiles $lib"
mgl@1371
 48721
+	  fi
mgl@1371
 48722
+	  continue
mgl@1371
 48723
+	fi # $pass = dlopen
mgl@1371
 48724
+
mgl@1371
 48725
+	# We need an absolute path.
mgl@1371
 48726
+	case $ladir in
mgl@1371
 48727
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
mgl@1371
 48728
+	*)
mgl@1371
 48729
+	  abs_ladir=`cd "$ladir" && pwd`
mgl@1371
 48730
+	  if test -z "$abs_ladir"; then
mgl@1371
 48731
+	    func_warning "cannot determine absolute directory name of \`$ladir'"
mgl@1371
 48732
+	    func_warning "passing it literally to the linker, although it might fail"
mgl@1371
 48733
+	    abs_ladir="$ladir"
mgl@1371
 48734
+	  fi
mgl@1371
 48735
+	  ;;
mgl@1371
 48736
+	esac
mgl@1371
 48737
+	func_basename "$lib"
mgl@1371
 48738
+	laname="$func_basename_result"
mgl@1371
 48739
+
mgl@1371
 48740
+	# Find the relevant object directory and library name.
mgl@1371
 48741
+	if test "X$installed" = Xyes; then
mgl@1371
 48742
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
mgl@1371
 48743
+	    func_warning "library \`$lib' was moved."
mgl@1371
 48744
+	    dir="$ladir"
mgl@1371
 48745
+	    absdir="$abs_ladir"
mgl@1371
 48746
+	    libdir="$abs_ladir"
mgl@1371
 48747
+	  else
mgl@1371
 48748
+	    dir="$libdir"
mgl@1371
 48749
+	    absdir="$libdir"
mgl@1371
 48750
+	  fi
mgl@1371
 48751
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
mgl@1371
 48752
+	else
mgl@1371
 48753
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
mgl@1371
 48754
+	    dir="$ladir"
mgl@1371
 48755
+	    absdir="$abs_ladir"
mgl@1371
 48756
+	    # Remove this search path later
mgl@1371
 48757
+	    notinst_path="$notinst_path $abs_ladir"
mgl@1371
 48758
+	  else
mgl@1371
 48759
+	    dir="$ladir/$objdir"
mgl@1371
 48760
+	    absdir="$abs_ladir/$objdir"
mgl@1371
 48761
+	    # Remove this search path later
mgl@1371
 48762
+	    notinst_path="$notinst_path $abs_ladir"
mgl@1371
 48763
+	  fi
mgl@1371
 48764
+	fi # $installed = yes
mgl@1371
 48765
+	func_stripname 'lib' '.la' "$laname"
mgl@1371
 48766
+	name=$func_stripname_result
mgl@1371
 48767
+
mgl@1371
 48768
+	# This library was specified with -dlpreopen.
mgl@1371
 48769
+	if test "$pass" = dlpreopen; then
mgl@1371
 48770
+	  if test -z "$libdir" && test "$linkmode" = prog; then
mgl@1371
 48771
+	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
mgl@1371
 48772
+	  fi
mgl@1371
 48773
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
mgl@1371
 48774
+	  # are required to link).
mgl@1371
 48775
+	  if test -n "$old_library"; then
mgl@1371
 48776
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
mgl@1371
 48777
+	    # Keep a list of preopened convenience libraries to check
mgl@1371
 48778
+	    # that they are being used correctly in the link pass.
mgl@1371
 48779
+	    test -z "$libdir" && \
mgl@1371
 48780
+		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
mgl@1371
 48781
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
mgl@1371
 48782
+	  elif test -n "$dlname"; then
mgl@1371
 48783
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
mgl@1371
 48784
+	  else
mgl@1371
 48785
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
mgl@1371
 48786
+	  fi
mgl@1371
 48787
+	fi # $pass = dlpreopen
mgl@1371
 48788
+
mgl@1371
 48789
+	if test -z "$libdir"; then
mgl@1371
 48790
+	  # Link the convenience library
mgl@1371
 48791
+	  if test "$linkmode" = lib; then
mgl@1371
 48792
+	    deplibs="$dir/$old_library $deplibs"
mgl@1371
 48793
+	  elif test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48794
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
mgl@1371
 48795
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
mgl@1371
 48796
+	  else
mgl@1371
 48797
+	    deplibs="$lib $deplibs" # used for prog,scan pass
mgl@1371
 48798
+	  fi
mgl@1371
 48799
+	  continue
mgl@1371
 48800
+	fi
mgl@1371
 48801
+
mgl@1371
 48802
+
mgl@1371
 48803
+	if test "$linkmode" = prog && test "$pass" != link; then
mgl@1371
 48804
+	  newlib_search_path="$newlib_search_path $ladir"
mgl@1371
 48805
+	  deplibs="$lib $deplibs"
mgl@1371
 48806
+
mgl@1371
 48807
+	  linkalldeplibs=no
mgl@1371
 48808
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
mgl@1371
 48809
+	     test "$build_libtool_libs" = no; then
mgl@1371
 48810
+	    linkalldeplibs=yes
mgl@1371
 48811
+	  fi
mgl@1371
 48812
+
mgl@1371
 48813
+	  tmp_libs=
mgl@1371
 48814
+	  for deplib in $dependency_libs; do
mgl@1371
 48815
+	    case $deplib in
mgl@1371
 48816
+	    -L*) func_stripname '-L' '' "$deplib"
mgl@1371
 48817
+	         newlib_search_path="$newlib_search_path $func_stripname_result"
mgl@1371
 48818
+		 ;;
mgl@1371
 48819
+	    esac
mgl@1371
 48820
+	    # Need to link against all dependency_libs?
mgl@1371
 48821
+	    if test "$linkalldeplibs" = yes; then
mgl@1371
 48822
+	      deplibs="$deplib $deplibs"
mgl@1371
 48823
+	    else
mgl@1371
 48824
+	      # Need to hardcode shared library paths
mgl@1371
 48825
+	      # or/and link against static libraries
mgl@1371
 48826
+	      newdependency_libs="$deplib $newdependency_libs"
mgl@1371
 48827
+	    fi
mgl@1371
 48828
+	    if $opt_duplicate_deps ; then
mgl@1371
 48829
+	      case "$tmp_libs " in
mgl@1371
 48830
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
mgl@1371
 48831
+	      esac
mgl@1371
 48832
+	    fi
mgl@1371
 48833
+	    tmp_libs="$tmp_libs $deplib"
mgl@1371
 48834
+	  done # for deplib
mgl@1371
 48835
+	  continue
mgl@1371
 48836
+	fi # $linkmode = prog...
mgl@1371
 48837
+
mgl@1371
 48838
+	if test "$linkmode,$pass" = "prog,link"; then
mgl@1371
 48839
+	  if test -n "$library_names" &&
mgl@1371
 48840
+	     { { test "$prefer_static_libs" = no ||
mgl@1371
 48841
+	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
mgl@1371
 48842
+	       test -z "$old_library"; }; then
mgl@1371
 48843
+	    # We need to hardcode the library path
mgl@1371
 48844
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
mgl@1371
 48845
+	      # Make sure the rpath contains only unique directories.
mgl@1371
 48846
+	      case "$temp_rpath:" in
mgl@1371
 48847
+	      *"$absdir:"*) ;;
mgl@1371
 48848
+	      *) temp_rpath="$temp_rpath$absdir:" ;;
mgl@1371
 48849
+	      esac
mgl@1371
 48850
+	    fi
mgl@1371
 48851
+
mgl@1371
 48852
+	    # Hardcode the library path.
mgl@1371
 48853
+	    # Skip directories that are in the system default run-time
mgl@1371
 48854
+	    # search path.
mgl@1371
 48855
+	    case " $sys_lib_dlsearch_path " in
mgl@1371
 48856
+	    *" $absdir "*) ;;
mgl@1371
 48857
+	    *)
mgl@1371
 48858
+	      case "$compile_rpath " in
mgl@1371
 48859
+	      *" $absdir "*) ;;
mgl@1371
 48860
+	      *) compile_rpath="$compile_rpath $absdir"
mgl@1371
 48861
+	      esac
mgl@1371
 48862
+	      ;;
mgl@1371
 48863
+	    esac
mgl@1371
 48864
+	    case " $sys_lib_dlsearch_path " in
mgl@1371
 48865
+	    *" $libdir "*) ;;
mgl@1371
 48866
+	    *)
mgl@1371
 48867
+	      case "$finalize_rpath " in
mgl@1371
 48868
+	      *" $libdir "*) ;;
mgl@1371
 48869
+	      *) finalize_rpath="$finalize_rpath $libdir"
mgl@1371
 48870
+	      esac
mgl@1371
 48871
+	      ;;
mgl@1371
 48872
+	    esac
mgl@1371
 48873
+	  fi # $linkmode,$pass = prog,link...
mgl@1371
 48874
+
mgl@1371
 48875
+	  if test "$alldeplibs" = yes &&
mgl@1371
 48876
+	     { test "$deplibs_check_method" = pass_all ||
mgl@1371
 48877
+	       { test "$build_libtool_libs" = yes &&
mgl@1371
 48878
+		 test -n "$library_names"; }; }; then
mgl@1371
 48879
+	    # We only need to search for static libraries
mgl@1371
 48880
+	    continue
mgl@1371
 48881
+	  fi
mgl@1371
 48882
+	fi
mgl@1371
 48883
+
mgl@1371
 48884
+	link_static=no # Whether the deplib will be linked statically
mgl@1371
 48885
+	use_static_libs=$prefer_static_libs
mgl@1371
 48886
+	if test "$use_static_libs" = built && test "$installed" = yes; then
mgl@1371
 48887
+	  use_static_libs=no
mgl@1371
 48888
+	fi
mgl@1371
 48889
+	if test -n "$library_names" &&
mgl@1371
 48890
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
mgl@1371
 48891
+	  case $host in
mgl@1371
 48892
+	  *cygwin* | *mingw*)
mgl@1371
 48893
+	      # No point in relinking DLLs because paths are not encoded
mgl@1371
 48894
+	      notinst_deplibs="$notinst_deplibs $lib"
mgl@1371
 48895
+	      need_relink=no
mgl@1371
 48896
+	    ;;
mgl@1371
 48897
+	  *)
mgl@1371
 48898
+	    if test "$installed" = no; then
mgl@1371
 48899
+	      notinst_deplibs="$notinst_deplibs $lib"
mgl@1371
 48900
+	      need_relink=yes
mgl@1371
 48901
+	    fi
mgl@1371
 48902
+	    ;;
mgl@1371
 48903
+	  esac
mgl@1371
 48904
+	  # This is a shared library
mgl@1371
 48905
+
mgl@1371
 48906
+	  # Warn about portability, can't link against -module's on some
mgl@1371
 48907
+	  # systems (darwin).  Don't bleat about dlopened modules though!
mgl@1371
 48908
+	  dlopenmodule=""
mgl@1371
 48909
+	  for dlpremoduletest in $dlprefiles; do
mgl@1371
 48910
+	    if test "X$dlpremoduletest" = "X$lib"; then
mgl@1371
 48911
+	      dlopenmodule="$dlpremoduletest"
mgl@1371
 48912
+	      break
mgl@1371
 48913
+	    fi
mgl@1371
 48914
+	  done
mgl@1371
 48915
+	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
mgl@1371
 48916
+	    $ECHO
mgl@1371
 48917
+	    if test "$linkmode" = prog; then
mgl@1371
 48918
+	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
mgl@1371
 48919
+	    else
mgl@1371
 48920
+	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
mgl@1371
 48921
+	    fi
mgl@1371
 48922
+	    $ECHO "*** $linklib is not portable!"
mgl@1371
 48923
+	  fi
mgl@1371
 48924
+	  if test "$linkmode" = lib &&
mgl@1371
 48925
+	     test "$hardcode_into_libs" = yes; then
mgl@1371
 48926
+	    # Hardcode the library path.
mgl@1371
 48927
+	    # Skip directories that are in the system default run-time
mgl@1371
 48928
+	    # search path.
mgl@1371
 48929
+	    case " $sys_lib_dlsearch_path " in
mgl@1371
 48930
+	    *" $absdir "*) ;;
mgl@1371
 48931
+	    *)
mgl@1371
 48932
+	      case "$compile_rpath " in
mgl@1371
 48933
+	      *" $absdir "*) ;;
mgl@1371
 48934
+	      *) compile_rpath="$compile_rpath $absdir"
mgl@1371
 48935
+	      esac
mgl@1371
 48936
+	      ;;
mgl@1371
 48937
+	    esac
mgl@1371
 48938
+	    case " $sys_lib_dlsearch_path " in
mgl@1371
 48939
+	    *" $libdir "*) ;;
mgl@1371
 48940
+	    *)
mgl@1371
 48941
+	      case "$finalize_rpath " in
mgl@1371
 48942
+	      *" $libdir "*) ;;
mgl@1371
 48943
+	      *) finalize_rpath="$finalize_rpath $libdir"
mgl@1371
 48944
+	      esac
mgl@1371
 48945
+	      ;;
mgl@1371
 48946
+	    esac
mgl@1371
 48947
+	  fi
mgl@1371
 48948
+
mgl@1371
 48949
+	  if test -n "$old_archive_from_expsyms_cmds"; then
mgl@1371
 48950
+	    # figure out the soname
mgl@1371
 48951
+	    set dummy $library_names
mgl@1371
 48952
+	    shift
mgl@1371
 48953
+	    realname="$1"
mgl@1371
 48954
+	    shift
mgl@1371
 48955
+	    libname=`eval "\\$ECHO \"$libname_spec\""`
mgl@1371
 48956
+	    # use dlname if we got it. it's perfectly good, no?
mgl@1371
 48957
+	    if test -n "$dlname"; then
mgl@1371
 48958
+	      soname="$dlname"
mgl@1371
 48959
+	    elif test -n "$soname_spec"; then
mgl@1371
 48960
+	      # bleh windows
mgl@1371
 48961
+	      case $host in
mgl@1371
 48962
+	      *cygwin* | mingw*)
mgl@1371
 48963
+		major=`expr $current - $age`
mgl@1371
 48964
+		versuffix="-$major"
mgl@1371
 48965
+		;;
mgl@1371
 48966
+	      esac
mgl@1371
 48967
+	      eval soname=\"$soname_spec\"
mgl@1371
 48968
+	    else
mgl@1371
 48969
+	      soname="$realname"
mgl@1371
 48970
+	    fi
mgl@1371
 48971
+
mgl@1371
 48972
+	    # Make a new name for the extract_expsyms_cmds to use
mgl@1371
 48973
+	    soroot="$soname"
mgl@1371
 48974
+	    func_basename "$soroot"
mgl@1371
 48975
+	    soname="$func_basename_result"
mgl@1371
 48976
+	    func_stripname 'lib' '.dll' "$soname"
mgl@1371
 48977
+	    newlib=libimp-$func_stripname_result.a
mgl@1371
 48978
+
mgl@1371
 48979
+	    # If the library has no export list, then create one now
mgl@1371
 48980
+	    if test -f "$output_objdir/$soname-def"; then :
mgl@1371
 48981
+	    else
mgl@1371
 48982
+	      func_echo "extracting exported symbol list from \`$soname'"
mgl@1371
 48983
+	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
mgl@1371
 48984
+	    fi
mgl@1371
 48985
+
mgl@1371
 48986
+	    # Create $newlib
mgl@1371
 48987
+	    if test -f "$output_objdir/$newlib"; then :; else
mgl@1371
 48988
+	      func_echo "generating import library for \`$soname'"
mgl@1371
 48989
+	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
mgl@1371
 48990
+	    fi
mgl@1371
 48991
+	    # make sure the library variables are pointing to the new library
mgl@1371
 48992
+	    dir=$output_objdir
mgl@1371
 48993
+	    linklib=$newlib
mgl@1371
 48994
+	  fi # test -n "$old_archive_from_expsyms_cmds"
mgl@1371
 48995
+
mgl@1371
 48996
+	  if test "$linkmode" = prog || test "$mode" != relink; then
mgl@1371
 48997
+	    add_shlibpath=
mgl@1371
 48998
+	    add_dir=
mgl@1371
 48999
+	    add=
mgl@1371
 49000
+	    lib_linked=yes
mgl@1371
 49001
+	    case $hardcode_action in
mgl@1371
 49002
+	    immediate | unsupported)
mgl@1371
 49003
+	      if test "$hardcode_direct" = no; then
mgl@1371
 49004
+		add="$dir/$linklib"
mgl@1371
 49005
+		case $host in
mgl@1371
 49006
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
mgl@1371
 49007
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
mgl@1371
 49008
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
mgl@1371
 49009
+		    *-*-unixware7*) add_dir="-L$dir" ;;
mgl@1371
 49010
+		  *-*-darwin* )
mgl@1371
 49011
+		    # if the lib is a (non-dlopened) module then we can not
mgl@1371
 49012
+		    # link against it, someone is ignoring the earlier warnings
mgl@1371
 49013
+		    if /usr/bin/file -L $add 2> /dev/null |
mgl@1371
 49014
+			 $GREP ": [^:]* bundle" >/dev/null ; then
mgl@1371
 49015
+		      if test "X$dlopenmodule" != "X$lib"; then
mgl@1371
 49016
+			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
mgl@1371
 49017
+			if test -z "$old_library" ; then
mgl@1371
 49018
+			  $ECHO
mgl@1371
 49019
+			  $ECHO "*** And there doesn't seem to be a static archive available"
mgl@1371
 49020
+			  $ECHO "*** The link will probably fail, sorry"
mgl@1371
 49021
+			else
mgl@1371
 49022
+			  add="$dir/$old_library"
mgl@1371
 49023
+			fi
mgl@1371
 49024
+		      elif test -n "$old_library"; then
mgl@1371
 49025
+			add="$dir/$old_library"
mgl@1371
 49026
+		      fi
mgl@1371
 49027
+		    fi
mgl@1371
 49028
+		esac
mgl@1371
 49029
+	      elif test "$hardcode_minus_L" = no; then
mgl@1371
 49030
+		case $host in
mgl@1371
 49031
+		*-*-sunos*) add_shlibpath="$dir" ;;
mgl@1371
 49032
+		esac
mgl@1371
 49033
+		add_dir="-L$dir"
mgl@1371
 49034
+		add="-l$name"
mgl@1371
 49035
+	      elif test "$hardcode_shlibpath_var" = no; then
mgl@1371
 49036
+		add_shlibpath="$dir"
mgl@1371
 49037
+		add="-l$name"
mgl@1371
 49038
+	      else
mgl@1371
 49039
+		lib_linked=no
mgl@1371
 49040
+	      fi
mgl@1371
 49041
+	      ;;
mgl@1371
 49042
+	    relink)
mgl@1371
 49043
+	      if test "$hardcode_direct" = yes &&
mgl@1371
 49044
+	         test "$hardcode_direct_absolute" = no; then
mgl@1371
 49045
+		add="$dir/$linklib"
mgl@1371
 49046
+	      elif test "$hardcode_minus_L" = yes; then
mgl@1371
 49047
+		add_dir="-L$dir"
mgl@1371
 49048
+		# Try looking first in the location we're being installed to.
mgl@1371
 49049
+		if test -n "$inst_prefix_dir"; then
mgl@1371
 49050
+		  case $libdir in
mgl@1371
 49051
+		    [\\/]*)
mgl@1371
 49052
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
mgl@1371
 49053
+		      ;;
mgl@1371
 49054
+		  esac
mgl@1371
 49055
+		fi
mgl@1371
 49056
+		add="-l$name"
mgl@1371
 49057
+	      elif test "$hardcode_shlibpath_var" = yes; then
mgl@1371
 49058
+		add_shlibpath="$dir"
mgl@1371
 49059
+		add="-l$name"
mgl@1371
 49060
+	      else
mgl@1371
 49061
+		lib_linked=no
mgl@1371
 49062
+	      fi
mgl@1371
 49063
+	      ;;
mgl@1371
 49064
+	    *) lib_linked=no ;;
mgl@1371
 49065
+	    esac
mgl@1371
 49066
+
mgl@1371
 49067
+	    if test "$lib_linked" != yes; then
mgl@1371
 49068
+	      func_fatal_configuration "unsupported hardcode properties"
mgl@1371
 49069
+	    fi
mgl@1371
 49070
+
mgl@1371
 49071
+	    if test -n "$add_shlibpath"; then
mgl@1371
 49072
+	      case :$compile_shlibpath: in
mgl@1371
 49073
+	      *":$add_shlibpath:"*) ;;
mgl@1371
 49074
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
mgl@1371
 49075
+	      esac
mgl@1371
 49076
+	    fi
mgl@1371
 49077
+	    if test "$linkmode" = prog; then
mgl@1371
 49078
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
mgl@1371
 49079
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
mgl@1371
 49080
+	    else
mgl@1371
 49081
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
mgl@1371
 49082
+	      test -n "$add" && deplibs="$add $deplibs"
mgl@1371
 49083
+	      if test "$hardcode_direct" != yes &&
mgl@1371
 49084
+		 test "$hardcode_minus_L" != yes &&
mgl@1371
 49085
+		 test "$hardcode_shlibpath_var" = yes; then
mgl@1371
 49086
+		case :$finalize_shlibpath: in
mgl@1371
 49087
+		*":$libdir:"*) ;;
mgl@1371
 49088
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
mgl@1371
 49089
+		esac
mgl@1371
 49090
+	      fi
mgl@1371
 49091
+	    fi
mgl@1371
 49092
+	  fi
mgl@1371
 49093
+
mgl@1371
 49094
+	  if test "$linkmode" = prog || test "$mode" = relink; then
mgl@1371
 49095
+	    add_shlibpath=
mgl@1371
 49096
+	    add_dir=
mgl@1371
 49097
+	    add=
mgl@1371
 49098
+	    # Finalize command for both is simple: just hardcode it.
mgl@1371
 49099
+	    if test "$hardcode_direct" = yes &&
mgl@1371
 49100
+	       test "$hardcode_direct_absolute" = no; then
mgl@1371
 49101
+	      add="$libdir/$linklib"
mgl@1371
 49102
+	    elif test "$hardcode_minus_L" = yes; then
mgl@1371
 49103
+	      add_dir="-L$libdir"
mgl@1371
 49104
+	      add="-l$name"
mgl@1371
 49105
+	    elif test "$hardcode_shlibpath_var" = yes; then
mgl@1371
 49106
+	      case :$finalize_shlibpath: in
mgl@1371
 49107
+	      *":$libdir:"*) ;;
mgl@1371
 49108
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
mgl@1371
 49109
+	      esac
mgl@1371
 49110
+	      add="-l$name"
mgl@1371
 49111
+	    elif test "$hardcode_automatic" = yes; then
mgl@1371
 49112
+	      if test -n "$inst_prefix_dir" &&
mgl@1371
 49113
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
mgl@1371
 49114
+		add="$inst_prefix_dir$libdir/$linklib"
mgl@1371
 49115
+	      else
mgl@1371
 49116
+		add="$libdir/$linklib"
mgl@1371
 49117
+	      fi
mgl@1371
 49118
+	    else
mgl@1371
 49119
+	      # We cannot seem to hardcode it, guess we'll fake it.
mgl@1371
 49120
+	      add_dir="-L$libdir"
mgl@1371
 49121
+	      # Try looking first in the location we're being installed to.
mgl@1371
 49122
+	      if test -n "$inst_prefix_dir"; then
mgl@1371
 49123
+		case $libdir in
mgl@1371
 49124
+		  [\\/]*)
mgl@1371
 49125
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
mgl@1371
 49126
+		    ;;
mgl@1371
 49127
+		esac
mgl@1371
 49128
+	      fi
mgl@1371
 49129
+	      add="-l$name"
mgl@1371
 49130
+	    fi
mgl@1371
 49131
+
mgl@1371
 49132
+	    if test "$linkmode" = prog; then
mgl@1371
 49133
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
mgl@1371
 49134
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
mgl@1371
 49135
+	    else
mgl@1371
 49136
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
mgl@1371
 49137
+	      test -n "$add" && deplibs="$add $deplibs"
mgl@1371
 49138
+	    fi
mgl@1371
 49139
+	  fi
mgl@1371
 49140
+	elif test "$linkmode" = prog; then
mgl@1371
 49141
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
mgl@1371
 49142
+	  # is not unsupported.  This is valid on all known static and
mgl@1371
 49143
+	  # shared platforms.
mgl@1371
 49144
+	  if test "$hardcode_direct" != unsupported; then
mgl@1371
 49145
+	    test -n "$old_library" && linklib="$old_library"
mgl@1371
 49146
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
mgl@1371
 49147
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
mgl@1371
 49148
+	  else
mgl@1371
 49149
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
mgl@1371
 49150
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
mgl@1371
 49151
+	  fi
mgl@1371
 49152
+	elif test "$build_libtool_libs" = yes; then
mgl@1371
 49153
+	  # Not a shared library
mgl@1371
 49154
+	  if test "$deplibs_check_method" != pass_all; then
mgl@1371
 49155
+	    # We're trying link a shared library against a static one
mgl@1371
 49156
+	    # but the system doesn't support it.
mgl@1371
 49157
+
mgl@1371
 49158
+	    # Just print a warning and add the library to dependency_libs so
mgl@1371
 49159
+	    # that the program can be linked against the static library.
mgl@1371
 49160
+	    $ECHO
mgl@1371
 49161
+	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
mgl@1371
 49162
+	    $ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 49163
+	    $ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 49164
+	    $ECHO "*** shared version of the library, which you do not appear to have."
mgl@1371
 49165
+	    if test "$module" = yes; then
mgl@1371
 49166
+	      $ECHO "*** But as you try to build a module library, libtool will still create "
mgl@1371
 49167
+	      $ECHO "*** a static module, that should work as long as the dlopening application"
mgl@1371
 49168
+	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
mgl@1371
 49169
+	      if test -z "$global_symbol_pipe"; then
mgl@1371
 49170
+		$ECHO
mgl@1371
 49171
+		$ECHO "*** However, this would only work if libtool was able to extract symbol"
mgl@1371
 49172
+		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
mgl@1371
 49173
+		$ECHO "*** not find such a program.  So, this module is probably useless."
mgl@1371
 49174
+		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
mgl@1371
 49175
+	      fi
mgl@1371
 49176
+	      if test "$build_old_libs" = no; then
mgl@1371
 49177
+		build_libtool_libs=module
mgl@1371
 49178
+		build_old_libs=yes
mgl@1371
 49179
+	      else
mgl@1371
 49180
+		build_libtool_libs=no
mgl@1371
 49181
+	      fi
mgl@1371
 49182
+	    fi
mgl@1371
 49183
+	  else
mgl@1371
 49184
+	    deplibs="$dir/$old_library $deplibs"
mgl@1371
 49185
+	    link_static=yes
mgl@1371
 49186
+	  fi
mgl@1371
 49187
+	fi # link shared/static library?
mgl@1371
 49188
+
mgl@1371
 49189
+	if test "$linkmode" = lib; then
mgl@1371
 49190
+	  if test -n "$dependency_libs" &&
mgl@1371
 49191
+	     { test "$hardcode_into_libs" != yes ||
mgl@1371
 49192
+	       test "$build_old_libs" = yes ||
mgl@1371
 49193
+	       test "$link_static" = yes; }; then
mgl@1371
 49194
+	    # Extract -R from dependency_libs
mgl@1371
 49195
+	    temp_deplibs=
mgl@1371
 49196
+	    for libdir in $dependency_libs; do
mgl@1371
 49197
+	      case $libdir in
mgl@1371
 49198
+	      -R*) func_stripname '-R' '' "$libdir"
mgl@1371
 49199
+	           temp_xrpath=$func_stripname_result
mgl@1371
 49200
+		   case " $xrpath " in
mgl@1371
 49201
+		   *" $temp_xrpath "*) ;;
mgl@1371
 49202
+		   *) xrpath="$xrpath $temp_xrpath";;
mgl@1371
 49203
+		   esac;;
mgl@1371
 49204
+	      *) temp_deplibs="$temp_deplibs $libdir";;
mgl@1371
 49205
+	      esac
mgl@1371
 49206
+	    done
mgl@1371
 49207
+	    dependency_libs="$temp_deplibs"
mgl@1371
 49208
+	  fi
mgl@1371
 49209
+
mgl@1371
 49210
+	  newlib_search_path="$newlib_search_path $absdir"
mgl@1371
 49211
+	  # Link against this library
mgl@1371
 49212
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
mgl@1371
 49213
+	  # ... and its dependency_libs
mgl@1371
 49214
+	  tmp_libs=
mgl@1371
 49215
+	  for deplib in $dependency_libs; do
mgl@1371
 49216
+	    newdependency_libs="$deplib $newdependency_libs"
mgl@1371
 49217
+	    if $opt_duplicate_deps ; then
mgl@1371
 49218
+	      case "$tmp_libs " in
mgl@1371
 49219
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
mgl@1371
 49220
+	      esac
mgl@1371
 49221
+	    fi
mgl@1371
 49222
+	    tmp_libs="$tmp_libs $deplib"
mgl@1371
 49223
+	  done
mgl@1371
 49224
+
mgl@1371
 49225
+	  if test "$link_all_deplibs" != no; then
mgl@1371
 49226
+	    # Add the search paths of all dependency libraries
mgl@1371
 49227
+	    for deplib in $dependency_libs; do
mgl@1371
 49228
+	      case $deplib in
mgl@1371
 49229
+	      -L*) path="$deplib" ;;
mgl@1371
 49230
+	      *.la)
mgl@1371
 49231
+	        func_dirname "$deplib" "" "."
mgl@1371
 49232
+		dir="$func_dirname_result"
mgl@1371
 49233
+		# We need an absolute path.
mgl@1371
 49234
+		case $dir in
mgl@1371
 49235
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
mgl@1371
 49236
+		*)
mgl@1371
 49237
+		  absdir=`cd "$dir" && pwd`
mgl@1371
 49238
+		  if test -z "$absdir"; then
mgl@1371
 49239
+		    func_warning "cannot determine absolute directory name of \`$dir'"
mgl@1371
 49240
+		    absdir="$dir"
mgl@1371
 49241
+		  fi
mgl@1371
 49242
+		  ;;
mgl@1371
 49243
+		esac
mgl@1371
 49244
+		if $GREP "^installed=no" $deplib > /dev/null; then
mgl@1371
 49245
+		case $host in
mgl@1371
 49246
+		*-*-darwin*)
mgl@1371
 49247
+		  depdepl=
mgl@1371
 49248
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
mgl@1371
 49249
+		  if test -n "$deplibrary_names" ; then
mgl@1371
 49250
+		    for tmp in $deplibrary_names ; do
mgl@1371
 49251
+		      depdepl=$tmp
mgl@1371
 49252
+		    done
mgl@1371
 49253
+		    if test -f "$absdir/$objdir/$depdepl" ; then
mgl@1371
 49254
+		      depdepl="$absdir/$objdir/$depdepl"
mgl@1371
 49255
+		      darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
mgl@1371
 49256
+		      darwin_install_name=`$ECHO $darwin_install_name`
mgl@1371
 49257
+                      if test -z "$darwin_install_name"; then
mgl@1371
 49258
+                          darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
mgl@1371
 49259
+                          darwin_install_name=`$ECHO $darwin_install_name`
mgl@1371
 49260
+                      fi
mgl@1371
 49261
+		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
mgl@1371
 49262
+		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
mgl@1371
 49263
+		      path=
mgl@1371
 49264
+		    fi
mgl@1371
 49265
+		  fi
mgl@1371
 49266
+		  ;;
mgl@1371
 49267
+		*)
mgl@1371
 49268
+		  path="-L$absdir/$objdir"
mgl@1371
 49269
+		  ;;
mgl@1371
 49270
+		esac
mgl@1371
 49271
+		else
mgl@1371
 49272
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
mgl@1371
 49273
+		  test -z "$libdir" && \
mgl@1371
 49274
+		    func_fatal_error "\`$deplib' is not a valid libtool archive"
mgl@1371
 49275
+		  test "$absdir" != "$libdir" && \
mgl@1371
 49276
+		    func_warning "\`$deplib' seems to be moved"
mgl@1371
 49277
+
mgl@1371
 49278
+		  path="-L$absdir"
mgl@1371
 49279
+		fi
mgl@1371
 49280
+		;;
mgl@1371
 49281
+	      esac
mgl@1371
 49282
+	      case " $deplibs " in
mgl@1371
 49283
+	      *" $path "*) ;;
mgl@1371
 49284
+	      *) deplibs="$path $deplibs" ;;
mgl@1371
 49285
+	      esac
mgl@1371
 49286
+	    done
mgl@1371
 49287
+	  fi # link_all_deplibs != no
mgl@1371
 49288
+	fi # linkmode = lib
mgl@1371
 49289
+      done # for deplib in $libs
mgl@1371
 49290
+      dependency_libs="$newdependency_libs"
mgl@1371
 49291
+      if test "$pass" = dlpreopen; then
mgl@1371
 49292
+	# Link the dlpreopened libraries before other libraries
mgl@1371
 49293
+	for deplib in $save_deplibs; do
mgl@1371
 49294
+	  deplibs="$deplib $deplibs"
mgl@1371
 49295
+	done
mgl@1371
 49296
+      fi
mgl@1371
 49297
+      if test "$pass" != dlopen; then
mgl@1371
 49298
+	if test "$pass" != conv; then
mgl@1371
 49299
+	  # Make sure lib_search_path contains only unique directories.
mgl@1371
 49300
+	  lib_search_path=
mgl@1371
 49301
+	  for dir in $newlib_search_path; do
mgl@1371
 49302
+	    case "$lib_search_path " in
mgl@1371
 49303
+	    *" $dir "*) ;;
mgl@1371
 49304
+	    *) lib_search_path="$lib_search_path $dir" ;;
mgl@1371
 49305
+	    esac
mgl@1371
 49306
+	  done
mgl@1371
 49307
+	  newlib_search_path=
mgl@1371
 49308
+	fi
mgl@1371
 49309
+
mgl@1371
 49310
+	if test "$linkmode,$pass" != "prog,link"; then
mgl@1371
 49311
+	  vars="deplibs"
mgl@1371
 49312
+	else
mgl@1371
 49313
+	  vars="compile_deplibs finalize_deplibs"
mgl@1371
 49314
+	fi
mgl@1371
 49315
+	for var in $vars dependency_libs; do
mgl@1371
 49316
+	  # Add libraries to $var in reverse order
mgl@1371
 49317
+	  eval tmp_libs=\"\$$var\"
mgl@1371
 49318
+	  new_libs=
mgl@1371
 49319
+	  for deplib in $tmp_libs; do
mgl@1371
 49320
+	    # FIXME: Pedantically, this is the right thing to do, so
mgl@1371
 49321
+	    #        that some nasty dependency loop isn't accidentally
mgl@1371
 49322
+	    #        broken:
mgl@1371
 49323
+	    #new_libs="$deplib $new_libs"
mgl@1371
 49324
+	    # Pragmatically, this seems to cause very few problems in
mgl@1371
 49325
+	    # practice:
mgl@1371
 49326
+	    case $deplib in
mgl@1371
 49327
+	    -L*) new_libs="$deplib $new_libs" ;;
mgl@1371
 49328
+	    -R*) ;;
mgl@1371
 49329
+	    *)
mgl@1371
 49330
+	      # And here is the reason: when a library appears more
mgl@1371
 49331
+	      # than once as an explicit dependence of a library, or
mgl@1371
 49332
+	      # is implicitly linked in more than once by the
mgl@1371
 49333
+	      # compiler, it is considered special, and multiple
mgl@1371
 49334
+	      # occurrences thereof are not removed.  Compare this
mgl@1371
 49335
+	      # with having the same library being listed as a
mgl@1371
 49336
+	      # dependency of multiple other libraries: in this case,
mgl@1371
 49337
+	      # we know (pedantically, we assume) the library does not
mgl@1371
 49338
+	      # need to be listed more than once, so we keep only the
mgl@1371
 49339
+	      # last copy.  This is not always right, but it is rare
mgl@1371
 49340
+	      # enough that we require users that really mean to play
mgl@1371
 49341
+	      # such unportable linking tricks to link the library
mgl@1371
 49342
+	      # using -Wl,-lname, so that libtool does not consider it
mgl@1371
 49343
+	      # for duplicate removal.
mgl@1371
 49344
+	      case " $specialdeplibs " in
mgl@1371
 49345
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
mgl@1371
 49346
+	      *)
mgl@1371
 49347
+		case " $new_libs " in
mgl@1371
 49348
+		*" $deplib "*) ;;
mgl@1371
 49349
+		*) new_libs="$deplib $new_libs" ;;
mgl@1371
 49350
+		esac
mgl@1371
 49351
+		;;
mgl@1371
 49352
+	      esac
mgl@1371
 49353
+	      ;;
mgl@1371
 49354
+	    esac
mgl@1371
 49355
+	  done
mgl@1371
 49356
+	  tmp_libs=
mgl@1371
 49357
+	  for deplib in $new_libs; do
mgl@1371
 49358
+	    case $deplib in
mgl@1371
 49359
+	    -L*)
mgl@1371
 49360
+	      case " $tmp_libs " in
mgl@1371
 49361
+	      *" $deplib "*) ;;
mgl@1371
 49362
+	      *) tmp_libs="$tmp_libs $deplib" ;;
mgl@1371
 49363
+	      esac
mgl@1371
 49364
+	      ;;
mgl@1371
 49365
+	    *) tmp_libs="$tmp_libs $deplib" ;;
mgl@1371
 49366
+	    esac
mgl@1371
 49367
+	  done
mgl@1371
 49368
+	  eval $var=\"$tmp_libs\"
mgl@1371
 49369
+	done # for var
mgl@1371
 49370
+      fi
mgl@1371
 49371
+      # Last step: remove runtime libs from dependency_libs
mgl@1371
 49372
+      # (they stay in deplibs)
mgl@1371
 49373
+      tmp_libs=
mgl@1371
 49374
+      for i in $dependency_libs ; do
mgl@1371
 49375
+	case " $predeps $postdeps $compiler_lib_search_path " in
mgl@1371
 49376
+	*" $i "*)
mgl@1371
 49377
+	  i=""
mgl@1371
 49378
+	  ;;
mgl@1371
 49379
+	esac
mgl@1371
 49380
+	if test -n "$i" ; then
mgl@1371
 49381
+	  tmp_libs="$tmp_libs $i"
mgl@1371
 49382
+	fi
mgl@1371
 49383
+      done
mgl@1371
 49384
+      dependency_libs=$tmp_libs
mgl@1371
 49385
+    done # for pass
mgl@1371
 49386
+    if test "$linkmode" = prog; then
mgl@1371
 49387
+      dlfiles="$newdlfiles"
mgl@1371
 49388
+    fi
mgl@1371
 49389
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
mgl@1371
 49390
+      dlprefiles="$newdlprefiles"
mgl@1371
 49391
+    fi
mgl@1371
 49392
+
mgl@1371
 49393
+    case $linkmode in
mgl@1371
 49394
+    oldlib)
mgl@1371
 49395
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
mgl@1371
 49396
+	func_warning "\`-dlopen' is ignored for archives"
mgl@1371
 49397
+      fi
mgl@1371
 49398
+
mgl@1371
 49399
+      test -n "$deplibs" && \
mgl@1371
 49400
+	func_warning "\`-l' and \`-L' are ignored for archives"
mgl@1371
 49401
+
mgl@1371
 49402
+
mgl@1371
 49403
+      test -n "$rpath" && \
mgl@1371
 49404
+	func_warning "\`-rpath' is ignored for archives"
mgl@1371
 49405
+
mgl@1371
 49406
+      test -n "$xrpath" && \
mgl@1371
 49407
+	func_warning "\`-R' is ignored for archives"
mgl@1371
 49408
+
mgl@1371
 49409
+      test -n "$vinfo" && \
mgl@1371
 49410
+	func_warning "\`-version-info/-version-number' is ignored for archives"
mgl@1371
 49411
+
mgl@1371
 49412
+      test -n "$release" && \
mgl@1371
 49413
+	func_warning "\`-release' is ignored for archives"
mgl@1371
 49414
+
mgl@1371
 49415
+      test -n "$export_symbols$export_symbols_regex" && \
mgl@1371
 49416
+	func_warning "\`-export-symbols' is ignored for archives"
mgl@1371
 49417
+
mgl@1371
 49418
+      # Now set the variables for building old libraries.
mgl@1371
 49419
+      build_libtool_libs=no
mgl@1371
 49420
+      oldlibs="$output"
mgl@1371
 49421
+      objs="$objs$old_deplibs"
mgl@1371
 49422
+      ;;
mgl@1371
 49423
+
mgl@1371
 49424
+    lib)
mgl@1371
 49425
+      # Make sure we only generate libraries of the form `libNAME.la'.
mgl@1371
 49426
+      case $outputname in
mgl@1371
 49427
+      lib*)
mgl@1371
 49428
+	func_stripname 'lib' '.la' "$outputname"
mgl@1371
 49429
+	name=$func_stripname_result
mgl@1371
 49430
+	eval shared_ext=\"$shrext_cmds\"
mgl@1371
 49431
+	eval libname=\"$libname_spec\"
mgl@1371
 49432
+	;;
mgl@1371
 49433
+      *)
mgl@1371
 49434
+	test "$module" = no && \
mgl@1371
 49435
+	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
mgl@1371
 49436
+
mgl@1371
 49437
+	if test "$need_lib_prefix" != no; then
mgl@1371
 49438
+	  # Add the "lib" prefix for modules if required
mgl@1371
 49439
+	  func_stripname '' '.la' "$outputname"
mgl@1371
 49440
+	  name=$func_stripname_result
mgl@1371
 49441
+	  eval shared_ext=\"$shrext_cmds\"
mgl@1371
 49442
+	  eval libname=\"$libname_spec\"
mgl@1371
 49443
+	else
mgl@1371
 49444
+	  func_stripname '' '.la' "$outputname"
mgl@1371
 49445
+	  libname=$func_stripname_result
mgl@1371
 49446
+	fi
mgl@1371
 49447
+	;;
mgl@1371
 49448
+      esac
mgl@1371
 49449
+
mgl@1371
 49450
+      if test -n "$objs"; then
mgl@1371
 49451
+	if test "$deplibs_check_method" != pass_all; then
mgl@1371
 49452
+	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
mgl@1371
 49453
+	else
mgl@1371
 49454
+	  $ECHO
mgl@1371
 49455
+	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
mgl@1371
 49456
+	  $ECHO "*** objects $objs is not portable!"
mgl@1371
 49457
+	  libobjs="$libobjs $objs"
mgl@1371
 49458
+	fi
mgl@1371
 49459
+      fi
mgl@1371
 49460
+
mgl@1371
 49461
+      test "$dlself" != no && \
mgl@1371
 49462
+	func_warning "\`-dlopen self' is ignored for libtool libraries"
mgl@1371
 49463
+
mgl@1371
 49464
+      set dummy $rpath
mgl@1371
 49465
+      shift
mgl@1371
 49466
+      test "$#" -gt 1 && \
mgl@1371
 49467
+	func_warning "ignoring multiple \`-rpath's for a libtool library"
mgl@1371
 49468
+
mgl@1371
 49469
+      install_libdir="$1"
mgl@1371
 49470
+
mgl@1371
 49471
+      oldlibs=
mgl@1371
 49472
+      if test -z "$rpath"; then
mgl@1371
 49473
+	if test "$build_libtool_libs" = yes; then
mgl@1371
 49474
+	  # Building a libtool convenience library.
mgl@1371
 49475
+	  # Some compilers have problems with a `.al' extension so
mgl@1371
 49476
+	  # convenience libraries should have the same extension an
mgl@1371
 49477
+	  # archive normally would.
mgl@1371
 49478
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
mgl@1371
 49479
+	  build_libtool_libs=convenience
mgl@1371
 49480
+	  build_old_libs=yes
mgl@1371
 49481
+	fi
mgl@1371
 49482
+
mgl@1371
 49483
+	test -n "$vinfo" && \
mgl@1371
 49484
+	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
mgl@1371
 49485
+
mgl@1371
 49486
+	test -n "$release" && \
mgl@1371
 49487
+	  func_warning "\`-release' is ignored for convenience libraries"
mgl@1371
 49488
+      else
mgl@1371
 49489
+
mgl@1371
 49490
+	# Parse the version information argument.
mgl@1371
 49491
+	save_ifs="$IFS"; IFS=':'
mgl@1371
 49492
+	set dummy $vinfo 0 0 0
mgl@1371
 49493
+	shift
mgl@1371
 49494
+	IFS="$save_ifs"
mgl@1371
 49495
+
mgl@1371
 49496
+	test -n "$7" && \
mgl@1371
 49497
+	  func_fatal_help "too many parameters to \`-version-info'"
mgl@1371
 49498
+
mgl@1371
 49499
+	# convert absolute version numbers to libtool ages
mgl@1371
 49500
+	# this retains compatibility with .la files and attempts
mgl@1371
 49501
+	# to make the code below a bit more comprehensible
mgl@1371
 49502
+
mgl@1371
 49503
+	case $vinfo_number in
mgl@1371
 49504
+	yes)
mgl@1371
 49505
+	  number_major="$1"
mgl@1371
 49506
+	  number_minor="$2"
mgl@1371
 49507
+	  number_revision="$3"
mgl@1371
 49508
+	  #
mgl@1371
 49509
+	  # There are really only two kinds -- those that
mgl@1371
 49510
+	  # use the current revision as the major version
mgl@1371
 49511
+	  # and those that subtract age and use age as
mgl@1371
 49512
+	  # a minor version.  But, then there is irix
mgl@1371
 49513
+	  # which has an extra 1 added just for fun
mgl@1371
 49514
+	  #
mgl@1371
 49515
+	  case $version_type in
mgl@1371
 49516
+	  darwin|linux|osf|windows|none)
mgl@1371
 49517
+	    current=`expr $number_major + $number_minor`
mgl@1371
 49518
+	    age="$number_minor"
mgl@1371
 49519
+	    revision="$number_revision"
mgl@1371
 49520
+	    ;;
mgl@1371
 49521
+	  freebsd-aout|freebsd-elf|sunos)
mgl@1371
 49522
+	    current="$number_major"
mgl@1371
 49523
+	    revision="$number_minor"
mgl@1371
 49524
+	    age="0"
mgl@1371
 49525
+	    ;;
mgl@1371
 49526
+	  irix|nonstopux)
mgl@1371
 49527
+	    current=`expr $number_major + $number_minor - 1`
mgl@1371
 49528
+	    age="$number_minor"
mgl@1371
 49529
+	    revision="$number_minor"
mgl@1371
 49530
+	    ;;
mgl@1371
 49531
+	  esac
mgl@1371
 49532
+	  ;;
mgl@1371
 49533
+	no)
mgl@1371
 49534
+	  current="$1"
mgl@1371
 49535
+	  revision="$2"
mgl@1371
 49536
+	  age="$3"
mgl@1371
 49537
+	  ;;
mgl@1371
 49538
+	esac
mgl@1371
 49539
+
mgl@1371
 49540
+	# Check that each of the things are valid numbers.
mgl@1371
 49541
+	case $current in
mgl@1371
 49542
+	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]) ;;
mgl@1371
 49543
+	*)
mgl@1371
 49544
+	  func_error "CURRENT \`$current' must be a nonnegative integer"
mgl@1371
 49545
+	  func_fatal_error "\`$vinfo' is not valid version information"
mgl@1371
 49546
+	  ;;
mgl@1371
 49547
+	esac
mgl@1371
 49548
+
mgl@1371
 49549
+	case $revision in
mgl@1371
 49550
+	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]) ;;
mgl@1371
 49551
+	*)
mgl@1371
 49552
+	  func_error "REVISION \`$revision' must be a nonnegative integer"
mgl@1371
 49553
+	  func_fatal_error "\`$vinfo' is not valid version information"
mgl@1371
 49554
+	  ;;
mgl@1371
 49555
+	esac
mgl@1371
 49556
+
mgl@1371
 49557
+	case $age in
mgl@1371
 49558
+	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]) ;;
mgl@1371
 49559
+	*)
mgl@1371
 49560
+	  func_error "AGE \`$age' must be a nonnegative integer"
mgl@1371
 49561
+	  func_fatal_error "\`$vinfo' is not valid version information"
mgl@1371
 49562
+	  ;;
mgl@1371
 49563
+	esac
mgl@1371
 49564
+
mgl@1371
 49565
+	if test "$age" -gt "$current"; then
mgl@1371
 49566
+	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
mgl@1371
 49567
+	  func_fatal_error "\`$vinfo' is not valid version information"
mgl@1371
 49568
+	fi
mgl@1371
 49569
+
mgl@1371
 49570
+	# Calculate the version variables.
mgl@1371
 49571
+	major=
mgl@1371
 49572
+	versuffix=
mgl@1371
 49573
+	verstring=
mgl@1371
 49574
+	case $version_type in
mgl@1371
 49575
+	none) ;;
mgl@1371
 49576
+
mgl@1371
 49577
+	darwin)
mgl@1371
 49578
+	  # Like Linux, but with the current version available in
mgl@1371
 49579
+	  # verstring for coding it into the library header
mgl@1371
 49580
+	  major=.`expr $current - $age`
mgl@1371
 49581
+	  versuffix="$major.$age.$revision"
mgl@1371
 49582
+	  # Darwin ld doesn't like 0 for these options...
mgl@1371
 49583
+	  minor_current=`expr $current + 1`
mgl@1371
 49584
+	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
mgl@1371
 49585
+	  ;;
mgl@1371
 49586
+
mgl@1371
 49587
+	freebsd-aout)
mgl@1371
 49588
+	  major=".$current"
mgl@1371
 49589
+	  versuffix=".$current.$revision";
mgl@1371
 49590
+	  ;;
mgl@1371
 49591
+
mgl@1371
 49592
+	freebsd-elf)
mgl@1371
 49593
+	  major=".$current"
mgl@1371
 49594
+	  versuffix=".$current"
mgl@1371
 49595
+	  ;;
mgl@1371
 49596
+
mgl@1371
 49597
+	irix | nonstopux)
mgl@1371
 49598
+	  major=`expr $current - $age + 1`
mgl@1371
 49599
+
mgl@1371
 49600
+	  case $version_type in
mgl@1371
 49601
+	    nonstopux) verstring_prefix=nonstopux ;;
mgl@1371
 49602
+	    *)         verstring_prefix=sgi ;;
mgl@1371
 49603
+	  esac
mgl@1371
 49604
+	  verstring="$verstring_prefix$major.$revision"
mgl@1371
 49605
+
mgl@1371
 49606
+	  # Add in all the interfaces that we are compatible with.
mgl@1371
 49607
+	  loop=$revision
mgl@1371
 49608
+	  while test "$loop" -ne 0; do
mgl@1371
 49609
+	    iface=`expr $revision - $loop`
mgl@1371
 49610
+	    loop=`expr $loop - 1`
mgl@1371
 49611
+	    verstring="$verstring_prefix$major.$iface:$verstring"
mgl@1371
 49612
+	  done
mgl@1371
 49613
+
mgl@1371
 49614
+	  # Before this point, $major must not contain `.'.
mgl@1371
 49615
+	  major=.$major
mgl@1371
 49616
+	  versuffix="$major.$revision"
mgl@1371
 49617
+	  ;;
mgl@1371
 49618
+
mgl@1371
 49619
+	linux)
mgl@1371
 49620
+	  major=.`expr $current - $age`
mgl@1371
 49621
+	  versuffix="$major.$age.$revision"
mgl@1371
 49622
+	  ;;
mgl@1371
 49623
+
mgl@1371
 49624
+	osf)
mgl@1371
 49625
+	  major=.`expr $current - $age`
mgl@1371
 49626
+	  versuffix=".$current.$age.$revision"
mgl@1371
 49627
+	  verstring="$current.$age.$revision"
mgl@1371
 49628
+
mgl@1371
 49629
+	  # Add in all the interfaces that we are compatible with.
mgl@1371
 49630
+	  loop=$age
mgl@1371
 49631
+	  while test "$loop" -ne 0; do
mgl@1371
 49632
+	    iface=`expr $current - $loop`
mgl@1371
 49633
+	    loop=`expr $loop - 1`
mgl@1371
 49634
+	    verstring="$verstring:${iface}.0"
mgl@1371
 49635
+	  done
mgl@1371
 49636
+
mgl@1371
 49637
+	  # Make executables depend on our current version.
mgl@1371
 49638
+	  verstring="$verstring:${current}.0"
mgl@1371
 49639
+	  ;;
mgl@1371
 49640
+
mgl@1371
 49641
+	qnx)
mgl@1371
 49642
+	  major=".$current"
mgl@1371
 49643
+	  versuffix=".$current"
mgl@1371
 49644
+	  ;;
mgl@1371
 49645
+
mgl@1371
 49646
+	sunos)
mgl@1371
 49647
+	  major=".$current"
mgl@1371
 49648
+	  versuffix=".$current.$revision"
mgl@1371
 49649
+	  ;;
mgl@1371
 49650
+
mgl@1371
 49651
+	windows)
mgl@1371
 49652
+	  # Use '-' rather than '.', since we only want one
mgl@1371
 49653
+	  # extension on DOS 8.3 filesystems.
mgl@1371
 49654
+	  major=`expr $current - $age`
mgl@1371
 49655
+	  versuffix="-$major"
mgl@1371
 49656
+	  ;;
mgl@1371
 49657
+
mgl@1371
 49658
+	*)
mgl@1371
 49659
+	  func_fatal_configuration "unknown library version type \`$version_type'"
mgl@1371
 49660
+	  ;;
mgl@1371
 49661
+	esac
mgl@1371
 49662
+
mgl@1371
 49663
+	# Clear the version info if we defaulted, and they specified a release.
mgl@1371
 49664
+	if test -z "$vinfo" && test -n "$release"; then
mgl@1371
 49665
+	  major=
mgl@1371
 49666
+	  case $version_type in
mgl@1371
 49667
+	  darwin)
mgl@1371
 49668
+	    # we can't check for "0.0" in archive_cmds due to quoting
mgl@1371
 49669
+	    # problems, so we reset it completely
mgl@1371
 49670
+	    verstring=
mgl@1371
 49671
+	    ;;
mgl@1371
 49672
+	  *)
mgl@1371
 49673
+	    verstring="0.0"
mgl@1371
 49674
+	    ;;
mgl@1371
 49675
+	  esac
mgl@1371
 49676
+	  if test "$need_version" = no; then
mgl@1371
 49677
+	    versuffix=
mgl@1371
 49678
+	  else
mgl@1371
 49679
+	    versuffix=".0.0"
mgl@1371
 49680
+	  fi
mgl@1371
 49681
+	fi
mgl@1371
 49682
+
mgl@1371
 49683
+	# Remove version info from name if versioning should be avoided
mgl@1371
 49684
+	if test "$avoid_version" = yes && test "$need_version" = no; then
mgl@1371
 49685
+	  major=
mgl@1371
 49686
+	  versuffix=
mgl@1371
 49687
+	  verstring=""
mgl@1371
 49688
+	fi
mgl@1371
 49689
+
mgl@1371
 49690
+	# Check to see if the archive will have undefined symbols.
mgl@1371
 49691
+	if test "$allow_undefined" = yes; then
mgl@1371
 49692
+	  if test "$allow_undefined_flag" = unsupported; then
mgl@1371
 49693
+	    func_warning "undefined symbols not allowed in $host shared libraries"
mgl@1371
 49694
+	    build_libtool_libs=no
mgl@1371
 49695
+	    build_old_libs=yes
mgl@1371
 49696
+	  fi
mgl@1371
 49697
+	else
mgl@1371
 49698
+	  # Don't allow undefined symbols.
mgl@1371
 49699
+	  allow_undefined_flag="$no_undefined_flag"
mgl@1371
 49700
+	fi
mgl@1371
 49701
+
mgl@1371
 49702
+      fi
mgl@1371
 49703
+
mgl@1371
 49704
+      func_generate_dlsyms "$libname" "$libname" "yes"
mgl@1371
 49705
+      libobjs="$libobjs $symfileobj"
mgl@1371
 49706
+      test "X$libobjs" = "X " && libobjs=
mgl@1371
 49707
+
mgl@1371
 49708
+      if test "$mode" != relink; then
mgl@1371
 49709
+	# Remove our outputs, but don't remove object files since they
mgl@1371
 49710
+	# may have been created when compiling PIC objects.
mgl@1371
 49711
+	removelist=
mgl@1371
 49712
+	tempremovelist=`$ECHO "$output_objdir/*"`
mgl@1371
 49713
+	for p in $tempremovelist; do
mgl@1371
 49714
+	  case $p in
mgl@1371
 49715
+	    *.$objext)
mgl@1371
 49716
+	       ;;
mgl@1371
 49717
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
mgl@1371
 49718
+	       if test "X$precious_files_regex" != "X"; then
mgl@1371
 49719
+		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
mgl@1371
 49720
+		 then
mgl@1371
 49721
+		   continue
mgl@1371
 49722
+		 fi
mgl@1371
 49723
+	       fi
mgl@1371
 49724
+	       removelist="$removelist $p"
mgl@1371
 49725
+	       ;;
mgl@1371
 49726
+	    *) ;;
mgl@1371
 49727
+	  esac
mgl@1371
 49728
+	done
mgl@1371
 49729
+	test -n "$removelist" && \
mgl@1371
 49730
+	  func_show_eval "${RM}r \$removelist"
mgl@1371
 49731
+      fi
mgl@1371
 49732
+
mgl@1371
 49733
+      # Now set the variables for building old libraries.
mgl@1371
 49734
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
mgl@1371
 49735
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
mgl@1371
 49736
+
mgl@1371
 49737
+	# Transform .lo files to .o files.
mgl@1371
 49738
+	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
mgl@1371
 49739
+      fi
mgl@1371
 49740
+
mgl@1371
 49741
+      # Eliminate all temporary directories.
mgl@1371
 49742
+      #for path in $notinst_path; do
mgl@1371
 49743
+      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
mgl@1371
 49744
+      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
mgl@1371
 49745
+      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
mgl@1371
 49746
+      #done
mgl@1371
 49747
+
mgl@1371
 49748
+      if test -n "$xrpath"; then
mgl@1371
 49749
+	# If the user specified any rpath flags, then add them.
mgl@1371
 49750
+	temp_xrpath=
mgl@1371
 49751
+	for libdir in $xrpath; do
mgl@1371
 49752
+	  temp_xrpath="$temp_xrpath -R$libdir"
mgl@1371
 49753
+	  case "$finalize_rpath " in
mgl@1371
 49754
+	  *" $libdir "*) ;;
mgl@1371
 49755
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
mgl@1371
 49756
+	  esac
mgl@1371
 49757
+	done
mgl@1371
 49758
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
mgl@1371
 49759
+	  dependency_libs="$temp_xrpath $dependency_libs"
mgl@1371
 49760
+	fi
mgl@1371
 49761
+      fi
mgl@1371
 49762
+
mgl@1371
 49763
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
mgl@1371
 49764
+      old_dlfiles="$dlfiles"
mgl@1371
 49765
+      dlfiles=
mgl@1371
 49766
+      for lib in $old_dlfiles; do
mgl@1371
 49767
+	case " $dlprefiles $dlfiles " in
mgl@1371
 49768
+	*" $lib "*) ;;
mgl@1371
 49769
+	*) dlfiles="$dlfiles $lib" ;;
mgl@1371
 49770
+	esac
mgl@1371
 49771
+      done
mgl@1371
 49772
+
mgl@1371
 49773
+      # Make sure dlprefiles contains only unique files
mgl@1371
 49774
+      old_dlprefiles="$dlprefiles"
mgl@1371
 49775
+      dlprefiles=
mgl@1371
 49776
+      for lib in $old_dlprefiles; do
mgl@1371
 49777
+	case "$dlprefiles " in
mgl@1371
 49778
+	*" $lib "*) ;;
mgl@1371
 49779
+	*) dlprefiles="$dlprefiles $lib" ;;
mgl@1371
 49780
+	esac
mgl@1371
 49781
+      done
mgl@1371
 49782
+
mgl@1371
 49783
+      if test "$build_libtool_libs" = yes; then
mgl@1371
 49784
+	if test -n "$rpath"; then
mgl@1371
 49785
+	  case $host in
mgl@1371
 49786
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
mgl@1371
 49787
+	    # these systems don't actually have a c library (as such)!
mgl@1371
 49788
+	    ;;
mgl@1371
 49789
+	  *-*-rhapsody* | *-*-darwin1.[012])
mgl@1371
 49790
+	    # Rhapsody C library is in the System framework
mgl@1371
 49791
+	    deplibs="$deplibs System.ltframework"
mgl@1371
 49792
+	    ;;
mgl@1371
 49793
+	  *-*-netbsd*)
mgl@1371
 49794
+	    # Don't link with libc until the a.out ld.so is fixed.
mgl@1371
 49795
+	    ;;
mgl@1371
 49796
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
mgl@1371
 49797
+	    # Do not include libc due to us having libc/libc_r.
mgl@1371
 49798
+	    ;;
mgl@1371
 49799
+	  *-*-sco3.2v5* | *-*-sco5v6*)
mgl@1371
 49800
+	    # Causes problems with __ctype
mgl@1371
 49801
+	    ;;
mgl@1371
 49802
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
mgl@1371
 49803
+	    # Compiler inserts libc in the correct place for threads to work
mgl@1371
 49804
+ 	    ;;
mgl@1371
 49805
+ 	  *)
mgl@1371
 49806
+	    # Add libc to deplibs on all other systems if necessary.
mgl@1371
 49807
+	    if test "$build_libtool_need_lc" = "yes"; then
mgl@1371
 49808
+	      deplibs="$deplibs -lc"
mgl@1371
 49809
+	    fi
mgl@1371
 49810
+	    ;;
mgl@1371
 49811
+	  esac
mgl@1371
 49812
+	fi
mgl@1371
 49813
+
mgl@1371
 49814
+	# Transform deplibs into only deplibs that can be linked in shared.
mgl@1371
 49815
+	name_save=$name
mgl@1371
 49816
+	libname_save=$libname
mgl@1371
 49817
+	release_save=$release
mgl@1371
 49818
+	versuffix_save=$versuffix
mgl@1371
 49819
+	major_save=$major
mgl@1371
 49820
+	# I'm not sure if I'm treating the release correctly.  I think
mgl@1371
 49821
+	# release should show up in the -l (ie -lgmp5) so we don't want to
mgl@1371
 49822
+	# add it in twice.  Is that correct?
mgl@1371
 49823
+	release=""
mgl@1371
 49824
+	versuffix=""
mgl@1371
 49825
+	major=""
mgl@1371
 49826
+	newdeplibs=
mgl@1371
 49827
+	droppeddeps=no
mgl@1371
 49828
+	case $deplibs_check_method in
mgl@1371
 49829
+	pass_all)
mgl@1371
 49830
+	  # Don't check for shared/static.  Everything works.
mgl@1371
 49831
+	  # This might be a little naive.  We might want to check
mgl@1371
 49832
+	  # whether the library exists or not.  But this is on
mgl@1371
 49833
+	  # osf3 & osf4 and I'm not really sure... Just
mgl@1371
 49834
+	  # implementing what was already the behavior.
mgl@1371
 49835
+	  newdeplibs=$deplibs
mgl@1371
 49836
+	  ;;
mgl@1371
 49837
+	test_compile)
mgl@1371
 49838
+	  # This code stresses the "libraries are programs" paradigm to its
mgl@1371
 49839
+	  # limits. Maybe even breaks it.  We compile a program, linking it
mgl@1371
 49840
+	  # against the deplibs as a proxy for the library.  Then we can check
mgl@1371
 49841
+	  # whether they linked in statically or dynamically with ldd.
mgl@1371
 49842
+	  $opt_dry_run || $RM conftest.c
mgl@1371
 49843
+	  cat > conftest.c <<EOF
mgl@1371
 49844
+	  int main() { return 0; }
mgl@1371
 49845
+EOF
mgl@1371
 49846
+	  $opt_dry_run || $RM conftest
mgl@1371
 49847
+	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
mgl@1371
 49848
+	    ldd_output=`ldd conftest`
mgl@1371
 49849
+	    for i in $deplibs; do
mgl@1371
 49850
+	      name=`expr $i : '-l\(.*\)'`
mgl@1371
 49851
+	      # If $name is empty we are operating on a -L argument.
mgl@1371
 49852
+	      if test "$name" != "" && test "$name" != "0"; then
mgl@1371
 49853
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 49854
+		  case " $predeps $postdeps " in
mgl@1371
 49855
+		  *" $i "*)
mgl@1371
 49856
+		    newdeplibs="$newdeplibs $i"
mgl@1371
 49857
+		    i=""
mgl@1371
 49858
+		    ;;
mgl@1371
 49859
+		  esac
mgl@1371
 49860
+		fi
mgl@1371
 49861
+		if test -n "$i" ; then
mgl@1371
 49862
+		  libname=`eval "\\$ECHO \"$libname_spec\""`
mgl@1371
 49863
+		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
mgl@1371
 49864
+		  set dummy $deplib_matches; shift
mgl@1371
 49865
+		  deplib_match=$1
mgl@1371
 49866
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
mgl@1371
 49867
+		    newdeplibs="$newdeplibs $i"
mgl@1371
 49868
+		  else
mgl@1371
 49869
+		    droppeddeps=yes
mgl@1371
 49870
+		    $ECHO
mgl@1371
 49871
+		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
mgl@1371
 49872
+		    $ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 49873
+		    $ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 49874
+		    $ECHO "*** shared version of the library, which I believe you do not have"
mgl@1371
 49875
+		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
mgl@1371
 49876
+		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
mgl@1371
 49877
+		  fi
mgl@1371
 49878
+		fi
mgl@1371
 49879
+	      else
mgl@1371
 49880
+		newdeplibs="$newdeplibs $i"
mgl@1371
 49881
+	      fi
mgl@1371
 49882
+	    done
mgl@1371
 49883
+	  else
mgl@1371
 49884
+	    # Error occurred in the first compile.  Let's try to salvage
mgl@1371
 49885
+	    # the situation: Compile a separate program for each library.
mgl@1371
 49886
+	    for i in $deplibs; do
mgl@1371
 49887
+	      name=`expr $i : '-l\(.*\)'`
mgl@1371
 49888
+	      # If $name is empty we are operating on a -L argument.
mgl@1371
 49889
+	      if test "$name" != "" && test "$name" != "0"; then
mgl@1371
 49890
+		$opt_dry_run || $RM conftest
mgl@1371
 49891
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
mgl@1371
 49892
+		  ldd_output=`ldd conftest`
mgl@1371
 49893
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 49894
+		    case " $predeps $postdeps " in
mgl@1371
 49895
+		    *" $i "*)
mgl@1371
 49896
+		      newdeplibs="$newdeplibs $i"
mgl@1371
 49897
+		      i=""
mgl@1371
 49898
+		      ;;
mgl@1371
 49899
+		    esac
mgl@1371
 49900
+		  fi
mgl@1371
 49901
+		  if test -n "$i" ; then
mgl@1371
 49902
+		    libname=`eval "\\$ECHO \"$libname_spec\""`
mgl@1371
 49903
+		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
mgl@1371
 49904
+		    set dummy $deplib_matches; shift
mgl@1371
 49905
+		    deplib_match=$1
mgl@1371
 49906
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
mgl@1371
 49907
+		      newdeplibs="$newdeplibs $i"
mgl@1371
 49908
+		    else
mgl@1371
 49909
+		      droppeddeps=yes
mgl@1371
 49910
+		      $ECHO
mgl@1371
 49911
+		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
mgl@1371
 49912
+		      $ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 49913
+		      $ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 49914
+		      $ECHO "*** shared version of the library, which you do not appear to have"
mgl@1371
 49915
+		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
mgl@1371
 49916
+		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
mgl@1371
 49917
+		    fi
mgl@1371
 49918
+		  fi
mgl@1371
 49919
+		else
mgl@1371
 49920
+		  droppeddeps=yes
mgl@1371
 49921
+		  $ECHO
mgl@1371
 49922
+		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
mgl@1371
 49923
+		  $ECHO "*** make it link in!  You will probably need to install it or some"
mgl@1371
 49924
+		  $ECHO "*** library that it depends on before this library will be fully"
mgl@1371
 49925
+		  $ECHO "*** functional.  Installing it before continuing would be even better."
mgl@1371
 49926
+		fi
mgl@1371
 49927
+	      else
mgl@1371
 49928
+		newdeplibs="$newdeplibs $i"
mgl@1371
 49929
+	      fi
mgl@1371
 49930
+	    done
mgl@1371
 49931
+	  fi
mgl@1371
 49932
+	  ;;
mgl@1371
 49933
+	file_magic*)
mgl@1371
 49934
+	  set dummy $deplibs_check_method; shift
mgl@1371
 49935
+	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
mgl@1371
 49936
+	  for a_deplib in $deplibs; do
mgl@1371
 49937
+	    name=`expr $a_deplib : '-l\(.*\)'`
mgl@1371
 49938
+	    # If $name is empty we are operating on a -L argument.
mgl@1371
 49939
+	    if test "$name" != "" && test  "$name" != "0"; then
mgl@1371
 49940
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 49941
+		case " $predeps $postdeps " in
mgl@1371
 49942
+		*" $a_deplib "*)
mgl@1371
 49943
+		  newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 49944
+		  a_deplib=""
mgl@1371
 49945
+		  ;;
mgl@1371
 49946
+		esac
mgl@1371
 49947
+	      fi
mgl@1371
 49948
+	      if test -n "$a_deplib" ; then
mgl@1371
 49949
+		libname=`eval "\\$ECHO \"$libname_spec\""`
mgl@1371
 49950
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
mgl@1371
 49951
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
mgl@1371
 49952
+		  for potent_lib in $potential_libs; do
mgl@1371
 49953
+		      # Follow soft links.
mgl@1371
 49954
+		      if ls -lLd "$potent_lib" 2>/dev/null |
mgl@1371
 49955
+			 $GREP " -> " >/dev/null; then
mgl@1371
 49956
+			continue
mgl@1371
 49957
+		      fi
mgl@1371
 49958
+		      # The statement above tries to avoid entering an
mgl@1371
 49959
+		      # endless loop below, in case of cyclic links.
mgl@1371
 49960
+		      # We might still enter an endless loop, since a link
mgl@1371
 49961
+		      # loop can be closed while we follow links,
mgl@1371
 49962
+		      # but so what?
mgl@1371
 49963
+		      potlib="$potent_lib"
mgl@1371
 49964
+		      while test -h "$potlib" 2>/dev/null; do
mgl@1371
 49965
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
mgl@1371
 49966
+			case $potliblink in
mgl@1371
 49967
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
mgl@1371
 49968
+			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
mgl@1371
 49969
+			esac
mgl@1371
 49970
+		      done
mgl@1371
 49971
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
mgl@1371
 49972
+			 $SED -e 10q |
mgl@1371
 49973
+			 $EGREP "$file_magic_regex" > /dev/null; then
mgl@1371
 49974
+			newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 49975
+			a_deplib=""
mgl@1371
 49976
+			break 2
mgl@1371
 49977
+		      fi
mgl@1371
 49978
+		  done
mgl@1371
 49979
+		done
mgl@1371
 49980
+	      fi
mgl@1371
 49981
+	      if test -n "$a_deplib" ; then
mgl@1371
 49982
+		droppeddeps=yes
mgl@1371
 49983
+		$ECHO
mgl@1371
 49984
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
mgl@1371
 49985
+		$ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 49986
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 49987
+		$ECHO "*** shared version of the library, which you do not appear to have"
mgl@1371
 49988
+		$ECHO "*** because I did check the linker path looking for a file starting"
mgl@1371
 49989
+		if test -z "$potlib" ; then
mgl@1371
 49990
+		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
mgl@1371
 49991
+		else
mgl@1371
 49992
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
mgl@1371
 49993
+		  $ECHO "*** using a file magic. Last file checked: $potlib"
mgl@1371
 49994
+		fi
mgl@1371
 49995
+	      fi
mgl@1371
 49996
+	    else
mgl@1371
 49997
+	      # Add a -L argument.
mgl@1371
 49998
+	      newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 49999
+	    fi
mgl@1371
 50000
+	  done # Gone through all deplibs.
mgl@1371
 50001
+	  ;;
mgl@1371
 50002
+	match_pattern*)
mgl@1371
 50003
+	  set dummy $deplibs_check_method; shift
mgl@1371
 50004
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
mgl@1371
 50005
+	  for a_deplib in $deplibs; do
mgl@1371
 50006
+	    name=`expr $a_deplib : '-l\(.*\)'`
mgl@1371
 50007
+	    # If $name is empty we are operating on a -L argument.
mgl@1371
 50008
+	    if test -n "$name" && test "$name" != "0"; then
mgl@1371
 50009
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 50010
+		case " $predeps $postdeps " in
mgl@1371
 50011
+		*" $a_deplib "*)
mgl@1371
 50012
+		  newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 50013
+		  a_deplib=""
mgl@1371
 50014
+		  ;;
mgl@1371
 50015
+		esac
mgl@1371
 50016
+	      fi
mgl@1371
 50017
+	      if test -n "$a_deplib" ; then
mgl@1371
 50018
+		libname=`eval "\\$ECHO \"$libname_spec\""`
mgl@1371
 50019
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
mgl@1371
 50020
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
mgl@1371
 50021
+		  for potent_lib in $potential_libs; do
mgl@1371
 50022
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
mgl@1371
 50023
+		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
mgl@1371
 50024
+		       $EGREP "$match_pattern_regex" > /dev/null; then
mgl@1371
 50025
+		      newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 50026
+		      a_deplib=""
mgl@1371
 50027
+		      break 2
mgl@1371
 50028
+		    fi
mgl@1371
 50029
+		  done
mgl@1371
 50030
+		done
mgl@1371
 50031
+	      fi
mgl@1371
 50032
+	      if test -n "$a_deplib" ; then
mgl@1371
 50033
+		droppeddeps=yes
mgl@1371
 50034
+		$ECHO
mgl@1371
 50035
+		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
mgl@1371
 50036
+		$ECHO "*** I have the capability to make that library automatically link in when"
mgl@1371
 50037
+		$ECHO "*** you link to this library.  But I can only do this if you have a"
mgl@1371
 50038
+		$ECHO "*** shared version of the library, which you do not appear to have"
mgl@1371
 50039
+		$ECHO "*** because I did check the linker path looking for a file starting"
mgl@1371
 50040
+		if test -z "$potlib" ; then
mgl@1371
 50041
+		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
mgl@1371
 50042
+		else
mgl@1371
 50043
+		  $ECHO "*** with $libname and none of the candidates passed a file format test"
mgl@1371
 50044
+		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
mgl@1371
 50045
+		fi
mgl@1371
 50046
+	      fi
mgl@1371
 50047
+	    else
mgl@1371
 50048
+	      # Add a -L argument.
mgl@1371
 50049
+	      newdeplibs="$newdeplibs $a_deplib"
mgl@1371
 50050
+	    fi
mgl@1371
 50051
+	  done # Gone through all deplibs.
mgl@1371
 50052
+	  ;;
mgl@1371
 50053
+	none | unknown | *)
mgl@1371
 50054
+	  newdeplibs=""
mgl@1371
 50055
+	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
mgl@1371
 50056
+	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
mgl@1371
 50057
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
mgl@1371
 50058
+	    for i in $predeps $postdeps ; do
mgl@1371
 50059
+	      # can't use Xsed below, because $i might contain '/'
mgl@1371
 50060
+	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
mgl@1371
 50061
+	    done
mgl@1371
 50062
+	  fi
mgl@1371
 50063
+	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' |
mgl@1371
 50064
+	     $GREP . >/dev/null; then
mgl@1371
 50065
+	    $ECHO
mgl@1371
 50066
+	    if test "X$deplibs_check_method" = "Xnone"; then
mgl@1371
 50067
+	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
mgl@1371
 50068
+	    else
mgl@1371
 50069
+	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
mgl@1371
 50070
+	    fi
mgl@1371
 50071
+	    $ECHO "*** All declared inter-library dependencies are being dropped."
mgl@1371
 50072
+	    droppeddeps=yes
mgl@1371
 50073
+	  fi
mgl@1371
 50074
+	  ;;
mgl@1371
 50075
+	esac
mgl@1371
 50076
+	versuffix=$versuffix_save
mgl@1371
 50077
+	major=$major_save
mgl@1371
 50078
+	release=$release_save
mgl@1371
 50079
+	libname=$libname_save
mgl@1371
 50080
+	name=$name_save
mgl@1371
 50081
+
mgl@1371
 50082
+	case $host in
mgl@1371
 50083
+	*-*-rhapsody* | *-*-darwin1.[012])
mgl@1371
 50084
+	  # On Rhapsody replace the C library with the System framework
mgl@1371
 50085
+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
mgl@1371
 50086
+	  ;;
mgl@1371
 50087
+	esac
mgl@1371
 50088
+
mgl@1371
 50089
+	if test "$droppeddeps" = yes; then
mgl@1371
 50090
+	  if test "$module" = yes; then
mgl@1371
 50091
+	    $ECHO
mgl@1371
 50092
+	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
mgl@1371
 50093
+	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
mgl@1371
 50094
+	    $ECHO "*** a static module, that should work as long as the dlopening"
mgl@1371
 50095
+	    $ECHO "*** application is linked with the -dlopen flag."
mgl@1371
 50096
+	    if test -z "$global_symbol_pipe"; then
mgl@1371
 50097
+	      $ECHO
mgl@1371
 50098
+	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
mgl@1371
 50099
+	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
mgl@1371
 50100
+	      $ECHO "*** not find such a program.  So, this module is probably useless."
mgl@1371
 50101
+	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
mgl@1371
 50102
+	    fi
mgl@1371
 50103
+	    if test "$build_old_libs" = no; then
mgl@1371
 50104
+	      oldlibs="$output_objdir/$libname.$libext"
mgl@1371
 50105
+	      build_libtool_libs=module
mgl@1371
 50106
+	      build_old_libs=yes
mgl@1371
 50107
+	    else
mgl@1371
 50108
+	      build_libtool_libs=no
mgl@1371
 50109
+	    fi
mgl@1371
 50110
+	  else
mgl@1371
 50111
+	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
mgl@1371
 50112
+	    $ECHO "*** automatically added whenever a program is linked with this library"
mgl@1371
 50113
+	    $ECHO "*** or is declared to -dlopen it."
mgl@1371
 50114
+
mgl@1371
 50115
+	    if test "$allow_undefined" = no; then
mgl@1371
 50116
+	      $ECHO
mgl@1371
 50117
+	      $ECHO "*** Since this library must not contain undefined symbols,"
mgl@1371
 50118
+	      $ECHO "*** because either the platform does not support them or"
mgl@1371
 50119
+	      $ECHO "*** it was explicitly requested with -no-undefined,"
mgl@1371
 50120
+	      $ECHO "*** libtool will only create a static version of it."
mgl@1371
 50121
+	      if test "$build_old_libs" = no; then
mgl@1371
 50122
+		oldlibs="$output_objdir/$libname.$libext"
mgl@1371
 50123
+		build_libtool_libs=module
mgl@1371
 50124
+		build_old_libs=yes
mgl@1371
 50125
+	      else
mgl@1371
 50126
+		build_libtool_libs=no
mgl@1371
 50127
+	      fi
mgl@1371
 50128
+	    fi
mgl@1371
 50129
+	  fi
mgl@1371
 50130
+	fi
mgl@1371
 50131
+	# Done checking deplibs!
mgl@1371
 50132
+	deplibs=$newdeplibs
mgl@1371
 50133
+      fi
mgl@1371
 50134
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
mgl@1371
 50135
+      case $host in
mgl@1371
 50136
+	*-*-darwin*)
mgl@1371
 50137
+	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 50138
+	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 50139
+	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 50140
+	  ;;
mgl@1371
 50141
+      esac
mgl@1371
 50142
+
mgl@1371
 50143
+      # move library search paths that coincide with paths to not yet
mgl@1371
 50144
+      # installed libraries to the beginning of the library search list
mgl@1371
 50145
+      new_libs=
mgl@1371
 50146
+      for path in $notinst_path; do
mgl@1371
 50147
+	case " $new_libs " in
mgl@1371
 50148
+	*" -L$path/$objdir "*) ;;
mgl@1371
 50149
+	*)
mgl@1371
 50150
+	  case " $deplibs " in
mgl@1371
 50151
+	  *" -L$path/$objdir "*)
mgl@1371
 50152
+	    new_libs="$new_libs -L$path/$objdir" ;;
mgl@1371
 50153
+	  esac
mgl@1371
 50154
+	  ;;
mgl@1371
 50155
+	esac
mgl@1371
 50156
+      done
mgl@1371
 50157
+      for deplib in $deplibs; do
mgl@1371
 50158
+	case $deplib in
mgl@1371
 50159
+	-L*)
mgl@1371
 50160
+	  case " $new_libs " in
mgl@1371
 50161
+	  *" $deplib "*) ;;
mgl@1371
 50162
+	  *) new_libs="$new_libs $deplib" ;;
mgl@1371
 50163
+	  esac
mgl@1371
 50164
+	  ;;
mgl@1371
 50165
+	*) new_libs="$new_libs $deplib" ;;
mgl@1371
 50166
+	esac
mgl@1371
 50167
+      done
mgl@1371
 50168
+      deplibs="$new_libs"
mgl@1371
 50169
+
mgl@1371
 50170
+      # All the library-specific variables (install_libdir is set above).
mgl@1371
 50171
+      library_names=
mgl@1371
 50172
+      old_library=
mgl@1371
 50173
+      dlname=
mgl@1371
 50174
+
mgl@1371
 50175
+      # Test again, we may have decided not to build it any more
mgl@1371
 50176
+      if test "$build_libtool_libs" = yes; then
mgl@1371
 50177
+	if test "$hardcode_into_libs" = yes; then
mgl@1371
 50178
+	  # Hardcode the library paths
mgl@1371
 50179
+	  hardcode_libdirs=
mgl@1371
 50180
+	  dep_rpath=
mgl@1371
 50181
+	  rpath="$finalize_rpath"
mgl@1371
 50182
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
mgl@1371
 50183
+	  for libdir in $rpath; do
mgl@1371
 50184
+	    if test -n "$hardcode_libdir_flag_spec"; then
mgl@1371
 50185
+	      if test -n "$hardcode_libdir_separator"; then
mgl@1371
 50186
+		if test -z "$hardcode_libdirs"; then
mgl@1371
 50187
+		  hardcode_libdirs="$libdir"
mgl@1371
 50188
+		else
mgl@1371
 50189
+		  # Just accumulate the unique libdirs.
mgl@1371
 50190
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
mgl@1371
 50191
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
mgl@1371
 50192
+		    ;;
mgl@1371
 50193
+		  *)
mgl@1371
 50194
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
mgl@1371
 50195
+		    ;;
mgl@1371
 50196
+		  esac
mgl@1371
 50197
+		fi
mgl@1371
 50198
+	      else
mgl@1371
 50199
+		eval flag=\"$hardcode_libdir_flag_spec\"
mgl@1371
 50200
+		dep_rpath="$dep_rpath $flag"
mgl@1371
 50201
+	      fi
mgl@1371
 50202
+	    elif test -n "$runpath_var"; then
mgl@1371
 50203
+	      case "$perm_rpath " in
mgl@1371
 50204
+	      *" $libdir "*) ;;
mgl@1371
 50205
+	      *) perm_rpath="$perm_rpath $libdir" ;;
mgl@1371
 50206
+	      esac
mgl@1371
 50207
+	    fi
mgl@1371
 50208
+	  done
mgl@1371
 50209
+	  # Substitute the hardcoded libdirs into the rpath.
mgl@1371
 50210
+	  if test -n "$hardcode_libdir_separator" &&
mgl@1371
 50211
+	     test -n "$hardcode_libdirs"; then
mgl@1371
 50212
+	    libdir="$hardcode_libdirs"
mgl@1371
 50213
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
mgl@1371
 50214
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
mgl@1371
 50215
+	    else
mgl@1371
 50216
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
mgl@1371
 50217
+	    fi
mgl@1371
 50218
+	  fi
mgl@1371
 50219
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
mgl@1371
 50220
+	    # We should set the runpath_var.
mgl@1371
 50221
+	    rpath=
mgl@1371
 50222
+	    for dir in $perm_rpath; do
mgl@1371
 50223
+	      rpath="$rpath$dir:"
mgl@1371
 50224
+	    done
mgl@1371
 50225
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
mgl@1371
 50226
+	  fi
mgl@1371
 50227
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
mgl@1371
 50228
+	fi
mgl@1371
 50229
+
mgl@1371
 50230
+	shlibpath="$finalize_shlibpath"
mgl@1371
 50231
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
mgl@1371
 50232
+	if test -n "$shlibpath"; then
mgl@1371
 50233
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
mgl@1371
 50234
+	fi
mgl@1371
 50235
+
mgl@1371
 50236
+	# Get the real and link names of the library.
mgl@1371
 50237
+	eval shared_ext=\"$shrext_cmds\"
mgl@1371
 50238
+	eval library_names=\"$library_names_spec\"
mgl@1371
 50239
+	set dummy $library_names
mgl@1371
 50240
+	shift
mgl@1371
 50241
+	realname="$1"
mgl@1371
 50242
+	shift
mgl@1371
 50243
+
mgl@1371
 50244
+	if test -n "$soname_spec"; then
mgl@1371
 50245
+	  eval soname=\"$soname_spec\"
mgl@1371
 50246
+	else
mgl@1371
 50247
+	  soname="$realname"
mgl@1371
 50248
+	fi
mgl@1371
 50249
+	if test -z "$dlname"; then
mgl@1371
 50250
+	  dlname=$soname
mgl@1371
 50251
+	fi
mgl@1371
 50252
+
mgl@1371
 50253
+	lib="$output_objdir/$realname"
mgl@1371
 50254
+	linknames=
mgl@1371
 50255
+	for link
mgl@1371
 50256
+	do
mgl@1371
 50257
+	  linknames="$linknames $link"
mgl@1371
 50258
+	done
mgl@1371
 50259
+
mgl@1371
 50260
+	# Use standard objects if they are pic
mgl@1371
 50261
+	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
mgl@1371
 50262
+	test "X$libobjs" = "X " && libobjs=
mgl@1371
 50263
+
mgl@1371
 50264
+	delfiles=
mgl@1371
 50265
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
mgl@1371
 50266
+	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
mgl@1371
 50267
+	  export_symbols="$output_objdir/$libname.uexp"
mgl@1371
 50268
+	  delfiles="$delfiles $export_symbols"
mgl@1371
 50269
+	fi
mgl@1371
 50270
+
mgl@1371
 50271
+	orig_export_symbols=
mgl@1371
 50272
+	case $host_os in
mgl@1371
 50273
+	cygwin* | mingw*)
mgl@1371
 50274
+	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
mgl@1371
 50275
+	    # exporting using user supplied symfile
mgl@1371
 50276
+	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
mgl@1371
 50277
+	      # and it's NOT already a .def file. Must figure out
mgl@1371
 50278
+	      # which of the given symbols are data symbols and tag
mgl@1371
 50279
+	      # them as such. So, trigger use of export_symbols_cmds.
mgl@1371
 50280
+	      # export_symbols gets reassigned inside the "prepare
mgl@1371
 50281
+	      # the list of exported symbols" if statement, so the
mgl@1371
 50282
+	      # include_expsyms logic still works.
mgl@1371
 50283
+	      orig_export_symbols="$export_symbols"
mgl@1371
 50284
+	      export_symbols=
mgl@1371
 50285
+	      always_export_symbols=yes
mgl@1371
 50286
+	    fi
mgl@1371
 50287
+	  fi
mgl@1371
 50288
+	  ;;
mgl@1371
 50289
+	esac
mgl@1371
 50290
+
mgl@1371
 50291
+	# Prepare the list of exported symbols
mgl@1371
 50292
+	if test -z "$export_symbols"; then
mgl@1371
 50293
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
mgl@1371
 50294
+	    func_echo "generating symbol list for \`$libname.la'"
mgl@1371
 50295
+	    export_symbols="$output_objdir/$libname.exp"
mgl@1371
 50296
+	    $opt_dry_run || $RM $export_symbols
mgl@1371
 50297
+	    cmds=$export_symbols_cmds
mgl@1371
 50298
+	    save_ifs="$IFS"; IFS='~'
mgl@1371
 50299
+	    for cmd in $cmds; do
mgl@1371
 50300
+	      IFS="$save_ifs"
mgl@1371
 50301
+	      eval cmd=\"$cmd\"
mgl@1371
 50302
+	      if len=`expr "X$cmd" : ".*"` &&
mgl@1371
 50303
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
mgl@1371
 50304
+		func_show_eval "$cmd" 'exit $?'
mgl@1371
 50305
+		skipped_export=false
mgl@1371
 50306
+	      else
mgl@1371
 50307
+		# The command line is too long to execute in one step.
mgl@1371
 50308
+		func_echo "using reloadable object file for export list..."
mgl@1371
 50309
+		skipped_export=:
mgl@1371
 50310
+		# Break out early, otherwise skipped_export may be
mgl@1371
 50311
+		# set to false by a later but shorter cmd.
mgl@1371
 50312
+		break
mgl@1371
 50313
+	      fi
mgl@1371
 50314
+	    done
mgl@1371
 50315
+	    IFS="$save_ifs"
mgl@1371
 50316
+	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
mgl@1371
 50317
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
mgl@1371
 50318
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
mgl@1371
 50319
+	    fi
mgl@1371
 50320
+	  fi
mgl@1371
 50321
+	fi
mgl@1371
 50322
+
mgl@1371
 50323
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
mgl@1371
 50324
+	  tmp_export_symbols="$export_symbols"
mgl@1371
 50325
+	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
mgl@1371
 50326
+	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
mgl@1371
 50327
+	fi
mgl@1371
 50328
+
mgl@1371
 50329
+	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
mgl@1371
 50330
+	  # The given exports_symbols file has to be filtered, so filter it.
mgl@1371
 50331
+	  func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
mgl@1371
 50332
+	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
mgl@1371
 50333
+	  # 's' commands which not all seds can handle. GNU sed should be fine
mgl@1371
 50334
+	  # though. Also, the filter scales superlinearly with the number of
mgl@1371
 50335
+	  # global variables. join(1) would be nice here, but unfortunately
mgl@1371
 50336
+	  # isn't a blessed tool.
mgl@1371
 50337
+	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
mgl@1371
 50338
+	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
mgl@1371
 50339
+	  export_symbols=$output_objdir/$libname.def
mgl@1371
 50340
+	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
mgl@1371
 50341
+	fi
mgl@1371
 50342
+
mgl@1371
 50343
+	tmp_deplibs=
mgl@1371
 50344
+	for test_deplib in $deplibs; do
mgl@1371
 50345
+	  case " $convenience " in
mgl@1371
 50346
+	  *" $test_deplib "*) ;;
mgl@1371
 50347
+	  *)
mgl@1371
 50348
+	    tmp_deplibs="$tmp_deplibs $test_deplib"
mgl@1371
 50349
+	    ;;
mgl@1371
 50350
+	  esac
mgl@1371
 50351
+	done
mgl@1371
 50352
+	deplibs="$tmp_deplibs"
mgl@1371
 50353
+
mgl@1371
 50354
+	if test -n "$convenience"; then
mgl@1371
 50355
+	  if test -n "$whole_archive_flag_spec" &&
mgl@1371
 50356
+	    test "$compiler_needs_object" = yes &&
mgl@1371
 50357
+	    test -z "$libobjs"; then
mgl@1371
 50358
+	    # extract the archives, so we have objects to list.
mgl@1371
 50359
+	    # TODO: could optimize this to just extract one archive.
mgl@1371
 50360
+	    whole_archive_flag_spec=
mgl@1371
 50361
+	  fi
mgl@1371
 50362
+	  if test -n "$whole_archive_flag_spec"; then
mgl@1371
 50363
+	    save_libobjs=$libobjs
mgl@1371
 50364
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
mgl@1371
 50365
+	    test "X$libobjs" = "X " && libobjs=
mgl@1371
 50366
+	  else
mgl@1371
 50367
+	    gentop="$output_objdir/${outputname}x"
mgl@1371
 50368
+	    generated="$generated $gentop"
mgl@1371
 50369
+
mgl@1371
 50370
+	    func_extract_archives $gentop $convenience
mgl@1371
 50371
+	    libobjs="$libobjs $func_extract_archives_result"
mgl@1371
 50372
+	    test "X$libobjs" = "X " && libobjs=
mgl@1371
 50373
+	  fi
mgl@1371
 50374
+	fi
mgl@1371
 50375
+
mgl@1371
 50376
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
mgl@1371
 50377
+	  eval flag=\"$thread_safe_flag_spec\"
mgl@1371
 50378
+	  linker_flags="$linker_flags $flag"
mgl@1371
 50379
+	fi
mgl@1371
 50380
+
mgl@1371
 50381
+	# Make a backup of the uninstalled library when relinking
mgl@1371
 50382
+	if test "$mode" = relink; then
mgl@1371
 50383
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
mgl@1371
 50384
+	fi
mgl@1371
 50385
+
mgl@1371
 50386
+	# Do each of the archive commands.
mgl@1371
 50387
+	if test "$module" = yes && test -n "$module_cmds" ; then
mgl@1371
 50388
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
mgl@1371
 50389
+	    eval test_cmds=\"$module_expsym_cmds\"
mgl@1371
 50390
+	    cmds=$module_expsym_cmds
mgl@1371
 50391
+	  else
mgl@1371
 50392
+	    eval test_cmds=\"$module_cmds\"
mgl@1371
 50393
+	    cmds=$module_cmds
mgl@1371
 50394
+	  fi
mgl@1371
 50395
+	else
mgl@1371
 50396
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
mgl@1371
 50397
+	    eval test_cmds=\"$archive_expsym_cmds\"
mgl@1371
 50398
+	    cmds=$archive_expsym_cmds
mgl@1371
 50399
+	  else
mgl@1371
 50400
+	    eval test_cmds=\"$archive_cmds\"
mgl@1371
 50401
+	    cmds=$archive_cmds
mgl@1371
 50402
+	  fi
mgl@1371
 50403
+	fi
mgl@1371
 50404
+
mgl@1371
 50405
+	if test "X$skipped_export" != "X:" &&
mgl@1371
 50406
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
mgl@1371
 50407
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
mgl@1371
 50408
+	  :
mgl@1371
 50409
+	else
mgl@1371
 50410
+	  # The command line is too long to link in one step, link piecewise
mgl@1371
 50411
+	  # or, if using GNU ld and skipped_export is not :, use a linker
mgl@1371
 50412
+	  # script.
mgl@1371
 50413
+
mgl@1371
 50414
+	  # Save the value of $output and $libobjs because we want to
mgl@1371
 50415
+	  # use them later.  If we have whole_archive_flag_spec, we
mgl@1371
 50416
+	  # want to use save_libobjs as it was before
mgl@1371
 50417
+	  # whole_archive_flag_spec was expanded, because we can't
mgl@1371
 50418
+	  # assume the linker understands whole_archive_flag_spec.
mgl@1371
 50419
+	  # This may have to be revisited, in case too many
mgl@1371
 50420
+	  # convenience libraries get linked in and end up exceeding
mgl@1371
 50421
+	  # the spec.
mgl@1371
 50422
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
mgl@1371
 50423
+	    save_libobjs=$libobjs
mgl@1371
 50424
+	  fi
mgl@1371
 50425
+	  save_output=$output
mgl@1371
 50426
+	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
mgl@1371
 50427
+
mgl@1371
 50428
+	  # Clear the reloadable object creation command queue and
mgl@1371
 50429
+	  # initialize k to one.
mgl@1371
 50430
+	  test_cmds=
mgl@1371
 50431
+	  concat_cmds=
mgl@1371
 50432
+	  objlist=
mgl@1371
 50433
+	  last_robj=
mgl@1371
 50434
+	  k=1
mgl@1371
 50435
+
mgl@1371
 50436
+	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
mgl@1371
 50437
+	    output=${output_objdir}/${output_la}.lnkscript
mgl@1371
 50438
+	    func_echo "creating GNU ld script: $output"
mgl@1371
 50439
+	    $ECHO 'INPUT (' > $output
mgl@1371
 50440
+	    for obj in $save_libobjs
mgl@1371
 50441
+	    do
mgl@1371
 50442
+	      $ECHO "$obj" >> $output
mgl@1371
 50443
+	    done
mgl@1371
 50444
+	    $ECHO ')' >> $output
mgl@1371
 50445
+	    delfiles="$delfiles $output"
mgl@1371
 50446
+	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
mgl@1371
 50447
+	    output=${output_objdir}/${output_la}.lnk
mgl@1371
 50448
+	    func_echo "creating linker input file list: $output"
mgl@1371
 50449
+	    : > $output
mgl@1371
 50450
+	    set x $save_libobjs
mgl@1371
 50451
+	    shift
mgl@1371
 50452
+	    firstobj=
mgl@1371
 50453
+	    if test "$compiler_needs_object" = yes; then
mgl@1371
 50454
+	      firstobj="$1 "
mgl@1371
 50455
+	      shift
mgl@1371
 50456
+	    fi
mgl@1371
 50457
+	    for obj
mgl@1371
 50458
+	    do
mgl@1371
 50459
+	      $ECHO "$obj" >> $output
mgl@1371
 50460
+	    done
mgl@1371
 50461
+	    delfiles="$delfiles $output"
mgl@1371
 50462
+	    output=$firstobj\"$file_list_spec$output\"
mgl@1371
 50463
+	  else
mgl@1371
 50464
+	    if test -n "$save_libobjs"; then
mgl@1371
 50465
+	      func_echo "creating reloadable object files..."
mgl@1371
 50466
+	      output=$output_objdir/$output_la-${k}.$objext
mgl@1371
 50467
+	      # Loop over the list of objects to be linked.
mgl@1371
 50468
+	      for obj in $save_libobjs
mgl@1371
 50469
+	      do
mgl@1371
 50470
+		eval test_cmds=\"$reload_cmds $objlist $last_robj\"
mgl@1371
 50471
+		if test "X$objlist" = X ||
mgl@1371
 50472
+		   { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
mgl@1371
 50473
+		     test "$len" -le "$max_cmd_len"; }; then
mgl@1371
 50474
+		  objlist="$objlist $obj"
mgl@1371
 50475
+		else
mgl@1371
 50476
+		  # The command $test_cmds is almost too long, add a
mgl@1371
 50477
+		  # command to the queue.
mgl@1371
 50478
+		  if test "$k" -eq 1 ; then
mgl@1371
 50479
+		    # The first file doesn't have a previous command to add.
mgl@1371
 50480
+		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
mgl@1371
 50481
+		  else
mgl@1371
 50482
+		    # All subsequent reloadable object files will link in
mgl@1371
 50483
+		    # the last one created.
mgl@1371
 50484
+		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
mgl@1371
 50485
+		  fi
mgl@1371
 50486
+		  last_robj=$output_objdir/$output_la-${k}.$objext
mgl@1371
 50487
+		  k=`expr $k + 1`
mgl@1371
 50488
+		  output=$output_objdir/$output_la-${k}.$objext
mgl@1371
 50489
+		  objlist=$obj
mgl@1371
 50490
+		  len=1
mgl@1371
 50491
+		fi
mgl@1371
 50492
+	      done
mgl@1371
 50493
+	      # Handle the remaining objects by creating one last
mgl@1371
 50494
+	      # reloadable object file.  All subsequent reloadable object
mgl@1371
 50495
+	      # files will link in the last one created.
mgl@1371
 50496
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
mgl@1371
 50497
+	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
mgl@1371
 50498
+
mgl@1371
 50499
+	      # Set up a command to remove the reloadable object files
mgl@1371
 50500
+	      # after they are used.
mgl@1371
 50501
+	      i=0
mgl@1371
 50502
+	      while test "$i" -lt "$k"
mgl@1371
 50503
+	      do
mgl@1371
 50504
+		i=`expr $i + 1`
mgl@1371
 50505
+		delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
mgl@1371
 50506
+	      done
mgl@1371
 50507
+	    else
mgl@1371
 50508
+	      output=
mgl@1371
 50509
+	    fi
mgl@1371
 50510
+
mgl@1371
 50511
+	    if ${skipped_export-false}; then
mgl@1371
 50512
+	      func_echo "generating symbol list for \`$libname.la'"
mgl@1371
 50513
+	      export_symbols="$output_objdir/$libname.exp"
mgl@1371
 50514
+	      $opt_dry_run || $RM $export_symbols
mgl@1371
 50515
+	      libobjs=$output
mgl@1371
 50516
+	      # Append the command to create the export file.
mgl@1371
 50517
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
mgl@1371
 50518
+	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
mgl@1371
 50519
+	    fi
mgl@1371
 50520
+
mgl@1371
 50521
+	    test -n "$save_libobjs" &&
mgl@1371
 50522
+	      func_echo "creating a temporary reloadable object file: $output"
mgl@1371
 50523
+
mgl@1371
 50524
+	    # Loop through the commands generated above and execute them.
mgl@1371
 50525
+	    save_ifs="$IFS"; IFS='~'
mgl@1371
 50526
+	    for cmd in $concat_cmds; do
mgl@1371
 50527
+	      IFS="$save_ifs"
mgl@1371
 50528
+	      $opt_silent || {
mgl@1371
 50529
+		  func_quote_for_expand "$cmd"
mgl@1371
 50530
+		  eval "func_echo $func_quote_for_expand_result"
mgl@1371
 50531
+	      }
mgl@1371
 50532
+	      $opt_dry_run || eval "$cmd" || {
mgl@1371
 50533
+		lt_exit=$?
mgl@1371
 50534
+
mgl@1371
 50535
+		# Restore the uninstalled library and exit
mgl@1371
 50536
+		if test "$mode" = relink; then
mgl@1371
 50537
+		  ( cd "$output_objdir" && \
mgl@1371
 50538
+		    $RM "${realname}T" && \
mgl@1371
 50539
+		    $MV "${realname}U" "$realname" )
mgl@1371
 50540
+		fi
mgl@1371
 50541
+
mgl@1371
 50542
+		exit $lt_exit
mgl@1371
 50543
+	      }
mgl@1371
 50544
+	    done
mgl@1371
 50545
+	    IFS="$save_ifs"
mgl@1371
 50546
+
mgl@1371
 50547
+	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
mgl@1371
 50548
+	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
mgl@1371
 50549
+	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
mgl@1371
 50550
+	    fi
mgl@1371
 50551
+	  fi
mgl@1371
 50552
+
mgl@1371
 50553
+          if ${skipped_export-false}; then
mgl@1371
 50554
+	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
mgl@1371
 50555
+	      tmp_export_symbols="$export_symbols"
mgl@1371
 50556
+	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
mgl@1371
 50557
+	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
mgl@1371
 50558
+	    fi
mgl@1371
 50559
+
mgl@1371
 50560
+	    if test -n "$orig_export_symbols"; then
mgl@1371
 50561
+	      # The given exports_symbols file has to be filtered, so filter it.
mgl@1371
 50562
+	      func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
mgl@1371
 50563
+	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
mgl@1371
 50564
+	      # 's' commands which not all seds can handle. GNU sed should be fine
mgl@1371
 50565
+	      # though. Also, the filter scales superlinearly with the number of
mgl@1371
 50566
+	      # global variables. join(1) would be nice here, but unfortunately
mgl@1371
 50567
+	      # isn't a blessed tool.
mgl@1371
 50568
+	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
mgl@1371
 50569
+	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
mgl@1371
 50570
+	      export_symbols=$output_objdir/$libname.def
mgl@1371
 50571
+	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
mgl@1371
 50572
+	    fi
mgl@1371
 50573
+	  fi
mgl@1371
 50574
+
mgl@1371
 50575
+	  libobjs=$output
mgl@1371
 50576
+	  # Restore the value of output.
mgl@1371
 50577
+	  output=$save_output
mgl@1371
 50578
+
mgl@1371
 50579
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
mgl@1371
 50580
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
mgl@1371
 50581
+	    test "X$libobjs" = "X " && libobjs=
mgl@1371
 50582
+	  fi
mgl@1371
 50583
+	  # Expand the library linking commands again to reset the
mgl@1371
 50584
+	  # value of $libobjs for piecewise linking.
mgl@1371
 50585
+
mgl@1371
 50586
+	  # Do each of the archive commands.
mgl@1371
 50587
+	  if test "$module" = yes && test -n "$module_cmds" ; then
mgl@1371
 50588
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
mgl@1371
 50589
+	      cmds=$module_expsym_cmds
mgl@1371
 50590
+	    else
mgl@1371
 50591
+	      cmds=$module_cmds
mgl@1371
 50592
+	    fi
mgl@1371
 50593
+	  else
mgl@1371
 50594
+	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
mgl@1371
 50595
+	      cmds=$archive_expsym_cmds
mgl@1371
 50596
+	    else
mgl@1371
 50597
+	      cmds=$archive_cmds
mgl@1371
 50598
+	    fi
mgl@1371
 50599
+	  fi
mgl@1371
 50600
+	fi
mgl@1371
 50601
+
mgl@1371
 50602
+	if test -n "$delfiles"; then
mgl@1371
 50603
+	  # Append the command to remove temporary files to $cmds.
mgl@1371
 50604
+	  eval cmds=\"\$cmds~\$RM $delfiles\"
mgl@1371
 50605
+	fi
mgl@1371
 50606
+
mgl@1371
 50607
+	# Add any objects from preloaded convenience libraries
mgl@1371
 50608
+	if test -n "$dlprefiles"; then
mgl@1371
 50609
+	  gentop="$output_objdir/${outputname}x"
mgl@1371
 50610
+	  generated="$generated $gentop"
mgl@1371
 50611
+
mgl@1371
 50612
+	  func_extract_archives $gentop $dlprefiles
mgl@1371
 50613
+	  libobjs="$libobjs $func_extract_archives_result"
mgl@1371
 50614
+	  test "X$libobjs" = "X " && libobjs=
mgl@1371
 50615
+	fi
mgl@1371
 50616
+
mgl@1371
 50617
+	save_ifs="$IFS"; IFS='~'
mgl@1371
 50618
+	for cmd in $cmds; do
mgl@1371
 50619
+	  IFS="$save_ifs"
mgl@1371
 50620
+	  eval cmd=\"$cmd\"
mgl@1371
 50621
+	  $opt_silent || {
mgl@1371
 50622
+	    func_quote_for_expand "$cmd"
mgl@1371
 50623
+	    eval "func_echo $func_quote_for_expand_result"
mgl@1371
 50624
+	  }
mgl@1371
 50625
+	  $opt_dry_run || eval "$cmd" || {
mgl@1371
 50626
+	    lt_exit=$?
mgl@1371
 50627
+
mgl@1371
 50628
+	    # Restore the uninstalled library and exit
mgl@1371
 50629
+	    if test "$mode" = relink; then
mgl@1371
 50630
+	      ( cd "$output_objdir" && \
mgl@1371
 50631
+	        $RM "${realname}T" && \
mgl@1371
 50632
+		$MV "${realname}U" "$realname" )
mgl@1371
 50633
+	    fi
mgl@1371
 50634
+
mgl@1371
 50635
+	    exit $lt_exit
mgl@1371
 50636
+	  }
mgl@1371
 50637
+	done
mgl@1371
 50638
+	IFS="$save_ifs"
mgl@1371
 50639
+
mgl@1371
 50640
+	# Restore the uninstalled library and exit
mgl@1371
 50641
+	if test "$mode" = relink; then
mgl@1371
 50642
+	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
mgl@1371
 50643
+
mgl@1371
 50644
+	  if test -n "$convenience"; then
mgl@1371
 50645
+	    if test -z "$whole_archive_flag_spec"; then
mgl@1371
 50646
+	      func_show_eval '${RM}r "$gentop"'
mgl@1371
 50647
+	    fi
mgl@1371
 50648
+	  fi
mgl@1371
 50649
+
mgl@1371
 50650
+	  exit $EXIT_SUCCESS
mgl@1371
 50651
+	fi
mgl@1371
 50652
+
mgl@1371
 50653
+	# Create links to the real library.
mgl@1371
 50654
+	for linkname in $linknames; do
mgl@1371
 50655
+	  if test "$realname" != "$linkname"; then
mgl@1371
 50656
+	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
mgl@1371
 50657
+	  fi
mgl@1371
 50658
+	done
mgl@1371
 50659
+
mgl@1371
 50660
+	# If -module or -export-dynamic was specified, set the dlname.
mgl@1371
 50661
+	if test "$module" = yes || test "$export_dynamic" = yes; then
mgl@1371
 50662
+	  # On all known operating systems, these are identical.
mgl@1371
 50663
+	  dlname="$soname"
mgl@1371
 50664
+	fi
mgl@1371
 50665
+      fi
mgl@1371
 50666
+      ;;
mgl@1371
 50667
+
mgl@1371
 50668
+    obj)
mgl@1371
 50669
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
mgl@1371
 50670
+	func_warning "\`-dlopen' is ignored for objects"
mgl@1371
 50671
+      fi
mgl@1371
 50672
+
mgl@1371
 50673
+      test -n "$deplibs" && \
mgl@1371
 50674
+	func_warning "\`-l' and \`-L' are ignored for objects"
mgl@1371
 50675
+
mgl@1371
 50676
+      test -n "$rpath" && \
mgl@1371
 50677
+	func_warning "\`-rpath' is ignored for objects"
mgl@1371
 50678
+
mgl@1371
 50679
+      test -n "$xrpath" && \
mgl@1371
 50680
+	func_warning "\`-R' is ignored for objects"
mgl@1371
 50681
+
mgl@1371
 50682
+      test -n "$vinfo" && \
mgl@1371
 50683
+	func_warning "\`-version-info' is ignored for objects"
mgl@1371
 50684
+
mgl@1371
 50685
+      test -n "$release" && \
mgl@1371
 50686
+	func_warning "\`-release' is ignored for objects"
mgl@1371
 50687
+
mgl@1371
 50688
+      case $output in
mgl@1371
 50689
+      *.lo)
mgl@1371
 50690
+	test -n "$objs$old_deplibs" && \
mgl@1371
 50691
+	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
mgl@1371
 50692
+
mgl@1371
 50693
+	libobj=$output
mgl@1371
 50694
+	func_lo2o "$libobj"
mgl@1371
 50695
+	obj=$func_lo2o_result
mgl@1371
 50696
+	;;
mgl@1371
 50697
+      *)
mgl@1371
 50698
+	libobj=
mgl@1371
 50699
+	obj="$output"
mgl@1371
 50700
+	;;
mgl@1371
 50701
+      esac
mgl@1371
 50702
+
mgl@1371
 50703
+      # Delete the old objects.
mgl@1371
 50704
+      $opt_dry_run || $RM $obj $libobj
mgl@1371
 50705
+
mgl@1371
 50706
+      # Objects from convenience libraries.  This assumes
mgl@1371
 50707
+      # single-version convenience libraries.  Whenever we create
mgl@1371
 50708
+      # different ones for PIC/non-PIC, this we'll have to duplicate
mgl@1371
 50709
+      # the extraction.
mgl@1371
 50710
+      reload_conv_objs=
mgl@1371
 50711
+      gentop=
mgl@1371
 50712
+      # reload_cmds runs $LD directly, so let us get rid of
mgl@1371
 50713
+      # -Wl from whole_archive_flag_spec and hope we can get by with
mgl@1371
 50714
+      # turning comma into space..
mgl@1371
 50715
+      wl=
mgl@1371
 50716
+
mgl@1371
 50717
+      if test -n "$convenience"; then
mgl@1371
 50718
+	if test -n "$whole_archive_flag_spec"; then
mgl@1371
 50719
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
mgl@1371
 50720
+	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
mgl@1371
 50721
+	else
mgl@1371
 50722
+	  gentop="$output_objdir/${obj}x"
mgl@1371
 50723
+	  generated="$generated $gentop"
mgl@1371
 50724
+
mgl@1371
 50725
+	  func_extract_archives $gentop $convenience
mgl@1371
 50726
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
mgl@1371
 50727
+	fi
mgl@1371
 50728
+      fi
mgl@1371
 50729
+
mgl@1371
 50730
+      # Create the old-style object.
mgl@1371
 50731
+      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
mgl@1371
 50732
+
mgl@1371
 50733
+      output="$obj"
mgl@1371
 50734
+      func_execute_cmds "$reload_cmds" 'exit $?'
mgl@1371
 50735
+
mgl@1371
 50736
+      # Exit if we aren't doing a library object file.
mgl@1371
 50737
+      if test -z "$libobj"; then
mgl@1371
 50738
+	if test -n "$gentop"; then
mgl@1371
 50739
+	  func_show_eval '${RM}r "$gentop"'
mgl@1371
 50740
+	fi
mgl@1371
 50741
+
mgl@1371
 50742
+	exit $EXIT_SUCCESS
mgl@1371
 50743
+      fi
mgl@1371
 50744
+
mgl@1371
 50745
+      if test "$build_libtool_libs" != yes; then
mgl@1371
 50746
+	if test -n "$gentop"; then
mgl@1371
 50747
+	  func_show_eval '${RM}r "$gentop"'
mgl@1371
 50748
+	fi
mgl@1371
 50749
+
mgl@1371
 50750
+	# Create an invalid libtool object if no PIC, so that we don't
mgl@1371
 50751
+	# accidentally link it into a program.
mgl@1371
 50752
+	# $show "echo timestamp > $libobj"
mgl@1371
 50753
+	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
mgl@1371
 50754
+	exit $EXIT_SUCCESS
mgl@1371
 50755
+      fi
mgl@1371
 50756
+
mgl@1371
 50757
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
mgl@1371
 50758
+	# Only do commands if we really have different PIC objects.
mgl@1371
 50759
+	reload_objs="$libobjs $reload_conv_objs"
mgl@1371
 50760
+	output="$libobj"
mgl@1371
 50761
+	func_execute_cmds "$reload_cmds" 'exit $?'
mgl@1371
 50762
+      fi
mgl@1371
 50763
+
mgl@1371
 50764
+      if test -n "$gentop"; then
mgl@1371
 50765
+	func_show_eval '${RM}r "$gentop"'
mgl@1371
 50766
+      fi
mgl@1371
 50767
+
mgl@1371
 50768
+      exit $EXIT_SUCCESS
mgl@1371
 50769
+      ;;
mgl@1371
 50770
+
mgl@1371
 50771
+    prog)
mgl@1371
 50772
+      case $host in
mgl@1371
 50773
+	*cygwin*) func_stripname '' '.exe' "$output"
mgl@1371
 50774
+	          output=$func_stripname_result.exe;;
mgl@1371
 50775
+      esac
mgl@1371
 50776
+      test -n "$vinfo" && \
mgl@1371
 50777
+	func_warning "\`-version-info' is ignored for programs"
mgl@1371
 50778
+
mgl@1371
 50779
+      test -n "$release" && \
mgl@1371
 50780
+	func_warning "\`-release' is ignored for programs"
mgl@1371
 50781
+
mgl@1371
 50782
+      test "$preload" = yes \
mgl@1371
 50783
+        && test "$dlopen_support" = unknown \
mgl@1371
 50784
+	&& test "$dlopen_self" = unknown \
mgl@1371
 50785
+	&& test "$dlopen_self_static" = unknown && \
mgl@1371
 50786
+	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
mgl@1371
 50787
+
mgl@1371
 50788
+      case $host in
mgl@1371
 50789
+      *-*-rhapsody* | *-*-darwin1.[012])
mgl@1371
 50790
+	# On Rhapsody replace the C library is the System framework
mgl@1371
 50791
+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
mgl@1371
 50792
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
mgl@1371
 50793
+	;;
mgl@1371
 50794
+      esac
mgl@1371
 50795
+
mgl@1371
 50796
+      case $host in
mgl@1371
 50797
+      *-*-darwin*)
mgl@1371
 50798
+	# Don't allow lazy linking, it breaks C++ global constructors
mgl@1371
 50799
+	# But is supposedly fixed on 10.4 or later (yay!).
mgl@1371
 50800
+	if test "$tagname" = CXX ; then
mgl@1371
 50801
+	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
mgl@1371
 50802
+	    10.[0123])
mgl@1371
 50803
+	      compile_command="$compile_command ${wl}-bind_at_load"
mgl@1371
 50804
+	      finalize_command="$finalize_command ${wl}-bind_at_load"
mgl@1371
 50805
+	    ;;
mgl@1371
 50806
+	  esac
mgl@1371
 50807
+	fi
mgl@1371
 50808
+	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
mgl@1371
 50809
+	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 50810
+	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
mgl@1371
 50811
+	;;
mgl@1371
 50812
+      esac
mgl@1371
 50813
+
mgl@1371
 50814
+
mgl@1371
 50815
+      # move library search paths that coincide with paths to not yet
mgl@1371
 50816
+      # installed libraries to the beginning of the library search list
mgl@1371
 50817
+      new_libs=
mgl@1371
 50818
+      for path in $notinst_path; do
mgl@1371
 50819
+	case " $new_libs " in
mgl@1371
 50820
+	*" -L$path/$objdir "*) ;;
mgl@1371
 50821
+	*)
mgl@1371
 50822
+	  case " $compile_deplibs " in
mgl@1371
 50823
+	  *" -L$path/$objdir "*)
mgl@1371
 50824
+	    new_libs="$new_libs -L$path/$objdir" ;;
mgl@1371
 50825
+	  esac
mgl@1371
 50826
+	  ;;
mgl@1371
 50827
+	esac
mgl@1371
 50828
+      done
mgl@1371
 50829
+      for deplib in $compile_deplibs; do
mgl@1371
 50830
+	case $deplib in
mgl@1371
 50831
+	-L*)
mgl@1371
 50832
+	  case " $new_libs " in
mgl@1371
 50833
+	  *" $deplib "*) ;;
mgl@1371
 50834
+	  *) new_libs="$new_libs $deplib" ;;
mgl@1371
 50835
+	  esac
mgl@1371
 50836
+	  ;;
mgl@1371
 50837
+	*) new_libs="$new_libs $deplib" ;;
mgl@1371
 50838
+	esac
mgl@1371
 50839
+      done
mgl@1371
 50840
+      compile_deplibs="$new_libs"
mgl@1371
 50841
+
mgl@1371
 50842
+
mgl@1371
 50843
+      compile_command="$compile_command $compile_deplibs"
mgl@1371
 50844
+      finalize_command="$finalize_command $finalize_deplibs"
mgl@1371
 50845
+
mgl@1371
 50846
+      if test -n "$rpath$xrpath"; then
mgl@1371
 50847
+	# If the user specified any rpath flags, then add them.
mgl@1371
 50848
+	for libdir in $rpath $xrpath; do
mgl@1371
 50849
+	  # This is the magic to use -rpath.
mgl@1371
 50850
+	  case "$finalize_rpath " in
mgl@1371
 50851
+	  *" $libdir "*) ;;
mgl@1371
 50852
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
mgl@1371
 50853
+	  esac
mgl@1371
 50854
+	done
mgl@1371
 50855
+      fi
mgl@1371
 50856
+
mgl@1371
 50857
+      # Now hardcode the library paths
mgl@1371
 50858
+      rpath=
mgl@1371
 50859
+      hardcode_libdirs=
mgl@1371
 50860
+      for libdir in $compile_rpath $finalize_rpath; do
mgl@1371
 50861
+	if test -n "$hardcode_libdir_flag_spec"; then
mgl@1371
 50862
+	  if test -n "$hardcode_libdir_separator"; then
mgl@1371
 50863
+	    if test -z "$hardcode_libdirs"; then
mgl@1371
 50864
+	      hardcode_libdirs="$libdir"
mgl@1371
 50865
+	    else
mgl@1371
 50866
+	      # Just accumulate the unique libdirs.
mgl@1371
 50867
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
mgl@1371
 50868
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
mgl@1371
 50869
+		;;
mgl@1371
 50870
+	      *)
mgl@1371
 50871
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
mgl@1371
 50872
+		;;
mgl@1371
 50873
+	      esac
mgl@1371
 50874
+	    fi
mgl@1371
 50875
+	  else
mgl@1371
 50876
+	    eval flag=\"$hardcode_libdir_flag_spec\"
mgl@1371
 50877
+	    rpath="$rpath $flag"
mgl@1371
 50878
+	  fi
mgl@1371
 50879
+	elif test -n "$runpath_var"; then
mgl@1371
 50880
+	  case "$perm_rpath " in
mgl@1371
 50881
+	  *" $libdir "*) ;;
mgl@1371
 50882
+	  *) perm_rpath="$perm_rpath $libdir" ;;
mgl@1371
 50883
+	  esac
mgl@1371
 50884
+	fi
mgl@1371
 50885
+	case $host in
mgl@1371
 50886
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
mgl@1371
 50887
+	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
mgl@1371
 50888
+	  case :$dllsearchpath: in
mgl@1371
 50889
+	  *":$libdir:"*) ;;
mgl@1371
 50890
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
mgl@1371
 50891
+	  esac
mgl@1371
 50892
+	  case :$dllsearchpath: in
mgl@1371
 50893
+	  *":$testbindir:"*) ;;
mgl@1371
 50894
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
mgl@1371
 50895
+	  esac
mgl@1371
 50896
+	  ;;
mgl@1371
 50897
+	esac
mgl@1371
 50898
+      done
mgl@1371
 50899
+      # Substitute the hardcoded libdirs into the rpath.
mgl@1371
 50900
+      if test -n "$hardcode_libdir_separator" &&
mgl@1371
 50901
+	 test -n "$hardcode_libdirs"; then
mgl@1371
 50902
+	libdir="$hardcode_libdirs"
mgl@1371
 50903
+	eval rpath=\" $hardcode_libdir_flag_spec\"
mgl@1371
 50904
+      fi
mgl@1371
 50905
+      compile_rpath="$rpath"
mgl@1371
 50906
+
mgl@1371
 50907
+      rpath=
mgl@1371
 50908
+      hardcode_libdirs=
mgl@1371
 50909
+      for libdir in $finalize_rpath; do
mgl@1371
 50910
+	if test -n "$hardcode_libdir_flag_spec"; then
mgl@1371
 50911
+	  if test -n "$hardcode_libdir_separator"; then
mgl@1371
 50912
+	    if test -z "$hardcode_libdirs"; then
mgl@1371
 50913
+	      hardcode_libdirs="$libdir"
mgl@1371
 50914
+	    else
mgl@1371
 50915
+	      # Just accumulate the unique libdirs.
mgl@1371
 50916
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
mgl@1371
 50917
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
mgl@1371
 50918
+		;;
mgl@1371
 50919
+	      *)
mgl@1371
 50920
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
mgl@1371
 50921
+		;;
mgl@1371
 50922
+	      esac
mgl@1371
 50923
+	    fi
mgl@1371
 50924
+	  else
mgl@1371
 50925
+	    eval flag=\"$hardcode_libdir_flag_spec\"
mgl@1371
 50926
+	    rpath="$rpath $flag"
mgl@1371
 50927
+	  fi
mgl@1371
 50928
+	elif test -n "$runpath_var"; then
mgl@1371
 50929
+	  case "$finalize_perm_rpath " in
mgl@1371
 50930
+	  *" $libdir "*) ;;
mgl@1371
 50931
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
mgl@1371
 50932
+	  esac
mgl@1371
 50933
+	fi
mgl@1371
 50934
+      done
mgl@1371
 50935
+      # Substitute the hardcoded libdirs into the rpath.
mgl@1371
 50936
+      if test -n "$hardcode_libdir_separator" &&
mgl@1371
 50937
+	 test -n "$hardcode_libdirs"; then
mgl@1371
 50938
+	libdir="$hardcode_libdirs"
mgl@1371
 50939
+	eval rpath=\" $hardcode_libdir_flag_spec\"
mgl@1371
 50940
+      fi
mgl@1371
 50941
+      finalize_rpath="$rpath"
mgl@1371
 50942
+
mgl@1371
 50943
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
mgl@1371
 50944
+	# Transform all the library objects into standard objects.
mgl@1371
 50945
+	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
mgl@1371
 50946
+	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
mgl@1371
 50947
+      fi
mgl@1371
 50948
+
mgl@1371
 50949
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
mgl@1371
 50950
+
mgl@1371
 50951
+      # template prelinking step
mgl@1371
 50952
+      if test -n "$prelink_cmds"; then
mgl@1371
 50953
+	func_execute_cmds "$prelink_cmds" 'exit $?'
mgl@1371
 50954
+      fi
mgl@1371
 50955
+
mgl@1371
 50956
+      wrappers_required=yes
mgl@1371
 50957
+      case $host in
mgl@1371
 50958
+      *cygwin* | *mingw* )
mgl@1371
 50959
+        if test "$build_libtool_libs" != yes; then
mgl@1371
 50960
+          wrappers_required=no
mgl@1371
 50961
+        fi
mgl@1371
 50962
+        ;;
mgl@1371
 50963
+      *)
mgl@1371
 50964
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
mgl@1371
 50965
+          wrappers_required=no
mgl@1371
 50966
+        fi
mgl@1371
 50967
+        ;;
mgl@1371
 50968
+      esac
mgl@1371
 50969
+      if test "$wrappers_required" = no; then
mgl@1371
 50970
+	# Replace the output file specification.
mgl@1371
 50971
+	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
mgl@1371
 50972
+	link_command="$compile_command$compile_rpath"
mgl@1371
 50973
+
mgl@1371
 50974
+	# We have no uninstalled library dependencies, so finalize right now.
mgl@1371
 50975
+	exit_status=0
mgl@1371
 50976
+	func_show_eval "$link_command" 'exit_status=$?'
mgl@1371
 50977
+
mgl@1371
 50978
+	# Delete the generated files.
mgl@1371
 50979
+	if test -f "$output_objdir/${outputname}S.${objext}"; then
mgl@1371
 50980
+	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
mgl@1371
 50981
+	fi
mgl@1371
 50982
+
mgl@1371
 50983
+	exit $exit_status
mgl@1371
 50984
+      fi
mgl@1371
 50985
+
mgl@1371
 50986
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
mgl@1371
 50987
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
mgl@1371
 50988
+      fi
mgl@1371
 50989
+      if test -n "$finalize_shlibpath"; then
mgl@1371
 50990
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
mgl@1371
 50991
+      fi
mgl@1371
 50992
+
mgl@1371
 50993
+      compile_var=
mgl@1371
 50994
+      finalize_var=
mgl@1371
 50995
+      if test -n "$runpath_var"; then
mgl@1371
 50996
+	if test -n "$perm_rpath"; then
mgl@1371
 50997
+	  # We should set the runpath_var.
mgl@1371
 50998
+	  rpath=
mgl@1371
 50999
+	  for dir in $perm_rpath; do
mgl@1371
 51000
+	    rpath="$rpath$dir:"
mgl@1371
 51001
+	  done
mgl@1371
 51002
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
mgl@1371
 51003
+	fi
mgl@1371
 51004
+	if test -n "$finalize_perm_rpath"; then
mgl@1371
 51005
+	  # We should set the runpath_var.
mgl@1371
 51006
+	  rpath=
mgl@1371
 51007
+	  for dir in $finalize_perm_rpath; do
mgl@1371
 51008
+	    rpath="$rpath$dir:"
mgl@1371
 51009
+	  done
mgl@1371
 51010
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
mgl@1371
 51011
+	fi
mgl@1371
 51012
+      fi
mgl@1371
 51013
+
mgl@1371
 51014
+      if test "$no_install" = yes; then
mgl@1371
 51015
+	# We don't need to create a wrapper script.
mgl@1371
 51016
+	link_command="$compile_var$compile_command$compile_rpath"
mgl@1371
 51017
+	# Replace the output file specification.
mgl@1371
 51018
+	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
mgl@1371
 51019
+	# Delete the old output file.
mgl@1371
 51020
+	$opt_dry_run || $RM $output
mgl@1371
 51021
+	# Link the executable and exit
mgl@1371
 51022
+	func_show_eval "$link_command" 'exit $?'
mgl@1371
 51023
+	exit $EXIT_SUCCESS
mgl@1371
 51024
+      fi
mgl@1371
 51025
+
mgl@1371
 51026
+      if test "$hardcode_action" = relink; then
mgl@1371
 51027
+	# Fast installation is not supported
mgl@1371
 51028
+	link_command="$compile_var$compile_command$compile_rpath"
mgl@1371
 51029
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
mgl@1371
 51030
+
mgl@1371
 51031
+	func_warning "this platform does not like uninstalled shared libraries"
mgl@1371
 51032
+	func_warning "\`$output' will be relinked during installation"
mgl@1371
 51033
+      else
mgl@1371
 51034
+	if test "$fast_install" != no; then
mgl@1371
 51035
+	  link_command="$finalize_var$compile_command$finalize_rpath"
mgl@1371
 51036
+	  if test "$fast_install" = yes; then
mgl@1371
 51037
+	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
mgl@1371
 51038
+	  else
mgl@1371
 51039
+	    # fast_install is set to needless
mgl@1371
 51040
+	    relink_command=
mgl@1371
 51041
+	  fi
mgl@1371
 51042
+	else
mgl@1371
 51043
+	  link_command="$compile_var$compile_command$compile_rpath"
mgl@1371
 51044
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
mgl@1371
 51045
+	fi
mgl@1371
 51046
+      fi
mgl@1371
 51047
+
mgl@1371
 51048
+      # Replace the output file specification.
mgl@1371
 51049
+      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
mgl@1371
 51050
+
mgl@1371
 51051
+      # Delete the old output files.
mgl@1371
 51052
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
mgl@1371
 51053
+
mgl@1371
 51054
+      func_show_eval "$link_command" 'exit $?'
mgl@1371
 51055
+
mgl@1371
 51056
+      # Now create the wrapper script.
mgl@1371
 51057
+      func_echo "creating $output"
mgl@1371
 51058
+
mgl@1371
 51059
+      # Quote the relink command for shipping.
mgl@1371
 51060
+      if test -n "$relink_command"; then
mgl@1371
 51061
+	# Preserve any variables that may affect compiler behavior
mgl@1371
 51062
+	for var in $variables_saved_for_relink; do
mgl@1371
 51063
+	  if eval test -z \"\${$var+set}\"; then
mgl@1371
 51064
+	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
mgl@1371
 51065
+	  elif eval var_value=\$$var; test -z "$var_value"; then
mgl@1371
 51066
+	    relink_command="$var=; export $var; $relink_command"
mgl@1371
 51067
+	  else
mgl@1371
 51068
+	    func_quote_for_eval "$var_value"
mgl@1371
 51069
+	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
mgl@1371
 51070
+	  fi
mgl@1371
 51071
+	done
mgl@1371
 51072
+	relink_command="(cd `pwd`; $relink_command)"
mgl@1371
 51073
+	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
mgl@1371
 51074
+      fi
mgl@1371
 51075
+
mgl@1371
 51076
+      # Quote $ECHO for shipping.
mgl@1371
 51077
+      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
mgl@1371
 51078
+	case $progpath in
mgl@1371
 51079
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
mgl@1371
 51080
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
mgl@1371
 51081
+	esac
mgl@1371
 51082
+	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
mgl@1371
 51083
+      else
mgl@1371
 51084
+	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
mgl@1371
 51085
+      fi
mgl@1371
 51086
+
mgl@1371
 51087
+      # Only actually do things if not in dry run mode.
mgl@1371
 51088
+      $opt_dry_run || {
mgl@1371
 51089
+	# win32 will think the script is a binary if it has
mgl@1371
 51090
+	# a .exe suffix, so we strip it off here.
mgl@1371
 51091
+	case $output in
mgl@1371
 51092
+	  *.exe) func_stripname '' '.exe' "$output"
mgl@1371
 51093
+	         output=$func_stripname_result ;;
mgl@1371
 51094
+	esac
mgl@1371
 51095
+	# test for cygwin because mv fails w/o .exe extensions
mgl@1371
 51096
+	case $host in
mgl@1371
 51097
+	  *cygwin*)
mgl@1371
 51098
+	    exeext=.exe
mgl@1371
 51099
+	    func_stripname '' '.exe' "$outputname"
mgl@1371
 51100
+	    outputname=$func_stripname_result ;;
mgl@1371
 51101
+	  *) exeext= ;;
mgl@1371
 51102
+	esac
mgl@1371
 51103
+	case $host in
mgl@1371
 51104
+	  *cygwin* | *mingw* )
mgl@1371
 51105
+	    output_name=`basename $output`
mgl@1371
 51106
+	    output_path=`dirname $output`
mgl@1371
 51107
+	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
mgl@1371
 51108
+	    cwrapper="$output_path/$output_name.exe"
mgl@1371
 51109
+	    $RM $cwrappersource $cwrapper
mgl@1371
 51110
+	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
mgl@1371
 51111
+
mgl@1371
 51112
+	    cat > $cwrappersource <<EOF
mgl@1371
 51113
+
mgl@1371
 51114
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
mgl@1371
 51115
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
mgl@1371
 51116
+
mgl@1371
 51117
+   The $output program cannot be directly executed until all the libtool
mgl@1371
 51118
+   libraries that it depends on are installed.
mgl@1371
 51119
+
mgl@1371
 51120
+   This wrapper executable should never be moved out of the build directory.
mgl@1371
 51121
+   If it is, it will not operate correctly.
mgl@1371
 51122
+
mgl@1371
 51123
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
mgl@1371
 51124
+   but could eventually absorb all of the scripts functionality and
mgl@1371
 51125
+   exec $objdir/$outputname directly.
mgl@1371
 51126
+*/
mgl@1371
 51127
+EOF
mgl@1371
 51128
+	    cat >> $cwrappersource<<"EOF"
mgl@1371
 51129
+#include <stdio.h>
mgl@1371
 51130
+#include <stdlib.h>
mgl@1371
 51131
+#include <unistd.h>
mgl@1371
 51132
+#include <malloc.h>
mgl@1371
 51133
+#include <stdarg.h>
mgl@1371
 51134
+#include <assert.h>
mgl@1371
 51135
+#include <string.h>
mgl@1371
 51136
+#include <ctype.h>
mgl@1371
 51137
+#include <sys/stat.h>
mgl@1371
 51138
+
mgl@1371
 51139
+#if defined(PATH_MAX)
mgl@1371
 51140
+# define LT_PATHMAX PATH_MAX
mgl@1371
 51141
+#elif defined(MAXPATHLEN)
mgl@1371
 51142
+# define LT_PATHMAX MAXPATHLEN
mgl@1371
 51143
+#else
mgl@1371
 51144
+# define LT_PATHMAX 1024
mgl@1371
 51145
+#endif
mgl@1371
 51146
+
mgl@1371
 51147
+#ifndef DIR_SEPARATOR
mgl@1371
 51148
+# define DIR_SEPARATOR '/'
mgl@1371
 51149
+# define PATH_SEPARATOR ':'
mgl@1371
 51150
+#endif
mgl@1371
 51151
+
mgl@1371
 51152
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
mgl@1371
 51153
+  defined (__OS2__)
mgl@1371
 51154
+# define HAVE_DOS_BASED_FILE_SYSTEM
mgl@1371
 51155
+# ifndef DIR_SEPARATOR_2
mgl@1371
 51156
+#  define DIR_SEPARATOR_2 '\\'
mgl@1371
 51157
+# endif
mgl@1371
 51158
+# ifndef PATH_SEPARATOR_2
mgl@1371
 51159
+#  define PATH_SEPARATOR_2 ';'
mgl@1371
 51160
+# endif
mgl@1371
 51161
+#endif
mgl@1371
 51162
+
mgl@1371
 51163
+#ifndef DIR_SEPARATOR_2
mgl@1371
 51164
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
mgl@1371
 51165
+#else /* DIR_SEPARATOR_2 */
mgl@1371
 51166
+# define IS_DIR_SEPARATOR(ch) \
mgl@1371
 51167
+	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
mgl@1371
 51168
+#endif /* DIR_SEPARATOR_2 */
mgl@1371
 51169
+
mgl@1371
 51170
+#ifndef PATH_SEPARATOR_2
mgl@1371
 51171
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
mgl@1371
 51172
+#else /* PATH_SEPARATOR_2 */
mgl@1371
 51173
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
mgl@1371
 51174
+#endif /* PATH_SEPARATOR_2 */
mgl@1371
 51175
+
mgl@1371
 51176
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
mgl@1371
 51177
+#define XFREE(stale) do { \
mgl@1371
 51178
+  if (stale) { free ((void *) stale); stale = 0; } \
mgl@1371
 51179
+} while (0)
mgl@1371
 51180
+
mgl@1371
 51181
+/* -DDEBUG is fairly common in CFLAGS.  */
mgl@1371
 51182
+#undef DEBUG
mgl@1371
 51183
+#if defined DEBUGWRAPPER
mgl@1371
 51184
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
mgl@1371
 51185
+#else
mgl@1371
 51186
+# define DEBUG(format, ...)
mgl@1371
 51187
+#endif
mgl@1371
 51188
+
mgl@1371
 51189
+const char *program_name = NULL;
mgl@1371
 51190
+
mgl@1371
 51191
+void * xmalloc (size_t num);
mgl@1371
 51192
+char * xstrdup (const char *string);
mgl@1371
 51193
+const char * base_name (const char *name);
mgl@1371
 51194
+char * find_executable(const char *wrapper);
mgl@1371
 51195
+int    check_executable(const char *path);
mgl@1371
 51196
+char * strendzap(char *str, const char *pat);
mgl@1371
 51197
+void lt_fatal (const char *message, ...);
mgl@1371
 51198
+
mgl@1371
 51199
+int
mgl@1371
 51200
+main (int argc, char *argv[])
mgl@1371
 51201
+{
mgl@1371
 51202
+  char **newargz;
mgl@1371
 51203
+  int i;
mgl@1371
 51204
+
mgl@1371
 51205
+  program_name = (char *) xstrdup (base_name (argv[0]));
mgl@1371
 51206
+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
mgl@1371
 51207
+  DEBUG("(main) program_name : %s\n",program_name);
mgl@1371
 51208
+  newargz = XMALLOC(char *, argc+2);
mgl@1371
 51209
+EOF
mgl@1371
 51210
+
mgl@1371
 51211
+	    cat >> $cwrappersource <<EOF
mgl@1371
 51212
+  newargz[0] = (char *) xstrdup("$SHELL");
mgl@1371
 51213
+EOF
mgl@1371
 51214
+
mgl@1371
 51215
+	    cat >> $cwrappersource <<"EOF"
mgl@1371
 51216
+  newargz[1] = find_executable(argv[0]);
mgl@1371
 51217
+  if (newargz[1] == NULL)
mgl@1371
 51218
+    lt_fatal("Couldn't find %s", argv[0]);
mgl@1371
 51219
+  DEBUG("(main) found exe at : %s\n",newargz[1]);
mgl@1371
 51220
+  /* we know the script has the same name, without the .exe */
mgl@1371
 51221
+  /* so make sure newargz[1] doesn't end in .exe */
mgl@1371
 51222
+  strendzap(newargz[1],".exe");
mgl@1371
 51223
+  for (i = 1; i < argc; i++)
mgl@1371
 51224
+    newargz[i+1] = xstrdup(argv[i]);
mgl@1371
 51225
+  newargz[argc+1] = NULL;
mgl@1371
 51226
+
mgl@1371
 51227
+  for (i=0; i<argc+1; i++)
mgl@1371
 51228
+  {
mgl@1371
 51229
+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
mgl@1371
 51230
+    ;
mgl@1371
 51231
+  }
mgl@1371
 51232
+
mgl@1371
 51233
+EOF
mgl@1371
 51234
+
mgl@1371
 51235
+	    case $host_os in
mgl@1371
 51236
+	      mingw*)
mgl@1371
 51237
+		cat >> $cwrappersource <<EOF
mgl@1371
 51238
+  execv("$SHELL",(char const **)newargz);
mgl@1371
 51239
+EOF
mgl@1371
 51240
+	      ;;
mgl@1371
 51241
+	      *)
mgl@1371
 51242
+		cat >> $cwrappersource <<EOF
mgl@1371
 51243
+  execv("$SHELL",newargz);
mgl@1371
 51244
+EOF
mgl@1371
 51245
+	      ;;
mgl@1371
 51246
+	    esac
mgl@1371
 51247
+
mgl@1371
 51248
+	    cat >> $cwrappersource <<"EOF"
mgl@1371
 51249
+  return 127;
mgl@1371
 51250
+}
mgl@1371
 51251
+
mgl@1371
 51252
+void *
mgl@1371
 51253
+xmalloc (size_t num)
mgl@1371
 51254
+{
mgl@1371
 51255
+  void * p = (void *) malloc (num);
mgl@1371
 51256
+  if (!p)
mgl@1371
 51257
+    lt_fatal ("Memory exhausted");
mgl@1371
 51258
+
mgl@1371
 51259
+  return p;
mgl@1371
 51260
+}
mgl@1371
 51261
+
mgl@1371
 51262
+char *
mgl@1371
 51263
+xstrdup (const char *string)
mgl@1371
 51264
+{
mgl@1371
 51265
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
mgl@1371
 51266
+;
mgl@1371
 51267
+}
mgl@1371
 51268
+
mgl@1371
 51269
+const char *
mgl@1371
 51270
+base_name (const char *name)
mgl@1371
 51271
+{
mgl@1371
 51272
+  const char *base;
mgl@1371
 51273
+
mgl@1371
 51274
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
mgl@1371
 51275
+  /* Skip over the disk name in MSDOS pathnames. */
mgl@1371
 51276
+  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
mgl@1371
 51277
+    name += 2;
mgl@1371
 51278
+#endif
mgl@1371
 51279
+
mgl@1371
 51280
+  for (base = name; *name; name++)
mgl@1371
 51281
+    if (IS_DIR_SEPARATOR (*name))
mgl@1371
 51282
+      base = name + 1;
mgl@1371
 51283
+  return base;
mgl@1371
 51284
+}
mgl@1371
 51285
+
mgl@1371
 51286
+int
mgl@1371
 51287
+check_executable(const char * path)
mgl@1371
 51288
+{
mgl@1371
 51289
+  struct stat st;
mgl@1371
 51290
+
mgl@1371
 51291
+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
mgl@1371
 51292
+  if ((!path) || (!*path))
mgl@1371
 51293
+    return 0;
mgl@1371
 51294
+
mgl@1371
 51295
+  if ((stat (path, &st) >= 0) &&
mgl@1371
 51296
+      (
mgl@1371
 51297
+	/* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
mgl@1371
 51298
+#if defined (S_IXOTH)
mgl@1371
 51299
+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
mgl@1371
 51300
+#endif
mgl@1371
 51301
+#if defined (S_IXGRP)
mgl@1371
 51302
+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
mgl@1371
 51303
+#endif
mgl@1371
 51304
+       ((st.st_mode & S_IXUSR) == S_IXUSR))
mgl@1371
 51305
+      )
mgl@1371
 51306
+    return 1;
mgl@1371
 51307
+  else
mgl@1371
 51308
+    return 0;
mgl@1371
 51309
+}
mgl@1371
 51310
+
mgl@1371
 51311
+/* Searches for the full path of the wrapper.  Returns
mgl@1371
 51312
+   newly allocated full path name if found, NULL otherwise */
mgl@1371
 51313
+char *
mgl@1371
 51314
+find_executable (const char* wrapper)
mgl@1371
 51315
+{
mgl@1371
 51316
+  int has_slash = 0;
mgl@1371
 51317
+  const char* p;
mgl@1371
 51318
+  const char* p_next;
mgl@1371
 51319
+  /* static buffer for getcwd */
mgl@1371
 51320
+  char tmp[LT_PATHMAX + 1];
mgl@1371
 51321
+  int tmp_len;
mgl@1371
 51322
+  char* concat_name;
mgl@1371
 51323
+
mgl@1371
 51324
+  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
mgl@1371
 51325
+
mgl@1371
 51326
+  if ((wrapper == NULL) || (*wrapper == '\0'))
mgl@1371
 51327
+    return NULL;
mgl@1371
 51328
+
mgl@1371
 51329
+  /* Absolute path? */
mgl@1371
 51330
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
mgl@1371
 51331
+  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
mgl@1371
 51332
+  {
mgl@1371
 51333
+    concat_name = xstrdup (wrapper);
mgl@1371
 51334
+    if (check_executable(concat_name))
mgl@1371
 51335
+      return concat_name;
mgl@1371
 51336
+    XFREE(concat_name);
mgl@1371
 51337
+  }
mgl@1371
 51338
+  else
mgl@1371
 51339
+  {
mgl@1371
 51340
+#endif
mgl@1371
 51341
+    if (IS_DIR_SEPARATOR (wrapper[0]))
mgl@1371
 51342
+    {
mgl@1371
 51343
+      concat_name = xstrdup (wrapper);
mgl@1371
 51344
+      if (check_executable(concat_name))
mgl@1371
 51345
+	return concat_name;
mgl@1371
 51346
+      XFREE(concat_name);
mgl@1371
 51347
+    }
mgl@1371
 51348
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
mgl@1371
 51349
+  }
mgl@1371
 51350
+#endif
mgl@1371
 51351
+
mgl@1371
 51352
+  for (p = wrapper; *p; p++)
mgl@1371
 51353
+    if (*p == '/')
mgl@1371
 51354
+    {
mgl@1371
 51355
+      has_slash = 1;
mgl@1371
 51356
+      break;
mgl@1371
 51357
+    }
mgl@1371
 51358
+  if (!has_slash)
mgl@1371
 51359
+  {
mgl@1371
 51360
+    /* no slashes; search PATH */
mgl@1371
 51361
+    const char* path = getenv ("PATH");
mgl@1371
 51362
+    if (path != NULL)
mgl@1371
 51363
+    {
mgl@1371
 51364
+      for (p = path; *p; p = p_next)
mgl@1371
 51365
+      {
mgl@1371
 51366
+	const char* q;
mgl@1371
 51367
+	size_t p_len;
mgl@1371
 51368
+	for (q = p; *q; q++)
mgl@1371
 51369
+	  if (IS_PATH_SEPARATOR(*q))
mgl@1371
 51370
+	    break;
mgl@1371
 51371
+	p_len = q - p;
mgl@1371
 51372
+	p_next = (*q == '\0' ? q : q + 1);
mgl@1371
 51373
+	if (p_len == 0)
mgl@1371
 51374
+	{
mgl@1371
 51375
+	  /* empty path: current directory */
mgl@1371
 51376
+	  if (getcwd (tmp, LT_PATHMAX) == NULL)
mgl@1371
 51377
+	    lt_fatal ("getcwd failed");
mgl@1371
 51378
+	  tmp_len = strlen(tmp);
mgl@1371
 51379
+	  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
mgl@1371
 51380
+	  memcpy (concat_name, tmp, tmp_len);
mgl@1371
 51381
+	  concat_name[tmp_len] = '/';
mgl@1371
 51382
+	  strcpy (concat_name + tmp_len + 1, wrapper);
mgl@1371
 51383
+	}
mgl@1371
 51384
+	else
mgl@1371
 51385
+	{
mgl@1371
 51386
+	  concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
mgl@1371
 51387
+	  memcpy (concat_name, p, p_len);
mgl@1371
 51388
+	  concat_name[p_len] = '/';
mgl@1371
 51389
+	  strcpy (concat_name + p_len + 1, wrapper);
mgl@1371
 51390
+	}
mgl@1371
 51391
+	if (check_executable(concat_name))
mgl@1371
 51392
+	  return concat_name;
mgl@1371
 51393
+	XFREE(concat_name);
mgl@1371
 51394
+      }
mgl@1371
 51395
+    }
mgl@1371
 51396
+    /* not found in PATH; assume curdir */
mgl@1371
 51397
+  }
mgl@1371
 51398
+  /* Relative path | not found in path: prepend cwd */
mgl@1371
 51399
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
mgl@1371
 51400
+    lt_fatal ("getcwd failed");
mgl@1371
 51401
+  tmp_len = strlen(tmp);
mgl@1371
 51402
+  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
mgl@1371
 51403
+  memcpy (concat_name, tmp, tmp_len);
mgl@1371
 51404
+  concat_name[tmp_len] = '/';
mgl@1371
 51405
+  strcpy (concat_name + tmp_len + 1, wrapper);
mgl@1371
 51406
+
mgl@1371
 51407
+  if (check_executable(concat_name))
mgl@1371
 51408
+    return concat_name;
mgl@1371
 51409
+  XFREE(concat_name);
mgl@1371
 51410
+  return NULL;
mgl@1371
 51411
+}
mgl@1371
 51412
+
mgl@1371
 51413
+char *
mgl@1371
 51414
+strendzap(char *str, const char *pat)
mgl@1371
 51415
+{
mgl@1371
 51416
+  size_t len, patlen;
mgl@1371
 51417
+
mgl@1371
 51418
+  assert(str != NULL);
mgl@1371
 51419
+  assert(pat != NULL);
mgl@1371
 51420
+
mgl@1371
 51421
+  len = strlen(str);
mgl@1371
 51422
+  patlen = strlen(pat);
mgl@1371
 51423
+
mgl@1371
 51424
+  if (patlen <= len)
mgl@1371
 51425
+  {
mgl@1371
 51426
+    str += len - patlen;
mgl@1371
 51427
+    if (strcmp(str, pat) == 0)
mgl@1371
 51428
+      *str = '\0';
mgl@1371
 51429
+  }
mgl@1371
 51430
+  return str;
mgl@1371
 51431
+}
mgl@1371
 51432
+
mgl@1371
 51433
+static void
mgl@1371
 51434
+lt_error_core (int exit_status, const char * mode,
mgl@1371
 51435
+	  const char * message, va_list ap)
mgl@1371
 51436
+{
mgl@1371
 51437
+  fprintf (stderr, "%s: %s: ", program_name, mode);
mgl@1371
 51438
+  vfprintf (stderr, message, ap);
mgl@1371
 51439
+  fprintf (stderr, ".\n");
mgl@1371
 51440
+
mgl@1371
 51441
+  if (exit_status >= 0)
mgl@1371
 51442
+    exit (exit_status);
mgl@1371
 51443
+}
mgl@1371
 51444
+
mgl@1371
 51445
+void
mgl@1371
 51446
+lt_fatal (const char *message, ...)
mgl@1371
 51447
+{
mgl@1371
 51448
+  va_list ap;
mgl@1371
 51449
+  va_start (ap, message);
mgl@1371
 51450
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
mgl@1371
 51451
+  va_end (ap);
mgl@1371
 51452
+}
mgl@1371
 51453
+EOF
mgl@1371
 51454
+	  # we should really use a build-platform specific compiler
mgl@1371
 51455
+	  # here, but OTOH, the wrappers (shell script and this C one)
mgl@1371
 51456
+	  # are only useful if you want to execute the "real" binary.
mgl@1371
 51457
+	  # Since the "real" binary is built for $host, then this
mgl@1371
 51458
+	  # wrapper might as well be built for $host, too.
mgl@1371
 51459
+	  $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
mgl@1371
 51460
+	  ;;
mgl@1371
 51461
+	esac
mgl@1371
 51462
+	$RM $output
mgl@1371
 51463
+	trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
mgl@1371
 51464
+
mgl@1371
 51465
+	$ECHO > $output "\
mgl@1371
 51466
+#! $SHELL
mgl@1371
 51467
+
mgl@1371
 51468
+# $output - temporary wrapper script for $objdir/$outputname
mgl@1371
 51469
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
mgl@1371
 51470
+#
mgl@1371
 51471
+# The $output program cannot be directly executed until all the libtool
mgl@1371
 51472
+# libraries that it depends on are installed.
mgl@1371
 51473
+#
mgl@1371
 51474
+# This wrapper script should never be moved out of the build directory.
mgl@1371
 51475
+# If it is, it will not operate correctly.
mgl@1371
 51476
+
mgl@1371
 51477
+# Sed substitution that helps us do robust quoting.  It backslashifies
mgl@1371
 51478
+# metacharacters that are still active within double-quoted strings.
mgl@1371
 51479
+Xsed='${SED} -e 1s/^X//'
mgl@1371
 51480
+sed_quote_subst='$sed_quote_subst'
mgl@1371
 51481
+
mgl@1371
 51482
+# Be Bourne compatible
mgl@1371
 51483
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
mgl@1371
 51484
+  emulate sh
mgl@1371
 51485
+  NULLCMD=:
mgl@1371
 51486
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
mgl@1371
 51487
+  # is contrary to our usage.  Disable this feature.
mgl@1371
 51488
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
mgl@1371
 51489
+  setopt NO_GLOB_SUBST
mgl@1371
 51490
+else
mgl@1371
 51491
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
mgl@1371
 51492
+fi
mgl@1371
 51493
+BIN_SH=xpg4; export BIN_SH # for Tru64
mgl@1371
 51494
+DUALCASE=1; export DUALCASE # for MKS sh
mgl@1371
 51495
+
mgl@1371
 51496
+# The HP-UX ksh and POSIX shell print the target directory to stdout
mgl@1371
 51497
+# if CDPATH is set.
mgl@1371
 51498
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
mgl@1371
 51499
+
mgl@1371
 51500
+relink_command=\"$relink_command\"
mgl@1371
 51501
+
mgl@1371
 51502
+# This environment variable determines our operation mode.
mgl@1371
 51503
+if test \"\$libtool_install_magic\" = \"$magic\"; then
mgl@1371
 51504
+  # install mode needs the following variables:
mgl@1371
 51505
+  generated_by_libtool_version='$macro_version'
mgl@1371
 51506
+  notinst_deplibs='$notinst_deplibs'
mgl@1371
 51507
+else
mgl@1371
 51508
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
mgl@1371
 51509
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
mgl@1371
 51510
+    ECHO=\"$qecho\"
mgl@1371
 51511
+    file=\"\$0\"
mgl@1371
 51512
+    # Make sure echo works.
mgl@1371
 51513
+    if test \"X\$1\" = X--no-reexec; then
mgl@1371
 51514
+      # Discard the --no-reexec flag, and continue.
mgl@1371
 51515
+      shift
mgl@1371
 51516
+    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
mgl@1371
 51517
+      # Yippee, \$ECHO works!
mgl@1371
 51518
+      :
mgl@1371
 51519
+    else
mgl@1371
 51520
+      # Restart under the correct shell, and then maybe \$ECHO will work.
mgl@1371
 51521
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
mgl@1371
 51522
+    fi
mgl@1371
 51523
+  fi\
mgl@1371
 51524
+"
mgl@1371
 51525
+	$ECHO >> $output "\
mgl@1371
 51526
+
mgl@1371
 51527
+  # Find the directory that this script lives in.
mgl@1371
 51528
+  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
mgl@1371
 51529
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
mgl@1371
 51530
+
mgl@1371
 51531
+  # Follow symbolic links until we get to the real thisdir.
mgl@1371
 51532
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
mgl@1371
 51533
+  while test -n \"\$file\"; do
mgl@1371
 51534
+    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
mgl@1371
 51535
+
mgl@1371
 51536
+    # If there was a directory component, then change thisdir.
mgl@1371
 51537
+    if test \"x\$destdir\" != \"x\$file\"; then
mgl@1371
 51538
+      case \"\$destdir\" in
mgl@1371
 51539
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
mgl@1371
 51540
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
mgl@1371
 51541
+      esac
mgl@1371
 51542
+    fi
mgl@1371
 51543
+
mgl@1371
 51544
+    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
mgl@1371
 51545
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
mgl@1371
 51546
+  done
mgl@1371
 51547
+
mgl@1371
 51548
+  # Try to get the absolute directory name.
mgl@1371
 51549
+  absdir=\`cd \"\$thisdir\" && pwd\`
mgl@1371
 51550
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
mgl@1371
 51551
+"
mgl@1371
 51552
+
mgl@1371
 51553
+	if test "$fast_install" = yes; then
mgl@1371
 51554
+	  $ECHO >> $output "\
mgl@1371
 51555
+  program=lt-'$outputname'$exeext
mgl@1371
 51556
+  progdir=\"\$thisdir/$objdir\"
mgl@1371
 51557
+
mgl@1371
 51558
+  if test ! -f \"\$progdir/\$program\" ||
mgl@1371
 51559
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
mgl@1371
 51560
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
mgl@1371
 51561
+
mgl@1371
 51562
+    file=\"\$\$-\$program\"
mgl@1371
 51563
+
mgl@1371
 51564
+    if test ! -d \"\$progdir\"; then
mgl@1371
 51565
+      $MKDIR \"\$progdir\"
mgl@1371
 51566
+    else
mgl@1371
 51567
+      $RM \"\$progdir/\$file\"
mgl@1371
 51568
+    fi"
mgl@1371
 51569
+
mgl@1371
 51570
+	  $ECHO >> $output "\
mgl@1371
 51571
+
mgl@1371
 51572
+    # relink executable if necessary
mgl@1371
 51573
+    if test -n \"\$relink_command\"; then
mgl@1371
 51574
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
mgl@1371
 51575
+      else
mgl@1371
 51576
+	$ECHO \"\$relink_command_output\" >&2
mgl@1371
 51577
+	$RM \"\$progdir/\$file\"
mgl@1371
 51578
+	exit 1
mgl@1371
 51579
+      fi
mgl@1371
 51580
+    fi
mgl@1371
 51581
+
mgl@1371
 51582
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
mgl@1371
 51583
+    { $RM \"\$progdir/\$program\";
mgl@1371
 51584
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
mgl@1371
 51585
+    $RM \"\$progdir/\$file\"
mgl@1371
 51586
+  fi"
mgl@1371
 51587
+	else
mgl@1371
 51588
+	  $ECHO >> $output "\
mgl@1371
 51589
+  program='$outputname'
mgl@1371
 51590
+  progdir=\"\$thisdir/$objdir\"
mgl@1371
 51591
+"
mgl@1371
 51592
+	fi
mgl@1371
 51593
+
mgl@1371
 51594
+	$ECHO >> $output "\
mgl@1371
 51595
+
mgl@1371
 51596
+  if test -f \"\$progdir/\$program\"; then"
mgl@1371
 51597
+
mgl@1371
 51598
+	# Export our shlibpath_var if we have one.
mgl@1371
 51599
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
mgl@1371
 51600
+	  $ECHO >> $output "\
mgl@1371
 51601
+    # Add our own library path to $shlibpath_var
mgl@1371
 51602
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
mgl@1371
 51603
+
mgl@1371
 51604
+    # Some systems cannot cope with colon-terminated $shlibpath_var
mgl@1371
 51605
+    # The second colon is a workaround for a bug in BeOS R4 sed
mgl@1371
 51606
+    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
mgl@1371
 51607
+
mgl@1371
 51608
+    export $shlibpath_var
mgl@1371
 51609
+"
mgl@1371
 51610
+	fi
mgl@1371
 51611
+
mgl@1371
 51612
+	# fixup the dll searchpath if we need to.
mgl@1371
 51613
+	if test -n "$dllsearchpath"; then
mgl@1371
 51614
+	  $ECHO >> $output "\
mgl@1371
 51615
+    # Add the dll search path components to the executable PATH
mgl@1371
 51616
+    PATH=$dllsearchpath:\$PATH
mgl@1371
 51617
+"
mgl@1371
 51618
+	fi
mgl@1371
 51619
+
mgl@1371
 51620
+	$ECHO >> $output "\
mgl@1371
 51621
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
mgl@1371
 51622
+      # Run the actual program with our arguments.
mgl@1371
 51623
+"
mgl@1371
 51624
+	case $host in
mgl@1371
 51625
+	# Backslashes separate directories on plain windows
mgl@1371
 51626
+	*-*-mingw | *-*-os2*)
mgl@1371
 51627
+	  $ECHO >> $output "\
mgl@1371
 51628
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
mgl@1371
 51629
+"
mgl@1371
 51630
+	  ;;
mgl@1371
 51631
+
mgl@1371
 51632
+	*)
mgl@1371
 51633
+	  $ECHO >> $output "\
mgl@1371
 51634
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
mgl@1371
 51635
+"
mgl@1371
 51636
+	  ;;
mgl@1371
 51637
+	esac
mgl@1371
 51638
+	$ECHO >> $output "\
mgl@1371
 51639
+      \$ECHO \"\$0: cannot exec \$program \$*\"
mgl@1371
 51640
+      exit 1
mgl@1371
 51641
+    fi
mgl@1371
 51642
+  else
mgl@1371
 51643
+    # The program doesn't exist.
mgl@1371
 51644
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
mgl@1371
 51645
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
mgl@1371
 51646
+    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
mgl@1371
 51647
+    exit 1
mgl@1371
 51648
+  fi
mgl@1371
 51649
+fi\
mgl@1371
 51650
+"
mgl@1371
 51651
+	chmod +x $output
mgl@1371
 51652
+      }
mgl@1371
 51653
+      exit $EXIT_SUCCESS
mgl@1371
 51654
+      ;;
mgl@1371
 51655
+    esac
mgl@1371
 51656
+
mgl@1371
 51657
+    # See if we need to build an old-fashioned archive.
mgl@1371
 51658
+    for oldlib in $oldlibs; do
mgl@1371
 51659
+
mgl@1371
 51660
+      if test "$build_libtool_libs" = convenience; then
mgl@1371
 51661
+	oldobjs="$libobjs_save $symfileobj"
mgl@1371
 51662
+	addlibs="$convenience"
mgl@1371
 51663
+	build_libtool_libs=no
mgl@1371
 51664
+      else
mgl@1371
 51665
+	if test "$build_libtool_libs" = module; then
mgl@1371
 51666
+	  oldobjs="$libobjs_save"
mgl@1371
 51667
+	  build_libtool_libs=no
mgl@1371
 51668
+	else
mgl@1371
 51669
+	  oldobjs="$old_deplibs $non_pic_objects"
mgl@1371
 51670
+	  if test "$preload" = yes && test -f "$symfileobj"; then
mgl@1371
 51671
+	    oldobjs="$oldobjs $symfileobj"
mgl@1371
 51672
+	  fi
mgl@1371
 51673
+	fi
mgl@1371
 51674
+	addlibs="$old_convenience"
mgl@1371
 51675
+      fi
mgl@1371
 51676
+
mgl@1371
 51677
+      if test -n "$addlibs"; then
mgl@1371
 51678
+	gentop="$output_objdir/${outputname}x"
mgl@1371
 51679
+	generated="$generated $gentop"
mgl@1371
 51680
+
mgl@1371
 51681
+	func_extract_archives $gentop $addlibs
mgl@1371
 51682
+	oldobjs="$oldobjs $func_extract_archives_result"
mgl@1371
 51683
+      fi
mgl@1371
 51684
+
mgl@1371
 51685
+      # Do each command in the archive commands.
mgl@1371
 51686
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
mgl@1371
 51687
+	cmds=$old_archive_from_new_cmds
mgl@1371
 51688
+      else
mgl@1371
 51689
+
mgl@1371
 51690
+	# Add any objects from preloaded convenience libraries
mgl@1371
 51691
+	if test -n "$dlprefiles"; then
mgl@1371
 51692
+	  gentop="$output_objdir/${outputname}x"
mgl@1371
 51693
+	  generated="$generated $gentop"
mgl@1371
 51694
+
mgl@1371
 51695
+	  func_extract_archives $gentop $dlprefiles
mgl@1371
 51696
+	  oldobjs="$oldobjs $func_extract_archives_result"
mgl@1371
 51697
+	fi
mgl@1371
 51698
+
mgl@1371
 51699
+	# POSIX demands no paths to be encoded in archives.  We have
mgl@1371
 51700
+	# to avoid creating archives with duplicate basenames if we
mgl@1371
 51701
+	# might have to extract them afterwards, e.g., when creating a
mgl@1371
 51702
+	# static archive out of a convenience library, or when linking
mgl@1371
 51703
+	# the entirety of a libtool archive into another (currently
mgl@1371
 51704
+	# not supported by libtool).
mgl@1371
 51705
+	if (for obj in $oldobjs
mgl@1371
 51706
+	    do
mgl@1371
 51707
+	      func_basename "$obj"
mgl@1371
 51708
+	      $ECHO "$func_basename_result"
mgl@1371
 51709
+	    done | sort | sort -uc >/dev/null 2>&1); then
mgl@1371
 51710
+	  :
mgl@1371
 51711
+	else
mgl@1371
 51712
+	  $ECHO "copying selected object files to avoid basename conflicts..."
mgl@1371
 51713
+	  gentop="$output_objdir/${outputname}x"
mgl@1371
 51714
+	  generated="$generated $gentop"
mgl@1371
 51715
+	  func_mkdir_p "$gentop"
mgl@1371
 51716
+	  save_oldobjs=$oldobjs
mgl@1371
 51717
+	  oldobjs=
mgl@1371
 51718
+	  counter=1
mgl@1371
 51719
+	  for obj in $save_oldobjs
mgl@1371
 51720
+	  do
mgl@1371
 51721
+	    func_basename "$obj"
mgl@1371
 51722
+	    objbase="$func_basename_result"
mgl@1371
 51723
+	    case " $oldobjs " in
mgl@1371
 51724
+	    " ") oldobjs=$obj ;;
mgl@1371
 51725
+	    *[\ /]"$objbase "*)
mgl@1371
 51726
+	      while :; do
mgl@1371
 51727
+		# Make sure we don't pick an alternate name that also
mgl@1371
 51728
+		# overlaps.
mgl@1371
 51729
+		newobj=lt$counter-$objbase
mgl@1371
 51730
+		counter=`expr $counter + 1`
mgl@1371
 51731
+		case " $oldobjs " in
mgl@1371
 51732
+		*[\ /]"$newobj "*) ;;
mgl@1371
 51733
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
mgl@1371
 51734
+		esac
mgl@1371
 51735
+	      done
mgl@1371
 51736
+	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
mgl@1371
 51737
+	      oldobjs="$oldobjs $gentop/$newobj"
mgl@1371
 51738
+	      ;;
mgl@1371
 51739
+	    *) oldobjs="$oldobjs $obj" ;;
mgl@1371
 51740
+	    esac
mgl@1371
 51741
+	  done
mgl@1371
 51742
+	fi
mgl@1371
 51743
+	eval cmds=\"$old_archive_cmds\"
mgl@1371
 51744
+
mgl@1371
 51745
+	if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
mgl@1371
 51746
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
mgl@1371
 51747
+	  cmds=$old_archive_cmds
mgl@1371
 51748
+	else
mgl@1371
 51749
+	  # the command line is too long to link in one step, link in parts
mgl@1371
 51750
+	  func_echo "using piecewise archive linking..."
mgl@1371
 51751
+	  save_RANLIB=$RANLIB
mgl@1371
 51752
+	  RANLIB=:
mgl@1371
 51753
+	  objlist=
mgl@1371
 51754
+	  concat_cmds=
mgl@1371
 51755
+	  save_oldobjs=$oldobjs
mgl@1371
 51756
+	  # Is there a better way of finding the last object in the list?
mgl@1371
 51757
+	  for obj in $save_oldobjs
mgl@1371
 51758
+	  do
mgl@1371
 51759
+	    last_oldobj=$obj
mgl@1371
 51760
+	  done
mgl@1371
 51761
+	  for obj in $save_oldobjs
mgl@1371
 51762
+	  do
mgl@1371
 51763
+	    oldobjs="$objlist $obj"
mgl@1371
 51764
+	    objlist="$objlist $obj"
mgl@1371
 51765
+	    eval test_cmds=\"$old_archive_cmds\"
mgl@1371
 51766
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
mgl@1371
 51767
+	       test "$len" -le "$max_cmd_len"; then
mgl@1371
 51768
+	      :
mgl@1371
 51769
+	    else
mgl@1371
 51770
+	      # the above command should be used before it gets too long
mgl@1371
 51771
+	      oldobjs=$objlist
mgl@1371
 51772
+	      if test "$obj" = "$last_oldobj" ; then
mgl@1371
 51773
+		RANLIB=$save_RANLIB
mgl@1371
 51774
+	      fi
mgl@1371
 51775
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
mgl@1371
 51776
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
mgl@1371
 51777
+	      objlist=
mgl@1371
 51778
+	    fi
mgl@1371
 51779
+	  done
mgl@1371
 51780
+	  RANLIB=$save_RANLIB
mgl@1371
 51781
+	  oldobjs=$objlist
mgl@1371
 51782
+	  if test "X$oldobjs" = "X" ; then
mgl@1371
 51783
+	    eval cmds=\"\$concat_cmds\"
mgl@1371
 51784
+	  else
mgl@1371
 51785
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
mgl@1371
 51786
+	  fi
mgl@1371
 51787
+	fi
mgl@1371
 51788
+      fi
mgl@1371
 51789
+      func_execute_cmds "$cmds" 'exit $?'
mgl@1371
 51790
+    done
mgl@1371
 51791
+
mgl@1371
 51792
+    test -n "$generated" && \
mgl@1371
 51793
+      func_show_eval "${RM}r$generated"
mgl@1371
 51794
+
mgl@1371
 51795
+    # Now create the libtool archive.
mgl@1371
 51796
+    case $output in
mgl@1371
 51797
+    *.la)
mgl@1371
 51798
+      old_library=
mgl@1371
 51799
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
mgl@1371
 51800
+      func_echo "creating $output"
mgl@1371
 51801
+
mgl@1371
 51802
+      # Preserve any variables that may affect compiler behavior
mgl@1371
 51803
+      for var in $variables_saved_for_relink; do
mgl@1371
 51804
+	if eval test -z \"\${$var+set}\"; then
mgl@1371
 51805
+	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
mgl@1371
 51806
+	elif eval var_value=\$$var; test -z "$var_value"; then
mgl@1371
 51807
+	  relink_command="$var=; export $var; $relink_command"
mgl@1371
 51808
+	else
mgl@1371
 51809
+	  func_quote_for_eval "$var_value"
mgl@1371
 51810
+	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
mgl@1371
 51811
+	fi
mgl@1371
 51812
+      done
mgl@1371
 51813
+      # Quote the link command for shipping.
mgl@1371
 51814
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
mgl@1371
 51815
+      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
mgl@1371
 51816
+      if test "$hardcode_automatic" = yes ; then
mgl@1371
 51817
+	relink_command=
mgl@1371
 51818
+      fi
mgl@1371
 51819
+
mgl@1371
 51820
+      # Only create the output if not a dry run.
mgl@1371
 51821
+      $opt_dry_run || {
mgl@1371
 51822
+	for installed in no yes; do
mgl@1371
 51823
+	  if test "$installed" = yes; then
mgl@1371
 51824
+	    if test -z "$install_libdir"; then
mgl@1371
 51825
+	      break
mgl@1371
 51826
+	    fi
mgl@1371
 51827
+	    output="$output_objdir/$outputname"i
mgl@1371
 51828
+	    # Replace all uninstalled libtool libraries with the installed ones
mgl@1371
 51829
+	    newdependency_libs=
mgl@1371
 51830
+	    for deplib in $dependency_libs; do
mgl@1371
 51831
+	      case $deplib in
mgl@1371
 51832
+	      *.la)
mgl@1371
 51833
+		func_basename "$deplib"
mgl@1371
 51834
+		name="$func_basename_result"
mgl@1371
 51835
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
mgl@1371
 51836
+		test -z "$libdir" && \
mgl@1371
 51837
+		  func_fatal_error "\`$deplib' is not a valid libtool archive"
mgl@1371
 51838
+		newdependency_libs="$newdependency_libs $libdir/$name"
mgl@1371
 51839
+		;;
mgl@1371
 51840
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
mgl@1371
 51841
+	      esac
mgl@1371
 51842
+	    done
mgl@1371
 51843
+	    dependency_libs="$newdependency_libs"
mgl@1371
 51844
+	    newdlfiles=
mgl@1371
 51845
+
mgl@1371
 51846
+	    for lib in $dlfiles; do
mgl@1371
 51847
+	      case $lib in
mgl@1371
 51848
+	      *.la)
mgl@1371
 51849
+	        func_basename "$lib"
mgl@1371
 51850
+		name="$func_basename_result"
mgl@1371
 51851
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
mgl@1371
 51852
+		test -z "$libdir" && \
mgl@1371
 51853
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
mgl@1371
 51854
+		newdlfiles="$newdlfiles $libdir/$name"
mgl@1371
 51855
+		;;
mgl@1371
 51856
+	      *) newdlfiles="$newdlfiles $lib" ;;
mgl@1371
 51857
+	      esac
mgl@1371
 51858
+	    done
mgl@1371
 51859
+	    dlfiles="$newdlfiles"
mgl@1371
 51860
+	    newdlprefiles=
mgl@1371
 51861
+	    for lib in $dlprefiles; do
mgl@1371
 51862
+	      case $lib in
mgl@1371
 51863
+	      *.la)
mgl@1371
 51864
+		# Only pass preopened files to the pseudo-archive (for
mgl@1371
 51865
+		# eventual linking with the app. that links it) if we
mgl@1371
 51866
+		# didn't already link the preopened objects directly into
mgl@1371
 51867
+		# the library:
mgl@1371
 51868
+		func_basename "$lib"
mgl@1371
 51869
+		name="$func_basename_result"
mgl@1371
 51870
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
mgl@1371
 51871
+		test -z "$libdir" && \
mgl@1371
 51872
+		  func_fatal_error "\`$lib' is not a valid libtool archive"
mgl@1371
 51873
+		newdlprefiles="$newdlprefiles $libdir/$name"
mgl@1371
 51874
+		;;
mgl@1371
 51875
+	      esac
mgl@1371
 51876
+	    done
mgl@1371
 51877
+	    dlprefiles="$newdlprefiles"
mgl@1371
 51878
+	  else
mgl@1371
 51879
+	    newdlfiles=
mgl@1371
 51880
+	    for lib in $dlfiles; do
mgl@1371
 51881
+	      case $lib in
mgl@1371
 51882
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
mgl@1371
 51883
+		*) abs=`pwd`"/$lib" ;;
mgl@1371
 51884
+	      esac
mgl@1371
 51885
+	      newdlfiles="$newdlfiles $abs"
mgl@1371
 51886
+	    done
mgl@1371
 51887
+	    dlfiles="$newdlfiles"
mgl@1371
 51888
+	    newdlprefiles=
mgl@1371
 51889
+	    for lib in $dlprefiles; do
mgl@1371
 51890
+	      case $lib in
mgl@1371
 51891
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
mgl@1371
 51892
+		*) abs=`pwd`"/$lib" ;;
mgl@1371
 51893
+	      esac
mgl@1371
 51894
+	      newdlprefiles="$newdlprefiles $abs"
mgl@1371
 51895
+	    done
mgl@1371
 51896
+	    dlprefiles="$newdlprefiles"
mgl@1371
 51897
+	  fi
mgl@1371
 51898
+	  $RM $output
mgl@1371
 51899
+	  # place dlname in correct position for cygwin
mgl@1371
 51900
+	  tdlname=$dlname
mgl@1371
 51901
+	  case $host,$output,$installed,$module,$dlname in
mgl@1371
 51902
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
mgl@1371
 51903
+	  esac
mgl@1371
 51904
+	  $ECHO > $output "\
mgl@1371
 51905
+# $outputname - a libtool library file
mgl@1371
 51906
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
mgl@1371
 51907
+#
mgl@1371
 51908
+# Please DO NOT delete this file!
mgl@1371
 51909
+# It is necessary for linking the library.
mgl@1371
 51910
+
mgl@1371
 51911
+# The name that we can dlopen(3).
mgl@1371
 51912
+dlname='$tdlname'
mgl@1371
 51913
+
mgl@1371
 51914
+# Names of this library.
mgl@1371
 51915
+library_names='$library_names'
mgl@1371
 51916
+
mgl@1371
 51917
+# The name of the static archive.
mgl@1371
 51918
+old_library='$old_library'
mgl@1371
 51919
+
mgl@1371
 51920
+# Linker flags that can not go in dependency_libs.
mgl@1371
 51921
+inherited_linker_flags='$new_inherited_linker_flags'
mgl@1371
 51922
+
mgl@1371
 51923
+# Libraries that this one depends upon.
mgl@1371
 51924
+dependency_libs='$dependency_libs'
mgl@1371
 51925
+
mgl@1371
 51926
+# Names of additional weak libraries provided by this library
mgl@1371
 51927
+weak_library_names='$weak_libs'
mgl@1371
 51928
+
mgl@1371
 51929
+# Version information for $libname.
mgl@1371
 51930
+current=$current
mgl@1371
 51931
+age=$age
mgl@1371
 51932
+revision=$revision
mgl@1371
 51933
+
mgl@1371
 51934
+# Is this an already installed library?
mgl@1371
 51935
+installed=$installed
mgl@1371
 51936
+
mgl@1371
 51937
+# Should we warn about portability when linking against -modules?
mgl@1371
 51938
+shouldnotlink=$module
mgl@1371
 51939
+
mgl@1371
 51940
+# Files to dlopen/dlpreopen
mgl@1371
 51941
+dlopen='$dlfiles'
mgl@1371
 51942
+dlpreopen='$dlprefiles'
mgl@1371
 51943
+
mgl@1371
 51944
+# Directory that this library needs to be installed in:
mgl@1371
 51945
+libdir='$install_libdir'"
mgl@1371
 51946
+	  if test "$installed" = no && test "$need_relink" = yes; then
mgl@1371
 51947
+	    $ECHO >> $output "\
mgl@1371
 51948
+relink_command=\"$relink_command\""
mgl@1371
 51949
+	  fi
mgl@1371
 51950
+	done
mgl@1371
 51951
+      }
mgl@1371
 51952
+
mgl@1371
 51953
+      # Do a symbolic link so that the libtool archive can be found in
mgl@1371
 51954
+      # LD_LIBRARY_PATH before the program is installed.
mgl@1371
 51955
+      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
mgl@1371
 51956
+      ;;
mgl@1371
 51957
+    esac
mgl@1371
 51958
+    exit $EXIT_SUCCESS
mgl@1371
 51959
+}
mgl@1371
 51960
+
mgl@1371
 51961
+{ test "$mode" = link || test "$mode" = relink; } &&
mgl@1371
 51962
+    func_mode_link ${1+"$@"}
mgl@1371
 51963
+
mgl@1371
 51964
+
mgl@1371
 51965
+# func_mode_uninstall arg...
mgl@1371
 51966
+func_mode_uninstall ()
mgl@1371
 51967
+{
mgl@1371
 51968
+    $opt_debug
mgl@1371
 51969
+    RM="$nonopt"
mgl@1371
 51970
+    files=
mgl@1371
 51971
+    rmforce=
mgl@1371
 51972
+    exit_status=0
mgl@1371
 51973
+
mgl@1371
 51974
+    # This variable tells wrapper scripts just to set variables rather
mgl@1371
 51975
+    # than running their programs.
mgl@1371
 51976
+    libtool_install_magic="$magic"
mgl@1371
 51977
+
mgl@1371
 51978
+    for arg
mgl@1371
 51979
+    do
mgl@1371
 51980
+      case $arg in
mgl@1371
 51981
+      -f) RM="$RM $arg"; rmforce=yes ;;
mgl@1371
 51982
+      -*) RM="$RM $arg" ;;
mgl@1371
 51983
+      *) files="$files $arg" ;;
mgl@1371
 51984
+      esac
mgl@1371
 51985
+    done
mgl@1371
 51986
+
mgl@1371
 51987
+    test -z "$RM" && \
mgl@1371
 51988
+      func_fatal_help "you must specify an RM program"
mgl@1371
 51989
+
mgl@1371
 51990
+    rmdirs=
mgl@1371
 51991
+
mgl@1371
 51992
+    origobjdir="$objdir"
mgl@1371
 51993
+    for file in $files; do
mgl@1371
 51994
+      func_dirname "$file" "" "."
mgl@1371
 51995
+      dir="$func_dirname_result"
mgl@1371
 51996
+      if test "X$dir" = X.; then
mgl@1371
 51997
+	objdir="$origobjdir"
mgl@1371
 51998
+      else
mgl@1371
 51999
+	objdir="$dir/$origobjdir"
mgl@1371
 52000
+      fi
mgl@1371
 52001
+      func_basename "$file"
mgl@1371
 52002
+      name="$func_basename_result"
mgl@1371
 52003
+      test "$mode" = uninstall && objdir="$dir"
mgl@1371
 52004
+
mgl@1371
 52005
+      # Remember objdir for removal later, being careful to avoid duplicates
mgl@1371
 52006
+      if test "$mode" = clean; then
mgl@1371
 52007
+	case " $rmdirs " in
mgl@1371
 52008
+	  *" $objdir "*) ;;
mgl@1371
 52009
+	  *) rmdirs="$rmdirs $objdir" ;;
mgl@1371
 52010
+	esac
mgl@1371
 52011
+      fi
mgl@1371
 52012
+
mgl@1371
 52013
+      # Don't error if the file doesn't exist and rm -f was used.
mgl@1371
 52014
+      if { test -L "$file"; } >/dev/null 2>&1 ||
mgl@1371
 52015
+	 { test -h "$file"; } >/dev/null 2>&1 ||
mgl@1371
 52016
+	 test -f "$file"; then
mgl@1371
 52017
+	:
mgl@1371
 52018
+      elif test -d "$file"; then
mgl@1371
 52019
+	exit_status=1
mgl@1371
 52020
+	continue
mgl@1371
 52021
+      elif test "$rmforce" = yes; then
mgl@1371
 52022
+	continue
mgl@1371
 52023
+      fi
mgl@1371
 52024
+
mgl@1371
 52025
+      rmfiles="$file"
mgl@1371
 52026
+
mgl@1371
 52027
+      case $name in
mgl@1371
 52028
+      *.la)
mgl@1371
 52029
+	# Possibly a libtool archive, so verify it.
mgl@1371
 52030
+	if func_lalib_p "$file"; then
mgl@1371
 52031
+	  func_source $dir/$name
mgl@1371
 52032
+
mgl@1371
 52033
+	  # Delete the libtool libraries and symlinks.
mgl@1371
 52034
+	  for n in $library_names; do
mgl@1371
 52035
+	    rmfiles="$rmfiles $objdir/$n"
mgl@1371
 52036
+	  done
mgl@1371
 52037
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
mgl@1371
 52038
+
mgl@1371
 52039
+	  case "$mode" in
mgl@1371
 52040
+	  clean)
mgl@1371
 52041
+	    case "  $library_names " in
mgl@1371
 52042
+	    # "  " in the beginning catches empty $dlname
mgl@1371
 52043
+	    *" $dlname "*) ;;
mgl@1371
 52044
+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
mgl@1371
 52045
+	    esac
mgl@1371
 52046
+	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
mgl@1371
 52047
+	    ;;
mgl@1371
 52048
+	  uninstall)
mgl@1371
 52049
+	    if test -n "$library_names"; then
mgl@1371
 52050
+	      # Do each command in the postuninstall commands.
mgl@1371
 52051
+	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
mgl@1371
 52052
+	    fi
mgl@1371
 52053
+
mgl@1371
 52054
+	    if test -n "$old_library"; then
mgl@1371
 52055
+	      # Do each command in the old_postuninstall commands.
mgl@1371
 52056
+	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
mgl@1371
 52057
+	    fi
mgl@1371
 52058
+	    # FIXME: should reinstall the best remaining shared library.
mgl@1371
 52059
+	    ;;
mgl@1371
 52060
+	  esac
mgl@1371
 52061
+	fi
mgl@1371
 52062
+	;;
mgl@1371
 52063
+
mgl@1371
 52064
+      *.lo)
mgl@1371
 52065
+	# Possibly a libtool object, so verify it.
mgl@1371
 52066
+	if func_lalib_p "$file"; then
mgl@1371
 52067
+
mgl@1371
 52068
+	  # Read the .lo file
mgl@1371
 52069
+	  func_source $dir/$name
mgl@1371
 52070
+
mgl@1371
 52071
+	  # Add PIC object to the list of files to remove.
mgl@1371
 52072
+	  if test -n "$pic_object" &&
mgl@1371
 52073
+	     test "$pic_object" != none; then
mgl@1371
 52074
+	    rmfiles="$rmfiles $dir/$pic_object"
mgl@1371
 52075
+	  fi
mgl@1371
 52076
+
mgl@1371
 52077
+	  # Add non-PIC object to the list of files to remove.
mgl@1371
 52078
+	  if test -n "$non_pic_object" &&
mgl@1371
 52079
+	     test "$non_pic_object" != none; then
mgl@1371
 52080
+	    rmfiles="$rmfiles $dir/$non_pic_object"
mgl@1371
 52081
+	  fi
mgl@1371
 52082
+	fi
mgl@1371
 52083
+	;;
mgl@1371
 52084
+
mgl@1371
 52085
+      *)
mgl@1371
 52086
+	if test "$mode" = clean ; then
mgl@1371
 52087
+	  noexename=$name
mgl@1371
 52088
+	  case $file in
mgl@1371
 52089
+	  *.exe)
mgl@1371
 52090
+	    func_stripname '' '.exe' "$file"
mgl@1371
 52091
+	    file=$func_stripname_result
mgl@1371
 52092
+	    func_stripname '' '.exe' "$name"
mgl@1371
 52093
+	    noexename=$func_stripname_result
mgl@1371
 52094
+	    # $file with .exe has already been added to rmfiles,
mgl@1371
 52095
+	    # add $file without .exe
mgl@1371
 52096
+	    rmfiles="$rmfiles $file"
mgl@1371
 52097
+	    ;;
mgl@1371
 52098
+	  esac
mgl@1371
 52099
+	  # Do a test to see if this is a libtool program.
mgl@1371
 52100
+	  if func_ltwrapper_p "$file"; then
mgl@1371
 52101
+	    relink_command=
mgl@1371
 52102
+	    func_source $dir/$noexename
mgl@1371
 52103
+
mgl@1371
 52104
+	    # note $name still contains .exe if it was in $file originally
mgl@1371
 52105
+	    # as does the version of $file that was added into $rmfiles
mgl@1371
 52106
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
mgl@1371
 52107
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
mgl@1371
 52108
+	      rmfiles="$rmfiles $objdir/lt-$name"
mgl@1371
 52109
+	    fi
mgl@1371
 52110
+	    if test "X$noexename" != "X$name" ; then
mgl@1371
 52111
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
mgl@1371
 52112
+	    fi
mgl@1371
 52113
+	  fi
mgl@1371
 52114
+	fi
mgl@1371
 52115
+	;;
mgl@1371
 52116
+      esac
mgl@1371
 52117
+      func_show_eval "$RM $rmfiles" 'exit_status=1'
mgl@1371
 52118
+    done
mgl@1371
 52119
+    objdir="$origobjdir"
mgl@1371
 52120
+
mgl@1371
 52121
+    # Try to remove the ${objdir}s in the directories where we deleted files
mgl@1371
 52122
+    for dir in $rmdirs; do
mgl@1371
 52123
+      if test -d "$dir"; then
mgl@1371
 52124
+	func_show_eval "rmdir $dir >/dev/null 2>&1"
mgl@1371
 52125
+      fi
mgl@1371
 52126
+    done
mgl@1371
 52127
+
mgl@1371
 52128
+    exit $exit_status
mgl@1371
 52129
+}
mgl@1371
 52130
+
mgl@1371
 52131
+{ test "$mode" = uninstall || test "$mode" = clean; } &&
mgl@1371
 52132
+    func_mode_uninstall ${1+"$@"}
mgl@1371
 52133
+
mgl@1371
 52134
+test -z "$mode" && {
mgl@1371
 52135
+  help="$generic_help"
mgl@1371
 52136
+  func_fatal_help "you must specify a MODE"
mgl@1371
 52137
+}
mgl@1371
 52138
+
mgl@1371
 52139
+test -z "$exec_cmd" && \
mgl@1371
 52140
+  func_fatal_help "invalid operation mode \`$mode'"
mgl@1371
 52141
+
mgl@1371
 52142
+if test -n "$exec_cmd"; then
mgl@1371
 52143
+  eval exec "$exec_cmd"
mgl@1371
 52144
+  exit $EXIT_FAILURE
mgl@1371
 52145
+fi
mgl@1371
 52146
+
mgl@1371
 52147
+exit $exit_status
mgl@1371
 52148
+
mgl@1371
 52149
+
mgl@1371
 52150
+# The TAGs below are defined such that we never get into a situation
mgl@1371
 52151
+# in which we disable both kinds of libraries.  Given conflicting
mgl@1371
 52152
+# choices, we go for a static library, that is the most portable,
mgl@1371
 52153
+# since we can't tell whether shared libraries were disabled because
mgl@1371
 52154
+# the user asked for that or because the platform doesn't support
mgl@1371
 52155
+# them.  This is particularly important on AIX, because we don't
mgl@1371
 52156
+# support having both static and shared libraries enabled at the same
mgl@1371
 52157
+# time on that platform, so we default to a shared-only configuration.
mgl@1371
 52158
+# If a disable-shared tag is given, we'll fallback to a static-only
mgl@1371
 52159
+# configuration.  But we'll never go from static-only to shared-only.
mgl@1371
 52160
+
mgl@1371
 52161
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
mgl@1371
 52162
+build_libtool_libs=no
mgl@1371
 52163
+build_old_libs=yes
mgl@1371
 52164
+# ### END LIBTOOL TAG CONFIG: disable-shared
mgl@1371
 52165
+
mgl@1371
 52166
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
mgl@1371
 52167
+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
mgl@1371
 52168
+# ### END LIBTOOL TAG CONFIG: disable-static
mgl@1371
 52169
+
mgl@1371
 52170
+# Local Variables:
mgl@1371
 52171
+# mode:shell-script
mgl@1371
 52172
+# sh-indentation:2
mgl@1371
 52173
+# End:
mgl@1371
 52174
+# vi:sw=2
mgl@1371
 52175
--- a/bfd/Makefile.in
mgl@1371
 52176
+++ b/bfd/Makefile.in
mgl@1371
 52177
@@ -312,6 +312,7 @@ ALL_MACHINES = \
mgl@1371
 52178
 	cpu-arc.lo \
mgl@1371
 52179
 	cpu-arm.lo \
mgl@1371
 52180
 	cpu-avr.lo \
mgl@1371
 52181
+	cpu-avr32.lo \
mgl@1371
 52182
 	cpu-bfin.lo \
mgl@1371
 52183
 	cpu-cr16.lo \
mgl@1371
 52184
 	cpu-cr16c.lo \
mgl@1371
 52185
@@ -493,6 +494,7 @@ BFD32_BACKENDS = \
mgl@1371
 52186
 	elf32-arc.lo \
mgl@1371
 52187
 	elf32-arm.lo \
mgl@1371
 52188
 	elf32-avr.lo \
mgl@1371
 52189
+	elf32-avr32.lo \
mgl@1371
 52190
 	elf32-bfin.lo \
mgl@1371
 52191
 	elf32-cr16.lo \
mgl@1371
 52192
 	elf32-cr16c.lo \
mgl@1371
 52193
@@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
mgl@1371
 52194
   $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
mgl@1371
 52195
   $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
 52196
   $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
mgl@1371
 52197
+elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
mgl@1371
 52198
+  $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
mgl@1371
 52199
+  $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
mgl@1371
 52200
+  elf32-target.h
mgl@1371
 52201
 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
mgl@1371
 52202
   $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
mgl@1371
 52203
   $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
mgl@1371
 52204
--- /dev/null
mgl@1371
 52205
+++ b/bfd/po/Makefile.in
mgl@1371
 52206
@@ -0,0 +1,297 @@
mgl@1371
 52207
+# Makefile for program source directory in GNU NLS utilities package.
mgl@1371
 52208
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
mgl@1371
 52209
+# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
mgl@1371
 52210
+#
mgl@1371
 52211
+# This file may be copied and used freely without restrictions.  It can
mgl@1371
 52212
+# be used in projects which are not available under the GNU Public License
mgl@1371
 52213
+# but which still want to provide support for the GNU gettext functionality.
mgl@1371
 52214
+# Please note that the actual code is *not* freely available.
mgl@1371
 52215
+
mgl@1371
 52216
+PACKAGE = bfd
mgl@1371
 52217
+VERSION = 2.18.atmel.1.0.1.avr32linux.1
mgl@1371
 52218
+
mgl@1371
 52219
+SHELL = /bin/sh
mgl@1371
 52220
+
mgl@1371
 52221
+
mgl@1371
 52222
+srcdir = .
mgl@1371
 52223
+top_srcdir = ..
mgl@1371
 52224
+
mgl@1371
 52225
+top_builddir = ..
mgl@1371
 52226
+
mgl@1371
 52227
+prefix = /usr
mgl@1371
 52228
+exec_prefix = ${prefix}
mgl@1371
 52229
+datadir = $(prefix)/share
mgl@1371
 52230
+localedir = $(datadir)/locale
mgl@1371
 52231
+gnulocaledir = $(prefix)/share/locale
mgl@1371
 52232
+gettextsrcdir = $(prefix)/share/gettext/po
mgl@1371
 52233
+subdir = po
mgl@1371
 52234
+
mgl@1371
 52235
+DESTDIR =
mgl@1371
 52236
+
mgl@1371
 52237
+INSTALL = /usr/bin/install -c
mgl@1371
 52238
+INSTALL_DATA = ${INSTALL} -m 644
mgl@1371
 52239
+MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
mgl@1371
 52240
+
mgl@1371
 52241
+CC = gcc
mgl@1371
 52242
+GENCAT = gencat
mgl@1371
 52243
+GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
mgl@1371
 52244
+MSGFMT = /usr/bin/msgfmt
mgl@1371
 52245
+XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
mgl@1371
 52246
+MSGMERGE = PATH=../src:$$PATH msgmerge
mgl@1371
 52247
+
mgl@1371
 52248
+DEFS = -DHAVE_CONFIG_H
mgl@1371
 52249
+CFLAGS = -g -O2
mgl@1371
 52250
+CPPFLAGS = 
mgl@1371
 52251
+
mgl@1371
 52252
+INCLUDES = -I.. -I$(top_srcdir)/intl
mgl@1371
 52253
+
mgl@1371
 52254
+COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
mgl@1371
 52255
+
mgl@1371
 52256
+SOURCES = cat-id-tbl.c
mgl@1371
 52257
+POFILES = @POFILES@
mgl@1371
 52258
+GMOFILES = @GMOFILES@
mgl@1371
 52259
+DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
mgl@1371
 52260
+stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
mgl@1371
 52261
+
mgl@1371
 52262
+# Note - the following line gets processed by bfd/configure and amended
mgl@1371
 52263
+# to contain the full list of source dir POTFILES.
mgl@1371
 52264
+SRC-POTFILES = \
mgl@1371
 52265
+
mgl@1371
 52266
+# Note - the following line gets processed by bfd/configure and amended
mgl@1371
 52267
+# to contain the full list of build dir POTFILES.
mgl@1371
 52268
+BLD-POTFILES = \
mgl@1371
 52269
+
mgl@1371
 52270
+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
mgl@1371
 52271
+CATOBJEXT = .gmo
mgl@1371
 52272
+INSTOBJEXT = .mo
mgl@1371
 52273
+
mgl@1371
 52274
+.SUFFIXES:
mgl@1371
 52275
+.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
mgl@1371
 52276
+
mgl@1371
 52277
+.c.o:
mgl@1371
 52278
+	$(COMPILE) $<
mgl@1371
 52279
+
mgl@1371
 52280
+.po.pox:
mgl@1371
 52281
+	$(MAKE) $(PACKAGE).pot
mgl@1371
 52282
+	$(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
mgl@1371
 52283
+
mgl@1371
 52284
+.po.mo:
mgl@1371
 52285
+	$(MSGFMT) -o $@ $<
mgl@1371
 52286
+
mgl@1371
 52287
+.po.gmo:
mgl@1371
 52288
+	file=`echo $* | sed 's,.*/,,'`.gmo \
mgl@1371
 52289
+	  && rm -f $$file && $(GMSGFMT) -o $$file $<
mgl@1371
 52290
+
mgl@1371
 52291
+.po.cat:
mgl@1371
 52292
+	sed -f ../intl/po2msg.sed < $< > $*.msg \
mgl@1371
 52293
+	  && rm -f $@ && $(GENCAT) $@ $*.msg
mgl@1371
 52294
+
mgl@1371
 52295
+
mgl@1371
 52296
+all: all-yes
mgl@1371
 52297
+
mgl@1371
 52298
+all-yes: $(CATALOGS) # $(PACKAGE).pot
mgl@1371
 52299
+all-no:
mgl@1371
 52300
+
mgl@1371
 52301
+$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
mgl@1371
 52302
+	$(XGETTEXT) --default-domain=$(PACKAGE) \
mgl@1371
 52303
+	  --directory=$(top_srcdir) \
mgl@1371
 52304
+	  --add-comments --keyword=_ --keyword=N_ \
mgl@1371
 52305
+	  --msgid-bugs-address=bug-binutils@gnu.org \
mgl@1371
 52306
+	  --files-from=$(srcdir)/SRC-POTFILES.in 
mgl@1371
 52307
+	$(XGETTEXT) --default-domain=$(PACKAGE) \
mgl@1371
 52308
+	  --directory=.. \
mgl@1371
 52309
+	  --directory=. \
mgl@1371
 52310
+	  --add-comments --keyword=_ --keyword=N_ \
mgl@1371
 52311
+	  --join-existing \
mgl@1371
 52312
+	  --msgid-bugs-address=bug-binutils@gnu.org \
mgl@1371
 52313
+	  --files-from=$(srcdir)/BLD-POTFILES.in
mgl@1371
 52314
+	rm -f $(srcdir)/$(PACKAGE).pot
mgl@1371
 52315
+	mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
mgl@1371
 52316
+
mgl@1371
 52317
+$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
mgl@1371
 52318
+$(srcdir)/stamp-cat-id: $(PACKAGE).pot
mgl@1371
 52319
+	rm -f cat-id-tbl.tmp
mgl@1371
 52320
+	sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
mgl@1371
 52321
+		| sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
mgl@1371
 52322
+	if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
mgl@1371
 52323
+	  rm cat-id-tbl.tmp; \
mgl@1371
 52324
+	else \
mgl@1371
 52325
+	  echo cat-id-tbl.c changed; \
mgl@1371
 52326
+	  rm -f $(srcdir)/cat-id-tbl.c; \
mgl@1371
 52327
+	  mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
mgl@1371
 52328
+	fi
mgl@1371
 52329
+	cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
mgl@1371
 52330
+
mgl@1371
 52331
+
mgl@1371
 52332
+install: install-exec install-data
mgl@1371
 52333
+install-exec:
mgl@1371
 52334
+install-info:
mgl@1371
 52335
+install-html:
mgl@1371
 52336
+install-data: install-data-yes
mgl@1371
 52337
+install-data-no: all
mgl@1371
 52338
+install-data-yes: all
mgl@1371
 52339
+	if test -r $(MKINSTALLDIRS); then \
mgl@1371
 52340
+	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
mgl@1371
 52341
+	else \
mgl@1371
 52342
+	  $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
mgl@1371
 52343
+	fi
mgl@1371
 52344
+	@catalogs='$(CATALOGS)'; \
mgl@1371
 52345
+	for cat in $$catalogs; do \
mgl@1371
 52346
+	  cat=`basename $$cat`; \
mgl@1371
 52347
+	  case "$$cat" in \
mgl@1371
 52348
+	    *.gmo) destdir=$(gnulocaledir);; \
mgl@1371
 52349
+	    *)     destdir=$(localedir);; \
mgl@1371
 52350
+	  esac; \
mgl@1371
 52351
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mgl@1371
 52352
+	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
mgl@1371
 52353
+	  if test -r $(MKINSTALLDIRS); then \
mgl@1371
 52354
+	    $(MKINSTALLDIRS) $$dir; \
mgl@1371
 52355
+	  else \
mgl@1371
 52356
+	    $(top_srcdir)/mkinstalldirs $$dir; \
mgl@1371
 52357
+	  fi; \
mgl@1371
 52358
+	  if test -r $$cat; then \
mgl@1371
 52359
+	    $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
mgl@1371
 52360
+	    echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
mgl@1371
 52361
+	  else \
mgl@1371
 52362
+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
mgl@1371
 52363
+	    echo "installing $(srcdir)/$$cat as" \
mgl@1371
 52364
+		 "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
mgl@1371
 52365
+	  fi; \
mgl@1371
 52366
+	  if test -r $$cat.m; then \
mgl@1371
 52367
+	    $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
mgl@1371
 52368
+	    echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
mgl@1371
 52369
+	  else \
mgl@1371
 52370
+	    if test -r $(srcdir)/$$cat.m ; then \
mgl@1371
 52371
+	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
mgl@1371
 52372
+		$$dir/$(PACKAGE)$(INSTOBJEXT).m; \
mgl@1371
 52373
+	      echo "installing $(srcdir)/$$cat as" \
mgl@1371
 52374
+		   "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
mgl@1371
 52375
+	    else \
mgl@1371
 52376
+	      true; \
mgl@1371
 52377
+	    fi; \
mgl@1371
 52378
+	  fi; \
mgl@1371
 52379
+	done
mgl@1371
 52380
+	if test "$(PACKAGE)" = "gettext"; then \
mgl@1371
 52381
+	  if test -r $(MKINSTALLDIRS); then \
mgl@1371
 52382
+	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
mgl@1371
 52383
+	  else \
mgl@1371
 52384
+	    $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
mgl@1371
 52385
+	  fi; \
mgl@1371
 52386
+	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
mgl@1371
 52387
+			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
mgl@1371
 52388
+	else \
mgl@1371
 52389
+	  : ; \
mgl@1371
 52390
+	fi
mgl@1371
 52391
+
mgl@1371
 52392
+# Define this as empty until I found a useful application.
mgl@1371
 52393
+installcheck:
mgl@1371
 52394
+
mgl@1371
 52395
+uninstall:
mgl@1371
 52396
+	catalogs='$(CATALOGS)'; \
mgl@1371
 52397
+	for cat in $$catalogs; do \
mgl@1371
 52398
+	  cat=`basename $$cat`; \
mgl@1371
 52399
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mgl@1371
 52400
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
mgl@1371
 52401
+	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
mgl@1371
 52402
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
mgl@1371
 52403
+	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
mgl@1371
 52404
+	done
mgl@1371
 52405
+	rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
mgl@1371
 52406
+
mgl@1371
 52407
+check: all
mgl@1371
 52408
+
mgl@1371
 52409
+cat-id-tbl.o: ../intl/libgettext.h
mgl@1371
 52410
+
mgl@1371
 52411
+html dvi pdf ps info tags TAGS ID:
mgl@1371
 52412
+
mgl@1371
 52413
+mostlyclean:
mgl@1371
 52414
+	rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
mgl@1371
 52415
+	rm -fr *.o
mgl@1371
 52416
+
mgl@1371
 52417
+clean: mostlyclean
mgl@1371
 52418
+
mgl@1371
 52419
+distclean: clean
mgl@1371
 52420
+	rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
mgl@1371
 52421
+	rm -f SRC-POTFILES BLD-POTFILES 
mgl@1371
 52422
+
mgl@1371
 52423
+maintainer-clean: distclean
mgl@1371
 52424
+	@echo "This command is intended for maintainers to use;"
mgl@1371
 52425
+	@echo "it deletes files that may require special tools to rebuild."
mgl@1371
 52426
+	rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
mgl@1371
 52427
+
mgl@1371
 52428
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
mgl@1371
 52429
+dist distdir: update-po $(DISTFILES)
mgl@1371
 52430
+	dists="$(DISTFILES)"; \
mgl@1371
 52431
+	for file in $$dists; do \
mgl@1371
 52432
+	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
mgl@1371
 52433
+	    || cp -p $(srcdir)/$$file $(distdir); \
mgl@1371
 52434
+	done
mgl@1371
 52435
+
mgl@1371
 52436
+update-po: Makefile
mgl@1371
 52437
+	$(MAKE) $(PACKAGE).pot
mgl@1371
 52438
+	PATH=`pwd`/../src:$$PATH; \
mgl@1371
 52439
+	cd $(srcdir); \
mgl@1371
 52440
+	catalogs='$(CATALOGS)'; \
mgl@1371
 52441
+	for cat in $$catalogs; do \
mgl@1371
 52442
+	  cat=`basename $$cat`; \
mgl@1371
 52443
+	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
mgl@1371
 52444
+	  mv $$lang.po $$lang.old.po; \
mgl@1371
 52445
+	  echo "$$lang:"; \
mgl@1371
 52446
+	  if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
mgl@1371
 52447
+	    rm -f $$lang.old.po; \
mgl@1371
 52448
+	  else \
mgl@1371
 52449
+	    echo "msgmerge for $$cat failed!"; \
mgl@1371
 52450
+	    rm -f $$lang.po; \
mgl@1371
 52451
+	    mv $$lang.old.po $$lang.po; \
mgl@1371
 52452
+	  fi; \
mgl@1371
 52453
+	done
mgl@1371
 52454
+
mgl@1371
 52455
+SRC-POTFILES: SRC-POTFILES.in
mgl@1371
 52456
+	( if test 'x$(srcdir)' != 'x.'; then \
mgl@1371
 52457
+	    posrcprefix='$(top_srcdir)/'; \
mgl@1371
 52458
+	  else \
mgl@1371
 52459
+	    posrcprefix="../"; \
mgl@1371
 52460
+	  fi; \
mgl@1371
 52461
+	  rm -f $@-t $@ \
mgl@1371
 52462
+	    && (sed -e '/^#/d' \
mgl@1371
 52463
+	            -e '/^[ 	]*$$/d' \
mgl@1371
 52464
+		    -e "s@.*@	$$posrcprefix& \\\\@" < $(srcdir)/$@.in \
mgl@1371
 52465
+		| sed -e '$$s/\\$$//') > $@-t \
mgl@1371
 52466
+	    && chmod a-w $@-t \
mgl@1371
 52467
+	    && mv $@-t $@ )
mgl@1371
 52468
+
mgl@1371
 52469
+BLD-POTFILES: BLD-POTFILES.in
mgl@1371
 52470
+	  ( rm -f $@-t $@ \
mgl@1371
 52471
+	    && (sed -e '/^#/d' \
mgl@1371
 52472
+	            -e '/^[ 	]*$$/d' \
mgl@1371
 52473
+		    -e "s@.*@	../& \\\\@" < $(srcdir)/$@.in \
mgl@1371
 52474
+		| sed -e '$$s/\\$$//') > $@-t \
mgl@1371
 52475
+	    && chmod a-w $@-t \
mgl@1371
 52476
+	    && mv $@-t $@ )
mgl@1371
 52477
+
mgl@1371
 52478
+SRC-POTFILES.in: # ../Makefile
mgl@1371
 52479
+	cd .. && $(MAKE) po/SRC-POTFILES.in
mgl@1371
 52480
+
mgl@1371
 52481
+BLD-POTFILES.in: # ../Makefile
mgl@1371
 52482
+	cd .. && $(MAKE) po/BLD-POTFILES.in
mgl@1371
 52483
+
mgl@1371
 52484
+# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
mgl@1371
 52485
+# here breaks the implementation of the 'distclean' rule for maintainers.
mgl@1371
 52486
+# This is because if 'make distclean' is run in the BFD directory, the
mgl@1371
 52487
+# Makefile there will be deleted before 'distclean' is made here, and so
mgl@1371
 52488
+# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
mgl@1371
 52489
+# be satisfied.
mgl@1371
 52490
+#
mgl@1371
 52491
+# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
mgl@1371
 52492
+# however since it is necessary that these files be built during
mgl@1371
 52493
+# *configure* time, so that configure can insert them into the
mgl@1371
 52494
+# po/Makefile that it is creating, so that the Makefile will have
mgl@1371
 52495
+# the correct dependencies.
mgl@1371
 52496
+Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
mgl@1371
 52497
+	cd .. \
mgl@1371
 52498
+	  && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
mgl@1371
 52499
+	     CONFIG_HEADERS= $(SHELL) ./config.status
mgl@1371
 52500
+
mgl@1371
 52501
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
mgl@1371
 52502
+# Otherwise a system limit (for SysV at least) may be exceeded.
mgl@1371
 52503
+.NOEXPORT:
mgl@1371
 52504
--- a/binutils/Makefile.in
mgl@1371
 52505
+++ b/binutils/Makefile.in
mgl@1371
 52506
@@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
mgl@1371
 52507
   $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
mgl@1371
 52508
   $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
mgl@1371
 52509
   $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
mgl@1371
 52510
-  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
mgl@1371
 52511
+  $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
mgl@1371
 52512
   $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
mgl@1371
 52513
   $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
mgl@1371
 52514
   $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
mgl@1371
 52515
--- a/ld/Makefile.in
mgl@1371
 52516
+++ b/ld/Makefile.in
mgl@1371
 52517
@@ -384,7 +384,34 @@ ALL_EMULATIONS = \
mgl@1371
 52518
 	eavr3.o \
mgl@1371
 52519
 	eavr4.o \
mgl@1371
 52520
 	eavr5.o \
mgl@1371
 52521
-	eavr6.o \
mgl@1371
 52522
+    eavr6.o \
mgl@1371
 52523
+	eavr32elf_ap7000.o \
mgl@1371
 52524
+	eavr32elf_ap7001.o \
mgl@1371
 52525
+	eavr32elf_ap7002.o \
mgl@1371
 52526
+	eavr32elf_ap7200.o \
mgl@1371
 52527
+	eavr32elf_uc3a0128.o \
mgl@1371
 52528
+	eavr32elf_uc3a0256.o \
mgl@1371
 52529
+	eavr32elf_uc3a0512.o \
mgl@1371
 52530
+	eavr32elf_uc3a0512es.o \
mgl@1371
 52531
+	eavr32elf_uc3a1128.o \
mgl@1371
 52532
+	eavr32elf_uc3a1256.o \
mgl@1371
 52533
+	eavr32elf_uc3a1512es.o \
mgl@1371
 52534
+	eavr32elf_uc3a1512.o \
mgl@1371
 52535
+	eavr32elf_uc3a364.o \
mgl@1371
 52536
+	eavr32elf_uc3a364s.o \
mgl@1371
 52537
+	eavr32elf_uc3a3128.o \
mgl@1371
 52538
+	eavr32elf_uc3a3128s.o \
mgl@1371
 52539
+	eavr32elf_uc3a3256.o \
mgl@1371
 52540
+	eavr32elf_uc3a3256s.o \
mgl@1371
 52541
+	eavr32elf_uc3b064.o \
mgl@1371
 52542
+	eavr32elf_uc3b0128.o \
mgl@1371
 52543
+	eavr32elf_uc3b0256es.o \
mgl@1371
 52544
+	eavr32elf_uc3b0256.o \
mgl@1371
 52545
+	eavr32elf_uc3b164.o \
mgl@1371
 52546
+	eavr32elf_uc3b1128.o \
mgl@1371
 52547
+	eavr32elf_uc3b1256es.o \
mgl@1371
 52548
+	eavr32elf_uc3b1256.o \
mgl@1371
 52549
+	eavr32linux.o \
mgl@1371
 52550
 	ecoff_i860.o \
mgl@1371
 52551
 	ecoff_sparc.o \
mgl@1371
 52552
 	eelf32_spu.o \
mgl@1371
 52553
@@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
mgl@1371
 52554
   $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
mgl@1371
 52555
   ${GEN_DEPENDS}
mgl@1371
 52556
 	${GENSCRIPTS} avr6 "$(tdir_avr2)"
mgl@1371
 52557
+eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52558
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52559
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52560
+	${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
mgl@1371
 52561
+eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52562
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52563
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52564
+	${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
mgl@1371
 52565
+eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52566
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52567
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52568
+	${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
mgl@1371
 52569
+eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52570
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52571
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52572
+	${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
mgl@1371
 52573
+eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52574
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52575
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52576
+	${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
mgl@1371
 52577
+eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52578
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52579
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52580
+	${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
mgl@1371
 52581
+eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52582
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52583
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52584
+	${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
mgl@1371
 52585
+eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52586
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52587
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52588
+	${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
mgl@1371
 52589
+eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52590
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52591
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52592
+	${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
mgl@1371
 52593
+eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52594
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52595
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52596
+	${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
mgl@1371
 52597
+eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52598
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52599
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52600
+	${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
mgl@1371
 52601
+eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52602
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52603
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52604
+	${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
mgl@1371
 52605
+eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52606
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52607
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52608
+	${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
mgl@1371
 52609
+eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52610
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52611
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52612
+	${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
mgl@1371
 52613
+eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52614
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52615
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52616
+	${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
mgl@1371
 52617
+eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52618
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52619
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52620
+	${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
mgl@1371
 52621
+eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52622
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52623
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52624
+	${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
mgl@1371
 52625
+eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52626
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52627
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52628
+	${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
mgl@1371
 52629
+eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52630
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52631
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52632
+	${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
mgl@1371
 52633
+eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52634
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52635
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52636
+	${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
mgl@1371
 52637
+eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52638
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52639
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52640
+	${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
mgl@1371
 52641
+eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52642
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52643
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52644
+	${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
mgl@1371
 52645
+eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52646
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52647
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52648
+	${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
mgl@1371
 52649
+eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52650
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52651
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52652
+	${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
mgl@1371
 52653
+eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52654
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52655
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52656
+	${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
mgl@1371
 52657
+eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
mgl@1371
 52658
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52659
+  $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
mgl@1371
 52660
+	${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
mgl@1371
 52661
+eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
mgl@1371
 52662
+  $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
mgl@1371
 52663
+  $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
mgl@1371
 52664
+	${GENSCRIPTS} avr32linux "$(tdir_avr32)"
mgl@1371
 52665
 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
mgl@1371
 52666
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
mgl@1371
 52667
 	${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
mgl@1371
 52668
@@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
mgl@1371
 52669
 	  || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
mgl@1371
 52670
 	fi
mgl@1371
 52671
 
mgl@1371
 52672
-install-data-local:
mgl@1371
 52673
+# We want install to imply install-info as per GNU standards, despite the
mgl@1371
 52674
+# cygnus option.
mgl@1371
 52675
+install-data-local: install-info
mgl@1371
 52676
 	$(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
mgl@1371
 52677
 	for f in ldscripts/*; do \
mgl@1371
 52678
 	  $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
mgl@1371
 52679
--- /dev/null
mgl@1371
 52680
+++ b/libiberty/required-list
mgl@1371
 52681
@@ -0,0 +1 @@
mgl@1371
 52682
+./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
mgl@1371
 52683
--- a/opcodes/configure
mgl@1371
 52684
+++ b/opcodes/configure
mgl@1371
 52685
@@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
mgl@1371
 52686
 	bfd_arc_arch)		ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
mgl@1371
 52687
 	bfd_arm_arch)		ta="$ta arm-dis.lo" ;;
mgl@1371
 52688
 	bfd_avr_arch)		ta="$ta avr-dis.lo" ;;
mgl@1371
 52689
+	bfd_avr32_arch)		ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
mgl@1371
 52690
 	bfd_bfin_arch)		ta="$ta bfin-dis.lo" ;;
mgl@1371
 52691
 	bfd_cr16_arch)    	ta="$ta cr16-dis.lo cr16-opc.lo" ;;
mgl@1371
 52692
 	bfd_cris_arch)		ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
mgl@1371
 52693
@@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
mgl@1371
 52694
 				ta="$ta sh64-dis.lo sh64-opc.lo"
mgl@1371
 52695
 				archdefs="$archdefs -DINCLUDE_SHMEDIA"
mgl@1371
 52696
 				break;;
mgl@1371
 52697
-	    esac;
mgl@1371
 52698
+	    esac
mgl@1371
 52699
 	  done
mgl@1371
 52700
 				ta="$ta sh-dis.lo cgen-bitset.lo" ;;
mgl@1371
 52701
 	bfd_sparc_arch)		ta="$ta sparc-dis.lo sparc-opc.lo" ;;
mgl@1371
 52702
--- a/opcodes/Makefile.in
mgl@1371
 52703
+++ b/opcodes/Makefile.in
mgl@1371
 52704
@@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
mgl@1371
 52705
 # Header files.
mgl@1371
 52706
 HFILES = \
mgl@1371
 52707
 	cgen-ops.h cgen-types.h \
mgl@1371
 52708
+	avr32-asm.h avr32-opc.h \
mgl@1371
 52709
 	fr30-desc.h fr30-opc.h \
mgl@1371
 52710
 	frv-desc.h frv-opc.h \
mgl@1371
 52711
 	h8500-opc.h \
mgl@1371
 52712
@@ -291,6 +292,9 @@ CFILES = \
mgl@1371
 52713
 	arc-ext.c \
mgl@1371
 52714
 	arm-dis.c \
mgl@1371
 52715
 	avr-dis.c \
mgl@1371
 52716
+	avr32-asm.c \
mgl@1371
 52717
+	avr32-dis.c \
mgl@1371
 52718
+	avr32-opc.c \
mgl@1371
 52719
 	bfin-dis.c \
mgl@1371
 52720
 	cgen-asm.c \
mgl@1371
 52721
 	cgen-bitset.c \
mgl@1371
 52722
@@ -445,6 +449,9 @@ ALL_MACHINES = \
mgl@1371
 52723
 	arc-ext.lo \
mgl@1371
 52724
 	arm-dis.lo \
mgl@1371
 52725
 	avr-dis.lo \
mgl@1371
 52726
+	avr32-asm.lo \
mgl@1371
 52727
+	avr32-dis.lo \
mgl@1371
 52728
+	avr32-opc.lo \
mgl@1371
 52729
 	bfin-dis.lo \
mgl@1371
 52730
 	cgen-asm.lo \
mgl@1371
 52731
 	cgen-bitset.lo \
mgl@1371
 52732
@@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h 
mgl@1371
 52733
   $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
mgl@1371
 52734
   opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
mgl@1371
 52735
   $(INCDIR)/opcode/avr.h
mgl@1371
 52736
+avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 52737
+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
mgl@1371
 52738
+  $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
mgl@1371
 52739
+  $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
mgl@1371
 52740
+avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 52741
+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
mgl@1371
 52742
+  avr32-opc.h opintl.h
mgl@1371
 52743
+avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
mgl@1371
 52744
+  $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
mgl@1371
 52745
 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
mgl@1371
 52746
   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
mgl@1371
 52747
 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \