bc0fb43f2a930c99196ca51044f89ffbd3ea1dce
[openwrt/svn-archive/archive.git] / toolchain / binutils / patches / 2.18 / 500-avr32.patch
1 --- a/bfd/archures.c
2 +++ b/bfd/archures.c
3 @@ -346,6 +346,11 @@ DESCRIPTION
4 .#define bfd_mach_avr4 4
5 .#define bfd_mach_avr5 5
6 .#define bfd_mach_avr6 6
7 +. bfd_arch_avr32, {* Atmel AVR32 *}
8 +.#define bfd_mach_avr32_ap 7000
9 +.#define bfd_mach_avr32_uc 3000
10 +.#define bfd_mach_avr32_ucr1 3001
11 +.#define bfd_mach_avr32_ucr2 3002
12 . bfd_arch_bfin, {* ADI Blackfin *}
13 .#define bfd_mach_bfin 1
14 . bfd_arch_cr16, {* National Semiconductor CompactRISC (ie CR16). *}
15 @@ -438,6 +443,7 @@ extern const bfd_arch_info_type bfd_alph
16 extern const bfd_arch_info_type bfd_arc_arch;
17 extern const bfd_arch_info_type bfd_arm_arch;
18 extern const bfd_arch_info_type bfd_avr_arch;
19 +extern const bfd_arch_info_type bfd_avr32_arch;
20 extern const bfd_arch_info_type bfd_bfin_arch;
21 extern const bfd_arch_info_type bfd_cr16_arch;
22 extern const bfd_arch_info_type bfd_cr16c_arch;
23 @@ -509,6 +515,7 @@ static const bfd_arch_info_type * const
24 &bfd_arc_arch,
25 &bfd_arm_arch,
26 &bfd_avr_arch,
27 + &bfd_avr32_arch,
28 &bfd_bfin_arch,
29 &bfd_cr16_arch,
30 &bfd_cr16c_arch,
31 --- a/bfd/config.bfd
32 +++ b/bfd/config.bfd
33 @@ -335,6 +335,10 @@ case "${targ}" in
34 targ_underscore=yes
35 ;;
36
37 + avr32-*-*)
38 + targ_defvec=bfd_elf32_avr32_vec
39 + ;;
40 +
41 c30-*-*aout* | tic30-*-*aout*)
42 targ_defvec=tic30_aout_vec
43 ;;
44 --- a/bfd/configure.in
45 +++ b/bfd/configure.in
46 @@ -619,6 +619,7 @@ do
47 bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
48 bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
49 bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
50 + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
51 bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
52 bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
53 bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
54 --- /dev/null
55 +++ b/bfd/cpu-avr32.c
56 @@ -0,0 +1,51 @@
57 +/* BFD library support routines for AVR32.
58 + Copyright 2003-2006 Atmel Corporation.
59 +
60 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
61 +
62 + This is part of BFD, the Binary File Descriptor library.
63 +
64 + This program is free software; you can redistribute it and/or modify
65 + it under the terms of the GNU General Public License as published by
66 + the Free Software Foundation; either version 2 of the License, or
67 + (at your option) any later version.
68 +
69 + This program is distributed in the hope that it will be useful,
70 + but WITHOUT ANY WARRANTY; without even the implied warranty of
71 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72 + GNU General Public License for more details.
73 +
74 + You should have received a copy of the GNU General Public License
75 + along with this program; if not, write to the Free Software
76 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
77 +
78 +#include "bfd.h"
79 +#include "sysdep.h"
80 +#include "libbfd.h"
81 +
82 +#define N(machine, print, default, next) \
83 + { \
84 + 32, /* 32 bits in a word */ \
85 + 32, /* 32 bits in an address */ \
86 + 8, /* 8 bits in a byte */ \
87 + bfd_arch_avr32, /* architecture */ \
88 + machine, /* machine */ \
89 + "avr32", /* arch name */ \
90 + print, /* printable name */ \
91 + 1, /* section align power */ \
92 + default, /* the default machine? */ \
93 + bfd_default_compatible, \
94 + bfd_default_scan, \
95 + next, \
96 + }
97 +
98 +static const bfd_arch_info_type cpu_info[] =
99 +{
100 + N(bfd_mach_avr32_ap, "avr32:ap", FALSE, &cpu_info[1]),
101 + N(bfd_mach_avr32_uc, "avr32:uc", FALSE, &cpu_info[2]),
102 + N(bfd_mach_avr32_ucr1, "avr32:ucr1", FALSE, &cpu_info[3]),
103 + N(bfd_mach_avr32_ucr2, "avr32:ucr2", FALSE, NULL),
104 +};
105 +
106 +const bfd_arch_info_type bfd_avr32_arch =
107 + N(bfd_mach_avr32_ap, "avr32", TRUE, &cpu_info[0]);
108 --- /dev/null
109 +++ b/bfd/elf32-avr32.c
110 @@ -0,0 +1,3915 @@
111 +/* AVR32-specific support for 32-bit ELF.
112 + Copyright 2003-2006 Atmel Corporation.
113 +
114 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
115 +
116 + This file is part of BFD, the Binary File Descriptor library.
117 +
118 + This program is free software; you can redistribute it and/or modify
119 + it under the terms of the GNU General Public License as published by
120 + the Free Software Foundation; either version 2 of the License, or
121 + (at your option) any later version.
122 +
123 + This program is distributed in the hope that it will be useful,
124 + but WITHOUT ANY WARRANTY; without even the implied warranty of
125 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
126 + GNU General Public License for more details.
127 +
128 + You should have received a copy of the GNU General Public License
129 + along with this program; if not, write to the Free Software
130 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
131 +
132 +#include "bfd.h"
133 +#include "sysdep.h"
134 +#include "bfdlink.h"
135 +#include "libbfd.h"
136 +#include "elf-bfd.h"
137 +#include "elf/avr32.h"
138 +#include "elf32-avr32.h"
139 +
140 +#define xDEBUG
141 +#define xRELAX_DEBUG
142 +
143 +#ifdef DEBUG
144 +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
145 +#else
146 +# define pr_debug(fmt, args...) do { } while (0)
147 +#endif
148 +
149 +#ifdef RELAX_DEBUG
150 +# define RDBG(fmt, args...) fprintf(stderr, fmt, ##args)
151 +#else
152 +# define RDBG(fmt, args...) do { } while (0)
153 +#endif
154 +
155 +/* When things go wrong, we want it to blow up, damnit! */
156 +#undef BFD_ASSERT
157 +#undef abort
158 +#define BFD_ASSERT(expr) \
159 + do \
160 + { \
161 + if (!(expr)) \
162 + { \
163 + bfd_assert(__FILE__, __LINE__); \
164 + abort(); \
165 + } \
166 + } \
167 + while (0)
168 +
169 +/* The name of the dynamic interpreter. This is put in the .interp section. */
170 +#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
171 +
172 +#define AVR32_GOT_HEADER_SIZE 8
173 +#define AVR32_FUNCTION_STUB_SIZE 8
174 +
175 +#define ELF_R_INFO(x, y) ELF32_R_INFO(x, y)
176 +#define ELF_R_TYPE(x) ELF32_R_TYPE(x)
177 +#define ELF_R_SYM(x) ELF32_R_SYM(x)
178 +
179 +#define NOP_OPCODE 0xd703
180 +
181 +
182 +/* Mapping between BFD relocations and ELF relocations */
183 +
184 +static reloc_howto_type *
185 +bfd_elf32_bfd_reloc_type_lookup(bfd *abfd, bfd_reloc_code_real_type code);
186 +
187 +static reloc_howto_type *
188 +bfd_elf32_bfd_reloc_name_lookup(bfd *abfd, const char *r_name);
189 +
190 +static void
191 +avr32_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst);
192 +
193 +/* Generic HOWTO */
194 +#define GENH(name, align, size, bitsize, pcrel, bitpos, complain, mask) \
195 + HOWTO(name, align, size, bitsize, pcrel, bitpos, \
196 + complain_overflow_##complain, bfd_elf_generic_reloc, #name, \
197 + FALSE, 0, mask, pcrel)
198 +
199 +static reloc_howto_type elf_avr32_howto_table[] = {
200 + /* NAME ALN SZ BSZ PCREL BP COMPLAIN MASK */
201 + GENH(R_AVR32_NONE, 0, 0, 0, FALSE, 0, dont, 0x00000000),
202 +
203 + GENH(R_AVR32_32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
204 + GENH(R_AVR32_16, 0, 1, 16, FALSE, 0, bitfield, 0x0000ffff),
205 + GENH(R_AVR32_8, 0, 0, 8, FALSE, 0, bitfield, 0x000000ff),
206 + GENH(R_AVR32_32_PCREL, 0, 2, 32, TRUE, 0, signed, 0xffffffff),
207 + GENH(R_AVR32_16_PCREL, 0, 1, 16, TRUE, 0, signed, 0x0000ffff),
208 + GENH(R_AVR32_8_PCREL, 0, 0, 8, TRUE, 0, signed, 0x000000ff),
209 +
210 + /* Difference between two symbol (sym2 - sym1). The reloc encodes
211 + the value of sym1. The field contains the difference before any
212 + relaxing is done. */
213 + GENH(R_AVR32_DIFF32, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
214 + GENH(R_AVR32_DIFF16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
215 + GENH(R_AVR32_DIFF8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
216 +
217 + GENH(R_AVR32_GOT32, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
218 + GENH(R_AVR32_GOT16, 0, 1, 16, FALSE, 0, signed, 0x0000ffff),
219 + GENH(R_AVR32_GOT8, 0, 0, 8, FALSE, 0, signed, 0x000000ff),
220 +
221 + GENH(R_AVR32_21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
222 + GENH(R_AVR32_16U, 0, 2, 16, FALSE, 0, unsigned, 0x0000ffff),
223 + GENH(R_AVR32_16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
224 + GENH(R_AVR32_8S, 0, 1, 8, FALSE, 4, signed, 0x00000ff0),
225 + GENH(R_AVR32_8S_EXT, 0, 2, 8, FALSE, 0, signed, 0x000000ff),
226 +
227 + GENH(R_AVR32_22H_PCREL, 1, 2, 21, TRUE, 0, signed, 0x1e10ffff),
228 + GENH(R_AVR32_18W_PCREL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
229 + GENH(R_AVR32_16B_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
230 + GENH(R_AVR32_16N_PCREL, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
231 + GENH(R_AVR32_14UW_PCREL, 2, 2, 12, TRUE, 0, unsigned, 0x0000f0ff),
232 + GENH(R_AVR32_11H_PCREL, 1, 1, 10, TRUE, 4, signed, 0x00000ff3),
233 + GENH(R_AVR32_10UW_PCREL, 2, 2, 8, TRUE, 0, unsigned, 0x000000ff),
234 + GENH(R_AVR32_9H_PCREL, 1, 1, 8, TRUE, 4, signed, 0x00000ff0),
235 + GENH(R_AVR32_9UW_PCREL, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
236 +
237 + GENH(R_AVR32_HI16, 16, 2, 16, FALSE, 0, dont, 0x0000ffff),
238 + GENH(R_AVR32_LO16, 0, 2, 16, FALSE, 0, dont, 0x0000ffff),
239 +
240 + GENH(R_AVR32_GOTPC, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
241 + GENH(R_AVR32_GOTCALL, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
242 + GENH(R_AVR32_LDA_GOT, 2, 2, 21, FALSE, 0, signed, 0x1e10ffff),
243 + GENH(R_AVR32_GOT21S, 0, 2, 21, FALSE, 0, signed, 0x1e10ffff),
244 + GENH(R_AVR32_GOT18SW, 2, 2, 16, FALSE, 0, signed, 0x0000ffff),
245 + GENH(R_AVR32_GOT16S, 0, 2, 16, FALSE, 0, signed, 0x0000ffff),
246 + GENH(R_AVR32_GOT7UW, 2, 1, 5, FALSE, 4, unsigned, 0x000001f0),
247 +
248 + GENH(R_AVR32_32_CPENT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
249 + GENH(R_AVR32_CPCALL, 2, 2, 16, TRUE, 0, signed, 0x0000ffff),
250 + GENH(R_AVR32_16_CP, 0, 2, 16, TRUE, 0, signed, 0x0000ffff),
251 + GENH(R_AVR32_9W_CP, 2, 1, 7, TRUE, 4, unsigned, 0x000007f0),
252 +
253 + GENH(R_AVR32_RELATIVE, 0, 2, 32, FALSE, 0, signed, 0xffffffff),
254 + GENH(R_AVR32_GLOB_DAT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
255 + GENH(R_AVR32_JMP_SLOT, 0, 2, 32, FALSE, 0, dont, 0xffffffff),
256 +
257 + GENH(R_AVR32_ALIGN, 0, 1, 0, FALSE, 0, unsigned, 0x00000000),
258 +
259 + GENH(R_AVR32_15S, 2, 2, 15, FALSE, 0, signed, 0x00007fff),
260 +};
261 +
262 +struct elf_reloc_map
263 +{
264 + bfd_reloc_code_real_type bfd_reloc_val;
265 + unsigned char elf_reloc_val;
266 +};
267 +
268 +static const struct elf_reloc_map avr32_reloc_map[] =
269 +{
270 + { BFD_RELOC_NONE, R_AVR32_NONE },
271 +
272 + { BFD_RELOC_32, R_AVR32_32 },
273 + { BFD_RELOC_16, R_AVR32_16 },
274 + { BFD_RELOC_8, R_AVR32_8 },
275 + { BFD_RELOC_32_PCREL, R_AVR32_32_PCREL },
276 + { BFD_RELOC_16_PCREL, R_AVR32_16_PCREL },
277 + { BFD_RELOC_8_PCREL, R_AVR32_8_PCREL },
278 + { BFD_RELOC_AVR32_DIFF32, R_AVR32_DIFF32 },
279 + { BFD_RELOC_AVR32_DIFF16, R_AVR32_DIFF16 },
280 + { BFD_RELOC_AVR32_DIFF8, R_AVR32_DIFF8 },
281 + { BFD_RELOC_AVR32_GOT32, R_AVR32_GOT32 },
282 + { BFD_RELOC_AVR32_GOT16, R_AVR32_GOT16 },
283 + { BFD_RELOC_AVR32_GOT8, R_AVR32_GOT8 },
284 +
285 + { BFD_RELOC_AVR32_21S, R_AVR32_21S },
286 + { BFD_RELOC_AVR32_16U, R_AVR32_16U },
287 + { BFD_RELOC_AVR32_16S, R_AVR32_16S },
288 + { BFD_RELOC_AVR32_SUB5, R_AVR32_16S },
289 + { BFD_RELOC_AVR32_8S_EXT, R_AVR32_8S_EXT },
290 + { BFD_RELOC_AVR32_8S, R_AVR32_8S },
291 +
292 + { BFD_RELOC_AVR32_22H_PCREL, R_AVR32_22H_PCREL },
293 + { BFD_RELOC_AVR32_18W_PCREL, R_AVR32_18W_PCREL },
294 + { BFD_RELOC_AVR32_16B_PCREL, R_AVR32_16B_PCREL },
295 + { BFD_RELOC_AVR32_16N_PCREL, R_AVR32_16N_PCREL },
296 + { BFD_RELOC_AVR32_11H_PCREL, R_AVR32_11H_PCREL },
297 + { BFD_RELOC_AVR32_10UW_PCREL, R_AVR32_10UW_PCREL },
298 + { BFD_RELOC_AVR32_9H_PCREL, R_AVR32_9H_PCREL },
299 + { BFD_RELOC_AVR32_9UW_PCREL, R_AVR32_9UW_PCREL },
300 +
301 + { BFD_RELOC_HI16, R_AVR32_HI16 },
302 + { BFD_RELOC_LO16, R_AVR32_LO16 },
303 +
304 + { BFD_RELOC_AVR32_GOTPC, R_AVR32_GOTPC },
305 + { BFD_RELOC_AVR32_GOTCALL, R_AVR32_GOTCALL },
306 + { BFD_RELOC_AVR32_LDA_GOT, R_AVR32_LDA_GOT },
307 + { BFD_RELOC_AVR32_GOT21S, R_AVR32_GOT21S },
308 + { BFD_RELOC_AVR32_GOT18SW, R_AVR32_GOT18SW },
309 + { BFD_RELOC_AVR32_GOT16S, R_AVR32_GOT16S },
310 + /* GOT7UW should never be generated by the assembler */
311 +
312 + { BFD_RELOC_AVR32_32_CPENT, R_AVR32_32_CPENT },
313 + { BFD_RELOC_AVR32_CPCALL, R_AVR32_CPCALL },
314 + { BFD_RELOC_AVR32_16_CP, R_AVR32_16_CP },
315 + { BFD_RELOC_AVR32_9W_CP, R_AVR32_9W_CP },
316 +
317 + { BFD_RELOC_AVR32_ALIGN, R_AVR32_ALIGN },
318 +
319 + { BFD_RELOC_AVR32_15S, R_AVR32_15S },
320 +};
321 +
322 +static reloc_howto_type *
323 +bfd_elf32_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
324 + bfd_reloc_code_real_type code)
325 +{
326 + unsigned int i;
327 +
328 + for (i = 0; i < sizeof(avr32_reloc_map) / sizeof(struct elf_reloc_map); i++)
329 + {
330 + if (avr32_reloc_map[i].bfd_reloc_val == code)
331 + return &elf_avr32_howto_table[avr32_reloc_map[i].elf_reloc_val];
332 + }
333 +
334 + return NULL;
335 +}
336 +
337 +static reloc_howto_type *
338 +bfd_elf32_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
339 + const char *r_name)
340 +{
341 + unsigned int i;
342 +
343 + for (i = 0;
344 + i < sizeof (elf_avr32_howto_table) / sizeof (elf_avr32_howto_table[0]);
345 + i++)
346 + if (elf_avr32_howto_table[i].name != NULL
347 + && strcasecmp (elf_avr32_howto_table[i].name, r_name) == 0)
348 + return &elf_avr32_howto_table[i];
349 +
350 + return NULL;
351 +}
352 +
353 +/* Set the howto pointer for an AVR32 ELF reloc. */
354 +static void
355 +avr32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
356 + arelent *cache_ptr,
357 + Elf_Internal_Rela *dst)
358 +{
359 + unsigned int r_type;
360 +
361 + r_type = ELF32_R_TYPE (dst->r_info);
362 + BFD_ASSERT (r_type < (unsigned int) R_AVR32_max);
363 + cache_ptr->howto = &elf_avr32_howto_table[r_type];
364 +}
365 +
366 +
367 +/* AVR32 ELF linker hash table and associated hash entries. */
368 +
369 +static struct bfd_hash_entry *
370 +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
371 + struct bfd_hash_table *table,
372 + const char *string);
373 +static void
374 +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
375 + struct elf_link_hash_entry *dir,
376 + struct elf_link_hash_entry *ind);
377 +static struct bfd_link_hash_table *
378 +avr32_elf_link_hash_table_create(bfd *abfd);
379 +
380 +/*
381 + Try to limit memory usage to something reasonable when sorting the
382 + GOT. If just a couple of entries end up getting more references
383 + than this, it won't affect performance at all, but if there are many
384 + of them, we could end up with the wrong symbols being assigned the
385 + first GOT entries.
386 +*/
387 +#define MAX_NR_GOT_HOLES 2048
388 +
389 +/*
390 + AVR32 GOT entry. We need to keep track of refcounts and offsets
391 + simultaneously, since we need the offsets during relaxation, and we
392 + also want to be able to drop GOT entries during relaxation. In
393 + addition to this, we want to keep the list of GOT entries sorted so
394 + that we can keep the most-used entries at the lowest offsets.
395 +*/
396 +struct got_entry
397 +{
398 + struct got_entry *next;
399 + struct got_entry **pprev;
400 + int refcount;
401 + bfd_signed_vma offset;
402 +};
403 +
404 +struct elf_avr32_link_hash_entry
405 +{
406 + struct elf_link_hash_entry root;
407 +
408 + /* Number of runtime relocations against this symbol. */
409 + unsigned int possibly_dynamic_relocs;
410 +
411 + /* If there are anything but R_AVR32_GOT18 relocations against this
412 + symbol, it means that someone may be taking the address of the
413 + function, and we should therefore not create a stub. */
414 + bfd_boolean no_fn_stub;
415 +
416 + /* If there is a R_AVR32_32 relocation in a read-only section
417 + against this symbol, we could be in trouble. If we're linking a
418 + shared library or this symbol is defined in one, it means we must
419 + emit a run-time reloc for it and that's not allowed in read-only
420 + sections. */
421 + asection *readonly_reloc_sec;
422 + bfd_vma readonly_reloc_offset;
423 +
424 + /* Record which frag (if any) contains the symbol. This is used
425 + during relaxation in order to avoid having to update all symbols
426 + whenever we move something. For local symbols, this information
427 + is in the local_sym_frag member of struct elf_obj_tdata. */
428 + struct fragment *sym_frag;
429 +};
430 +#define avr32_elf_hash_entry(ent) ((struct elf_avr32_link_hash_entry *)(ent))
431 +
432 +struct elf_avr32_link_hash_table
433 +{
434 + struct elf_link_hash_table root;
435 +
436 + /* Shortcuts to get to dynamic linker sections. */
437 + asection *sgot;
438 + asection *srelgot;
439 + asection *sstub;
440 +
441 + /* We use a variation of Pigeonhole Sort to sort the GOT. After the
442 + initial refcounts have been determined, we initialize
443 + nr_got_holes to the highest refcount ever seen and allocate an
444 + array of nr_got_holes entries for got_hole. Each GOT entry is
445 + then stored in this array at the index given by its refcount.
446 +
447 + When a GOT entry has its refcount decremented during relaxation,
448 + it is moved to a lower index in the got_hole array.
449 + */
450 + struct got_entry **got_hole;
451 + int nr_got_holes;
452 +
453 + /* Dynamic relocations to local symbols. Only used when linking a
454 + shared library and -Bsymbolic is not given. */
455 + unsigned int local_dynamic_relocs;
456 +
457 + bfd_boolean relocations_analyzed;
458 + bfd_boolean symbols_adjusted;
459 + bfd_boolean repeat_pass;
460 + bfd_boolean direct_data_refs;
461 + unsigned int relax_iteration;
462 + unsigned int relax_pass;
463 +};
464 +#define avr32_elf_hash_table(p) \
465 + ((struct elf_avr32_link_hash_table *)((p)->hash))
466 +
467 +static struct bfd_hash_entry *
468 +avr32_elf_link_hash_newfunc(struct bfd_hash_entry *entry,
469 + struct bfd_hash_table *table,
470 + const char *string)
471 +{
472 + struct elf_avr32_link_hash_entry *ret = avr32_elf_hash_entry(entry);
473 +
474 + /* Allocate the structure if it hasn't already been allocated by a
475 + subclass */
476 + if (ret == NULL)
477 + ret = (struct elf_avr32_link_hash_entry *)
478 + bfd_hash_allocate(table, sizeof(struct elf_avr32_link_hash_entry));
479 +
480 + if (ret == NULL)
481 + return NULL;
482 +
483 + memset(ret, 0, sizeof(struct elf_avr32_link_hash_entry));
484 +
485 + /* Give the superclass a chance */
486 + ret = (struct elf_avr32_link_hash_entry *)
487 + _bfd_elf_link_hash_newfunc((struct bfd_hash_entry *)ret, table, string);
488 +
489 + return (struct bfd_hash_entry *)ret;
490 +}
491 +
492 +/* Copy data from an indirect symbol to its direct symbol, hiding the
493 + old indirect symbol. Process additional relocation information.
494 + Also called for weakdefs, in which case we just let
495 + _bfd_elf_link_hash_copy_indirect copy the flags for us. */
496 +
497 +static void
498 +avr32_elf_copy_indirect_symbol(struct bfd_link_info *info,
499 + struct elf_link_hash_entry *dir,
500 + struct elf_link_hash_entry *ind)
501 +{
502 + struct elf_avr32_link_hash_entry *edir, *eind;
503 +
504 + _bfd_elf_link_hash_copy_indirect (info, dir, ind);
505 +
506 + if (ind->root.type != bfd_link_hash_indirect)
507 + return;
508 +
509 + edir = (struct elf_avr32_link_hash_entry *)dir;
510 + eind = (struct elf_avr32_link_hash_entry *)ind;
511 +
512 + edir->possibly_dynamic_relocs += eind->possibly_dynamic_relocs;
513 + edir->no_fn_stub = edir->no_fn_stub || eind->no_fn_stub;
514 +}
515 +
516 +static struct bfd_link_hash_table *
517 +avr32_elf_link_hash_table_create(bfd *abfd)
518 +{
519 + struct elf_avr32_link_hash_table *ret;
520 +
521 + ret = bfd_zmalloc(sizeof(*ret));
522 + if (ret == NULL)
523 + return NULL;
524 +
525 + if (! _bfd_elf_link_hash_table_init(&ret->root, abfd,
526 + avr32_elf_link_hash_newfunc,
527 + sizeof (struct elf_avr32_link_hash_entry)))
528 + {
529 + free(ret);
530 + return NULL;
531 + }
532 +
533 + /* Prevent the BFD core from creating bogus got_entry pointers */
534 + ret->root.init_got_refcount.glist = NULL;
535 + ret->root.init_plt_refcount.glist = NULL;
536 + ret->root.init_got_offset.glist = NULL;
537 + ret->root.init_plt_offset.glist = NULL;
538 +
539 + return &ret->root.root;
540 +}
541 +
542 +
543 +/* Initial analysis and creation of dynamic sections and symbols */
544 +
545 +static asection *
546 +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
547 + unsigned int align_power);
548 +static struct elf_link_hash_entry *
549 +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
550 + const char *name, asection *sec,
551 + bfd_vma offset);
552 +static bfd_boolean
553 +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info);
554 +static bfd_boolean
555 +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info);
556 +static bfd_boolean
557 +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
558 + const Elf_Internal_Rela *relocs);
559 +static bfd_boolean
560 +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
561 + struct elf_link_hash_entry *h);
562 +
563 +static asection *
564 +create_dynamic_section(bfd *dynobj, const char *name, flagword flags,
565 + unsigned int align_power)
566 +{
567 + asection *sec;
568 +
569 + sec = bfd_make_section(dynobj, name);
570 + if (!sec
571 + || !bfd_set_section_flags(dynobj, sec, flags)
572 + || !bfd_set_section_alignment(dynobj, sec, align_power))
573 + return NULL;
574 +
575 + return sec;
576 +}
577 +
578 +static struct elf_link_hash_entry *
579 +create_dynamic_symbol(bfd *dynobj, struct bfd_link_info *info,
580 + const char *name, asection *sec,
581 + bfd_vma offset)
582 +{
583 + struct bfd_link_hash_entry *bh = NULL;
584 + struct elf_link_hash_entry *h;
585 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
586 +
587 + if (!(_bfd_generic_link_add_one_symbol
588 + (info, dynobj, name, BSF_GLOBAL, sec, offset, NULL, FALSE,
589 + bed->collect, &bh)))
590 + return NULL;
591 +
592 + h = (struct elf_link_hash_entry *)bh;
593 + h->def_regular = 1;
594 + h->type = STT_OBJECT;
595 + h->other = STV_HIDDEN;
596 +
597 + return h;
598 +}
599 +
600 +static bfd_boolean
601 +avr32_elf_create_got_section (bfd *dynobj, struct bfd_link_info *info)
602 +{
603 + struct elf_avr32_link_hash_table *htab;
604 + flagword flags;
605 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
606 +
607 + htab = avr32_elf_hash_table(info);
608 + flags = bed->dynamic_sec_flags;
609 +
610 + if (htab->sgot)
611 + return TRUE;
612 +
613 + htab->sgot = create_dynamic_section(dynobj, ".got", flags, 2);
614 + if (!htab->srelgot)
615 + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
616 + flags | SEC_READONLY, 2);
617 +
618 + if (!htab->sgot || !htab->srelgot)
619 + return FALSE;
620 +
621 + htab->root.hgot = create_dynamic_symbol(dynobj, info, "_GLOBAL_OFFSET_TABLE_",
622 + htab->sgot, 0);
623 + if (!htab->root.hgot)
624 + return FALSE;
625 +
626 + /* Make room for the GOT header */
627 + htab->sgot->size += bed->got_header_size;
628 +
629 + return TRUE;
630 +}
631 +
632 +/* (1) Create all dynamic (i.e. linker generated) sections that we may
633 + need during the link */
634 +
635 +static bfd_boolean
636 +avr32_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
637 +{
638 + struct elf_avr32_link_hash_table *htab;
639 + flagword flags;
640 + const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
641 +
642 + pr_debug("(1) create dynamic sections\n");
643 +
644 + htab = avr32_elf_hash_table(info);
645 + flags = bed->dynamic_sec_flags;
646 +
647 + if (!avr32_elf_create_got_section (dynobj, info))
648 + return FALSE;
649 +
650 + if (!htab->sstub)
651 + htab->sstub = create_dynamic_section(dynobj, ".stub",
652 + flags | SEC_READONLY | SEC_CODE, 2);
653 +
654 + if (!htab->sstub)
655 + return FALSE;
656 +
657 + return TRUE;
658 +}
659 +
660 +/* (2) Go through all the relocs and count any potential GOT- or
661 + PLT-references to each symbol */
662 +
663 +static bfd_boolean
664 +avr32_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
665 + const Elf_Internal_Rela *relocs)
666 +{
667 + Elf_Internal_Shdr *symtab_hdr;
668 + struct elf_avr32_link_hash_table *htab;
669 + struct elf_link_hash_entry **sym_hashes;
670 + const Elf_Internal_Rela *rel, *rel_end;
671 + struct got_entry **local_got_ents;
672 + struct got_entry *got;
673 + const struct elf_backend_data *bed = get_elf_backend_data (abfd);
674 + asection *sgot;
675 + bfd *dynobj;
676 +
677 + pr_debug("(2) check relocs for %s:<%s> (size 0x%lx)\n",
678 + abfd->filename, sec->name, sec->size);
679 +
680 + if (info->relocatable)
681 + return TRUE;
682 +
683 + dynobj = elf_hash_table(info)->dynobj;
684 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
685 + sym_hashes = elf_sym_hashes(abfd);
686 + htab = avr32_elf_hash_table(info);
687 + local_got_ents = elf_local_got_ents(abfd);
688 + sgot = htab->sgot;
689 +
690 + rel_end = relocs + sec->reloc_count;
691 + for (rel = relocs; rel < rel_end; rel++)
692 + {
693 + unsigned long r_symndx, r_type;
694 + struct elf_avr32_link_hash_entry *h;
695 +
696 + r_symndx = ELF32_R_SYM(rel->r_info);
697 + r_type = ELF32_R_TYPE(rel->r_info);
698 +
699 + /* Local symbols use local_got_ents, while others store the same
700 + information in the hash entry */
701 + if (r_symndx < symtab_hdr->sh_info)
702 + {
703 + pr_debug(" (2a) processing local symbol %lu\n", r_symndx);
704 + h = NULL;
705 + }
706 + else
707 + {
708 + h = (struct elf_avr32_link_hash_entry *)
709 + sym_hashes[r_symndx - symtab_hdr->sh_info];
710 + while (h->root.type == bfd_link_hash_indirect
711 + || h->root.type == bfd_link_hash_warning)
712 + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
713 + pr_debug(" (2a) processing symbol %s\n", h->root.root.root.string);
714 + }
715 +
716 + /* Some relocs require special sections to be created. */
717 + switch (r_type)
718 + {
719 + case R_AVR32_GOT32:
720 + case R_AVR32_GOT16:
721 + case R_AVR32_GOT8:
722 + case R_AVR32_GOT21S:
723 + case R_AVR32_GOT18SW:
724 + case R_AVR32_GOT16S:
725 + case R_AVR32_GOT7UW:
726 + case R_AVR32_LDA_GOT:
727 + case R_AVR32_GOTCALL:
728 + if (rel->r_addend)
729 + {
730 + if (info->callbacks->reloc_dangerous
731 + (info, _("Non-zero addend on GOT-relative relocation"),
732 + abfd, sec, rel->r_offset) == FALSE)
733 + return FALSE;
734 + }
735 + /* fall through */
736 + case R_AVR32_GOTPC:
737 + if (dynobj == NULL)
738 + elf_hash_table(info)->dynobj = dynobj = abfd;
739 + if (sgot == NULL && !avr32_elf_create_got_section(dynobj, info))
740 + return FALSE;
741 + break;
742 + case R_AVR32_32:
743 + /* We may need to create .rela.dyn later on. */
744 + if (dynobj == NULL
745 + && (info->shared || h != NULL)
746 + && (sec->flags & SEC_ALLOC))
747 + elf_hash_table(info)->dynobj = dynobj = abfd;
748 + break;
749 + }
750 +
751 + if (h != NULL && r_type != R_AVR32_GOT18SW)
752 + h->no_fn_stub = TRUE;
753 +
754 + switch (r_type)
755 + {
756 + case R_AVR32_GOT32:
757 + case R_AVR32_GOT16:
758 + case R_AVR32_GOT8:
759 + case R_AVR32_GOT21S:
760 + case R_AVR32_GOT18SW:
761 + case R_AVR32_GOT16S:
762 + case R_AVR32_GOT7UW:
763 + case R_AVR32_LDA_GOT:
764 + case R_AVR32_GOTCALL:
765 + if (h != NULL)
766 + {
767 + got = h->root.got.glist;
768 + if (!got)
769 + {
770 + got = bfd_zalloc(abfd, sizeof(struct got_entry));
771 + if (!got)
772 + return FALSE;
773 + h->root.got.glist = got;
774 + }
775 + }
776 + else
777 + {
778 + if (!local_got_ents)
779 + {
780 + bfd_size_type size;
781 + bfd_size_type i;
782 + struct got_entry *tmp_entry;
783 +
784 + size = symtab_hdr->sh_info;
785 + size *= sizeof(struct got_entry *) + sizeof(struct got_entry);
786 + local_got_ents = bfd_zalloc(abfd, size);
787 + if (!local_got_ents)
788 + return FALSE;
789 +
790 + elf_local_got_ents(abfd) = local_got_ents;
791 +
792 + tmp_entry = (struct got_entry *)(local_got_ents
793 + + symtab_hdr->sh_info);
794 + for (i = 0; i < symtab_hdr->sh_info; i++)
795 + local_got_ents[i] = &tmp_entry[i];
796 + }
797 +
798 + got = local_got_ents[r_symndx];
799 + }
800 +
801 + got->refcount++;
802 + if (got->refcount > htab->nr_got_holes)
803 + htab->nr_got_holes = got->refcount;
804 + break;
805 +
806 + case R_AVR32_32:
807 + if ((info->shared || h != NULL)
808 + && (sec->flags & SEC_ALLOC))
809 + {
810 + if (htab->srelgot == NULL)
811 + {
812 + htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
813 + bed->dynamic_sec_flags
814 + | SEC_READONLY, 2);
815 + if (htab->srelgot == NULL)
816 + return FALSE;
817 + }
818 +
819 + if (sec->flags & SEC_READONLY
820 + && !h->readonly_reloc_sec)
821 + {
822 + h->readonly_reloc_sec = sec;
823 + h->readonly_reloc_offset = rel->r_offset;
824 + }
825 +
826 + if (h != NULL)
827 + {
828 + pr_debug("Non-GOT reference to symbol %s\n",
829 + h->root.root.root.string);
830 + h->possibly_dynamic_relocs++;
831 + }
832 + else
833 + {
834 + pr_debug("Non-GOT reference to local symbol %lu\n",
835 + r_symndx);
836 + htab->local_dynamic_relocs++;
837 + }
838 + }
839 +
840 + break;
841 +
842 + /* TODO: GNU_VTINHERIT and GNU_VTENTRY */
843 + }
844 + }
845 +
846 + return TRUE;
847 +}
848 +
849 +/* (3) Adjust a symbol defined by a dynamic object and referenced by a
850 + regular object. The current definition is in some section of the
851 + dynamic object, but we're not including those sections. We have to
852 + change the definition to something the rest of the link can
853 + understand. */
854 +
855 +static bfd_boolean
856 +avr32_elf_adjust_dynamic_symbol(struct bfd_link_info *info,
857 + struct elf_link_hash_entry *h)
858 +{
859 + struct elf_avr32_link_hash_table *htab;
860 + struct elf_avr32_link_hash_entry *havr;
861 + bfd *dynobj;
862 +
863 + pr_debug("(3) adjust dynamic symbol %s\n", h->root.root.string);
864 +
865 + htab = avr32_elf_hash_table(info);
866 + havr = (struct elf_avr32_link_hash_entry *)h;
867 + dynobj = elf_hash_table(info)->dynobj;
868 +
869 + /* Make sure we know what is going on here. */
870 + BFD_ASSERT (dynobj != NULL
871 + && (h->u.weakdef != NULL
872 + || (h->def_dynamic
873 + && h->ref_regular
874 + && !h->def_regular)));
875 +
876 + /* We don't want dynamic relocations in read-only sections. */
877 + if (havr->readonly_reloc_sec)
878 + {
879 + if (info->callbacks->reloc_dangerous
880 + (info, _("dynamic relocation in read-only section"),
881 + havr->readonly_reloc_sec->owner, havr->readonly_reloc_sec,
882 + havr->readonly_reloc_offset) == FALSE)
883 + return FALSE;
884 + }
885 +
886 + /* If this is a function, create a stub if possible and set the
887 + symbol to the stub location. */
888 + if (0 && !havr->no_fn_stub)
889 + {
890 + if (!h->def_regular)
891 + {
892 + asection *s = htab->sstub;
893 +
894 + BFD_ASSERT(s != NULL);
895 +
896 + h->root.u.def.section = s;
897 + h->root.u.def.value = s->size;
898 + h->plt.offset = s->size;
899 + s->size += AVR32_FUNCTION_STUB_SIZE;
900 +
901 + return TRUE;
902 + }
903 + }
904 + else if (h->type == STT_FUNC)
905 + {
906 + /* This will set the entry for this symbol in the GOT to 0, and
907 + the dynamic linker will take care of this. */
908 + h->root.u.def.value = 0;
909 + return TRUE;
910 + }
911 +
912 + /* If this is a weak symbol, and there is a real definition, the
913 + processor independent code will have arranged for us to see the
914 + real definition first, and we can just use the same value. */
915 + if (h->u.weakdef != NULL)
916 + {
917 + BFD_ASSERT(h->u.weakdef->root.type == bfd_link_hash_defined
918 + || h->u.weakdef->root.type == bfd_link_hash_defweak);
919 + h->root.u.def.section = h->u.weakdef->root.u.def.section;
920 + h->root.u.def.value = h->u.weakdef->root.u.def.value;
921 + return TRUE;
922 + }
923 +
924 + /* This is a reference to a symbol defined by a dynamic object which
925 + is not a function. */
926 +
927 + return TRUE;
928 +}
929 +
930 +
931 +/* Garbage-collection of unused sections */
932 +
933 +static asection *
934 +avr32_elf_gc_mark_hook(asection *sec,
935 + struct bfd_link_info *info ATTRIBUTE_UNUSED,
936 + Elf_Internal_Rela *rel,
937 + struct elf_link_hash_entry *h,
938 + Elf_Internal_Sym *sym)
939 +{
940 + if (h)
941 + {
942 + switch (ELF32_R_TYPE(rel->r_info))
943 + {
944 + /* TODO: VTINHERIT/VTENTRY */
945 + default:
946 + switch (h->root.type)
947 + {
948 + case bfd_link_hash_defined:
949 + case bfd_link_hash_defweak:
950 + return h->root.u.def.section;
951 +
952 + case bfd_link_hash_common:
953 + return h->root.u.c.p->section;
954 +
955 + default:
956 + break;
957 + }
958 + }
959 + }
960 + else
961 + return bfd_section_from_elf_index(sec->owner, sym->st_shndx);
962 +
963 + return NULL;
964 +}
965 +
966 +/* Update the GOT entry reference counts for the section being removed. */
967 +static bfd_boolean
968 +avr32_elf_gc_sweep_hook(bfd *abfd,
969 + struct bfd_link_info *info ATTRIBUTE_UNUSED,
970 + asection *sec,
971 + const Elf_Internal_Rela *relocs)
972 +{
973 + Elf_Internal_Shdr *symtab_hdr;
974 + struct elf_avr32_link_hash_entry **sym_hashes;
975 + struct got_entry **local_got_ents;
976 + const Elf_Internal_Rela *rel, *relend;
977 +
978 + if (!(sec->flags & SEC_ALLOC))
979 + return TRUE;
980 +
981 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
982 + sym_hashes = (struct elf_avr32_link_hash_entry **)elf_sym_hashes(abfd);
983 + local_got_ents = elf_local_got_ents(abfd);
984 +
985 + relend = relocs + sec->reloc_count;
986 + for (rel = relocs; rel < relend; rel++)
987 + {
988 + unsigned long r_symndx;
989 + unsigned int r_type;
990 + struct elf_avr32_link_hash_entry *h = NULL;
991 +
992 + r_symndx = ELF32_R_SYM(rel->r_info);
993 + if (r_symndx >= symtab_hdr->sh_info)
994 + {
995 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
996 + while (h->root.root.type == bfd_link_hash_indirect
997 + || h->root.root.type == bfd_link_hash_warning)
998 + h = (struct elf_avr32_link_hash_entry *)h->root.root.u.i.link;
999 + }
1000 +
1001 + r_type = ELF32_R_TYPE(rel->r_info);
1002 +
1003 + switch (r_type)
1004 + {
1005 + case R_AVR32_GOT32:
1006 + case R_AVR32_GOT16:
1007 + case R_AVR32_GOT8:
1008 + case R_AVR32_GOT21S:
1009 + case R_AVR32_GOT18SW:
1010 + case R_AVR32_GOT16S:
1011 + case R_AVR32_GOT7UW:
1012 + case R_AVR32_LDA_GOT:
1013 + case R_AVR32_GOTCALL:
1014 + if (h)
1015 + h->root.got.glist->refcount--;
1016 + else
1017 + local_got_ents[r_symndx]->refcount--;
1018 + break;
1019 +
1020 + case R_AVR32_32:
1021 + if (info->shared || h)
1022 + {
1023 + if (h)
1024 + h->possibly_dynamic_relocs--;
1025 + else
1026 + avr32_elf_hash_table(info)->local_dynamic_relocs--;
1027 + }
1028 +
1029 + default:
1030 + break;
1031 + }
1032 + }
1033 +
1034 + return TRUE;
1035 +}
1036 +
1037 +/* Sizing and refcounting of dynamic sections */
1038 +
1039 +static void
1040 +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1041 +static void
1042 +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1043 +static void
1044 +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got);
1045 +static bfd_boolean
1046 +assign_got_offsets(struct elf_avr32_link_hash_table *htab);
1047 +static bfd_boolean
1048 +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info);
1049 +static bfd_boolean
1050 +avr32_elf_size_dynamic_sections (bfd *output_bfd,
1051 + struct bfd_link_info *info);
1052 +
1053 +static void
1054 +insert_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1055 +{
1056 + /* Any entries with got_refcount > htab->nr_got_holes end up in the
1057 + * last pigeonhole without any sorting. We expect the number of such
1058 + * entries to be small, so it is very unlikely to affect
1059 + * performance. */
1060 + int entry = got->refcount;
1061 +
1062 + if (entry > htab->nr_got_holes)
1063 + entry = htab->nr_got_holes;
1064 +
1065 + got->pprev = &htab->got_hole[entry];
1066 + got->next = htab->got_hole[entry];
1067 +
1068 + if (got->next)
1069 + got->next->pprev = &got->next;
1070 +
1071 + htab->got_hole[entry] = got;
1072 +}
1073 +
1074 +/* Decrement the refcount of a GOT entry and update its position in
1075 + the pigeonhole array. */
1076 +static void
1077 +unref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1078 +{
1079 + BFD_ASSERT(got->refcount > 0);
1080 +
1081 + if (got->next)
1082 + got->next->pprev = got->pprev;
1083 +
1084 + *(got->pprev) = got->next;
1085 + got->refcount--;
1086 + insert_got_entry(htab, got);
1087 +}
1088 +
1089 +static void
1090 +ref_got_entry(struct elf_avr32_link_hash_table *htab, struct got_entry *got)
1091 +{
1092 + if (got->next)
1093 + got->next->pprev = got->pprev;
1094 +
1095 + *(got->pprev) = got->next;
1096 + got->refcount++;
1097 + insert_got_entry(htab, got);
1098 +
1099 + BFD_ASSERT(got->refcount > 0);
1100 +}
1101 +
1102 +/* Assign offsets to all GOT entries we intend to keep. The entries
1103 + that are referenced most often are placed at low offsets so that we
1104 + can use compact instructions as much as possible.
1105 +
1106 + Returns TRUE if any offsets or the total size of the GOT changed. */
1107 +
1108 +static bfd_boolean
1109 +assign_got_offsets(struct elf_avr32_link_hash_table *htab)
1110 +{
1111 + struct got_entry *got;
1112 + bfd_size_type got_size = 0;
1113 + bfd_boolean changed = FALSE;
1114 + bfd_signed_vma offset;
1115 + int i;
1116 +
1117 + /* The GOT header provides the address of the DYNAMIC segment, so
1118 + we need that even if the GOT is otherwise empty. */
1119 + if (htab->root.dynamic_sections_created)
1120 + got_size = AVR32_GOT_HEADER_SIZE;
1121 +
1122 + for (i = htab->nr_got_holes; i > 0; i--)
1123 + {
1124 + got = htab->got_hole[i];
1125 + while (got)
1126 + {
1127 + if (got->refcount > 0)
1128 + {
1129 + offset = got_size;
1130 + if (got->offset != offset)
1131 + {
1132 + RDBG("GOT offset changed: %ld -> %ld\n",
1133 + got->offset, offset);
1134 + changed = TRUE;
1135 + }
1136 + got->offset = offset;
1137 + got_size += 4;
1138 + }
1139 + got = got->next;
1140 + }
1141 + }
1142 +
1143 + if (htab->sgot->size != got_size)
1144 + {
1145 + RDBG("GOT size changed: %lu -> %lu\n", htab->sgot->size,
1146 + got_size);
1147 + changed = TRUE;
1148 + }
1149 + htab->sgot->size = got_size;
1150 +
1151 + RDBG("assign_got_offsets: total size %lu (%s)\n",
1152 + got_size, changed ? "changed" : "no change");
1153 +
1154 + return changed;
1155 +}
1156 +
1157 +static bfd_boolean
1158 +allocate_dynrelocs(struct elf_link_hash_entry *h, void *_info)
1159 +{
1160 + struct bfd_link_info *info = _info;
1161 + struct elf_avr32_link_hash_table *htab;
1162 + struct elf_avr32_link_hash_entry *havr;
1163 + struct got_entry *got;
1164 +
1165 + pr_debug(" (4b) allocate_dynrelocs: %s\n", h->root.root.string);
1166 +
1167 + if (h->root.type == bfd_link_hash_indirect)
1168 + return TRUE;
1169 +
1170 + if (h->root.type == bfd_link_hash_warning)
1171 + /* When warning symbols are created, they **replace** the "real"
1172 + entry in the hash table, thus we never get to see the real
1173 + symbol in a hash traversal. So look at it now. */
1174 + h = (struct elf_link_hash_entry *) h->root.u.i.link;
1175 +
1176 + htab = avr32_elf_hash_table(info);
1177 + havr = (struct elf_avr32_link_hash_entry *)h;
1178 +
1179 + got = h->got.glist;
1180 +
1181 + /* If got is NULL, the symbol is never referenced through the GOT */
1182 + if (got && got->refcount > 0)
1183 + {
1184 + insert_got_entry(htab, got);
1185 +
1186 + /* Shared libraries need relocs for all GOT entries unless the
1187 + symbol is forced local or -Bsymbolic is used. Others need
1188 + relocs for everything that is not guaranteed to be defined in
1189 + a regular object. */
1190 + if ((info->shared
1191 + && !info->symbolic
1192 + && h->dynindx != -1)
1193 + || (htab->root.dynamic_sections_created
1194 + && h->def_dynamic
1195 + && !h->def_regular))
1196 + htab->srelgot->size += sizeof(Elf32_External_Rela);
1197 + }
1198 +
1199 + if (havr->possibly_dynamic_relocs
1200 + && (info->shared
1201 + || (elf_hash_table(info)->dynamic_sections_created
1202 + && h->def_dynamic
1203 + && !h->def_regular)))
1204 + {
1205 + pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
1206 + havr->possibly_dynamic_relocs, h->root.root.string);
1207 + htab->srelgot->size += (havr->possibly_dynamic_relocs
1208 + * sizeof(Elf32_External_Rela));
1209 + }
1210 +
1211 + return TRUE;
1212 +}
1213 +
1214 +/* (4) Calculate the sizes of the linker-generated sections and
1215 + allocate memory for them. */
1216 +
1217 +static bfd_boolean
1218 +avr32_elf_size_dynamic_sections (bfd *output_bfd,
1219 + struct bfd_link_info *info)
1220 +{
1221 + struct elf_avr32_link_hash_table *htab;
1222 + bfd *dynobj;
1223 + asection *s;
1224 + bfd *ibfd;
1225 + bfd_boolean relocs;
1226 +
1227 + pr_debug("(4) size dynamic sections\n");
1228 +
1229 + htab = avr32_elf_hash_table(info);
1230 + dynobj = htab->root.dynobj;
1231 + BFD_ASSERT(dynobj != NULL);
1232 +
1233 + if (htab->root.dynamic_sections_created)
1234 + {
1235 + /* Initialize the contents of the .interp section to the name of
1236 + the dynamic loader */
1237 + if (info->executable)
1238 + {
1239 + s = bfd_get_section_by_name(dynobj, ".interp");
1240 + BFD_ASSERT(s != NULL);
1241 + s->size = sizeof(ELF_DYNAMIC_INTERPRETER);
1242 + s->contents = (unsigned char *)ELF_DYNAMIC_INTERPRETER;
1243 + }
1244 + }
1245 +
1246 + if (htab->nr_got_holes > 0)
1247 + {
1248 + /* Allocate holes for the pigeonhole sort algorithm */
1249 + pr_debug("Highest GOT refcount: %d\n", htab->nr_got_holes);
1250 +
1251 + /* Limit the memory usage by clipping the number of pigeonholes
1252 + * at a predefined maximum. All entries with a higher refcount
1253 + * will end up in the last pigeonhole. */
1254 + if (htab->nr_got_holes >= MAX_NR_GOT_HOLES)
1255 + {
1256 + htab->nr_got_holes = MAX_NR_GOT_HOLES - 1;
1257 +
1258 + pr_debug("Limiting maximum number of GOT pigeonholes to %u\n",
1259 + htab->nr_got_holes);
1260 + }
1261 + htab->got_hole = bfd_zalloc(output_bfd,
1262 + sizeof(struct got_entry *)
1263 + * (htab->nr_got_holes + 1));
1264 + if (!htab->got_hole)
1265 + return FALSE;
1266 +
1267 + /* Set up .got offsets for local syms. */
1268 + for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
1269 + {
1270 + struct got_entry **local_got;
1271 + struct got_entry **end_local_got;
1272 + Elf_Internal_Shdr *symtab_hdr;
1273 + bfd_size_type locsymcount;
1274 +
1275 + pr_debug(" (4a) processing file %s...\n", ibfd->filename);
1276 +
1277 + BFD_ASSERT(bfd_get_flavour(ibfd) == bfd_target_elf_flavour);
1278 +
1279 + local_got = elf_local_got_ents(ibfd);
1280 + if (!local_got)
1281 + continue;
1282 +
1283 + symtab_hdr = &elf_tdata(ibfd)->symtab_hdr;
1284 + locsymcount = symtab_hdr->sh_info;
1285 + end_local_got = local_got + locsymcount;
1286 +
1287 + for (; local_got < end_local_got; ++local_got)
1288 + insert_got_entry(htab, *local_got);
1289 + }
1290 + }
1291 +
1292 + /* Allocate global sym .got entries and space for global sym
1293 + dynamic relocs */
1294 + elf_link_hash_traverse(&htab->root, allocate_dynrelocs, info);
1295 +
1296 + /* Now that we have sorted the GOT entries, we are ready to
1297 + assign offsets and determine the initial size of the GOT. */
1298 + if (htab->sgot)
1299 + assign_got_offsets(htab);
1300 +
1301 + /* Allocate space for local sym dynamic relocs */
1302 + BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
1303 + if (htab->local_dynamic_relocs)
1304 + htab->srelgot->size += (htab->local_dynamic_relocs
1305 + * sizeof(Elf32_External_Rela));
1306 +
1307 + /* We now have determined the sizes of the various dynamic
1308 + sections. Allocate memory for them. */
1309 + relocs = FALSE;
1310 + for (s = dynobj->sections; s; s = s->next)
1311 + {
1312 + if ((s->flags & SEC_LINKER_CREATED) == 0)
1313 + continue;
1314 +
1315 + if (s == htab->sgot
1316 + || s == htab->sstub)
1317 + {
1318 + /* Strip this section if we don't need it */
1319 + }
1320 + else if (strncmp (bfd_get_section_name(dynobj, s), ".rela", 5) == 0)
1321 + {
1322 + if (s->size != 0)
1323 + relocs = TRUE;
1324 +
1325 + s->reloc_count = 0;
1326 + }
1327 + else
1328 + {
1329 + /* It's not one of our sections */
1330 + continue;
1331 + }
1332 +
1333 + if (s->size == 0)
1334 + {
1335 + /* Strip unneeded sections */
1336 + pr_debug("Stripping section %s from output...\n", s->name);
1337 + /* deleted function in 2.17
1338 + _bfd_strip_section_from_output(info, s);
1339 + */
1340 + continue;
1341 + }
1342 +
1343 + s->contents = bfd_zalloc(dynobj, s->size);
1344 + if (s->contents == NULL)
1345 + return FALSE;
1346 + }
1347 +
1348 + if (htab->root.dynamic_sections_created)
1349 + {
1350 + /* Add some entries to the .dynamic section. We fill in the
1351 + values later, in sh_elf_finish_dynamic_sections, but we
1352 + must add the entries now so that we get the correct size for
1353 + the .dynamic section. The DT_DEBUG entry is filled in by the
1354 + dynamic linker and used by the debugger. */
1355 +#define add_dynamic_entry(TAG, VAL) _bfd_elf_add_dynamic_entry(info, TAG, VAL)
1356 +
1357 + if (!add_dynamic_entry(DT_PLTGOT, 0))
1358 + return FALSE;
1359 + if (!add_dynamic_entry(DT_AVR32_GOTSZ, 0))
1360 + return FALSE;
1361 +
1362 + if (info->executable)
1363 + {
1364 + if (!add_dynamic_entry(DT_DEBUG, 0))
1365 + return FALSE;
1366 + }
1367 + if (relocs)
1368 + {
1369 + if (!add_dynamic_entry(DT_RELA, 0)
1370 + || !add_dynamic_entry(DT_RELASZ, 0)
1371 + || !add_dynamic_entry(DT_RELAENT,
1372 + sizeof(Elf32_External_Rela)))
1373 + return FALSE;
1374 + }
1375 + }
1376 +#undef add_dynamic_entry
1377 +
1378 + return TRUE;
1379 +}
1380 +
1381 +
1382 +/* Access to internal relocations, section contents and symbols.
1383 + (stolen from the xtensa port) */
1384 +
1385 +static Elf_Internal_Rela *
1386 +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1387 +static void
1388 +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1389 +static void
1390 +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs);
1391 +static bfd_byte *
1392 +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory);
1393 +/*
1394 +static void
1395 +pin_contents (asection *sec, bfd_byte *contents);
1396 +*/
1397 +static void
1398 +release_contents (asection *sec, bfd_byte *contents);
1399 +static Elf_Internal_Sym *
1400 +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory);
1401 +/*
1402 +static void
1403 +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1404 +*/
1405 +static void
1406 +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf);
1407 +
1408 +/* During relaxation, we need to modify relocations, section contents,
1409 + and symbol definitions, and we need to keep the original values from
1410 + being reloaded from the input files, i.e., we need to "pin" the
1411 + modified values in memory. We also want to continue to observe the
1412 + setting of the "keep-memory" flag. The following functions wrap the
1413 + standard BFD functions to take care of this for us. */
1414 +
1415 +static Elf_Internal_Rela *
1416 +retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1417 +{
1418 + /* _bfd_elf_link_read_relocs knows about caching, so no need for us
1419 + to be clever here. */
1420 + return _bfd_elf_link_read_relocs(abfd, sec, NULL, NULL, keep_memory);
1421 +}
1422 +
1423 +static void
1424 +pin_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1425 +{
1426 + elf_section_data (sec)->relocs = internal_relocs;
1427 +}
1428 +
1429 +static void
1430 +release_internal_relocs (asection *sec, Elf_Internal_Rela *internal_relocs)
1431 +{
1432 + if (internal_relocs
1433 + && elf_section_data (sec)->relocs != internal_relocs)
1434 + free (internal_relocs);
1435 +}
1436 +
1437 +static bfd_byte *
1438 +retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
1439 +{
1440 + bfd_byte *contents;
1441 + bfd_size_type sec_size;
1442 +
1443 + sec_size = bfd_get_section_limit (abfd, sec);
1444 + contents = elf_section_data (sec)->this_hdr.contents;
1445 +
1446 + if (contents == NULL && sec_size != 0)
1447 + {
1448 + if (!bfd_malloc_and_get_section (abfd, sec, &contents))
1449 + {
1450 + if (contents)
1451 + free (contents);
1452 + return NULL;
1453 + }
1454 + if (keep_memory)
1455 + elf_section_data (sec)->this_hdr.contents = contents;
1456 + }
1457 + return contents;
1458 +}
1459 +
1460 +/*
1461 +static void
1462 +pin_contents (asection *sec, bfd_byte *contents)
1463 +{
1464 + elf_section_data (sec)->this_hdr.contents = contents;
1465 +}
1466 +*/
1467 +static void
1468 +release_contents (asection *sec, bfd_byte *contents)
1469 +{
1470 + if (contents && elf_section_data (sec)->this_hdr.contents != contents)
1471 + free (contents);
1472 +}
1473 +
1474 +static Elf_Internal_Sym *
1475 +retrieve_local_syms (bfd *input_bfd, bfd_boolean keep_memory)
1476 +{
1477 + Elf_Internal_Shdr *symtab_hdr;
1478 + Elf_Internal_Sym *isymbuf;
1479 + size_t locsymcount;
1480 +
1481 + symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
1482 + locsymcount = symtab_hdr->sh_info;
1483 +
1484 + isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
1485 + if (isymbuf == NULL && locsymcount != 0)
1486 + {
1487 + isymbuf = bfd_elf_get_elf_syms (input_bfd, symtab_hdr, locsymcount, 0,
1488 + NULL, NULL, NULL);
1489 + if (isymbuf && keep_memory)
1490 + symtab_hdr->contents = (unsigned char *) isymbuf;
1491 + }
1492 +
1493 + return isymbuf;
1494 +}
1495 +
1496 +/*
1497 +static void
1498 +pin_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1499 +{
1500 + elf_tdata (input_bfd)->symtab_hdr.contents = (unsigned char *)isymbuf;
1501 +}
1502 +
1503 +*/
1504 +static void
1505 +release_local_syms (bfd *input_bfd, Elf_Internal_Sym *isymbuf)
1506 +{
1507 + if (isymbuf && (elf_tdata (input_bfd)->symtab_hdr.contents
1508 + != (unsigned char *)isymbuf))
1509 + free (isymbuf);
1510 +}
1511 +
1512 +\f/* Data structures used during relaxation. */
1513 +
1514 +enum relax_state_id {
1515 + RS_ERROR = -1,
1516 + RS_NONE = 0,
1517 + RS_ALIGN,
1518 + RS_CPENT,
1519 + RS_PIC_CALL,
1520 + RS_PIC_MCALL,
1521 + RS_PIC_RCALL2,
1522 + RS_PIC_RCALL1,
1523 + RS_PIC_LDA,
1524 + RS_PIC_LDW4,
1525 + RS_PIC_LDW3,
1526 + RS_PIC_SUB5,
1527 + RS_NOPIC_MCALL,
1528 + RS_NOPIC_RCALL2,
1529 + RS_NOPIC_RCALL1,
1530 + RS_NOPIC_LDW4,
1531 + RS_NOPIC_LDDPC,
1532 + RS_NOPIC_SUB5,
1533 + RS_NOPIC_MOV2,
1534 + RS_NOPIC_MOV1,
1535 + RS_RCALL2,
1536 + RS_RCALL1,
1537 + RS_BRC2,
1538 + RS_BRC1,
1539 + RS_BRAL,
1540 + RS_RJMP,
1541 + RS_MAX,
1542 +};
1543 +
1544 +enum reference_type {
1545 + REF_ABSOLUTE,
1546 + REF_PCREL,
1547 + REF_CPOOL,
1548 + REF_GOT,
1549 +};
1550 +
1551 +struct relax_state
1552 +{
1553 + const char *name;
1554 + enum relax_state_id id;
1555 + enum relax_state_id direct;
1556 + enum relax_state_id next;
1557 + enum relax_state_id prev;
1558 +
1559 + enum reference_type reftype;
1560 +
1561 + unsigned int r_type;
1562 +
1563 + bfd_vma opcode;
1564 + bfd_vma opcode_mask;
1565 +
1566 + bfd_signed_vma range_min;
1567 + bfd_signed_vma range_max;
1568 +
1569 + bfd_size_type size;
1570 +};
1571 +
1572 +/*
1573 + * This is for relocs that
1574 + * a) has an addend or is of type R_AVR32_DIFF32, and
1575 + * b) references a different section than it's in, and
1576 + * c) references a section that is relaxable
1577 + *
1578 + * as well as relocs that references the constant pool, in which case
1579 + * the add_frag member points to the frag containing the constant pool
1580 + * entry.
1581 + *
1582 + * Such relocs must be fixed up whenever we delete any code. Sections
1583 + * that don't have any relocs with all of the above properties don't
1584 + * have any additional reloc data, but sections that do will have
1585 + * additional data for all its relocs.
1586 + */
1587 +struct avr32_reloc_data
1588 +{
1589 + struct fragment *add_frag;
1590 + struct fragment *sub_frag;
1591 +};
1592 +
1593 +/*
1594 + * A 'fragment' is a relaxable entity, that is, code may be added or
1595 + * deleted at the end of a fragment. When this happens, all subsequent
1596 + * fragments in the list will have their offsets updated.
1597 + */
1598 +struct fragment
1599 +{
1600 + enum relax_state_id state;
1601 + enum relax_state_id initial_state;
1602 +
1603 + Elf_Internal_Rela *rela;
1604 + bfd_size_type size;
1605 + bfd_vma offset;
1606 + int size_adjust;
1607 + int offset_adjust;
1608 + bfd_boolean has_grown;
1609 +
1610 + /* Only used by constant pool entries. When this drops to zero, the
1611 + frag is discarded (i.e. size_adjust is set to -4.) */
1612 + int refcount;
1613 +};
1614 +
1615 +struct avr32_relax_data
1616 +{
1617 + unsigned int frag_count;
1618 + struct fragment *frag;
1619 + struct avr32_reloc_data *reloc_data;
1620 +
1621 + /* TRUE if this section has one or more relaxable relocations */
1622 + bfd_boolean is_relaxable;
1623 + unsigned int iteration;
1624 +};
1625 +
1626 +struct avr32_section_data
1627 +{
1628 + struct bfd_elf_section_data elf;
1629 + struct avr32_relax_data relax_data;
1630 +};
1631 +
1632 +\f/* Relax state definitions */
1633 +
1634 +#define PIC_MOV2_OPCODE 0xe0600000
1635 +#define PIC_MOV2_MASK 0xe1e00000
1636 +#define PIC_MOV2_RANGE_MIN (-1048576 * 4)
1637 +#define PIC_MOV2_RANGE_MAX (1048575 * 4)
1638 +#define PIC_MCALL_OPCODE 0xf0160000
1639 +#define PIC_MCALL_MASK 0xffff0000
1640 +#define PIC_MCALL_RANGE_MIN (-131072)
1641 +#define PIC_MCALL_RANGE_MAX (131068)
1642 +#define RCALL2_OPCODE 0xe0a00000
1643 +#define RCALL2_MASK 0xe1ef0000
1644 +#define RCALL2_RANGE_MIN (-2097152)
1645 +#define RCALL2_RANGE_MAX (2097150)
1646 +#define RCALL1_OPCODE 0xc00c0000
1647 +#define RCALL1_MASK 0xf00c0000
1648 +#define RCALL1_RANGE_MIN (-1024)
1649 +#define RCALL1_RANGE_MAX (1022)
1650 +#define PIC_LDW4_OPCODE 0xecf00000
1651 +#define PIC_LDW4_MASK 0xfff00000
1652 +#define PIC_LDW4_RANGE_MIN (-32768)
1653 +#define PIC_LDW4_RANGE_MAX (32767)
1654 +#define PIC_LDW3_OPCODE 0x6c000000
1655 +#define PIC_LDW3_MASK 0xfe000000
1656 +#define PIC_LDW3_RANGE_MIN (0)
1657 +#define PIC_LDW3_RANGE_MAX (124)
1658 +#define SUB5_PC_OPCODE 0xfec00000
1659 +#define SUB5_PC_MASK 0xfff00000
1660 +#define SUB5_PC_RANGE_MIN (-32768)
1661 +#define SUB5_PC_RANGE_MAX (32767)
1662 +#define NOPIC_MCALL_OPCODE 0xf01f0000
1663 +#define NOPIC_MCALL_MASK 0xffff0000
1664 +#define NOPIC_MCALL_RANGE_MIN PIC_MCALL_RANGE_MIN
1665 +#define NOPIC_MCALL_RANGE_MAX PIC_MCALL_RANGE_MAX
1666 +#define NOPIC_LDW4_OPCODE 0xfef00000
1667 +#define NOPIC_LDW4_MASK 0xfff00000
1668 +#define NOPIC_LDW4_RANGE_MIN PIC_LDW4_RANGE_MIN
1669 +#define NOPIC_LDW4_RANGE_MAX PIC_LDW4_RANGE_MAX
1670 +#define LDDPC_OPCODE 0x48000000
1671 +#define LDDPC_MASK 0xf8000000
1672 +#define LDDPC_RANGE_MIN 0
1673 +#define LDDPC_RANGE_MAX 508
1674 +
1675 +#define NOPIC_MOV2_OPCODE 0xe0600000
1676 +#define NOPIC_MOV2_MASK 0xe1e00000
1677 +#define NOPIC_MOV2_RANGE_MIN (-1048576)
1678 +#define NOPIC_MOV2_RANGE_MAX (1048575)
1679 +#define NOPIC_MOV1_OPCODE 0x30000000
1680 +#define NOPIC_MOV1_MASK 0xf0000000
1681 +#define NOPIC_MOV1_RANGE_MIN (-128)
1682 +#define NOPIC_MOV1_RANGE_MAX (127)
1683 +
1684 +/* Only brc2 variants with cond[3] == 0 is considered, since the
1685 + others are not relaxable. bral is a special case and is handled
1686 + separately. */
1687 +#define BRC2_OPCODE 0xe0800000
1688 +#define BRC2_MASK 0xe1e80000
1689 +#define BRC2_RANGE_MIN (-2097152)
1690 +#define BRC2_RANGE_MAX (2097150)
1691 +#define BRC1_OPCODE 0xc0000000
1692 +#define BRC1_MASK 0xf0080000
1693 +#define BRC1_RANGE_MIN (-256)
1694 +#define BRC1_RANGE_MAX (254)
1695 +#define BRAL_OPCODE 0xe08f0000
1696 +#define BRAL_MASK 0xe1ef0000
1697 +#define BRAL_RANGE_MIN BRC2_RANGE_MIN
1698 +#define BRAL_RANGE_MAX BRC2_RANGE_MAX
1699 +#define RJMP_OPCODE 0xc0080000
1700 +#define RJMP_MASK 0xf00c0000
1701 +#define RJMP_RANGE_MIN (-1024)
1702 +#define RJMP_RANGE_MAX (1022)
1703 +
1704 +/* Define a relax state using the GOT */
1705 +#define RG(id, dir, next, prev, r_type, opc, size) \
1706 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_GOT, \
1707 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1708 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1709 +/* Define a relax state using the Constant Pool */
1710 +#define RC(id, dir, next, prev, r_type, opc, size) \
1711 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_CPOOL, \
1712 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1713 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1714 +
1715 +/* Define a relax state using pc-relative direct reference */
1716 +#define RP(id, dir, next, prev, r_type, opc, size) \
1717 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_PCREL, \
1718 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1719 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1720 +
1721 +/* Define a relax state using non-pc-relative direct reference */
1722 +#define RD(id, dir, next, prev, r_type, opc, size) \
1723 + { "RS_"#id, RS_##id, RS_##dir, RS_##next, RS_##prev, REF_ABSOLUTE, \
1724 + R_AVR32_##r_type, opc##_OPCODE, opc##_MASK, \
1725 + opc##_RANGE_MIN, opc##_RANGE_MAX, size }
1726 +
1727 +/* Define a relax state that will be handled specially */
1728 +#define RS(id, r_type, size) \
1729 + { "RS_"#id, RS_##id, RS_NONE, RS_NONE, RS_NONE, REF_ABSOLUTE, \
1730 + R_AVR32_##r_type, 0, 0, 0, 0, size }
1731 +
1732 +const struct relax_state relax_state[RS_MAX] = {
1733 + RS(NONE, NONE, 0),
1734 + RS(ALIGN, ALIGN, 0),
1735 + RS(CPENT, 32_CPENT, 4),
1736 +
1737 + RG(PIC_CALL, PIC_RCALL1, PIC_MCALL, NONE, GOTCALL, PIC_MOV2, 10),
1738 + RG(PIC_MCALL, PIC_RCALL1, NONE, PIC_CALL, GOT18SW, PIC_MCALL, 4),
1739 + RP(PIC_RCALL2, NONE, PIC_RCALL1, PIC_MCALL, 22H_PCREL, RCALL2, 4),
1740 + RP(PIC_RCALL1, NONE, NONE, PIC_RCALL2, 11H_PCREL, RCALL1, 2),
1741 +
1742 + RG(PIC_LDA, PIC_SUB5, PIC_LDW4, NONE, LDA_GOT, PIC_MOV2, 8),
1743 + RG(PIC_LDW4, PIC_SUB5, PIC_LDW3, PIC_LDA, GOT16S, PIC_LDW4, 4),
1744 + RG(PIC_LDW3, PIC_SUB5, NONE, PIC_LDW4, GOT7UW, PIC_LDW3, 2),
1745 + RP(PIC_SUB5, NONE, NONE, PIC_LDW3, 16N_PCREL, SUB5_PC, 4),
1746 +
1747 + RC(NOPIC_MCALL, NOPIC_RCALL1, NONE, NONE, CPCALL, NOPIC_MCALL, 4),
1748 + RP(NOPIC_RCALL2, NONE, NOPIC_RCALL1, NOPIC_MCALL, 22H_PCREL, RCALL2, 4),
1749 + RP(NOPIC_RCALL1, NONE, NONE, NOPIC_RCALL2, 11H_PCREL, RCALL1, 2),
1750 +
1751 + RC(NOPIC_LDW4, NOPIC_MOV1, NOPIC_LDDPC, NONE, 16_CP, NOPIC_LDW4, 4),
1752 + RC(NOPIC_LDDPC, NOPIC_MOV1, NONE, NOPIC_LDW4, 9W_CP, LDDPC, 2),
1753 + RP(NOPIC_SUB5, NOPIC_MOV1, NONE, NOPIC_LDDPC, 16N_PCREL, SUB5_PC, 4),
1754 + RD(NOPIC_MOV2, NONE, NOPIC_MOV1, NOPIC_SUB5, 21S, NOPIC_MOV2, 4),
1755 + RD(NOPIC_MOV1, NONE, NONE, NOPIC_MOV2, 8S, NOPIC_MOV1, 2),
1756 +
1757 + RP(RCALL2, NONE, RCALL1, NONE, 22H_PCREL, RCALL2, 4),
1758 + RP(RCALL1, NONE, NONE, RCALL2, 11H_PCREL, RCALL1, 2),
1759 + RP(BRC2, NONE, BRC1, NONE, 22H_PCREL, BRC2, 4),
1760 + RP(BRC1, NONE, NONE, BRC2, 9H_PCREL, BRC1, 2),
1761 + RP(BRAL, NONE, RJMP, NONE, 22H_PCREL, BRAL, 4),
1762 + RP(RJMP, NONE, NONE, BRAL, 11H_PCREL, RJMP, 2),
1763 +};
1764 +
1765 +static bfd_boolean
1766 +avr32_elf_new_section_hook(bfd *abfd, asection *sec)
1767 +{
1768 + struct avr32_section_data *sdata;
1769 +
1770 + sdata = bfd_zalloc(abfd, sizeof(struct avr32_section_data));
1771 + if (!sdata)
1772 + return FALSE;
1773 +
1774 + sec->used_by_bfd = sdata;
1775 + return _bfd_elf_new_section_hook(abfd, sec);
1776 +}
1777 +
1778 +static struct avr32_relax_data *
1779 +avr32_relax_data(asection *sec)
1780 +{
1781 + struct avr32_section_data *sdata;
1782 +
1783 + BFD_ASSERT(sec->used_by_bfd);
1784 +
1785 + sdata = (struct avr32_section_data *)elf_section_data(sec);
1786 + return &sdata->relax_data;
1787 +}
1788 +
1789 +\f/* Link-time relaxation */
1790 +
1791 +static bfd_boolean
1792 +avr32_elf_relax_section(bfd *abfd, asection *sec,
1793 + struct bfd_link_info *info, bfd_boolean *again);
1794 +
1795 +enum relax_pass_id {
1796 + RELAX_PASS_SIZE_FRAGS,
1797 + RELAX_PASS_MOVE_DATA,
1798 +};
1799 +
1800 +/* Stolen from the xtensa port */
1801 +static int
1802 +internal_reloc_compare (const void *ap, const void *bp)
1803 +{
1804 + const Elf_Internal_Rela *a = (const Elf_Internal_Rela *) ap;
1805 + const Elf_Internal_Rela *b = (const Elf_Internal_Rela *) bp;
1806 +
1807 + if (a->r_offset != b->r_offset)
1808 + return (a->r_offset - b->r_offset);
1809 +
1810 + /* We don't need to sort on these criteria for correctness,
1811 + but enforcing a more strict ordering prevents unstable qsort
1812 + from behaving differently with different implementations.
1813 + Without the code below we get correct but different results
1814 + on Solaris 2.7 and 2.8. We would like to always produce the
1815 + same results no matter the host. */
1816 +
1817 + if (a->r_info != b->r_info)
1818 + return (a->r_info - b->r_info);
1819 +
1820 + return (a->r_addend - b->r_addend);
1821 +}
1822 +
1823 +static enum relax_state_id
1824 +get_pcrel22_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1825 + const Elf_Internal_Rela *rela)
1826 +{
1827 + bfd_byte *contents;
1828 + bfd_vma insn;
1829 + enum relax_state_id rs = RS_NONE;
1830 +
1831 + contents = retrieve_contents(abfd, sec, info->keep_memory);
1832 + if (!contents)
1833 + return RS_ERROR;
1834 +
1835 + insn = bfd_get_32(abfd, contents + rela->r_offset);
1836 + if ((insn & RCALL2_MASK) == RCALL2_OPCODE)
1837 + rs = RS_RCALL2;
1838 + else if ((insn & BRAL_MASK) == BRAL_OPCODE)
1839 + /* Optimizing bral -> rjmp gets us into all kinds of
1840 + trouble with jump tables. Better not do it. */
1841 + rs = RS_NONE;
1842 + else if ((insn & BRC2_MASK) == BRC2_OPCODE)
1843 + rs = RS_BRC2;
1844 +
1845 + release_contents(sec, contents);
1846 +
1847 + return rs;
1848 +}
1849 +
1850 +static enum relax_state_id
1851 +get_initial_relax_state(bfd *abfd, asection *sec, struct bfd_link_info *info,
1852 + const Elf_Internal_Rela *rela)
1853 +{
1854 + switch (ELF_R_TYPE(rela->r_info))
1855 + {
1856 + case R_AVR32_GOTCALL:
1857 + return RS_PIC_CALL;
1858 + case R_AVR32_GOT18SW:
1859 + return RS_PIC_MCALL;
1860 + case R_AVR32_LDA_GOT:
1861 + return RS_PIC_LDA;
1862 + case R_AVR32_GOT16S:
1863 + return RS_PIC_LDW4;
1864 + case R_AVR32_CPCALL:
1865 + return RS_NOPIC_MCALL;
1866 + case R_AVR32_16_CP:
1867 + return RS_NOPIC_LDW4;
1868 + case R_AVR32_9W_CP:
1869 + return RS_NOPIC_LDDPC;
1870 + case R_AVR32_ALIGN:
1871 + return RS_ALIGN;
1872 + case R_AVR32_32_CPENT:
1873 + return RS_CPENT;
1874 + case R_AVR32_22H_PCREL:
1875 + return get_pcrel22_relax_state(abfd, sec, info, rela);
1876 + case R_AVR32_9H_PCREL:
1877 + return RS_BRC1;
1878 + default:
1879 + return RS_NONE;
1880 + }
1881 +}
1882 +
1883 +static bfd_boolean
1884 +reloc_is_cpool_ref(const Elf_Internal_Rela *rela)
1885 +{
1886 + switch (ELF_R_TYPE(rela->r_info))
1887 + {
1888 + case R_AVR32_CPCALL:
1889 + case R_AVR32_16_CP:
1890 + case R_AVR32_9W_CP:
1891 + return TRUE;
1892 + default:
1893 + return FALSE;
1894 + }
1895 +}
1896 +
1897 +static struct fragment *
1898 +new_frag(bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
1899 + struct avr32_relax_data *rd, enum relax_state_id state,
1900 + Elf_Internal_Rela *rela)
1901 +{
1902 + struct fragment *frag;
1903 + bfd_size_type r_size;
1904 + bfd_vma r_offset;
1905 + unsigned int i = rd->frag_count;
1906 +
1907 + BFD_ASSERT(state >= RS_NONE && state < RS_MAX);
1908 +
1909 + rd->frag_count++;
1910 + frag = bfd_realloc(rd->frag, sizeof(struct fragment) * rd->frag_count);
1911 + if (!frag)
1912 + return NULL;
1913 + rd->frag = frag;
1914 +
1915 + frag += i;
1916 + memset(frag, 0, sizeof(struct fragment));
1917 +
1918 + if (state == RS_ALIGN)
1919 + r_size = (((rela->r_offset + (1 << rela->r_addend) - 1)
1920 + & ~((1 << rela->r_addend) - 1)) - rela->r_offset);
1921 + else
1922 + r_size = relax_state[state].size;
1923 +
1924 + if (rela)
1925 + r_offset = rela->r_offset;
1926 + else
1927 + r_offset = sec->size;
1928 +
1929 + if (i == 0)
1930 + {
1931 + frag->offset = 0;
1932 + frag->size = r_offset + r_size;
1933 + }
1934 + else
1935 + {
1936 + frag->offset = rd->frag[i - 1].offset + rd->frag[i - 1].size;
1937 + frag->size = r_offset + r_size - frag->offset;
1938 + }
1939 +
1940 + if (state != RS_CPENT)
1941 + /* Make sure we don't discard this frag */
1942 + frag->refcount = 1;
1943 +
1944 + frag->initial_state = frag->state = state;
1945 + frag->rela = rela;
1946 +
1947 + return frag;
1948 +}
1949 +
1950 +static struct fragment *
1951 +find_frag(asection *sec, bfd_vma offset)
1952 +{
1953 + struct fragment *first, *last;
1954 + struct avr32_relax_data *rd = avr32_relax_data(sec);
1955 +
1956 + if (rd->frag_count == 0)
1957 + return NULL;
1958 +
1959 + first = &rd->frag[0];
1960 + last = &rd->frag[rd->frag_count - 1];
1961 +
1962 + /* This may be a reloc referencing the end of a section. The last
1963 + frag will never have a reloc associated with it, so its size will
1964 + never change, thus the offset adjustment of the last frag will
1965 + always be the same as the offset adjustment of the end of the
1966 + section. */
1967 + if (offset == sec->size)
1968 + {
1969 + BFD_ASSERT(last->offset + last->size == sec->size);
1970 + BFD_ASSERT(!last->rela);
1971 + return last;
1972 + }
1973 +
1974 + while (first <= last)
1975 + {
1976 + struct fragment *mid;
1977 +
1978 + mid = (last - first) / 2 + first;
1979 + if ((mid->offset + mid->size) <= offset)
1980 + first = mid + 1;
1981 + else if (mid->offset > offset)
1982 + last = mid - 1;
1983 + else
1984 + return mid;
1985 + }
1986 +
1987 + return NULL;
1988 +}
1989 +
1990 +/* Look through all relocs in a section and determine if any relocs
1991 + may be affected by relaxation in other sections. If so, allocate
1992 + an array of additional relocation data which links the affected
1993 + relocations to the frag(s) where the relaxation may occur.
1994 +
1995 + This function also links cpool references to cpool entries and
1996 + increments the refcount of the latter when this happens. */
1997 +
1998 +static bfd_boolean
1999 +allocate_reloc_data(bfd *abfd, asection *sec, Elf_Internal_Rela *relocs,
2000 + struct bfd_link_info *info)
2001 +{
2002 + Elf_Internal_Shdr *symtab_hdr;
2003 + Elf_Internal_Sym *isymbuf = NULL;
2004 + struct avr32_relax_data *rd;
2005 + unsigned int i;
2006 + bfd_boolean ret = FALSE;
2007 +
2008 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2009 + rd = avr32_relax_data(sec);
2010 +
2011 + RDBG("%s<%s>: allocate_reloc_data\n", abfd->filename, sec->name);
2012 +
2013 + for (i = 0; i < sec->reloc_count; i++)
2014 + {
2015 + Elf_Internal_Rela *rel = &relocs[i];
2016 + asection *sym_sec;
2017 + unsigned long r_symndx;
2018 + bfd_vma sym_value;
2019 +
2020 + if (!rel->r_addend && ELF_R_TYPE(rel->r_info) != R_AVR32_DIFF32
2021 + && !reloc_is_cpool_ref(rel))
2022 + continue;
2023 +
2024 + r_symndx = ELF_R_SYM(rel->r_info);
2025 +
2026 + if (r_symndx < symtab_hdr->sh_info)
2027 + {
2028 + Elf_Internal_Sym *isym;
2029 +
2030 + if (!isymbuf)
2031 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2032 + if (!isymbuf)
2033 + return FALSE;
2034 +
2035 + isym = &isymbuf[r_symndx];
2036 + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2037 + sym_value = isym->st_value;
2038 + }
2039 + else
2040 + {
2041 + struct elf_link_hash_entry *h;
2042 +
2043 + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
2044 +
2045 + while (h->root.type == bfd_link_hash_indirect
2046 + || h->root.type == bfd_link_hash_warning)
2047 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2048 +
2049 + if (h->root.type != bfd_link_hash_defined
2050 + && h->root.type != bfd_link_hash_defweak)
2051 + continue;
2052 +
2053 + sym_sec = h->root.u.def.section;
2054 + sym_value = h->root.u.def.value;
2055 + }
2056 +
2057 + if (sym_sec && avr32_relax_data(sym_sec)->is_relaxable)
2058 + {
2059 + bfd_size_type size;
2060 + struct fragment *frag;
2061 +
2062 + if (!rd->reloc_data)
2063 + {
2064 + size = sizeof(struct avr32_reloc_data) * sec->reloc_count;
2065 + rd->reloc_data = bfd_zalloc(abfd, size);
2066 + if (!rd->reloc_data)
2067 + goto out;
2068 + }
2069 +
2070 + RDBG("[%3d] 0x%04lx: target: 0x%lx + 0x%lx",
2071 + i, rel->r_offset, sym_value, rel->r_addend);
2072 +
2073 + frag = find_frag(sym_sec, sym_value + rel->r_addend);
2074 + BFD_ASSERT(frag);
2075 + rd->reloc_data[i].add_frag = frag;
2076 +
2077 + RDBG(" -> %s<%s>:%04lx\n", sym_sec->owner->filename, sym_sec->name,
2078 + frag->rela ? frag->rela->r_offset : sym_sec->size);
2079 +
2080 + if (reloc_is_cpool_ref(rel))
2081 + {
2082 + BFD_ASSERT(ELF_R_TYPE(frag->rela->r_info) == R_AVR32_32_CPENT);
2083 + frag->refcount++;
2084 + }
2085 +
2086 + if (ELF_R_TYPE(rel->r_info) == R_AVR32_DIFF32)
2087 + {
2088 + bfd_byte *contents;
2089 + bfd_signed_vma diff;
2090 +
2091 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2092 + if (!contents)
2093 + goto out;
2094 +
2095 + diff = bfd_get_signed_32(abfd, contents + rel->r_offset);
2096 + frag = find_frag(sym_sec, sym_value + rel->r_addend + diff);
2097 + BFD_ASSERT(frag);
2098 + rd->reloc_data[i].sub_frag = frag;
2099 +
2100 + release_contents(sec, contents);
2101 + }
2102 + }
2103 + }
2104 +
2105 + ret = TRUE;
2106 +
2107 + out:
2108 + release_local_syms(abfd, isymbuf);
2109 + return ret;
2110 +}
2111 +
2112 +static bfd_boolean
2113 +global_sym_set_frag(struct elf_avr32_link_hash_entry *havr,
2114 + struct bfd_link_info *info ATTRIBUTE_UNUSED)
2115 +{
2116 + struct fragment *frag;
2117 + asection *sec;
2118 +
2119 + if (havr->root.root.type != bfd_link_hash_defined
2120 + && havr->root.root.type != bfd_link_hash_defweak)
2121 + return TRUE;
2122 +
2123 + sec = havr->root.root.u.def.section;
2124 + if (bfd_is_const_section(sec)
2125 + || !avr32_relax_data(sec)->is_relaxable)
2126 + return TRUE;
2127 +
2128 + frag = find_frag(sec, havr->root.root.u.def.value);
2129 + if (!frag)
2130 + {
2131 + unsigned int i;
2132 + struct avr32_relax_data *rd = avr32_relax_data(sec);
2133 +
2134 + RDBG("In %s: No frag for %s <%s+%lu> (limit %lu)\n",
2135 + sec->owner->filename, havr->root.root.root.string,
2136 + sec->name, havr->root.root.u.def.value, sec->size);
2137 + for (i = 0; i < rd->frag_count; i++)
2138 + RDBG(" %8lu - %8lu\n", rd->frag[i].offset,
2139 + rd->frag[i].offset + rd->frag[i].size);
2140 + }
2141 + BFD_ASSERT(frag);
2142 +
2143 + havr->sym_frag = frag;
2144 + return TRUE;
2145 +}
2146 +
2147 +static bfd_boolean
2148 +analyze_relocations(struct bfd_link_info *info)
2149 +{
2150 + bfd *abfd;
2151 + asection *sec;
2152 +
2153 + /* Divide all relaxable sections into fragments */
2154 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2155 + {
2156 + if (!(elf_elfheader(abfd)->e_flags & EF_AVR32_LINKRELAX))
2157 + {
2158 + if (!(*info->callbacks->warning)
2159 + (info, _("input is not relaxable"), NULL, abfd, NULL, 0))
2160 + return FALSE;
2161 + continue;
2162 + }
2163 +
2164 + for (sec = abfd->sections; sec; sec = sec->next)
2165 + {
2166 + struct avr32_relax_data *rd;
2167 + struct fragment *frag;
2168 + Elf_Internal_Rela *relocs;
2169 + unsigned int i;
2170 + bfd_boolean ret = TRUE;
2171 +
2172 + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
2173 + continue;
2174 +
2175 + rd = avr32_relax_data(sec);
2176 +
2177 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2178 + if (!relocs)
2179 + return FALSE;
2180 +
2181 + qsort(relocs, sec->reloc_count, sizeof(Elf_Internal_Rela),
2182 + internal_reloc_compare);
2183 +
2184 + for (i = 0; i < sec->reloc_count; i++)
2185 + {
2186 + enum relax_state_id state;
2187 +
2188 + ret = FALSE;
2189 + state = get_initial_relax_state(abfd, sec, info, &relocs[i]);
2190 + if (state == RS_ERROR)
2191 + break;
2192 +
2193 + if (state)
2194 + {
2195 + frag = new_frag(abfd, sec, rd, state, &relocs[i]);
2196 + if (!frag)
2197 + break;
2198 +
2199 + pin_internal_relocs(sec, relocs);
2200 + rd->is_relaxable = TRUE;
2201 + }
2202 +
2203 + ret = TRUE;
2204 + }
2205 +
2206 + release_internal_relocs(sec, relocs);
2207 + if (!ret)
2208 + return ret;
2209 +
2210 + if (rd->is_relaxable)
2211 + {
2212 + frag = new_frag(abfd, sec, rd, RS_NONE, NULL);
2213 + if (!frag)
2214 + return FALSE;
2215 + }
2216 + }
2217 + }
2218 +
2219 + /* Link each global symbol to the fragment where it's defined. */
2220 + elf_link_hash_traverse(elf_hash_table(info), global_sym_set_frag, info);
2221 +
2222 + /* Do the same for local symbols. */
2223 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2224 + {
2225 + Elf_Internal_Sym *isymbuf, *isym;
2226 + struct fragment **local_sym_frag;
2227 + unsigned int i, sym_count;
2228 +
2229 + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
2230 + if (sym_count == 0)
2231 + continue;
2232 +
2233 + local_sym_frag = bfd_zalloc(abfd, sym_count * sizeof(struct fragment *));
2234 + if (!local_sym_frag)
2235 + return FALSE;
2236 + elf_tdata(abfd)->local_sym_frag = local_sym_frag;
2237 +
2238 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2239 + if (!isymbuf)
2240 + return FALSE;
2241 +
2242 + for (i = 0; i < sym_count; i++)
2243 + {
2244 + struct avr32_relax_data *rd;
2245 + struct fragment *frag;
2246 + asection *sec;
2247 +
2248 + isym = &isymbuf[i];
2249 +
2250 + sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2251 + if (!sec)
2252 + continue;
2253 +
2254 + rd = avr32_relax_data(sec);
2255 + if (!rd->is_relaxable)
2256 + continue;
2257 +
2258 + frag = find_frag(sec, isym->st_value);
2259 + BFD_ASSERT(frag);
2260 +
2261 + local_sym_frag[i] = frag;
2262 + }
2263 +
2264 + release_local_syms(abfd, isymbuf);
2265 + }
2266 +
2267 + /* And again for relocs with addends and constant pool references */
2268 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2269 + for (sec = abfd->sections; sec; sec = sec->next)
2270 + {
2271 + Elf_Internal_Rela *relocs;
2272 + bfd_boolean ret;
2273 +
2274 + if (!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
2275 + continue;
2276 +
2277 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2278 + if (!relocs)
2279 + return FALSE;
2280 +
2281 + ret = allocate_reloc_data(abfd, sec, relocs, info);
2282 +
2283 + release_internal_relocs(sec, relocs);
2284 + if (ret == FALSE)
2285 + return ret;
2286 + }
2287 +
2288 + return TRUE;
2289 +}
2290 +
2291 +static bfd_boolean
2292 +rs_is_good_enough(const struct relax_state *rs, struct fragment *frag,
2293 + bfd_vma symval, bfd_vma addr, struct got_entry *got,
2294 + struct avr32_reloc_data *ind_data,
2295 + bfd_signed_vma offset_adjust)
2296 +{
2297 + bfd_signed_vma target = 0;
2298 +
2299 + switch (rs->reftype)
2300 + {
2301 + case REF_ABSOLUTE:
2302 + target = symval;
2303 + break;
2304 + case REF_PCREL:
2305 + target = symval - addr;
2306 + break;
2307 + case REF_CPOOL:
2308 + /* cpool frags are always in the same section and always after
2309 + all frags referring to it. So it's always correct to add in
2310 + offset_adjust here. */
2311 + target = (ind_data->add_frag->offset + ind_data->add_frag->offset_adjust
2312 + + offset_adjust - frag->offset - frag->offset_adjust);
2313 + break;
2314 + case REF_GOT:
2315 + target = got->offset;
2316 + break;
2317 + default:
2318 + abort();
2319 + }
2320 +
2321 + if (target >= rs->range_min && target <= rs->range_max)
2322 + return TRUE;
2323 + else
2324 + return FALSE;
2325 +}
2326 +
2327 +static bfd_boolean
2328 +avr32_size_frags(bfd *abfd, asection *sec, struct bfd_link_info *info)
2329 +{
2330 + struct elf_avr32_link_hash_table *htab;
2331 + struct avr32_relax_data *rd;
2332 + Elf_Internal_Shdr *symtab_hdr;
2333 + Elf_Internal_Rela *relocs = NULL;
2334 + Elf_Internal_Sym *isymbuf = NULL;
2335 + struct got_entry **local_got_ents;
2336 + struct fragment **local_sym_frag;
2337 + bfd_boolean ret = FALSE;
2338 + bfd_signed_vma delta = 0;
2339 + unsigned int i;
2340 +
2341 + htab = avr32_elf_hash_table(info);
2342 + rd = avr32_relax_data(sec);
2343 +
2344 + if (sec == htab->sgot)
2345 + {
2346 + RDBG("Relaxing GOT section (vma: 0x%lx)\n",
2347 + sec->output_section->vma + sec->output_offset);
2348 + if (assign_got_offsets(htab))
2349 + htab->repeat_pass = TRUE;
2350 + return TRUE;
2351 + }
2352 +
2353 + if (!rd->is_relaxable)
2354 + return TRUE;
2355 +
2356 + if (!sec->rawsize)
2357 + sec->rawsize = sec->size;
2358 +
2359 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2360 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2361 + if (!relocs)
2362 + goto out;
2363 +
2364 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2365 + if (!isymbuf)
2366 + goto out;
2367 +
2368 + local_got_ents = elf_local_got_ents(abfd);
2369 + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
2370 +
2371 + RDBG("size_frags: %s<%s>\n vma: 0x%08lx, size: 0x%08lx\n",
2372 + abfd->filename, sec->name,
2373 + sec->output_section->vma + sec->output_offset, sec->size);
2374 +
2375 + for (i = 0; i < rd->frag_count; i++)
2376 + {
2377 + struct fragment *frag = &rd->frag[i];
2378 + struct avr32_reloc_data *r_data = NULL, *ind_data = NULL;
2379 + const struct relax_state *state, *next_state;
2380 + struct fragment *target_frag = NULL;
2381 + asection *sym_sec = NULL;
2382 + Elf_Internal_Rela *rela;
2383 + struct got_entry *got;
2384 + bfd_vma symval, r_offset, addend, addr;
2385 + bfd_signed_vma size_adjust = 0, distance;
2386 + unsigned long r_symndx;
2387 + bfd_boolean defined = TRUE, dynamic = FALSE;
2388 + unsigned char sym_type;
2389 +
2390 + frag->offset_adjust += delta;
2391 + state = next_state = &relax_state[frag->state];
2392 + rela = frag->rela;
2393 +
2394 + BFD_ASSERT(state->id == frag->state);
2395 +
2396 + RDBG(" 0x%04lx%c%d: %s [size %ld]", rela ? rela->r_offset : sec->rawsize,
2397 + (frag->offset_adjust < 0)?'-':'+',
2398 + abs(frag->offset_adjust), state->name, state->size);
2399 +
2400 + if (!rela)
2401 + {
2402 + RDBG(": no reloc, ignoring\n");
2403 + continue;
2404 + }
2405 +
2406 + BFD_ASSERT((unsigned int)(rela - relocs) < sec->reloc_count);
2407 + BFD_ASSERT(state != RS_NONE);
2408 +
2409 + r_offset = rela->r_offset + frag->offset_adjust;
2410 + addr = sec->output_section->vma + sec->output_offset + r_offset;
2411 +
2412 + switch (frag->state)
2413 + {
2414 + case RS_ALIGN:
2415 + size_adjust = ((addr + (1 << rela->r_addend) - 1)
2416 + & ~((1 << rela->r_addend) - 1));
2417 + size_adjust -= (sec->output_section->vma + sec->output_offset
2418 + + frag->offset + frag->offset_adjust
2419 + + frag->size + frag->size_adjust);
2420 +
2421 + RDBG(": adjusting size %lu -> %lu\n", frag->size + frag->size_adjust,
2422 + frag->size + frag->size_adjust + size_adjust);
2423 + break;
2424 +
2425 + case RS_CPENT:
2426 + if (frag->refcount == 0 && frag->size_adjust == 0)
2427 + {
2428 + RDBG(": discarding frag\n");
2429 + size_adjust = -4;
2430 + }
2431 + else if (frag->refcount > 0 && frag->size_adjust < 0)
2432 + {
2433 + RDBG(": un-discarding frag\n");
2434 + size_adjust = 4;
2435 + }
2436 + break;
2437 +
2438 + default:
2439 + if (rd->reloc_data)
2440 + r_data = &rd->reloc_data[frag->rela - relocs];
2441 +
2442 + /* If this is a cpool reference, we want the symbol that the
2443 + cpool entry refers to, not the symbol for the cpool entry
2444 + itself, as we already know what frag it's in. */
2445 + if (relax_state[frag->initial_state].reftype == REF_CPOOL)
2446 + {
2447 + Elf_Internal_Rela *irela = r_data->add_frag->rela;
2448 +
2449 + r_symndx = ELF_R_SYM(irela->r_info);
2450 + addend = irela->r_addend;
2451 +
2452 + /* The constant pool must be in the same section as the
2453 + reloc referring to it. */
2454 + BFD_ASSERT((unsigned long)(irela - relocs) < sec->reloc_count);
2455 +
2456 + ind_data = r_data;
2457 + r_data = &rd->reloc_data[irela - relocs];
2458 + }
2459 + else
2460 + {
2461 + r_symndx = ELF_R_SYM(rela->r_info);
2462 + addend = rela->r_addend;
2463 + }
2464 +
2465 + /* Get the value of the symbol referred to by the reloc. */
2466 + if (r_symndx < symtab_hdr->sh_info)
2467 + {
2468 + Elf_Internal_Sym *isym;
2469 +
2470 + isym = isymbuf + r_symndx;
2471 + symval = 0;
2472 +
2473 + RDBG(" local sym %lu: ", r_symndx);
2474 +
2475 + if (isym->st_shndx == SHN_UNDEF)
2476 + defined = FALSE;
2477 + else if (isym->st_shndx == SHN_ABS)
2478 + sym_sec = bfd_abs_section_ptr;
2479 + else if (isym->st_shndx == SHN_COMMON)
2480 + sym_sec = bfd_com_section_ptr;
2481 + else
2482 + sym_sec = bfd_section_from_elf_index(abfd, isym->st_shndx);
2483 +
2484 + symval = isym->st_value;
2485 + sym_type = ELF_ST_TYPE(isym->st_info);
2486 + target_frag = local_sym_frag[r_symndx];
2487 +
2488 + if (local_got_ents)
2489 + got = local_got_ents[r_symndx];
2490 + else
2491 + got = NULL;
2492 + }
2493 + else
2494 + {
2495 + /* Global symbol */
2496 + unsigned long index;
2497 + struct elf_link_hash_entry *h;
2498 + struct elf_avr32_link_hash_entry *havr;
2499 +
2500 + index = r_symndx - symtab_hdr->sh_info;
2501 + h = elf_sym_hashes(abfd)[index];
2502 + BFD_ASSERT(h != NULL);
2503 +
2504 + while (h->root.type == bfd_link_hash_indirect
2505 + || h->root.type == bfd_link_hash_warning)
2506 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2507 +
2508 + havr = (struct elf_avr32_link_hash_entry *)h;
2509 + got = h->got.glist;
2510 +
2511 + symval = 0;
2512 +
2513 + RDBG(" %s: ", h->root.root.string);
2514 +
2515 + if (h->root.type != bfd_link_hash_defined
2516 + && h->root.type != bfd_link_hash_defweak)
2517 + {
2518 + RDBG("(undef)");
2519 + defined = FALSE;
2520 + }
2521 + else if ((info->shared && !info->symbolic && h->dynindx != -1)
2522 + || (htab->root.dynamic_sections_created
2523 + && h->def_dynamic && !h->def_regular))
2524 + {
2525 + RDBG("(dynamic)");
2526 + dynamic = TRUE;
2527 + sym_sec = h->root.u.def.section;
2528 + }
2529 + else
2530 + {
2531 + sym_sec = h->root.u.def.section;
2532 + symval = h->root.u.def.value;
2533 + target_frag = havr->sym_frag;
2534 + }
2535 +
2536 + sym_type = h->type;
2537 + }
2538 +
2539 + /* Thanks to elf32-ppc for this one. */
2540 + if (sym_sec && sym_sec->sec_info_type == ELF_INFO_TYPE_MERGE)
2541 + {
2542 + /* At this stage in linking, no SEC_MERGE symbol has been
2543 + adjusted, so all references to such symbols need to be
2544 + passed through _bfd_merged_section_offset. (Later, in
2545 + relocate_section, all SEC_MERGE symbols *except* for
2546 + section symbols have been adjusted.)
2547 +
2548 + SEC_MERGE sections are not relaxed by us, as they
2549 + shouldn't contain any code. */
2550 +
2551 + BFD_ASSERT(!target_frag && !(r_data && r_data->add_frag));
2552 +
2553 + /* gas may reduce relocations against symbols in SEC_MERGE
2554 + sections to a relocation against the section symbol when
2555 + the original addend was zero. When the reloc is against
2556 + a section symbol we should include the addend in the
2557 + offset passed to _bfd_merged_section_offset, since the
2558 + location of interest is the original symbol. On the
2559 + other hand, an access to "sym+addend" where "sym" is not
2560 + a section symbol should not include the addend; Such an
2561 + access is presumed to be an offset from "sym"; The
2562 + location of interest is just "sym". */
2563 + RDBG("\n MERGE: %s: 0x%lx+0x%lx+0x%lx -> ",
2564 + (sym_type == STT_SECTION)?"section":"not section",
2565 + sym_sec->output_section->vma + sym_sec->output_offset,
2566 + symval, addend);
2567 +
2568 + if (sym_type == STT_SECTION)
2569 + symval += addend;
2570 +
2571 + symval = (_bfd_merged_section_offset
2572 + (abfd, &sym_sec,
2573 + elf_section_data(sym_sec)->sec_info, symval));
2574 +
2575 + if (sym_type != STT_SECTION)
2576 + symval += addend;
2577 + }
2578 + else
2579 + symval += addend;
2580 +
2581 + if (defined && !dynamic)
2582 + {
2583 + RDBG("0x%lx+0x%lx",
2584 + sym_sec->output_section->vma + sym_sec->output_offset,
2585 + symval);
2586 + symval += sym_sec->output_section->vma + sym_sec->output_offset;
2587 + }
2588 +
2589 + if (r_data && r_data->add_frag)
2590 + /* If the add_frag pointer is set, it means that this reloc
2591 + has an addend that may be affected by relaxation. */
2592 + target_frag = r_data->add_frag;
2593 +
2594 + if (target_frag)
2595 + {
2596 + symval += target_frag->offset_adjust;
2597 +
2598 + /* If target_frag comes after this frag in the same
2599 + section, we should assume that it will be moved by
2600 + the same amount we are. */
2601 + if ((target_frag - rd->frag) < (int)rd->frag_count
2602 + && target_frag > frag)
2603 + symval += delta;
2604 + }
2605 +
2606 + distance = symval - addr;
2607 +
2608 + /* First, try to make a direct reference. If the symbol is
2609 + dynamic or undefined, we must take care not to change its
2610 + reference type, that is, we can't make it direct.
2611 +
2612 + Also, it seems like some sections may actually be resized
2613 + after the relaxation code is done, so we can't really
2614 + trust that our "distance" is correct. There's really no
2615 + easy solution to this problem, so we'll just disallow
2616 + direct references to SEC_DATA sections.
2617 +
2618 + Oh, and .bss isn't actually SEC_DATA, so we disallow
2619 + !SEC_HAS_CONTENTS as well. */
2620 + if (!dynamic && defined
2621 + && (htab->direct_data_refs
2622 + || (!(sym_sec->flags & SEC_DATA)
2623 + && (sym_sec->flags & SEC_HAS_CONTENTS)))
2624 + && next_state->direct)
2625 + {
2626 + next_state = &relax_state[next_state->direct];
2627 + RDBG(" D-> %s", next_state->name);
2628 + }
2629 +
2630 + /* Iterate backwards until we find a state that fits. */
2631 + while (next_state->prev
2632 + && !rs_is_good_enough(next_state, frag, symval, addr,
2633 + got, ind_data, delta))
2634 + {
2635 + next_state = &relax_state[next_state->prev];
2636 + RDBG(" P-> %s", next_state->name);
2637 + }
2638 +
2639 + /* Then try to find the best possible state. */
2640 + while (next_state->next)
2641 + {
2642 + const struct relax_state *candidate;
2643 +
2644 + candidate = &relax_state[next_state->next];
2645 + if (!rs_is_good_enough(candidate, frag, symval, addr, got,
2646 + ind_data, delta))
2647 + break;
2648 +
2649 + next_state = candidate;
2650 + RDBG(" N-> %s", next_state->name);
2651 + }
2652 +
2653 + RDBG(" [size %ld]\n", next_state->size);
2654 +
2655 + BFD_ASSERT(next_state->id);
2656 + BFD_ASSERT(!dynamic || next_state->reftype == REF_GOT);
2657 +
2658 + size_adjust = next_state->size - state->size;
2659 +
2660 + /* There's a theoretical possibility that shrinking one frag
2661 + may cause another to grow, which may cause the first one to
2662 + grow as well, and we're back where we started. Avoid this
2663 + scenario by disallowing a frag that has grown to ever
2664 + shrink again. */
2665 + if (state->reftype == REF_GOT && next_state->reftype != REF_GOT)
2666 + {
2667 + if (frag->has_grown)
2668 + next_state = state;
2669 + else
2670 + unref_got_entry(htab, got);
2671 + }
2672 + else if (state->reftype != REF_GOT && next_state->reftype == REF_GOT)
2673 + {
2674 + ref_got_entry(htab, got);
2675 + frag->has_grown = TRUE;
2676 + }
2677 + else if (state->reftype == REF_CPOOL
2678 + && next_state->reftype != REF_CPOOL)
2679 + {
2680 + if (frag->has_grown)
2681 + next_state = state;
2682 + else
2683 + ind_data->add_frag->refcount--;
2684 + }
2685 + else if (state->reftype != REF_CPOOL
2686 + && next_state->reftype == REF_CPOOL)
2687 + {
2688 + ind_data->add_frag->refcount++;
2689 + frag->has_grown = TRUE;
2690 + }
2691 + else
2692 + {
2693 + if (frag->has_grown && size_adjust < 0)
2694 + next_state = state;
2695 + else if (size_adjust > 0)
2696 + frag->has_grown = TRUE;
2697 + }
2698 +
2699 + size_adjust = next_state->size - state->size;
2700 + frag->state = next_state->id;
2701 +
2702 + break;
2703 + }
2704 +
2705 + if (size_adjust)
2706 + htab->repeat_pass = TRUE;
2707 +
2708 + frag->size_adjust += size_adjust;
2709 + sec->size += size_adjust;
2710 + delta += size_adjust;
2711 +
2712 + BFD_ASSERT((frag->offset + frag->offset_adjust
2713 + + frag->size + frag->size_adjust)
2714 + == (frag[1].offset + frag[1].offset_adjust + delta));
2715 + }
2716 +
2717 + ret = TRUE;
2718 +
2719 + out:
2720 + release_local_syms(abfd, isymbuf);
2721 + release_internal_relocs(sec, relocs);
2722 + return ret;
2723 +}
2724 +
2725 +static bfd_boolean
2726 +adjust_global_symbol(struct elf_avr32_link_hash_entry *havr,
2727 + struct bfd_link_info *info ATTRIBUTE_UNUSED)
2728 +{
2729 + struct elf_link_hash_entry *h = &havr->root;
2730 +
2731 + if (havr->sym_frag && (h->root.type == bfd_link_hash_defined
2732 + || h->root.type == bfd_link_hash_defweak))
2733 + {
2734 + RDBG("adjust_global_symbol: %s 0x%08lx -> 0x%08lx\n",
2735 + h->root.root.string, h->root.u.def.value,
2736 + h->root.u.def.value + havr->sym_frag->offset_adjust);
2737 + h->root.u.def.value += havr->sym_frag->offset_adjust;
2738 + }
2739 + return TRUE;
2740 +}
2741 +
2742 +static bfd_boolean
2743 +adjust_syms(struct bfd_link_info *info)
2744 +{
2745 + struct elf_avr32_link_hash_table *htab;
2746 + bfd *abfd;
2747 +
2748 + htab = avr32_elf_hash_table(info);
2749 + elf_link_hash_traverse(&htab->root, adjust_global_symbol, info);
2750 +
2751 + for (abfd = info->input_bfds; abfd; abfd = abfd->link_next)
2752 + {
2753 + Elf_Internal_Sym *isymbuf;
2754 + struct fragment **local_sym_frag, *frag;
2755 + unsigned int i, sym_count;
2756 +
2757 + sym_count = elf_tdata(abfd)->symtab_hdr.sh_info;
2758 + if (sym_count == 0)
2759 + continue;
2760 +
2761 + isymbuf = retrieve_local_syms(abfd, info->keep_memory);
2762 + if (!isymbuf)
2763 + return FALSE;
2764 +
2765 + local_sym_frag = elf_tdata(abfd)->local_sym_frag;
2766 +
2767 + for (i = 0; i < sym_count; i++)
2768 + {
2769 + frag = local_sym_frag[i];
2770 + if (frag)
2771 + {
2772 + RDBG("adjust_local_symbol: %s[%u] 0x%08lx -> 0x%08lx\n",
2773 + abfd->filename, i, isymbuf[i].st_value,
2774 + isymbuf[i].st_value + frag->offset_adjust);
2775 + isymbuf[i].st_value += frag->offset_adjust;
2776 + }
2777 + }
2778 +
2779 + release_local_syms(abfd, isymbuf);
2780 + }
2781 +
2782 + htab->symbols_adjusted = TRUE;
2783 + return TRUE;
2784 +}
2785 +
2786 +static bfd_boolean
2787 +adjust_relocs(bfd *abfd, asection *sec, struct bfd_link_info *info)
2788 +{
2789 + struct avr32_relax_data *rd;
2790 + Elf_Internal_Rela *relocs;
2791 + Elf_Internal_Shdr *symtab_hdr;
2792 + unsigned int i;
2793 + bfd_boolean ret = FALSE;
2794 +
2795 + rd = avr32_relax_data(sec);
2796 + if (!rd->reloc_data)
2797 + return TRUE;
2798 +
2799 + RDBG("adjust_relocs: %s<%s> (count: %u)\n", abfd->filename, sec->name,
2800 + sec->reloc_count);
2801 +
2802 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2803 + if (!relocs)
2804 + return FALSE;
2805 +
2806 + symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
2807 +
2808 + for (i = 0; i < sec->reloc_count; i++)
2809 + {
2810 + Elf_Internal_Rela *rela = &relocs[i];
2811 + struct avr32_reloc_data *r_data = &rd->reloc_data[i];
2812 + struct fragment *sym_frag;
2813 + unsigned long r_symndx;
2814 +
2815 + if (r_data->add_frag)
2816 + {
2817 + r_symndx = ELF_R_SYM(rela->r_info);
2818 +
2819 + if (r_symndx < symtab_hdr->sh_info)
2820 + sym_frag = elf_tdata(abfd)->local_sym_frag[r_symndx];
2821 + else
2822 + {
2823 + struct elf_link_hash_entry *h;
2824 +
2825 + h = elf_sym_hashes(abfd)[r_symndx - symtab_hdr->sh_info];
2826 +
2827 + while (h->root.type == bfd_link_hash_indirect
2828 + || h->root.type == bfd_link_hash_warning)
2829 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
2830 +
2831 + BFD_ASSERT(h->root.type == bfd_link_hash_defined
2832 + || h->root.type == bfd_link_hash_defweak);
2833 +
2834 + sym_frag = ((struct elf_avr32_link_hash_entry *)h)->sym_frag;
2835 + }
2836 +
2837 + RDBG(" addend: 0x%08lx -> 0x%08lx\n",
2838 + rela->r_addend,
2839 + rela->r_addend + r_data->add_frag->offset_adjust
2840 + - (sym_frag ? sym_frag->offset_adjust : 0));
2841 +
2842 + /* If this is against a section symbol, we won't find any
2843 + sym_frag, so we'll just adjust the addend. */
2844 + rela->r_addend += r_data->add_frag->offset_adjust;
2845 + if (sym_frag)
2846 + rela->r_addend -= sym_frag->offset_adjust;
2847 +
2848 + if (r_data->sub_frag)
2849 + {
2850 + bfd_byte *contents;
2851 + bfd_signed_vma diff;
2852 +
2853 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2854 + if (!contents)
2855 + goto out;
2856 +
2857 + /* I realize now that sub_frag is misnamed. It's
2858 + actually add_frag which is subtracted in this
2859 + case... */
2860 + diff = bfd_get_signed_32(abfd, contents + rela->r_offset);
2861 + diff += (r_data->sub_frag->offset_adjust
2862 + - r_data->add_frag->offset_adjust);
2863 + bfd_put_32(abfd, diff, contents + rela->r_offset);
2864 +
2865 + RDBG(" 0x%lx: DIFF32 updated: 0x%lx\n", rela->r_offset, diff);
2866 +
2867 + release_contents(sec, contents);
2868 + }
2869 + }
2870 + else
2871 + BFD_ASSERT(!r_data->sub_frag);
2872 + }
2873 +
2874 + ret = TRUE;
2875 +
2876 + out:
2877 + release_internal_relocs(sec, relocs);
2878 + return ret;
2879 +}
2880 +
2881 +static bfd_boolean
2882 +avr32_move_data(bfd *abfd, asection *sec, struct bfd_link_info *info)
2883 +{
2884 + struct elf_avr32_link_hash_table *htab;
2885 + struct avr32_relax_data *rd;
2886 + struct fragment *frag, *fragend;
2887 + Elf_Internal_Rela *relocs = NULL;
2888 + bfd_byte *contents = NULL;
2889 + unsigned int i;
2890 + bfd_boolean ret = FALSE;
2891 +
2892 + htab = avr32_elf_hash_table(info);
2893 + rd = avr32_relax_data(sec);
2894 +
2895 + if (!htab->symbols_adjusted)
2896 + if (!adjust_syms(info))
2897 + return FALSE;
2898 +
2899 + if (rd->is_relaxable)
2900 + {
2901 + /* Resize the section first, so that we can be sure that enough
2902 + memory is allocated in case the section has grown. */
2903 + if (sec->size > sec->rawsize
2904 + && elf_section_data(sec)->this_hdr.contents)
2905 + {
2906 + /* We must not use cached data if the section has grown. */
2907 + free(elf_section_data(sec)->this_hdr.contents);
2908 + elf_section_data(sec)->this_hdr.contents = NULL;
2909 + }
2910 +
2911 + relocs = retrieve_internal_relocs(abfd, sec, info->keep_memory);
2912 + if (!relocs)
2913 + goto out;
2914 + contents = retrieve_contents(abfd, sec, info->keep_memory);
2915 + if (!contents)
2916 + goto out;
2917 +
2918 + fragend = rd->frag + rd->frag_count;
2919 +
2920 + RDBG("move_data: %s<%s>: relocs=%p, contents=%p\n",
2921 + abfd->filename, sec->name, relocs, contents);
2922 +
2923 + /* First, move the data into place. We must take care to move
2924 + frags in the right order so that we don't accidentally
2925 + overwrite parts of the next frag. */
2926 + for (frag = rd->frag; frag < fragend; frag++)
2927 + {
2928 + RDBG(" 0x%08lx%c0x%x: size 0x%lx%c0x%x\n",
2929 + frag->offset, frag->offset_adjust >= 0 ? '+' : '-',
2930 + abs(frag->offset_adjust),
2931 + frag->size, frag->size_adjust >= 0 ? '+' : '-',
2932 + abs(frag->size_adjust));
2933 + if (frag->offset_adjust > 0)
2934 + {
2935 + struct fragment *prev = frag - 1;
2936 + struct fragment *last;
2937 +
2938 + for (last = frag; last < fragend && last->offset_adjust > 0;
2939 + last++) ;
2940 +
2941 + if (last == fragend)
2942 + last--;
2943 +
2944 + for (frag = last; frag != prev; frag--)
2945 + {
2946 + if (frag->offset_adjust
2947 + && frag->size + frag->size_adjust > 0)
2948 + {
2949 + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
2950 + frag->offset, frag->offset + frag->offset_adjust,
2951 + frag->size + frag->size_adjust);
2952 + memmove(contents + frag->offset + frag->offset_adjust,
2953 + contents + frag->offset,
2954 + frag->size + frag->size_adjust);
2955 + }
2956 + }
2957 + frag = last;
2958 + }
2959 + else if (frag->offset_adjust && frag->size + frag->size_adjust > 0)
2960 + {
2961 + RDBG("memmove 0x%lx -> 0x%lx (size %lu)\n",
2962 + frag->offset, frag->offset + frag->offset_adjust,
2963 + frag->size + frag->size_adjust);
2964 + memmove(contents + frag->offset + frag->offset_adjust,
2965 + contents + frag->offset,
2966 + frag->size + frag->size_adjust);
2967 + }
2968 + }
2969 +
2970 + i = 0;
2971 +
2972 + for (frag = rd->frag; frag < fragend; frag++)
2973 + {
2974 + const struct relax_state *state, *istate;
2975 + struct avr32_reloc_data *r_data = NULL;
2976 +
2977 + istate = &relax_state[frag->initial_state];
2978 + state = &relax_state[frag->state];
2979 +
2980 + if (rd->reloc_data)
2981 + r_data = &rd->reloc_data[frag->rela - relocs];
2982 +
2983 + BFD_ASSERT((long)(frag->size + frag->size_adjust) >= 0);
2984 + BFD_ASSERT(state->reftype != REF_CPOOL
2985 + || r_data->add_frag->refcount > 0);
2986 +
2987 + if (istate->reftype == REF_CPOOL && state->reftype != REF_CPOOL)
2988 + {
2989 + struct fragment *ifrag;
2990 +
2991 + /* An indirect reference through the cpool has been
2992 + converted to a direct reference. We must update the
2993 + reloc to point to the symbol itself instead of the
2994 + constant pool entry. The reloc type will be updated
2995 + later. */
2996 + ifrag = r_data->add_frag;
2997 + frag->rela->r_info = ifrag->rela->r_info;
2998 + frag->rela->r_addend = ifrag->rela->r_addend;
2999 +
3000 + /* Copy the reloc data so the addend will be adjusted
3001 + correctly later. */
3002 + *r_data = rd->reloc_data[ifrag->rela - relocs];
3003 + }
3004 +
3005 + /* Move all relocs covered by this frag. */
3006 + if (frag->rela)
3007 + BFD_ASSERT(&relocs[i] <= frag->rela);
3008 + else
3009 + BFD_ASSERT((frag + 1) == fragend && frag->state == RS_NONE);
3010 +
3011 + if (frag == rd->frag)
3012 + BFD_ASSERT(i == 0);
3013 + else
3014 + BFD_ASSERT(&relocs[i] > frag[-1].rela);
3015 +
3016 + /* If non-null, frag->rela is the last relocation in the
3017 + fragment. frag->rela can only be null in the last
3018 + fragment, so in that case, we'll just do the rest. */
3019 + for (; (i < sec->reloc_count
3020 + && (!frag->rela || &relocs[i] <= frag->rela)); i++)
3021 + {
3022 + RDBG("[%4u] r_offset 0x%08lx -> 0x%08lx\n", i, relocs[i].r_offset,
3023 + relocs[i].r_offset + frag->offset_adjust);
3024 + relocs[i].r_offset += frag->offset_adjust;
3025 + }
3026 +
3027 + if (frag->refcount == 0)
3028 + {
3029 + /* If this frag is to be discarded, make sure we won't
3030 + relocate it later on. */
3031 + BFD_ASSERT(frag->state == RS_CPENT);
3032 + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
3033 + R_AVR32_NONE);
3034 + }
3035 + else if (frag->state == RS_ALIGN)
3036 + {
3037 + bfd_vma addr, addr_end;
3038 +
3039 + addr = frag->rela->r_offset;
3040 + addr_end = (frag->offset + frag->offset_adjust
3041 + + frag->size + frag->size_adjust);
3042 +
3043 + /* If the section is executable, insert NOPs.
3044 + Otherwise, insert zeroes. */
3045 + if (sec->flags & SEC_CODE)
3046 + {
3047 + if (addr & 1)
3048 + {
3049 + bfd_put_8(abfd, 0, contents + addr);
3050 + addr++;
3051 + }
3052 +
3053 + BFD_ASSERT(!((addr_end - addr) & 1));
3054 +
3055 + while (addr < addr_end)
3056 + {
3057 + bfd_put_16(abfd, NOP_OPCODE, contents + addr);
3058 + addr += 2;
3059 + }
3060 + }
3061 + else
3062 + memset(contents + addr, 0, addr_end - addr);
3063 + }
3064 + else if (state->opcode_mask)
3065 + {
3066 + bfd_vma insn;
3067 +
3068 + /* Update the opcode and the relocation type unless it's a
3069 + "special" relax state (i.e. RS_NONE, RS_ALIGN or
3070 + RS_CPENT.), in which case the opcode mask is zero. */
3071 + insn = bfd_get_32(abfd, contents + frag->rela->r_offset);
3072 + insn &= ~state->opcode_mask;
3073 + insn |= state->opcode;
3074 + RDBG(" 0x%lx: inserting insn %08lx\n",
3075 + frag->rela->r_offset, insn);
3076 + bfd_put_32(abfd, insn, contents + frag->rela->r_offset);
3077 +
3078 + frag->rela->r_info = ELF_R_INFO(ELF_R_SYM(frag->rela->r_info),
3079 + state->r_type);
3080 + }
3081 +
3082 + if ((frag + 1) == fragend)
3083 + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
3084 + + frag->size_adjust) == sec->size);
3085 + else
3086 + BFD_ASSERT((frag->offset + frag->size + frag->offset_adjust
3087 + + frag->size_adjust)
3088 + == (frag[1].offset + frag[1].offset_adjust));
3089 + }
3090 + }
3091 +
3092 + /* Adjust reloc addends and DIFF32 differences */
3093 + if (!adjust_relocs(abfd, sec, info))
3094 + return FALSE;
3095 +
3096 + ret = TRUE;
3097 +
3098 + out:
3099 + release_contents(sec, contents);
3100 + release_internal_relocs(sec, relocs);
3101 + return ret;
3102 +}
3103 +
3104 +static bfd_boolean
3105 +avr32_elf_relax_section(bfd *abfd, asection *sec,
3106 + struct bfd_link_info *info, bfd_boolean *again)
3107 +{
3108 + struct elf_avr32_link_hash_table *htab;
3109 + struct avr32_relax_data *rd;
3110 +
3111 + *again = FALSE;
3112 + if (info->relocatable)
3113 + return TRUE;
3114 +
3115 + htab = avr32_elf_hash_table(info);
3116 + if ((!(sec->flags & SEC_RELOC) || sec->reloc_count == 0)
3117 + && sec != htab->sgot)
3118 + return TRUE;
3119 +
3120 + if (!htab->relocations_analyzed)
3121 + {
3122 + if (!analyze_relocations(info))
3123 + return FALSE;
3124 + htab->relocations_analyzed = TRUE;
3125 + }
3126 +
3127 + rd = avr32_relax_data(sec);
3128 +
3129 + if (rd->iteration != htab->relax_iteration)
3130 + {
3131 + if (!htab->repeat_pass)
3132 + htab->relax_pass++;
3133 + htab->relax_iteration++;
3134 + htab->repeat_pass = FALSE;
3135 + }
3136 +
3137 + rd->iteration++;
3138 +
3139 + switch (htab->relax_pass)
3140 + {
3141 + case RELAX_PASS_SIZE_FRAGS:
3142 + if (!avr32_size_frags(abfd, sec, info))
3143 + return FALSE;
3144 + *again = TRUE;
3145 + break;
3146 + case RELAX_PASS_MOVE_DATA:
3147 + if (!avr32_move_data(abfd, sec, info))
3148 + return FALSE;
3149 + break;
3150 + }
3151 +
3152 + return TRUE;
3153 +}
3154 +
3155 +
3156 +/* Relocation */
3157 +
3158 +static bfd_reloc_status_type
3159 +avr32_check_reloc_value(asection *sec, Elf_Internal_Rela *rela,
3160 + bfd_signed_vma relocation, reloc_howto_type *howto);
3161 +static bfd_reloc_status_type
3162 +avr32_final_link_relocate(reloc_howto_type *howto, bfd *input_bfd,
3163 + asection *input_section, bfd_byte *contents,
3164 + Elf_Internal_Rela *rel, bfd_vma value);
3165 +static bfd_boolean
3166 +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
3167 + bfd *input_bfd, asection *input_section,
3168 + bfd_byte *contents, Elf_Internal_Rela *relocs,
3169 + Elf_Internal_Sym *local_syms,
3170 + asection **local_sections);
3171 +
3172 +
3173 +#define symbol_address(symbol) \
3174 + symbol->value + symbol->section->output_section->vma \
3175 + + symbol->section->output_offset
3176 +
3177 +#define avr32_elf_insert_field(size, field, abfd, reloc_entry, data) \
3178 + do \
3179 + { \
3180 + unsigned long x; \
3181 + x = bfd_get_##size (abfd, data + reloc_entry->address); \
3182 + x &= ~reloc_entry->howto->dst_mask; \
3183 + x |= field & reloc_entry->howto->dst_mask; \
3184 + bfd_put_##size (abfd, (bfd_vma) x, data + reloc_entry->address); \
3185 + } \
3186 + while(0)
3187 +
3188 +static bfd_reloc_status_type
3189 +avr32_check_reloc_value(asection *sec ATTRIBUTE_UNUSED,
3190 + Elf_Internal_Rela *rela ATTRIBUTE_UNUSED,
3191 + bfd_signed_vma relocation,
3192 + reloc_howto_type *howto)
3193 +{
3194 + bfd_vma reloc_u;
3195 +
3196 + /* We take "complain_overflow_dont" to mean "don't complain on
3197 + alignment either". This way, we don't have to special-case
3198 + R_AVR32_HI16 */
3199 + if (howto->complain_on_overflow == complain_overflow_dont)
3200 + return bfd_reloc_ok;
3201 +
3202 + /* Check if the value is correctly aligned */
3203 + if (relocation & ((1 << howto->rightshift) - 1))
3204 + {
3205 + RDBG("misaligned: %s<%s+%lx>: %s: 0x%lx (align %u)\n",
3206 + sec->owner->filename, sec->name, rela->r_offset,
3207 + howto->name, relocation, howto->rightshift);
3208 + return bfd_reloc_overflow;
3209 + }
3210 +
3211 + /* Now, get rid of the unnecessary bits */
3212 + relocation >>= howto->rightshift;
3213 + reloc_u = (bfd_vma)relocation;
3214 +
3215 + switch (howto->complain_on_overflow)
3216 + {
3217 + case complain_overflow_unsigned:
3218 + case complain_overflow_bitfield:
3219 + if (reloc_u > (unsigned long)((1 << howto->bitsize) - 1))
3220 + {
3221 + RDBG("unsigned overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
3222 + sec->owner->filename, sec->name, rela->r_offset,
3223 + howto->name, reloc_u, howto->bitsize);
3224 + RDBG("reloc vma: 0x%lx\n",
3225 + sec->output_section->vma + sec->output_offset + rela->r_offset);
3226 +
3227 + return bfd_reloc_overflow;
3228 + }
3229 + break;
3230 + case complain_overflow_signed:
3231 + if (relocation > (1 << (howto->bitsize - 1)) - 1)
3232 + {
3233 + RDBG("signed overflow: %s<%s+%lx>: %s: 0x%lx (size %u)\n",
3234 + sec->owner->filename, sec->name, rela->r_offset,
3235 + howto->name, reloc_u, howto->bitsize);
3236 + RDBG("reloc vma: 0x%lx\n",
3237 + sec->output_section->vma + sec->output_offset + rela->r_offset);
3238 +
3239 + return bfd_reloc_overflow;
3240 + }
3241 + if (relocation < -(1 << (howto->bitsize - 1)))
3242 + {
3243 + RDBG("signed overflow: %s<%s+%lx>: %s: -0x%lx (size %u)\n",
3244 + sec->owner->filename, sec->name, rela->r_offset,
3245 + howto->name, -relocation, howto->bitsize);
3246 + RDBG("reloc vma: 0x%lx\n",
3247 + sec->output_section->vma + sec->output_offset + rela->r_offset);
3248 +
3249 + return bfd_reloc_overflow;
3250 + }
3251 + break;
3252 + default:
3253 + abort();
3254 + }
3255 +
3256 + return bfd_reloc_ok;
3257 +}
3258 +
3259 +
3260 +static bfd_reloc_status_type
3261 +avr32_final_link_relocate(reloc_howto_type *howto,
3262 + bfd *input_bfd,
3263 + asection *input_section,
3264 + bfd_byte *contents,
3265 + Elf_Internal_Rela *rel,
3266 + bfd_vma value)
3267 +{
3268 + bfd_vma field;
3269 + bfd_vma relocation;
3270 + bfd_reloc_status_type status;
3271 + bfd_byte *p = contents + rel->r_offset;
3272 + unsigned long x;
3273 +
3274 + pr_debug(" (6b) final link relocate\n");
3275 +
3276 + /* Sanity check the address */
3277 + if (rel->r_offset > input_section->size)
3278 + {
3279 + (*_bfd_error_handler)
3280 + ("%B: %A+0x%lx: offset out of range (section size: 0x%lx)",
3281 + input_bfd, input_section, rel->r_offset, input_section->size);
3282 + return bfd_reloc_outofrange;
3283 + }
3284 +
3285 + relocation = value + rel->r_addend;
3286 +
3287 + if (howto->pc_relative)
3288 + {
3289 + bfd_vma addr;
3290 +
3291 + addr = input_section->output_section->vma
3292 + + input_section->output_offset + rel->r_offset;
3293 + addr &= ~0UL << howto->rightshift;
3294 + relocation -= addr;
3295 + }
3296 +
3297 + switch (ELF32_R_TYPE(rel->r_info))
3298 + {
3299 + case R_AVR32_16N_PCREL:
3300 + /* sub reg, pc, . - (sym + addend) */
3301 + relocation = -relocation;
3302 + break;
3303 + }
3304 +
3305 + status = avr32_check_reloc_value(input_section, rel, relocation, howto);
3306 +
3307 + relocation >>= howto->rightshift;
3308 + if (howto->bitsize == 21)
3309 + field = (relocation & 0xffff)
3310 + | ((relocation & 0x10000) << 4)
3311 + | ((relocation & 0x1e0000) << 8);
3312 + else if (howto->bitsize == 12)
3313 + field = (relocation & 0xff) | ((relocation & 0xf00) << 4);
3314 + else if (howto->bitsize == 10)
3315 + field = ((relocation & 0xff) << 4)
3316 + | ((relocation & 0x300) >> 8);
3317 + else
3318 + field = relocation << howto->bitpos;
3319 +
3320 + switch (howto->size)
3321 + {
3322 + case 0:
3323 + x = bfd_get_8 (input_bfd, p);
3324 + x &= ~howto->dst_mask;
3325 + x |= field & howto->dst_mask;
3326 + bfd_put_8 (input_bfd, (bfd_vma) x, p);
3327 + break;
3328 + case 1:
3329 + x = bfd_get_16 (input_bfd, p);
3330 + x &= ~howto->dst_mask;
3331 + x |= field & howto->dst_mask;
3332 + bfd_put_16 (input_bfd, (bfd_vma) x, p);
3333 + break;
3334 + case 2:
3335 + x = bfd_get_32 (input_bfd, p);
3336 + x &= ~howto->dst_mask;
3337 + x |= field & howto->dst_mask;
3338 + bfd_put_32 (input_bfd, (bfd_vma) x, p);
3339 + break;
3340 + default:
3341 + abort();
3342 + }
3343 +
3344 + return status;
3345 +}
3346 +
3347 +/* (6) Apply relocations to the normal (non-dynamic) sections */
3348 +
3349 +static bfd_boolean
3350 +avr32_elf_relocate_section(bfd *output_bfd, struct bfd_link_info *info,
3351 + bfd *input_bfd, asection *input_section,
3352 + bfd_byte *contents, Elf_Internal_Rela *relocs,
3353 + Elf_Internal_Sym *local_syms,
3354 + asection **local_sections)
3355 +{
3356 + struct elf_avr32_link_hash_table *htab;
3357 + Elf_Internal_Shdr *symtab_hdr;
3358 + Elf_Internal_Rela *rel, *relend;
3359 + struct elf_link_hash_entry **sym_hashes;
3360 + struct got_entry **local_got_ents;
3361 + asection *sgot;
3362 + asection *srelgot;
3363 +
3364 + pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
3365 + input_bfd->filename, input_section->name, input_section->size);
3366 +
3367 + /* If we're doing a partial link, we don't have to do anything since
3368 + we're using RELA relocations */
3369 + if (info->relocatable)
3370 + return TRUE;
3371 +
3372 + htab = avr32_elf_hash_table(info);
3373 + symtab_hdr = &elf_tdata(input_bfd)->symtab_hdr;
3374 + sym_hashes = elf_sym_hashes(input_bfd);
3375 + local_got_ents = elf_local_got_ents(input_bfd);
3376 + sgot = htab->sgot;
3377 + srelgot = htab->srelgot;
3378 +
3379 + relend = relocs + input_section->reloc_count;
3380 + for (rel = relocs; rel < relend; rel++)
3381 + {
3382 + unsigned long r_type, r_symndx;
3383 + reloc_howto_type *howto;
3384 + Elf_Internal_Sym *sym = NULL;
3385 + struct elf_link_hash_entry *h = NULL;
3386 + asection *sec = NULL;
3387 + bfd_vma value;
3388 + bfd_vma offset;
3389 + bfd_reloc_status_type status;
3390 +
3391 + r_type = ELF32_R_TYPE(rel->r_info);
3392 + r_symndx = ELF32_R_SYM(rel->r_info);
3393 +
3394 + if (r_type == R_AVR32_NONE
3395 + || r_type == R_AVR32_ALIGN
3396 + || r_type == R_AVR32_DIFF32
3397 + || r_type == R_AVR32_DIFF16
3398 + || r_type == R_AVR32_DIFF8)
3399 + continue;
3400 +
3401 + /* Sanity check */
3402 + if (r_type > R_AVR32_max)
3403 + {
3404 + bfd_set_error(bfd_error_bad_value);
3405 + return FALSE;
3406 + }
3407 +
3408 + howto = &elf_avr32_howto_table[r_type];
3409 +
3410 + if (r_symndx < symtab_hdr->sh_info)
3411 + {
3412 + sym = local_syms + r_symndx;
3413 + sec = local_sections[r_symndx];
3414 +
3415 + pr_debug(" (6a) processing %s against local symbol %lu\n",
3416 + howto->name, r_symndx);
3417 +
3418 + /* The following function changes rel->r_addend behind our back. */
3419 + value = _bfd_elf_rela_local_sym(output_bfd, sym, &sec, rel);
3420 + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
3421 + }
3422 + else
3423 + {
3424 + if (sym_hashes == NULL)
3425 + return FALSE;
3426 +
3427 + h = sym_hashes[r_symndx - symtab_hdr->sh_info];
3428 + while (h->root.type == bfd_link_hash_indirect
3429 + || h->root.type == bfd_link_hash_warning)
3430 + h = (struct elf_link_hash_entry *)h->root.u.i.link;
3431 +
3432 + pr_debug(" (6a) processing %s against symbol %s\n",
3433 + howto->name, h->root.root.string);
3434 +
3435 + if (h->root.type == bfd_link_hash_defined
3436 + || h->root.type == bfd_link_hash_defweak)
3437 + {
3438 + bfd_boolean dyn;
3439 +
3440 + dyn = htab->root.dynamic_sections_created;
3441 + sec = h->root.u.def.section;
3442 +
3443 + if (sec->output_section)
3444 + value = (h->root.u.def.value
3445 + + sec->output_section->vma
3446 + + sec->output_offset);
3447 + else
3448 + value = h->root.u.def.value;
3449 + }
3450 + else if (h->root.type == bfd_link_hash_undefweak)
3451 + value = 0;
3452 + else if (info->unresolved_syms_in_objects == RM_IGNORE
3453 + && ELF_ST_VISIBILITY(h->other) == STV_DEFAULT)
3454 + value = 0;
3455 + else
3456 + {
3457 + bfd_boolean err;
3458 + err = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
3459 + || ELF_ST_VISIBILITY(h->other) != STV_DEFAULT);
3460 + if (!info->callbacks->undefined_symbol
3461 + (info, h->root.root.string, input_bfd,
3462 + input_section, rel->r_offset, err))
3463 + return FALSE;
3464 + value = 0;
3465 + }
3466 +
3467 + pr_debug(" => value: %lx, addend: %lx\n", value, rel->r_addend);
3468 + }
3469 +
3470 + switch (r_type)
3471 + {
3472 + case R_AVR32_GOT32:
3473 + case R_AVR32_GOT16:
3474 + case R_AVR32_GOT8:
3475 + case R_AVR32_GOT21S:
3476 + case R_AVR32_GOT18SW:
3477 + case R_AVR32_GOT16S:
3478 + case R_AVR32_GOT7UW:
3479 + case R_AVR32_LDA_GOT:
3480 + case R_AVR32_GOTCALL:
3481 + BFD_ASSERT(sgot != NULL);
3482 +
3483 + if (h != NULL)
3484 + {
3485 + BFD_ASSERT(h->got.glist->refcount > 0);
3486 + offset = h->got.glist->offset;
3487 +
3488 + BFD_ASSERT(offset < sgot->size);
3489 + if (!elf_hash_table(info)->dynamic_sections_created
3490 + || (h->def_regular
3491 + && (!info->shared
3492 + || info->symbolic
3493 + || h->dynindx == -1)))
3494 + {
3495 + /* This is actually a static link, or it is a
3496 + -Bsymbolic link and the symbol is defined
3497 + locally, or the symbol was forced to be local. */
3498 + bfd_put_32(output_bfd, value, sgot->contents + offset);
3499 + }
3500 + }
3501 + else
3502 + {
3503 + BFD_ASSERT(local_got_ents &&
3504 + local_got_ents[r_symndx]->refcount > 0);
3505 + offset = local_got_ents[r_symndx]->offset;
3506 +
3507 + /* Local GOT entries don't have relocs. If this is a
3508 + shared library, the dynamic linker will add the load
3509 + address to the initial value at startup. */
3510 + BFD_ASSERT(offset < sgot->size);
3511 + pr_debug("Initializing GOT entry at offset %lu: 0x%lx\n",
3512 + offset, value);
3513 + bfd_put_32 (output_bfd, value, sgot->contents + offset);
3514 + }
3515 +
3516 + value = sgot->output_offset + offset;
3517 + pr_debug("GOT reference: New value %lx\n", value);
3518 + break;
3519 +
3520 + case R_AVR32_GOTPC:
3521 + /* This relocation type is for constant pool entries used in
3522 + the calculation "Rd = PC - (PC - GOT)", where the
3523 + constant pool supplies the constant (PC - GOT)
3524 + offset. The symbol value + addend indicates where the
3525 + value of PC is taken. */
3526 + value -= sgot->output_section->vma;
3527 + break;
3528 +
3529 + case R_AVR32_32_PCREL:
3530 + /* We must adjust r_offset to account for discarded data in
3531 + the .eh_frame section. This is probably not the right
3532 + way to do this, since AFAICS all other architectures do
3533 + it some other way. I just can't figure out how... */
3534 + {
3535 + bfd_vma r_offset;
3536 +
3537 + r_offset = _bfd_elf_section_offset(output_bfd, info,
3538 + input_section,
3539 + rel->r_offset);
3540 + if (r_offset == (bfd_vma)-1
3541 + || r_offset == (bfd_vma)-2)
3542 + continue;
3543 + rel->r_offset = r_offset;
3544 + }
3545 + break;
3546 +
3547 + case R_AVR32_32:
3548 + /* We need to emit a run-time relocation in the following cases:
3549 + - we're creating a shared library
3550 + - the symbol is not defined in any regular objects
3551 +
3552 + Of course, sections that aren't going to be part of the
3553 + run-time image will not get any relocs, and undefined
3554 + symbols won't have any either (only weak undefined
3555 + symbols should get this far). */
3556 + if ((info->shared
3557 + || (elf_hash_table(info)->dynamic_sections_created
3558 + && h != NULL
3559 + && h->def_dynamic
3560 + && !h->def_regular))
3561 + && r_symndx != 0
3562 + && (input_section->flags & SEC_ALLOC))
3563 + {
3564 + Elf_Internal_Rela outrel;
3565 + bfd_byte *loc;
3566 + bfd_boolean skip, relocate;
3567 + struct elf_avr32_link_hash_entry *avrh;
3568 +
3569 + pr_debug("Going to generate dynamic reloc...\n");
3570 +
3571 + skip = FALSE;
3572 + relocate = FALSE;
3573 +
3574 + outrel.r_offset = _bfd_elf_section_offset(output_bfd, info,
3575 + input_section,
3576 + rel->r_offset);
3577 + if (outrel.r_offset == (bfd_vma)-1)
3578 + skip = TRUE;
3579 + else if (outrel.r_offset == (bfd_vma)-2)
3580 + skip = TRUE, relocate = TRUE;
3581 +
3582 + outrel.r_offset += (input_section->output_section->vma
3583 + + input_section->output_offset);
3584 +
3585 + pr_debug(" ... offset %lx, dynindx %ld\n",
3586 + outrel.r_offset, h ? h->dynindx : -1);
3587 +
3588 + if (skip)
3589 + memset(&outrel, 0, sizeof(outrel));
3590 + else
3591 + {
3592 + avrh = (struct elf_avr32_link_hash_entry *)h;
3593 + /* h->dynindx may be -1 if this symbol was marked to
3594 + become local. */
3595 + if (h == NULL
3596 + || ((info->symbolic || h->dynindx == -1)
3597 + && h->def_regular))
3598 + {
3599 + relocate = TRUE;
3600 + outrel.r_info = ELF32_R_INFO(0, R_AVR32_RELATIVE);
3601 + outrel.r_addend = value + rel->r_addend;
3602 + pr_debug(" ... R_AVR32_RELATIVE\n");
3603 + }
3604 + else
3605 + {
3606 + BFD_ASSERT(h->dynindx != -1);
3607 + relocate = TRUE;
3608 + outrel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
3609 + outrel.r_addend = rel->r_addend;
3610 + pr_debug(" ... R_AVR32_GLOB_DAT\n");
3611 + }
3612 + }
3613 +
3614 + pr_debug("srelgot reloc_count: %d, size %lu\n",
3615 + srelgot->reloc_count, srelgot->size);
3616 +
3617 + loc = srelgot->contents;
3618 + loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
3619 + bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
3620 +
3621 + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
3622 + <= srelgot->size);
3623 +
3624 + if (!relocate)
3625 + continue;
3626 + }
3627 + break;
3628 + }
3629 +
3630 + status = avr32_final_link_relocate(howto, input_bfd, input_section,
3631 + contents, rel, value);
3632 +
3633 + switch (status)
3634 + {
3635 + case bfd_reloc_ok:
3636 + break;
3637 +
3638 + case bfd_reloc_overflow:
3639 + {
3640 + const char *name;
3641 +
3642 + if (h != NULL)
3643 + name = h->root.root.string;
3644 + else
3645 + {
3646 + name = bfd_elf_string_from_elf_section(input_bfd,
3647 + symtab_hdr->sh_link,
3648 + sym->st_name);
3649 + if (name == NULL)
3650 + return FALSE;
3651 + if (*name == '\0')
3652 + name = bfd_section_name(input_bfd, sec);
3653 + }
3654 + if (!((*info->callbacks->reloc_overflow)
3655 + (info, (h ? &h->root : NULL), name, howto->name,
3656 + rel->r_addend, input_bfd, input_section, rel->r_offset)))
3657 + return FALSE;
3658 + }
3659 + break;
3660 +
3661 + case bfd_reloc_outofrange:
3662 + default:
3663 + abort();
3664 + }
3665 + }
3666 +
3667 + return TRUE;
3668 +}
3669 +
3670 +
3671 +/* Additional processing of dynamic sections after relocation */
3672 +
3673 +static bfd_boolean
3674 +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
3675 + struct elf_link_hash_entry *h,
3676 + Elf_Internal_Sym *sym);
3677 +static bfd_boolean
3678 +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info);
3679 +
3680 +
3681 +/* (7) Initialize the contents of a dynamic symbol and/or emit
3682 + relocations for it */
3683 +
3684 +static bfd_boolean
3685 +avr32_elf_finish_dynamic_symbol(bfd *output_bfd, struct bfd_link_info *info,
3686 + struct elf_link_hash_entry *h,
3687 + Elf_Internal_Sym *sym)
3688 +{
3689 + struct elf_avr32_link_hash_table *htab;
3690 + struct got_entry *got;
3691 +
3692 + pr_debug("(7) finish dynamic symbol: %s\n", h->root.root.string);
3693 +
3694 + htab = avr32_elf_hash_table(info);
3695 + got = h->got.glist;
3696 +
3697 + if (got && got->refcount > 0)
3698 + {
3699 + asection *sgot;
3700 + asection *srelgot;
3701 + Elf_Internal_Rela rel;
3702 + bfd_byte *loc;
3703 +
3704 + /* This symbol has an entry in the GOT. Set it up. */
3705 + sgot = htab->sgot;
3706 + srelgot = htab->srelgot;
3707 + BFD_ASSERT(sgot && srelgot);
3708 +
3709 + rel.r_offset = (sgot->output_section->vma
3710 + + sgot->output_offset
3711 + + got->offset);
3712 +
3713 + /* If this is a static link, or it is a -Bsymbolic link and the
3714 + symbol is defined locally or was forced to be local because
3715 + of a version file, we just want to emit a RELATIVE reloc. The
3716 + entry in the global offset table will already have been
3717 + initialized in the relocate_section function. */
3718 + if ((info->shared
3719 + && !info->symbolic
3720 + && h->dynindx != -1)
3721 + || (htab->root.dynamic_sections_created
3722 + && h->def_dynamic
3723 + && !h->def_regular))
3724 + {
3725 + bfd_put_32(output_bfd, 0, sgot->contents + got->offset);
3726 + rel.r_info = ELF32_R_INFO(h->dynindx, R_AVR32_GLOB_DAT);
3727 + rel.r_addend = 0;
3728 +
3729 + pr_debug("GOT reloc R_AVR32_GLOB_DAT, dynindx: %ld\n", h->dynindx);
3730 + pr_debug(" srelgot reloc_count: %d, size: %lu\n",
3731 + srelgot->reloc_count, srelgot->size);
3732 +
3733 + loc = (srelgot->contents
3734 + + srelgot->reloc_count++ * sizeof(Elf32_External_Rela));
3735 + bfd_elf32_swap_reloca_out(output_bfd, &rel, loc);
3736 +
3737 + BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
3738 + <= srelgot->size);
3739 + }
3740 + }
3741 +
3742 + /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute */
3743 + if (strcmp(h->root.root.string, "_DYNAMIC") == 0
3744 + || strcmp(h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
3745 + sym->st_shndx = SHN_ABS;
3746 +
3747 + return TRUE;
3748 +}
3749 +
3750 +/* (8) Do any remaining initialization of the dynamic sections */
3751 +
3752 +static bfd_boolean
3753 +avr32_elf_finish_dynamic_sections(bfd *output_bfd, struct bfd_link_info *info)
3754 +{
3755 + struct elf_avr32_link_hash_table *htab;
3756 + asection *sgot, *sdyn;
3757 +
3758 + pr_debug("(8) finish dynamic sections\n");
3759 +
3760 + htab = avr32_elf_hash_table(info);
3761 + sgot = htab->sgot;
3762 + sdyn = bfd_get_section_by_name(htab->root.dynobj, ".dynamic");
3763 +
3764 + if (htab->root.dynamic_sections_created)
3765 + {
3766 + Elf32_External_Dyn *dyncon, *dynconend;
3767 +
3768 + BFD_ASSERT(sdyn && sgot && sgot->size >= AVR32_GOT_HEADER_SIZE);
3769 +
3770 + dyncon = (Elf32_External_Dyn *)sdyn->contents;
3771 + dynconend = (Elf32_External_Dyn *)(sdyn->contents + sdyn->size);
3772 + for (; dyncon < dynconend; dyncon++)
3773 + {
3774 + Elf_Internal_Dyn dyn;
3775 + asection *s;
3776 +
3777 + bfd_elf32_swap_dyn_in(htab->root.dynobj, dyncon, &dyn);
3778 +
3779 + switch (dyn.d_tag)
3780 + {
3781 + default:
3782 + break;
3783 +
3784 + case DT_PLTGOT:
3785 + s = sgot->output_section;
3786 + BFD_ASSERT(s != NULL);
3787 + dyn.d_un.d_ptr = s->vma;
3788 + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
3789 + break;
3790 +
3791 + case DT_AVR32_GOTSZ:
3792 + s = sgot->output_section;
3793 + BFD_ASSERT(s != NULL);
3794 + dyn.d_un.d_val = s->size;
3795 + bfd_elf32_swap_dyn_out(output_bfd, &dyn, dyncon);
3796 + break;
3797 + }
3798 + }
3799 +
3800 + /* Fill in the first two entries in the global offset table */
3801 + bfd_put_32(output_bfd,
3802 + sdyn->output_section->vma + sdyn->output_offset,
3803 + sgot->contents);
3804 +
3805 + /* The runtime linker will fill this one in with the address of
3806 + the run-time link map */
3807 + bfd_put_32(output_bfd, 0, sgot->contents + 4);
3808 + }
3809 +
3810 + if (sgot)
3811 + elf_section_data(sgot->output_section)->this_hdr.sh_entsize = 4;
3812 +
3813 + return TRUE;
3814 +}
3815 +
3816 +
3817 +/* AVR32-specific private ELF data */
3818 +
3819 +static bfd_boolean
3820 +avr32_elf_set_private_flags(bfd *abfd, flagword flags);
3821 +static bfd_boolean
3822 +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd);
3823 +static bfd_boolean
3824 +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd);
3825 +static bfd_boolean
3826 +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr);
3827 +
3828 +static bfd_boolean
3829 +avr32_elf_set_private_flags(bfd *abfd, flagword flags)
3830 +{
3831 + elf_elfheader(abfd)->e_flags = flags;
3832 + elf_flags_init(abfd) = TRUE;
3833 +
3834 + return TRUE;
3835 +}
3836 +
3837 +/* Copy backend specific data from one object module to another. */
3838 +
3839 +static bfd_boolean
3840 +avr32_elf_copy_private_bfd_data(bfd *ibfd, bfd *obfd)
3841 +{
3842 + elf_elfheader(obfd)->e_flags = elf_elfheader(ibfd)->e_flags;
3843 + return TRUE;
3844 +}
3845 +
3846 +/* Merge backend specific data from an object file to the output
3847 + object file when linking. */
3848 +
3849 +static bfd_boolean
3850 +avr32_elf_merge_private_bfd_data(bfd *ibfd, bfd *obfd)
3851 +{
3852 + flagword out_flags, in_flags;
3853 +
3854 + pr_debug("(0) merge_private_bfd_data: %s -> %s\n",
3855 + ibfd->filename, obfd->filename);
3856 +
3857 + in_flags = elf_elfheader(ibfd)->e_flags;
3858 + out_flags = elf_elfheader(obfd)->e_flags;
3859 +
3860 + if (elf_flags_init(obfd))
3861 + {
3862 + /* If one of the inputs are non-PIC, the output must be
3863 + considered non-PIC. The same applies to linkrelax. */
3864 + if (!(in_flags & EF_AVR32_PIC))
3865 + out_flags &= ~EF_AVR32_PIC;
3866 + if (!(in_flags & EF_AVR32_LINKRELAX))
3867 + out_flags &= ~EF_AVR32_LINKRELAX;
3868 + }
3869 + else
3870 + {
3871 + elf_flags_init(obfd) = TRUE;
3872 + out_flags = in_flags;
3873 + }
3874 +
3875 + elf_elfheader(obfd)->e_flags = out_flags;
3876 +
3877 + return TRUE;
3878 +}
3879 +
3880 +static bfd_boolean
3881 +avr32_elf_print_private_bfd_data(bfd *abfd, void *ptr)
3882 +{
3883 + FILE *file = (FILE *)ptr;
3884 + unsigned long flags;
3885 +
3886 + BFD_ASSERT(abfd != NULL && ptr != NULL);
3887 +
3888 + _bfd_elf_print_private_bfd_data(abfd, ptr);
3889 +
3890 + flags = elf_elfheader(abfd)->e_flags;
3891 +
3892 + fprintf(file, _("private flags = %lx:"), elf_elfheader(abfd)->e_flags);
3893 +
3894 + if (flags & EF_AVR32_PIC)
3895 + fprintf(file, " [PIC]");
3896 + if (flags & EF_AVR32_LINKRELAX)
3897 + fprintf(file, " [linker relaxable]");
3898 +
3899 + flags &= ~(EF_AVR32_PIC | EF_AVR32_LINKRELAX);
3900 +
3901 + if (flags)
3902 + fprintf(file, _("<Unrecognized flag bits set>"));
3903 +
3904 + fputc('\n', file);
3905 +
3906 + return TRUE;
3907 +}
3908 +
3909 +/* Set avr32-specific linker options. */
3910 +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
3911 + int direct_data_refs)
3912 +{
3913 + struct elf_avr32_link_hash_table *htab;
3914 +
3915 + htab = avr32_elf_hash_table (info);
3916 + htab->direct_data_refs = !!direct_data_refs;
3917 +}
3918 +
3919 +
3920 +
3921 +/* Understanding core dumps */
3922 +
3923 +static bfd_boolean
3924 +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note);
3925 +static bfd_boolean
3926 +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note);
3927 +
3928 +static bfd_boolean
3929 +avr32_elf_grok_prstatus(bfd *abfd, Elf_Internal_Note *note)
3930 +{
3931 + /* Linux/AVR32B elf_prstatus */
3932 + if (note->descsz != 148)
3933 + return FALSE;
3934 +
3935 + /* pr_cursig */
3936 + elf_tdata(abfd)->core_signal = bfd_get_16(abfd, note->descdata + 12);
3937 +
3938 + /* pr_pid */
3939 + elf_tdata(abfd)->core_pid = bfd_get_32(abfd, note->descdata + 24);
3940 +
3941 + /* Make a ".reg/999" section for pr_reg. The size is for 16
3942 + general-purpose registers, SR and r12_orig (18 * 4 = 72). */
3943 + return _bfd_elfcore_make_pseudosection(abfd, ".reg", 72,
3944 + note->descpos + 72);
3945 +}
3946 +
3947 +static bfd_boolean
3948 +avr32_elf_grok_psinfo(bfd *abfd, Elf_Internal_Note *note)
3949 +{
3950 + /* Linux/AVR32B elf_prpsinfo */
3951 + if (note->descsz != 128)
3952 + return FALSE;
3953 +
3954 + elf_tdata(abfd)->core_program
3955 + = _bfd_elfcore_strndup(abfd, note->descdata + 32, 16);
3956 + elf_tdata(abfd)->core_command
3957 + = _bfd_elfcore_strndup(abfd, note->descdata + 48, 80);
3958 +
3959 + /* Note that for some reason, a spurious space is tacked
3960 + onto the end of the args in some (at least one anyway)
3961 + implementations, so strip it off if it exists. */
3962 +
3963 + {
3964 + char *command = elf_tdata (abfd)->core_command;
3965 + int n = strlen (command);
3966 +
3967 + if (0 < n && command[n - 1] == ' ')
3968 + command[n - 1] = '\0';
3969 + }
3970 +
3971 + return TRUE;
3972 +}
3973 +
3974 +
3975 +#define ELF_ARCH bfd_arch_avr32
3976 +#define ELF_MACHINE_CODE EM_AVR32
3977 +#define ELF_MAXPAGESIZE 0x1000
3978 +
3979 +#define TARGET_BIG_SYM bfd_elf32_avr32_vec
3980 +#define TARGET_BIG_NAME "elf32-avr32"
3981 +
3982 +#define elf_backend_grok_prstatus avr32_elf_grok_prstatus
3983 +#define elf_backend_grok_psinfo avr32_elf_grok_psinfo
3984 +
3985 +/* Only RELA relocations are used */
3986 +#define elf_backend_may_use_rel_p 0
3987 +#define elf_backend_may_use_rela_p 1
3988 +#define elf_backend_default_use_rela_p 1
3989 +#define elf_backend_rela_normal 1
3990 +#define elf_info_to_howto_rel NULL
3991 +#define elf_info_to_howto avr32_info_to_howto
3992 +
3993 +#define bfd_elf32_bfd_copy_private_bfd_data avr32_elf_copy_private_bfd_data
3994 +#define bfd_elf32_bfd_merge_private_bfd_data avr32_elf_merge_private_bfd_data
3995 +#define bfd_elf32_bfd_set_private_flags avr32_elf_set_private_flags
3996 +#define bfd_elf32_bfd_print_private_bfd_data avr32_elf_print_private_bfd_data
3997 +#define bfd_elf32_new_section_hook avr32_elf_new_section_hook
3998 +
3999 +#define elf_backend_gc_mark_hook avr32_elf_gc_mark_hook
4000 +#define elf_backend_gc_sweep_hook avr32_elf_gc_sweep_hook
4001 +#define elf_backend_relocate_section avr32_elf_relocate_section
4002 +#define elf_backend_copy_indirect_symbol avr32_elf_copy_indirect_symbol
4003 +#define elf_backend_create_dynamic_sections avr32_elf_create_dynamic_sections
4004 +#define bfd_elf32_bfd_link_hash_table_create avr32_elf_link_hash_table_create
4005 +#define elf_backend_adjust_dynamic_symbol avr32_elf_adjust_dynamic_symbol
4006 +#define elf_backend_size_dynamic_sections avr32_elf_size_dynamic_sections
4007 +#define elf_backend_finish_dynamic_symbol avr32_elf_finish_dynamic_symbol
4008 +#define elf_backend_finish_dynamic_sections avr32_elf_finish_dynamic_sections
4009 +
4010 +#define bfd_elf32_bfd_relax_section avr32_elf_relax_section
4011 +
4012 +/* Find out which symbols need an entry in .got. */
4013 +#define elf_backend_check_relocs avr32_check_relocs
4014 +#define elf_backend_can_refcount 1
4015 +#define elf_backend_can_gc_sections 1
4016 +#define elf_backend_plt_readonly 1
4017 +#define elf_backend_plt_not_loaded 1
4018 +#define elf_backend_want_plt_sym 0
4019 +#define elf_backend_plt_alignment 2
4020 +#define elf_backend_want_dynbss 0
4021 +#define elf_backend_want_got_plt 0
4022 +#define elf_backend_want_got_sym 1
4023 +#define elf_backend_got_header_size AVR32_GOT_HEADER_SIZE
4024 +
4025 +#include "elf32-target.h"
4026 --- /dev/null
4027 +++ b/bfd/elf32-avr32.h
4028 @@ -0,0 +1,23 @@
4029 +/* AVR32-specific support for 32-bit ELF.
4030 + Copyright 2007 Atmel Corporation.
4031 +
4032 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
4033 +
4034 + This file is part of BFD, the Binary File Descriptor library.
4035 +
4036 + This program is free software; you can redistribute it and/or modify
4037 + it under the terms of the GNU General Public License as published by
4038 + the Free Software Foundation; either version 2 of the License, or
4039 + (at your option) any later version.
4040 +
4041 + This program is distributed in the hope that it will be useful,
4042 + but WITHOUT ANY WARRANTY; without even the implied warranty of
4043 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4044 + GNU General Public License for more details.
4045 +
4046 + You should have received a copy of the GNU General Public License
4047 + along with this program; if not, write to the Free Software
4048 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
4049 +
4050 +void bfd_elf32_avr32_set_options(struct bfd_link_info *info,
4051 + int direct_data_refs);
4052 --- a/bfd/elf-bfd.h
4053 +++ b/bfd/elf-bfd.h
4054 @@ -1400,6 +1400,10 @@ struct elf_obj_tdata
4055 find_nearest_line. */
4056 struct mips_elf_find_line *find_line_info;
4057
4058 + /* Used by AVR32 ELF relaxation code. Contains an array of pointers
4059 + for each local symbol to the fragment where it is defined. */
4060 + struct fragment **local_sym_frag;
4061 +
4062 /* A place to stash dwarf1 info for this bfd. */
4063 struct dwarf1_debug *dwarf1_find_line_info;
4064
4065 --- a/bfd/Makefile.am
4066 +++ b/bfd/Makefile.am
4067 @@ -63,6 +63,7 @@ ALL_MACHINES = \
4068 cpu-arc.lo \
4069 cpu-arm.lo \
4070 cpu-avr.lo \
4071 + cpu-avr32.lo \
4072 cpu-bfin.lo \
4073 cpu-cr16.lo \
4074 cpu-cr16c.lo \
4075 @@ -243,6 +244,7 @@ BFD32_BACKENDS = \
4076 elf32-arc.lo \
4077 elf32-arm.lo \
4078 elf32-avr.lo \
4079 + elf32-avr32.lo \
4080 elf32-bfin.lo \
4081 elf32-cr16.lo \
4082 elf32-cr16c.lo \
4083 @@ -1328,6 +1330,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
4084 $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
4085 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
4086 $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
4087 +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
4088 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
4089 + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
4090 + elf32-target.h
4091 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
4092 $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
4093 $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
4094 --- a/bfd/reloc.c
4095 +++ b/bfd/reloc.c
4096 @@ -3948,6 +3948,131 @@ ENUMDOC
4097 instructions
4098
4099 ENUM
4100 + BFD_RELOC_AVR32_DIFF32
4101 +ENUMX
4102 + BFD_RELOC_AVR32_DIFF16
4103 +ENUMX
4104 + BFD_RELOC_AVR32_DIFF8
4105 +ENUMDOC
4106 + Difference between two labels: L2 - L1. The value of L1 is encoded
4107 + as sym + addend, while the initial difference after assembly is
4108 + inserted into the object file by the assembler.
4109 +ENUM
4110 + BFD_RELOC_AVR32_GOT32
4111 +ENUMX
4112 + BFD_RELOC_AVR32_GOT16
4113 +ENUMX
4114 + BFD_RELOC_AVR32_GOT8
4115 +ENUMDOC
4116 + Reference to a symbol through the Global Offset Table. The linker
4117 + will allocate an entry for symbol in the GOT and insert the offset
4118 + of this entry as the relocation value.
4119 +ENUM
4120 + BFD_RELOC_AVR32_21S
4121 +ENUMX
4122 + BFD_RELOC_AVR32_16U
4123 +ENUMX
4124 + BFD_RELOC_AVR32_16S
4125 +ENUMX
4126 + BFD_RELOC_AVR32_SUB5
4127 +ENUMX
4128 + BFD_RELOC_AVR32_8S_EXT
4129 +ENUMX
4130 + BFD_RELOC_AVR32_8S
4131 +ENUMX
4132 + BFD_RELOC_AVR32_15S
4133 +ENUMDOC
4134 + Normal (non-pc-relative) code relocations. Alignment and signedness
4135 + is indicated by the suffixes. S means signed, U means unsigned. W
4136 + means word-aligned, H means halfword-aligned, neither means
4137 + byte-aligned (no alignment.) SUB5 is the same relocation as 16S.
4138 +ENUM
4139 + BFD_RELOC_AVR32_22H_PCREL
4140 +ENUMX
4141 + BFD_RELOC_AVR32_18W_PCREL
4142 +ENUMX
4143 + BFD_RELOC_AVR32_16B_PCREL
4144 +ENUMX
4145 + BFD_RELOC_AVR32_16N_PCREL
4146 +ENUMX
4147 + BFD_RELOC_AVR32_14UW_PCREL
4148 +ENUMX
4149 + BFD_RELOC_AVR32_11H_PCREL
4150 +ENUMX
4151 + BFD_RELOC_AVR32_10UW_PCREL
4152 +ENUMX
4153 + BFD_RELOC_AVR32_9H_PCREL
4154 +ENUMX
4155 + BFD_RELOC_AVR32_9UW_PCREL
4156 +ENUMDOC
4157 + PC-relative relocations are signed if neither 'U' nor 'S' is
4158 + specified. However, we explicitly tack on a 'B' to indicate no
4159 + alignment, to avoid confusion with data relocs. All of these resolve
4160 + to sym + addend - offset, except the one with 'N' (negated) suffix.
4161 + This particular one resolves to offset - sym - addend.
4162 +ENUM
4163 + BFD_RELOC_AVR32_GOTPC
4164 +ENUMDOC
4165 + Subtract the link-time address of the GOT from (symbol + addend)
4166 + and insert the result.
4167 +ENUM
4168 + BFD_RELOC_AVR32_GOTCALL
4169 +ENUMX
4170 + BFD_RELOC_AVR32_LDA_GOT
4171 +ENUMX
4172 + BFD_RELOC_AVR32_GOT21S
4173 +ENUMX
4174 + BFD_RELOC_AVR32_GOT18SW
4175 +ENUMX
4176 + BFD_RELOC_AVR32_GOT16S
4177 +ENUMDOC
4178 + Reference to a symbol through the GOT. The linker will allocate an
4179 + entry for symbol in the GOT and insert the offset of this entry as
4180 + the relocation value. addend must be zero. As usual, 'S' means
4181 + signed, 'W' means word-aligned, etc.
4182 +ENUM
4183 + BFD_RELOC_AVR32_32_CPENT
4184 +ENUMDOC
4185 + 32-bit constant pool entry. I don't think 8- and 16-bit entries make
4186 + a whole lot of sense.
4187 +ENUM
4188 + BFD_RELOC_AVR32_CPCALL
4189 +ENUMX
4190 + BFD_RELOC_AVR32_16_CP
4191 +ENUMX
4192 + BFD_RELOC_AVR32_9W_CP
4193 +ENUMDOC
4194 + Constant pool references. Some of these relocations are signed,
4195 + others are unsigned. It doesn't really matter, since the constant
4196 + pool always comes after the code that references it.
4197 +ENUM
4198 + BFD_RELOC_AVR32_ALIGN
4199 +ENUMDOC
4200 + sym must be the absolute symbol. The addend specifies the alignment
4201 + order, e.g. if addend is 2, the linker must add padding so that the
4202 + next address is aligned to a 4-byte boundary.
4203 +ENUM
4204 + BFD_RELOC_AVR32_14UW
4205 +ENUMX
4206 + BFD_RELOC_AVR32_10UW
4207 +ENUMX
4208 + BFD_RELOC_AVR32_10SW
4209 +ENUMX
4210 + BFD_RELOC_AVR32_STHH_W
4211 +ENUMX
4212 + BFD_RELOC_AVR32_7UW
4213 +ENUMX
4214 + BFD_RELOC_AVR32_6S
4215 +ENUMX
4216 + BFD_RELOC_AVR32_6UW
4217 +ENUMX
4218 + BFD_RELOC_AVR32_4UH
4219 +ENUMX
4220 + BFD_RELOC_AVR32_3U
4221 +ENUMDOC
4222 + Code relocations that will never make it to the output file.
4223 +
4224 +ENUM
4225 BFD_RELOC_390_12
4226 ENUMDOC
4227 Direct 12 bit.
4228 --- a/bfd/targets.c
4229 +++ b/bfd/targets.c
4230 @@ -564,6 +564,7 @@ extern const bfd_target bfd_efi_app_ia32
4231 extern const bfd_target bfd_efi_app_x86_64_vec;
4232 extern const bfd_target bfd_efi_app_ia64_vec;
4233 extern const bfd_target bfd_elf32_avr_vec;
4234 +extern const bfd_target bfd_elf32_avr32_vec;
4235 extern const bfd_target bfd_elf32_bfin_vec;
4236 extern const bfd_target bfd_elf32_bfinfdpic_vec;
4237 extern const bfd_target bfd_elf32_big_generic_vec;
4238 @@ -884,6 +885,7 @@ static const bfd_target * const _bfd_tar
4239 &bfd_efi_app_ia64_vec,
4240 #endif
4241 &bfd_elf32_avr_vec,
4242 + &bfd_elf32_avr32_vec,
4243 &bfd_elf32_bfin_vec,
4244 &bfd_elf32_bfinfdpic_vec,
4245
4246 --- a/binutils/Makefile.am
4247 +++ b/binutils/Makefile.am
4248 @@ -577,7 +577,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
4249 $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
4250 $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
4251 $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
4252 - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
4253 + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
4254 $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
4255 $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
4256 $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
4257 --- a/binutils/readelf.c
4258 +++ b/binutils/readelf.c
4259 @@ -21,7 +21,7 @@
4260 along with this program; if not, write to the Free Software
4261 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
4262 02110-1301, USA. */
4263 -\f
4264 +
4265 /* The difference between readelf and objdump:
4266
4267 Both programs are capable of displaying the contents of ELF format files,
4268 @@ -40,7 +40,7 @@
4269 There is also the case that readelf can provide more information about an
4270 ELF file than is provided by objdump. In particular it can display DWARF
4271 debugging information which (at the moment) objdump cannot. */
4272 -\f
4273 +
4274 #include "sysdep.h"
4275 #include <assert.h>
4276 #include <sys/stat.h>
4277 @@ -109,6 +109,7 @@
4278 #include "elf/arc.h"
4279 #include "elf/arm.h"
4280 #include "elf/avr.h"
4281 +#include "elf/avr32.h"
4282 #include "elf/bfin.h"
4283 #include "elf/cr16.h"
4284 #include "elf/cris.h"
4285 @@ -303,7 +304,7 @@ static void (*byte_put) (unsigned char *
4286 #define streq(a,b) (strcmp ((a), (b)) == 0)
4287 #define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
4288 #define const_strneq(a,b) (strncmp ((a), (b), sizeof (b) - 1) == 0)
4289 -\f
4290 +
4291 static void *
4292 get_data (void *var, FILE *file, long offset, size_t size, size_t nmemb,
4293 const char *reason)
4294 @@ -614,6 +615,7 @@ guess_is_rela (unsigned long e_machine)
4295 case EM_ALPHA:
4296 case EM_ALTERA_NIOS2:
4297 case EM_AVR:
4298 + case EM_AVR32:
4299 case EM_AVR_OLD:
4300 case EM_BLACKFIN:
4301 case EM_CR16:
4302 @@ -1006,6 +1008,10 @@ dump_relocations (FILE *file,
4303 rtype = elf_avr_reloc_type (type);
4304 break;
4305
4306 + case EM_AVR32:
4307 + rtype = elf_avr32_reloc_type (type);
4308 + break;
4309 +
4310 case EM_OLD_SPARCV9:
4311 case EM_SPARC32PLUS:
4312 case EM_SPARCV9:
4313 @@ -1763,6 +1769,7 @@ get_machine_name (unsigned e_machine)
4314 case EM_VAX: return "Digital VAX";
4315 case EM_AVR_OLD:
4316 case EM_AVR: return "Atmel AVR 8-bit microcontroller";
4317 + case EM_AVR32: return "Atmel AVR32";
4318 case EM_CRIS: return "Axis Communications 32-bit embedded processor";
4319 case EM_JAVELIN: return "Infineon Technologies 32-bit embedded cpu";
4320 case EM_FIREPATH: return "Element 14 64-bit DSP processor";
4321 --- a/gas/as.c
4322 +++ b/gas/as.c
4323 @@ -441,10 +441,10 @@ parse_args (int * pargc, char *** pargv)
4324 the end of the preceeding line so that it is simpler to
4325 selectively add and remove lines from this list. */
4326 {"alternate", no_argument, NULL, OPTION_ALTERNATE}
4327 - /* The entry for "a" is here to prevent getopt_long_only() from
4328 - considering that -a is an abbreviation for --alternate. This is
4329 - necessary because -a=<FILE> is a valid switch but getopt would
4330 - normally reject it since --alternate does not take an argument. */
4331 + /* The next two entries are here to prevent getopt_long_only() from
4332 + considering that -a or -al is an abbreviation for --alternate.
4333 + This is necessary because -a=<FILE> is a valid switch but getopt
4334 + would normally reject it since --alternate does not take an argument. */
4335 ,{"a", optional_argument, NULL, 'a'}
4336 /* Handle -al=<FILE>. */
4337 ,{"al", optional_argument, NULL, OPTION_AL}
4338 @@ -803,8 +803,15 @@ This program has absolutely no warranty.
4339 case 'a':
4340 if (optarg)
4341 {
4342 - if (optarg != old_argv[optind] && optarg[-1] == '=')
4343 - --optarg;
4344 + /* If optarg is part of the -a switch and not a separate argument
4345 + in its own right, then scan backwards to the just after the -a.
4346 + This means skipping over both '=' and 'l' which might have been
4347 + taken to be part of the -a switch itself. */
4348 + if (optarg != old_argv[optind])
4349 + {
4350 + while (optarg[-1] == '=' || optarg[-1] == 'l')
4351 + --optarg;
4352 + }
4353
4354 if (md_parse_option (optc, optarg) != 0)
4355 break;
4356 @@ -1234,7 +1241,7 @@ main (int argc, char ** argv)
4357 keep_it = 0;
4358
4359 if (!keep_it)
4360 - unlink_if_ordinary (out_file_name);
4361 + unlink (out_file_name);
4362
4363 input_scrub_end ();
4364
4365 --- a/gas/config/bfin-aux.h
4366 +++ b/gas/config/bfin-aux.h
4367 @@ -1,151 +1,151 @@
4368 -/* bfin-aux.h ADI Blackfin Header file for gas
4369 - Copyright 2005, 2007
4370 - Free Software Foundation, Inc.
4371 -
4372 - This file is part of GAS, the GNU Assembler.
4373 -
4374 - GAS is free software; you can redistribute it and/or modify
4375 - it under the terms of the GNU General Public License as published by
4376 - the Free Software Foundation; either version 3, or (at your option)
4377 - any later version.
4378 -
4379 - GAS is distributed in the hope that it will be useful,
4380 - but WITHOUT ANY WARRANTY; without even the implied warranty of
4381 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4382 - GNU General Public License for more details.
4383 -
4384 - You should have received a copy of the GNU General Public License
4385 - along with GAS; see the file COPYING. If not, write to the Free
4386 - Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
4387 - 02110-1301, USA. */
4388 -
4389 -#include "bfin-defs.h"
4390 -
4391 -#define REG_T Register *
4392 -
4393 -INSTR_T
4394 -bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
4395 - int h01, int h11, int h00, int h10,
4396 - int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4397 -
4398 -INSTR_T
4399 -bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
4400 - int h01, int h11, int h00, int h10,
4401 - int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4402 -
4403 -INSTR_T
4404 -bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
4405 - REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
4406 -
4407 -INSTR_T
4408 -bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
4409 - int sop, int hls);
4410 -
4411 -INSTR_T
4412 -bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
4413 - int sop, int hls);
4414 -
4415 -INSTR_T
4416 -bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
4417 - int reloc);
4418 -
4419 -INSTR_T
4420 -bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
4421 - Expr_Node *offset);
4422 -
4423 -INSTR_T
4424 -bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
4425 -
4426 -INSTR_T
4427 -bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
4428 -
4429 -INSTR_T
4430 -bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
4431 -
4432 -INSTR_T
4433 -bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
4434 -
4435 -INSTR_T
4436 -bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
4437 -
4438 -INSTR_T
4439 -bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
4440 -
4441 -INSTR_T
4442 -bfin_gen_compi2opd (REG_T dst, int src, int op);
4443 -
4444 -INSTR_T
4445 -bfin_gen_compi2opp (REG_T dst, int src, int op);
4446 -
4447 -INSTR_T
4448 -bfin_gen_dagmodik (REG_T i, int op);
4449 -
4450 -INSTR_T
4451 -bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
4452 -
4453 -INSTR_T
4454 -bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
4455 -
4456 -INSTR_T
4457 -bfin_gen_logi2op (int dst, int src, int opc);
4458 -
4459 -INSTR_T
4460 -bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
4461 -
4462 -INSTR_T
4463 -bfin_gen_ccmv (REG_T src, REG_T dst, int t);
4464 -
4465 -INSTR_T
4466 -bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
4467 -
4468 -INSTR_T
4469 -bfin_gen_cc2stat (int cbit, int op, int d);
4470 -
4471 -INSTR_T
4472 -bfin_gen_regmv (REG_T src, REG_T dst);
4473 -
4474 -INSTR_T
4475 -bfin_gen_cc2dreg (int op, REG_T reg);
4476 -
4477 -INSTR_T
4478 -bfin_gen_brcc (int t, int b, Expr_Node *offset);
4479 -
4480 -INSTR_T
4481 -bfin_gen_ujump (Expr_Node *offset);
4482 -
4483 -INSTR_T
4484 -bfin_gen_cactrl (REG_T reg, int a, int op);
4485 -
4486 -INSTR_T
4487 -bfin_gen_progctrl (int prgfunc, int poprnd);
4488 -
4489 -INSTR_T
4490 -bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
4491 - Expr_Node *eoffset, REG_T reg);
4492 -
4493 -INSTR_T
4494 -bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
4495 -
4496 -INSTR_T
4497 -bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
4498 -
4499 -INSTR_T
4500 -bfin_gen_pushpopreg (REG_T reg, int w);
4501 -
4502 -INSTR_T
4503 -bfin_gen_calla (Expr_Node *addr, int s);
4504 -
4505 -INSTR_T
4506 -bfin_gen_linkage (int r, int framesize);
4507 -
4508 -INSTR_T
4509 -bfin_gen_pseudodbg (int fn, int reg, int grp);
4510 -
4511 -INSTR_T
4512 -bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
4513 -
4514 -bfd_boolean
4515 -bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4516 -
4517 -INSTR_T
4518 -bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4519 +/* bfin-aux.h ADI Blackfin Header file for gas
4520 + Copyright 2005, 2007
4521 + Free Software Foundation, Inc.
4522 +
4523 + This file is part of GAS, the GNU Assembler.
4524 +
4525 + GAS is free software; you can redistribute it and/or modify
4526 + it under the terms of the GNU General Public License as published by
4527 + the Free Software Foundation; either version 3, or (at your option)
4528 + any later version.
4529 +
4530 + GAS is distributed in the hope that it will be useful,
4531 + but WITHOUT ANY WARRANTY; without even the implied warranty of
4532 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4533 + GNU General Public License for more details.
4534 +
4535 + You should have received a copy of the GNU General Public License
4536 + along with GAS; see the file COPYING. If not, write to the Free
4537 + Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
4538 + 02110-1301, USA. */
4539 +
4540 +#include "bfin-defs.h"
4541 +
4542 +#define REG_T Register *
4543 +
4544 +INSTR_T
4545 +bfin_gen_dsp32mac (int op1, int mm, int mmod, int w1, int p,
4546 + int h01, int h11, int h00, int h10,
4547 + int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4548 +
4549 +INSTR_T
4550 +bfin_gen_dsp32mult (int op1, int mm, int mmod, int w1, int p,
4551 + int h01, int h11, int h00, int h10,
4552 + int op0, REG_T dst, REG_T src0, REG_T src1, int w0);
4553 +
4554 +INSTR_T
4555 +bfin_gen_dsp32alu (int HL, int aopcde, int aop, int s, int x,
4556 + REG_T dst0, REG_T dst1, REG_T src0, REG_T src1);
4557 +
4558 +INSTR_T
4559 +bfin_gen_dsp32shift (int sopcde, REG_T dst0, REG_T src0, REG_T src1,
4560 + int sop, int hls);
4561 +
4562 +INSTR_T
4563 +bfin_gen_dsp32shiftimm (int sopcde, REG_T dst0, int immag, REG_T src1,
4564 + int sop, int hls);
4565 +
4566 +INSTR_T
4567 +bfin_gen_ldimmhalf (REG_T reg, int h, int s, int z, Expr_Node *hword,
4568 + int reloc);
4569 +
4570 +INSTR_T
4571 +bfin_gen_ldstidxi (REG_T ptr, REG_T reg, int w, int sz, int z,
4572 + Expr_Node *offset);
4573 +
4574 +INSTR_T
4575 +bfin_gen_ldst (REG_T ptr, REG_T reg, int aop, int sz, int z, int w);
4576 +
4577 +INSTR_T
4578 +bfin_gen_ldstii (REG_T ptr, REG_T reg, Expr_Node *offset, int w, int op);
4579 +
4580 +INSTR_T
4581 +bfin_gen_ldstiifp (REG_T reg, Expr_Node *offset, int w);
4582 +
4583 +INSTR_T
4584 +bfin_gen_ldstpmod (REG_T ptr, REG_T reg, int aop, int w, REG_T idx);
4585 +
4586 +INSTR_T
4587 +bfin_gen_dspldst (REG_T i, REG_T reg, int aop, int w, int m);
4588 +
4589 +INSTR_T
4590 +bfin_gen_alu2op (REG_T dst, REG_T src, int opc);
4591 +
4592 +INSTR_T
4593 +bfin_gen_compi2opd (REG_T dst, int src, int op);
4594 +
4595 +INSTR_T
4596 +bfin_gen_compi2opp (REG_T dst, int src, int op);
4597 +
4598 +INSTR_T
4599 +bfin_gen_dagmodik (REG_T i, int op);
4600 +
4601 +INSTR_T
4602 +bfin_gen_dagmodim (REG_T i, REG_T m, int op, int br);
4603 +
4604 +INSTR_T
4605 +bfin_gen_ptr2op (REG_T dst, REG_T src, int opc);
4606 +
4607 +INSTR_T
4608 +bfin_gen_logi2op (int dst, int src, int opc);
4609 +
4610 +INSTR_T
4611 +bfin_gen_comp3op (REG_T src0, REG_T src1, REG_T dst, int opc);
4612 +
4613 +INSTR_T
4614 +bfin_gen_ccmv (REG_T src, REG_T dst, int t);
4615 +
4616 +INSTR_T
4617 +bfin_gen_ccflag (REG_T x, int y, int opc, int i, int g);
4618 +
4619 +INSTR_T
4620 +bfin_gen_cc2stat (int cbit, int op, int d);
4621 +
4622 +INSTR_T
4623 +bfin_gen_regmv (REG_T src, REG_T dst);
4624 +
4625 +INSTR_T
4626 +bfin_gen_cc2dreg (int op, REG_T reg);
4627 +
4628 +INSTR_T
4629 +bfin_gen_brcc (int t, int b, Expr_Node *offset);
4630 +
4631 +INSTR_T
4632 +bfin_gen_ujump (Expr_Node *offset);
4633 +
4634 +INSTR_T
4635 +bfin_gen_cactrl (REG_T reg, int a, int op);
4636 +
4637 +INSTR_T
4638 +bfin_gen_progctrl (int prgfunc, int poprnd);
4639 +
4640 +INSTR_T
4641 +bfin_gen_loopsetup (Expr_Node *soffset, REG_T c, int rop,
4642 + Expr_Node *eoffset, REG_T reg);
4643 +
4644 +INSTR_T
4645 +bfin_gen_loop (Expr_Node *expr, REG_T reg, int rop, REG_T preg);
4646 +
4647 +INSTR_T
4648 +bfin_gen_pushpopmultiple (int dr, int pr, int d, int p, int w);
4649 +
4650 +INSTR_T
4651 +bfin_gen_pushpopreg (REG_T reg, int w);
4652 +
4653 +INSTR_T
4654 +bfin_gen_calla (Expr_Node *addr, int s);
4655 +
4656 +INSTR_T
4657 +bfin_gen_linkage (int r, int framesize);
4658 +
4659 +INSTR_T
4660 +bfin_gen_pseudodbg (int fn, int reg, int grp);
4661 +
4662 +INSTR_T
4663 +bfin_gen_pseudodbg_assert (int dbgop, REG_T regtest, int expected);
4664 +
4665 +bfd_boolean
4666 +bfin_resource_conflict (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4667 +
4668 +INSTR_T
4669 +bfin_gen_multi_instr (INSTR_T dsp32, INSTR_T dsp16_grp1, INSTR_T dsp16_grp2);
4670 --- /dev/null
4671 +++ b/gas/config/tc-avr32.c
4672 @@ -0,0 +1,4806 @@
4673 +/* Assembler implementation for AVR32.
4674 + Copyright 2003-2006 Atmel Corporation.
4675 +
4676 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
4677 +
4678 + This file is part of GAS, the GNU Assembler.
4679 +
4680 + GAS is free software; you can redistribute it and/or modify it
4681 + under the terms of the GNU General Public License as published by
4682 + the Free Software Foundation; either version 2, or (at your option)
4683 + any later version.
4684 +
4685 + GAS is distributed in the hope that it will be useful, but WITHOUT
4686 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
4687 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
4688 + License for more details.
4689 +
4690 + You should have received a copy of the GNU General Public License
4691 + along with GAS; see the file COPYING. If not, write to the Free
4692 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
4693 + 02111-1307, USA. */
4694 +
4695 +#include <stdio.h>
4696 +#include "as.h"
4697 +#include "safe-ctype.h"
4698 +#include "subsegs.h"
4699 +#include "symcat.h"
4700 +#include "opcodes/avr32-opc.h"
4701 +#include "opcodes/avr32-asm.h"
4702 +#include "elf/avr32.h"
4703 +#include "dwarf2dbg.h"
4704 +
4705 +#define xDEBUG
4706 +#define xOPC_CONSISTENCY_CHECK
4707 +
4708 +#ifdef DEBUG
4709 +# define pr_debug(fmt, args...) fprintf(stderr, fmt, ##args)
4710 +#else
4711 +# define pr_debug(fmt, args...)
4712 +#endif
4713 +
4714 +/* 3 MSB of instruction word indicate group. Group 7 -> extended */
4715 +#define AVR32_COMPACT_P(opcode) ((opcode[0] & 0xe0) != 0xe0)
4716 +
4717 +#define streq(a, b) (strcmp(a, b) == 0)
4718 +#define skip_whitespace(str) do { while(*(str) == ' ') ++(str); } while(0)
4719 +
4720 +/* Flags given on the command line */
4721 +static int avr32_pic = FALSE;
4722 +int linkrelax = FALSE;
4723 +int avr32_iarcompat = FALSE;
4724 +
4725 +/* This array holds the chars that always start a comment. */
4726 +const char comment_chars[] = "#";
4727 +
4728 +/* This array holds the chars that only start a comment at the
4729 + beginning of a line. We must include '#' here because the compiler
4730 + may produce #APP and #NO_APP in its output. */
4731 +const char line_comment_chars[] = "#";
4732 +
4733 +/* These may be used instead of newline (same as ';' in C). */
4734 +const char line_separator_chars[] = ";";
4735 +
4736 +/* Chars that can be used to separate mantissa from exponent in
4737 + floating point numbers. */
4738 +const char EXP_CHARS[] = "eE";
4739 +
4740 +/* Chars that mean this number is a floating point constant. */
4741 +const char FLT_CHARS[] = "dD";
4742 +
4743 +/* Pre-defined "_GLOBAL_OFFSET_TABLE_" */
4744 +symbolS *GOT_symbol;
4745 +
4746 +static struct hash_control *avr32_mnemonic_htab;
4747 +
4748 +struct avr32_ifield_data
4749 +{
4750 + bfd_vma value;
4751 + /* FIXME: Get rid of align_order and complain. complain is never
4752 + used, align_order is used in one place. Try to use the relax
4753 + table instead. */
4754 + unsigned int align_order;
4755 +};
4756 +
4757 +struct avr32_insn
4758 +{
4759 + const struct avr32_syntax *syntax;
4760 + expressionS immediate;
4761 + int pcrel;
4762 + int force_extended;
4763 + unsigned int next_slot;
4764 + bfd_reloc_code_real_type r_type;
4765 + struct avr32_ifield_data field_value[AVR32_MAX_FIELDS];
4766 +};
4767 +
4768 +static struct avr32_insn current_insn;
4769 +
4770 +/* The target specific pseudo-ops we support. */
4771 +static void s_rseg (int);
4772 +static void s_cpool(int);
4773 +
4774 +const pseudo_typeS md_pseudo_table[] =
4775 +{
4776 + /* Make sure that .word is 32 bits */
4777 + { "word", cons, 4 },
4778 + { "file", (void (*) PARAMS ((int))) dwarf2_directive_file, 0 },
4779 + { "loc", dwarf2_directive_loc, 0 },
4780 +
4781 + /* .lcomm requires an explicit alignment parameter */
4782 + { "lcomm", s_lcomm, 1 },
4783 +
4784 + /* AVR32-specific pseudo-ops */
4785 + { "cpool", s_cpool, 0},
4786 +
4787 + /* IAR compatible pseudo-ops */
4788 + { "program", s_ignore, 0 },
4789 + { "public", s_globl, 0 },
4790 + { "extern", s_ignore, 0 },
4791 + { "module", s_ignore, 0 },
4792 + { "rseg", s_rseg, 0 },
4793 + { "dc8", cons, 1 },
4794 + { "dc16", cons, 2 },
4795 + { "dc32", cons, 4 },
4796 +
4797 + { NULL, NULL, 0 }
4798 +};
4799 +
4800 +/* Questionable stuff starts here */
4801 +
4802 +enum avr32_opinfo {
4803 + AVR32_OPINFO_NONE = BFD_RELOC_NONE,
4804 + AVR32_OPINFO_GOT,
4805 + AVR32_OPINFO_TLSGD,
4806 + AVR32_OPINFO_HI,
4807 + AVR32_OPINFO_LO,
4808 +};
4809 +
4810 +enum avr32_arch {
4811 + ARCH_TYPE_AP,
4812 + ARCH_TYPE_UCR1,
4813 + ARCH_TYPE_UCR2,
4814 +};
4815 +
4816 +struct arch_type_s
4817 +{
4818 + /* Architecture name */
4819 + char *name;
4820 + /* Instruction Set Architecture Flags */
4821 + unsigned long isa_flags;
4822 +};
4823 +
4824 +struct part_type_s
4825 +{
4826 + /* Part name */
4827 + char *name;
4828 + /* Architecture type */
4829 + unsigned int arch;
4830 +};
4831 +
4832 +static struct arch_type_s arch_types[] =
4833 +{
4834 + {"ap", AVR32_V1 | AVR32_SIMD | AVR32_DSP | AVR32_PICO},
4835 + {"ucr1", AVR32_V1 | AVR32_DSP | AVR32_RMW},
4836 + {"ucr2", AVR32_V1 | AVR32_V2 | AVR32_DSP | AVR32_RMW},
4837 + {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO},
4838 + {NULL, 0}
4839 +};
4840 +
4841 +static struct part_type_s part_types[] = {
4842 + {"ap7000", ARCH_TYPE_AP},
4843 + {"ap7001", ARCH_TYPE_AP},
4844 + {"ap7002", ARCH_TYPE_AP},
4845 + {"ap7200", ARCH_TYPE_AP},
4846 + {"uc3a0128", ARCH_TYPE_UCR2},
4847 + {"uc3a0256", ARCH_TYPE_UCR2},
4848 + {"uc3a0512es", ARCH_TYPE_UCR1},
4849 + {"uc3a0512", ARCH_TYPE_UCR2},
4850 + {"uc3a1128", ARCH_TYPE_UCR2},
4851 + {"uc3a1256es", ARCH_TYPE_UCR1},
4852 + {"uc3a1256", ARCH_TYPE_UCR2},
4853 + {"uc3a1512es", ARCH_TYPE_UCR1},
4854 + {"uc3a1512", ARCH_TYPE_UCR2},
4855 + {"uc3a364", ARCH_TYPE_UCR2},
4856 + {"uc3a364s", ARCH_TYPE_UCR2},
4857 + {"uc3a3128", ARCH_TYPE_UCR2},
4858 + {"uc3a3128s", ARCH_TYPE_UCR2},
4859 + {"uc3a3256", ARCH_TYPE_UCR2},
4860 + {"uc3a3256s", ARCH_TYPE_UCR2},
4861 + {"uc3b064", ARCH_TYPE_UCR1},
4862 + {"uc3b0128", ARCH_TYPE_UCR1},
4863 + {"uc3b0256es", ARCH_TYPE_UCR1},
4864 + {"uc3b0256", ARCH_TYPE_UCR1},
4865 + {"uc3b164", ARCH_TYPE_UCR1},
4866 + {"uc3b1128", ARCH_TYPE_UCR1},
4867 + {"uc3b1256es", ARCH_TYPE_UCR1},
4868 + {"uc3b1256", ARCH_TYPE_UCR1},
4869 + {NULL, 0}
4870 +};
4871 +
4872 +/* Current architecture type. */
4873 +static struct arch_type_s default_arch = {"all-insn", AVR32_V1 | AVR32_V2 | AVR32_SIMD | AVR32_DSP | AVR32_RMW | AVR32_FP | AVR32_PICO };
4874 +static struct arch_type_s *avr32_arch = &default_arch;
4875 +
4876 +/* Display nicely formatted list of known part- and architecture names. */
4877 +
4878 +static void
4879 +show_arch_list (FILE *stream)
4880 +{
4881 + int i, x;
4882 +
4883 + fprintf (stream, _("Known architecture names:"));
4884 + x = 1000;
4885 +
4886 + for (i = 0; arch_types[i].name; i++)
4887 + {
4888 + int len = strlen (arch_types[i].name);
4889 +
4890 + x += len + 1;
4891 +
4892 + if (x < 75)
4893 + fprintf (stream, " %s", arch_types[i].name);
4894 + else
4895 + {
4896 + fprintf (stream, "\n %s", arch_types[i].name);
4897 + x = len + 2;
4898 + }
4899 + }
4900 +
4901 + fprintf (stream, "\n");
4902 +}
4903 +
4904 +static void
4905 +show_part_list (FILE *stream)
4906 +{
4907 + int i, x;
4908 +
4909 + fprintf (stream, _("Known part names:"));
4910 + x = 1000;
4911 +
4912 + for (i = 0; part_types[i].name; i++)
4913 + {
4914 + int len = strlen(part_types[i].name);
4915 +
4916 + x += len + 1;
4917 +
4918 + if (x < 75)
4919 + fprintf (stream, " %s", part_types[i].name);
4920 + else
4921 + {
4922 + fprintf(stream, "\n %s", part_types[i].name);
4923 + x = len + 2;
4924 + }
4925 + }
4926 +
4927 + fprintf (stream, "\n");
4928 +}
4929 +
4930 +const char *md_shortopts = "";
4931 +struct option md_longopts[] =
4932 +{
4933 +#define OPTION_ARCH (OPTION_MD_BASE)
4934 +#define OPTION_PART (OPTION_ARCH + 1)
4935 +#define OPTION_IAR (OPTION_PART + 1)
4936 +#define OPTION_PIC (OPTION_IAR + 1)
4937 +#define OPTION_NOPIC (OPTION_PIC + 1)
4938 +#define OPTION_LINKRELAX (OPTION_NOPIC + 1)
4939 +#define OPTION_NOLINKRELAX (OPTION_LINKRELAX + 1)
4940 +#define OPTION_DIRECT_DATA_REFS (OPTION_NOLINKRELAX + 1)
4941 + {"march", required_argument, NULL, OPTION_ARCH},
4942 + {"mpart", required_argument, NULL, OPTION_PART},
4943 + {"iar", no_argument, NULL, OPTION_IAR},
4944 + {"pic", no_argument, NULL, OPTION_PIC},
4945 + {"no-pic", no_argument, NULL, OPTION_NOPIC},
4946 + {"linkrelax", no_argument, NULL, OPTION_LINKRELAX},
4947 + {"no-linkrelax", no_argument, NULL, OPTION_NOLINKRELAX},
4948 + /* deprecated alias for -mpart=xxx */
4949 + {"mcpu", required_argument, NULL, OPTION_PART},
4950 + {NULL, no_argument, NULL, 0}
4951 +};
4952 +
4953 +size_t md_longopts_size = sizeof (md_longopts);
4954 +
4955 +void
4956 +md_show_usage (FILE *stream)
4957 +{
4958 + fprintf (stream, _("\
4959 +AVR32 options:\n\
4960 + -march=[arch-name] Select cpu architecture. [Default `all-insn']\n\
4961 + -mpart=[part-name] Select specific part. [Default `none']\n\
4962 + --pic Produce Position-Independent Code\n\
4963 + --no-pic Don't produce Position-Independent Code\n\
4964 + --linkrelax Produce output suitable for linker relaxing\n\
4965 + --no-linkrelax Don't produce output suitable for linker relaxing\n"));
4966 + show_arch_list(stream);
4967 +}
4968 +
4969 +int
4970 +md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
4971 +{
4972 + switch (c)
4973 + {
4974 + case OPTION_ARCH:
4975 + {
4976 + int i;
4977 + char *s = alloca (strlen (arg) + 1);
4978 +
4979 + {
4980 + char *t = s;
4981 + char *arg1 = arg;
4982 +
4983 + do
4984 + *t = TOLOWER (*arg1++);
4985 + while (*t++);
4986 + }
4987 +
4988 + /* Add backward compability */
4989 + if (strcmp ("uc", s)== 0)
4990 + {
4991 + as_warn("Deprecated arch `%s' specified. "
4992 + "Please use '-march=ucr1' instead. "
4993 + "Converting to arch 'ucr1'\n",
4994 + s);
4995 + s="ucr1";
4996 + }
4997 +
4998 + for (i = 0; arch_types[i].name; ++i)
4999 + if (strcmp (arch_types[i].name, s) == 0)
5000 + break;
5001 +
5002 + if (!arch_types[i].name)
5003 + {
5004 + show_arch_list (stderr);
5005 + as_fatal (_("unknown architecture: %s\n"), arg);
5006 + }
5007 +
5008 + avr32_arch = &arch_types[i];
5009 + break;
5010 + }
5011 + case OPTION_PART:
5012 + {
5013 + int i;
5014 + char *s = alloca (strlen (arg) + 1);
5015 + char *t = s;
5016 + char *p = arg;
5017 +
5018 + /* If arch type has already been set, don't bother.
5019 + -march= always overrides -mpart= */
5020 + if (avr32_arch != &default_arch)
5021 + break;
5022 +
5023 + do
5024 + *t = TOLOWER (*p++);
5025 + while (*t++);
5026 +
5027 + for (i = 0; part_types[i].name; ++i)
5028 + if (strcmp (part_types[i].name, s) == 0)
5029 + break;
5030 +
5031 + if (!part_types[i].name)
5032 + {
5033 + show_part_list (stderr);
5034 + as_fatal (_("unknown part: %s\n"), arg);
5035 + }
5036 +
5037 + avr32_arch = &arch_types[part_types[i].arch];
5038 + break;
5039 + }
5040 + case OPTION_IAR:
5041 + avr32_iarcompat = 1;
5042 + break;
5043 + case OPTION_PIC:
5044 + avr32_pic = 1;
5045 + break;
5046 + case OPTION_NOPIC:
5047 + avr32_pic = 0;
5048 + break;
5049 + case OPTION_LINKRELAX:
5050 + linkrelax = 1;
5051 + break;
5052 + case OPTION_NOLINKRELAX:
5053 + linkrelax = 0;
5054 + break;
5055 + default:
5056 + return 0;
5057 + }
5058 + return 1;
5059 +}
5060 +
5061 +/* Can't use symbol_new here, so have to create a symbol and then at
5062 + a later date assign it a value. Thats what these functions do.
5063 +
5064 + Shamelessly stolen from ARM. */
5065 +
5066 +static void
5067 +symbol_locate (symbolS * symbolP,
5068 + const char * name, /* It is copied, the caller can modify. */
5069 + segT segment, /* Segment identifier (SEG_<something>). */
5070 + valueT valu, /* Symbol value. */
5071 + fragS * frag) /* Associated fragment. */
5072 +{
5073 + unsigned int name_length;
5074 + char * preserved_copy_of_name;
5075 +
5076 + name_length = strlen (name) + 1; /* +1 for \0. */
5077 + obstack_grow (&notes, name, name_length);
5078 + preserved_copy_of_name = obstack_finish (&notes);
5079 +#ifdef STRIP_UNDERSCORE
5080 + if (preserved_copy_of_name[0] == '_')
5081 + preserved_copy_of_name++;
5082 +#endif
5083 +
5084 +#ifdef tc_canonicalize_symbol_name
5085 + preserved_copy_of_name =
5086 + tc_canonicalize_symbol_name (preserved_copy_of_name);
5087 +#endif
5088 +
5089 + S_SET_NAME (symbolP, preserved_copy_of_name);
5090 +
5091 + S_SET_SEGMENT (symbolP, segment);
5092 + S_SET_VALUE (symbolP, valu);
5093 + symbol_clear_list_pointers (symbolP);
5094 +
5095 + symbol_set_frag (symbolP, frag);
5096 +
5097 + /* Link to end of symbol chain. */
5098 + {
5099 + extern int symbol_table_frozen;
5100 +
5101 + if (symbol_table_frozen)
5102 + abort ();
5103 + }
5104 +
5105 + symbol_append (symbolP, symbol_lastP, & symbol_rootP, & symbol_lastP);
5106 +
5107 + obj_symbol_new_hook (symbolP);
5108 +
5109 +#ifdef tc_symbol_new_hook
5110 + tc_symbol_new_hook (symbolP);
5111 +#endif
5112 +
5113 +#ifdef DEBUG_SYMS
5114 + verify_symbol_chain (symbol_rootP, symbol_lastP);
5115 +#endif /* DEBUG_SYMS */
5116 +}
5117 +
5118 +struct cpool_entry
5119 +{
5120 + int refcount;
5121 + offsetT offset;
5122 + expressionS exp;
5123 +};
5124 +
5125 +struct cpool
5126 +{
5127 + struct cpool *next;
5128 + int used;
5129 + struct cpool_entry *literals;
5130 + unsigned int padding;
5131 + unsigned int next_free_entry;
5132 + unsigned int id;
5133 + symbolS *symbol;
5134 + segT section;
5135 + subsegT sub_section;
5136 +};
5137 +
5138 +struct cpool *cpool_list = NULL;
5139 +
5140 +static struct cpool *
5141 +find_cpool(segT section, subsegT sub_section)
5142 +{
5143 + struct cpool *pool;
5144 +
5145 + for (pool = cpool_list; pool != NULL; pool = pool->next)
5146 + {
5147 + if (!pool->used
5148 + && pool->section == section
5149 + && pool->sub_section == sub_section)
5150 + break;
5151 + }
5152 +
5153 + return pool;
5154 +}
5155 +
5156 +static struct cpool *
5157 +find_or_make_cpool(segT section, subsegT sub_section)
5158 +{
5159 + static unsigned int next_cpool_id = 0;
5160 + struct cpool *pool;
5161 +
5162 + pool = find_cpool(section, sub_section);
5163 +
5164 + if (!pool)
5165 + {
5166 + pool = xmalloc(sizeof(*pool));
5167 + if (!pool)
5168 + return NULL;
5169 +
5170 + pool->used = 0;
5171 + pool->literals = NULL;
5172 + pool->padding = 0;
5173 + pool->next_free_entry = 0;
5174 + pool->section = section;
5175 + pool->sub_section = sub_section;
5176 + pool->next = cpool_list;
5177 + pool->symbol = NULL;
5178 +
5179 + cpool_list = pool;
5180 + }
5181 +
5182 + /* NULL symbol means that the pool is new or has just been emptied. */
5183 + if (!pool->symbol)
5184 + {
5185 + pool->symbol = symbol_create(FAKE_LABEL_NAME, undefined_section,
5186 + 0, &zero_address_frag);
5187 + pool->id = next_cpool_id++;
5188 + }
5189 +
5190 + return pool;
5191 +}
5192 +
5193 +static struct cpool *
5194 +add_to_cpool(expressionS *exp, unsigned int *index, int ref)
5195 +{
5196 + struct cpool *pool;
5197 + unsigned int entry;
5198 +
5199 + pool = find_or_make_cpool(now_seg, now_subseg);
5200 +
5201 + /* Check if this constant is already in the pool. */
5202 + for (entry = 0; entry < pool->next_free_entry; entry++)
5203 + {
5204 + if ((pool->literals[entry].exp.X_op == exp->X_op)
5205 + && (exp->X_op == O_constant)
5206 + && (pool->literals[entry].exp.X_add_number
5207 + == exp->X_add_number)
5208 + && (pool->literals[entry].exp.X_unsigned
5209 + == exp->X_unsigned))
5210 + break;
5211 +
5212 + if ((pool->literals[entry].exp.X_op == exp->X_op)
5213 + && (exp->X_op == O_symbol)
5214 + && (pool->literals[entry].exp.X_add_number
5215 + == exp->X_add_number)
5216 + && (pool->literals[entry].exp.X_add_symbol
5217 + == exp->X_add_symbol)
5218 + && (pool->literals[entry].exp.X_op_symbol
5219 + == exp->X_op_symbol))
5220 + break;
5221 + }
5222 +
5223 + /* Create an entry if we didn't find a match */
5224 + if (entry == pool->next_free_entry)
5225 + {
5226 + pool->literals = xrealloc(pool->literals,
5227 + sizeof(struct cpool_entry) * (entry + 1));
5228 + pool->literals[entry].exp = *exp;
5229 + pool->literals[entry].refcount = 0;
5230 + pool->next_free_entry++;
5231 + }
5232 +
5233 + if (index)
5234 + *index = entry;
5235 + if (ref)
5236 + pool->literals[entry].refcount++;
5237 +
5238 + return pool;
5239 +}
5240 +
5241 +struct avr32_operand
5242 +{
5243 + int id;
5244 + int is_signed;
5245 + int is_pcrel;
5246 + int align_order;
5247 + int (*match)(char *str);
5248 + void (*parse)(const struct avr32_operand *op, char *str, int opindex);
5249 +};
5250 +
5251 +static int
5252 +match_anything(char *str ATTRIBUTE_UNUSED)
5253 +{
5254 + return 1;
5255 +}
5256 +
5257 +static int
5258 +match_intreg(char *str)
5259 +{
5260 + int regid, ret = 1;
5261 +
5262 + regid = avr32_parse_intreg(str);
5263 + if (regid < 0)
5264 + ret = 0;
5265 +
5266 + pr_debug("match_intreg: `%s': %d\n", str, ret);
5267 +
5268 + return ret;
5269 +}
5270 +
5271 +static int
5272 +match_intreg_predec(char *str)
5273 +{
5274 + int regid;
5275 +
5276 + if (str[0] != '-' || str[1] != '-')
5277 + return 0;
5278 +
5279 + regid = avr32_parse_intreg(str + 2);
5280 + if (regid < 0)
5281 + return 0;
5282 +
5283 + return 1;
5284 +}
5285 +
5286 +static int
5287 +match_intreg_postinc(char *str)
5288 +{
5289 + int regid, ret = 1;
5290 + char *p, c;
5291 +
5292 + for (p = str; *p; p++)
5293 + if (*p == '+')
5294 + break;
5295 +
5296 + if (p[0] != '+' || p[1] != '+')
5297 + return 0;
5298 +
5299 + c = *p, *p = 0;
5300 + regid = avr32_parse_intreg(str);
5301 + if (regid < 0)
5302 + ret = 0;
5303 +
5304 + *p = c;
5305 + return ret;
5306 +}
5307 +
5308 +static int
5309 +match_intreg_lsl(char *str)
5310 +{
5311 + int regid, ret = 1;
5312 + char *p, c;
5313 +
5314 + for (p = str; *p; p++)
5315 + if (*p == '<')
5316 + break;
5317 +
5318 + if (p[0] && p[1] != '<')
5319 + return 0;
5320 +
5321 + c = *p, *p = 0;
5322 + regid = avr32_parse_intreg(str);
5323 + if (regid < 0)
5324 + ret = 0;
5325 +
5326 + *p = c;
5327 + return ret;
5328 +}
5329 +
5330 +static int
5331 +match_intreg_lsr(char *str)
5332 +{
5333 + int regid, ret = 1;
5334 + char *p, c;
5335 +
5336 + for (p = str; *p; p++)
5337 + if (*p == '>')
5338 + break;
5339 +
5340 + if (p[0] && p[1] != '>')
5341 + return 0;
5342 +
5343 + c = *p, *p = 0;
5344 +
5345 + regid = avr32_parse_intreg(str);
5346 + if (regid < 0)
5347 + ret = 0;
5348 +
5349 + *p = c;
5350 + return ret;
5351 +}
5352 +
5353 +static int
5354 +match_intreg_part(char *str)
5355 +{
5356 + int regid, ret = 1;
5357 + char *p, c;
5358 +
5359 + for (p = str; *p; p++)
5360 + if (*p == ':')
5361 + break;
5362 +
5363 + if (p[0] != ':' || !ISPRINT(p[1]) || p[2] != '\0')
5364 + return 0;
5365 +
5366 + c = *p, *p = 0;
5367 + regid = avr32_parse_intreg(str);
5368 + if (regid < 0)
5369 + ret = 0;
5370 +
5371 + *p = c;
5372 +
5373 + return ret;
5374 +}
5375 +
5376 +#define match_intreg_disp match_anything
5377 +
5378 +static int
5379 +match_intreg_index(char *str)
5380 +{
5381 + int regid, ret = 1;
5382 + char *p, *end, c;
5383 +
5384 + for (p = str; *p; p++)
5385 + if (*p == '[')
5386 + break;
5387 +
5388 + /* don't allow empty displacement here (it makes no sense) */
5389 + if (p[0] != '[')
5390 + return 0;
5391 +
5392 + for (end = p + 1; *end; end++) ;
5393 + if (*(--end) != ']')
5394 + return 0;
5395 +
5396 + c = *end, *end = 0;
5397 + if (!match_intreg_lsl(p + 1))
5398 + ret = 0;
5399 + *end = c;
5400 +
5401 + if (ret)
5402 + {
5403 + c = *p, *p = 0;
5404 + regid = avr32_parse_intreg(str);
5405 + if (regid < 0)
5406 + ret = 0;
5407 + *p = c;
5408 + }
5409 +
5410 + return ret;
5411 +}
5412 +
5413 +static int
5414 +match_intreg_xindex(char *str)
5415 +{
5416 + int regid, ret = 1;
5417 + char *p, *end, c;
5418 +
5419 + for (p = str; *p; p++)
5420 + if (*p == '[')
5421 + break;
5422 +
5423 + /* empty displacement makes no sense here either */
5424 + if (p[0] != '[')
5425 + return 0;
5426 +
5427 + for (end = p + 1; *end; end++)
5428 + if (*end == '<')
5429 + break;
5430 +
5431 + if (!streq(end, "<<2]"))
5432 + return 0;
5433 +
5434 + c = *end, *end = 0;
5435 + if (!match_intreg_part(p + 1))
5436 + ret = 0;
5437 + *end = c;
5438 +
5439 + if (ret)
5440 + {
5441 + c = *p, *p = 0;
5442 + regid = avr32_parse_intreg(str);
5443 + if (regid < 0)
5444 + ret = 0;
5445 + *p = c;
5446 + }
5447 +
5448 + return ret;
5449 +}
5450 +
5451 +/* The PC_UDISP_W operator may show up as a label or as a pc[disp]
5452 + expression. So there's no point in attempting to match this... */
5453 +#define match_pc_disp match_anything
5454 +
5455 +static int
5456 +match_sp(char *str)
5457 +{
5458 + /* SP in any form will do */
5459 + return avr32_parse_intreg(str) == AVR32_REG_SP;
5460 +}
5461 +
5462 +static int
5463 +match_sp_disp(char *str)
5464 +{
5465 + int regid, ret = 1;
5466 + char *p, c;
5467 +
5468 + for (p = str; *p; p++)
5469 + if (*p == '[')
5470 + break;
5471 +
5472 + /* allow empty displacement, meaning zero */
5473 + if (p[0] == '[')
5474 + {
5475 + char *end;
5476 + for (end = p + 1; *end; end++) ;
5477 + if (end[-1] != ']')
5478 + return 0;
5479 + }
5480 +
5481 + c = *p, *p = 0;
5482 + regid = avr32_parse_intreg(str);
5483 + if (regid != AVR32_REG_SP)
5484 + ret = 0;
5485 +
5486 + *p = c;
5487 + return ret;
5488 +}
5489 +
5490 +static int
5491 +match_cpno(char *str)
5492 +{
5493 + if (strncasecmp(str, "cp", 2) != 0)
5494 + return 0;
5495 + return 1;
5496 +}
5497 +
5498 +static int
5499 +match_cpreg(char *str)
5500 +{
5501 + if (strncasecmp(str, "cr", 2) != 0)
5502 + return 0;
5503 + return 1;
5504 +}
5505 +
5506 +/* We allow complex expressions, and register names may show up as
5507 + symbols. Just make sure immediate expressions are always matched
5508 + last. */
5509 +#define match_const match_anything
5510 +#define match_jmplabel match_anything
5511 +#define match_number match_anything
5512 +
5513 +/* Mnemonics that take reglists never accept anything else */
5514 +#define match_reglist8 match_anything
5515 +#define match_reglist9 match_anything
5516 +#define match_reglist16 match_anything
5517 +#define match_reglist_ldm match_anything
5518 +#define match_reglist_cp8 match_anything
5519 +#define match_reglist_cpd8 match_anything
5520 +
5521 +/* Ditto for retval, jospinc and mcall */
5522 +#define match_retval match_anything
5523 +#define match_jospinc match_anything
5524 +#define match_mcall match_anything
5525 +
5526 +/* COH is used to select between two different syntaxes */
5527 +static int
5528 +match_coh(char *str)
5529 +{
5530 + return strcasecmp(str, "coh") == 0;
5531 +}
5532 +
5533 +static int
5534 +match_fpreg(char *str)
5535 +{
5536 + unsigned long regid;
5537 + char *endptr;
5538 +
5539 + if ((str[0] != 'f' && str[0] != 'F')
5540 + || (str[1] != 'r' && str[1] != 'R'))
5541 + return 0;
5542 +
5543 + str += 2;
5544 + regid = strtoul(str, &endptr, 10);
5545 + if (!*str || *endptr)
5546 + return 0;
5547 +
5548 + return 1;
5549 +}
5550 +
5551 +static int
5552 +match_picoreg(char *str)
5553 +{
5554 + int regid;
5555 +
5556 + regid = avr32_parse_picoreg(str);
5557 + if (regid < 0)
5558 + return 0;
5559 + return 1;
5560 +}
5561 +
5562 +#define match_pico_reglist_w match_anything
5563 +#define match_pico_reglist_d match_anything
5564 +
5565 +static int
5566 +match_pico_in(char *str)
5567 +{
5568 + unsigned long regid;
5569 + char *end;
5570 +
5571 + if (strncasecmp(str, "in", 2) != 0)
5572 + return 0;
5573 +
5574 + str += 2;
5575 + regid = strtoul(str, &end, 10);
5576 + if (!*str || *end)
5577 + return 0;
5578 +
5579 + return 1;
5580 +}
5581 +
5582 +static int
5583 +match_pico_out0(char *str)
5584 +{
5585 + if (strcasecmp(str, "out0") != 0)
5586 + return 0;
5587 + return 1;
5588 +}
5589 +
5590 +static int
5591 +match_pico_out1(char *str)
5592 +{
5593 + if (strcasecmp(str, "out1") != 0)
5594 + return 0;
5595 + return 1;
5596 +}
5597 +
5598 +static int
5599 +match_pico_out2(char *str)
5600 +{
5601 + if (strcasecmp(str, "out2") != 0)
5602 + return 0;
5603 + return 1;
5604 +}
5605 +
5606 +static int
5607 +match_pico_out3(char *str)
5608 +{
5609 + if (strcasecmp(str, "out3") != 0)
5610 + return 0;
5611 + return 1;
5612 +}
5613 +
5614 +static void parse_nothing(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5615 + char *str ATTRIBUTE_UNUSED,
5616 + int opindex ATTRIBUTE_UNUSED)
5617 +{
5618 + /* Do nothing (this is used for "match-only" operands like COH) */
5619 +}
5620 +
5621 +static void
5622 +parse_const(const struct avr32_operand *op, char *str,
5623 + int opindex ATTRIBUTE_UNUSED)
5624 +{
5625 + expressionS *exp = &current_insn.immediate;
5626 + expressionS *sym_exp;
5627 + int slot;
5628 + char *save;
5629 +
5630 + pr_debug("parse_const: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5631 + str, op->is_signed, op->is_pcrel, op->align_order);
5632 +
5633 + save = input_line_pointer;
5634 + input_line_pointer = str;
5635 +
5636 + expression(exp);
5637 +
5638 + slot = current_insn.next_slot++;
5639 + current_insn.field_value[slot].align_order = op->align_order;
5640 + current_insn.pcrel = op->is_pcrel;
5641 +
5642 + switch (exp->X_op)
5643 + {
5644 + case O_illegal:
5645 + as_bad(_("illegal operand"));
5646 + break;
5647 + case O_absent:
5648 + as_bad(_("missing operand"));
5649 + break;
5650 + case O_constant:
5651 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5652 + current_insn.field_value[slot].value = exp->X_add_number;
5653 + break;
5654 + case O_uminus:
5655 + pr_debug(" -> uminus\n");
5656 + sym_exp = symbol_get_value_expression(exp->X_add_symbol);
5657 + switch (sym_exp->X_op) {
5658 + case O_subtract:
5659 + pr_debug(" -> subtract: switching operands\n");
5660 + exp->X_op_symbol = sym_exp->X_add_symbol;
5661 + exp->X_add_symbol = sym_exp->X_op_symbol;
5662 + exp->X_op = O_subtract;
5663 + /* TODO: Remove the old X_add_symbol */
5664 + break;
5665 + default:
5666 + as_bad(_("Expression too complex\n"));
5667 + break;
5668 + }
5669 + break;
5670 +#if 0
5671 + case O_subtract:
5672 + /* Any expression subtracting a symbol from the current section
5673 + can be made PC-relative by adding the right offset. */
5674 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5675 + current_insn.pcrel = TRUE;
5676 + pr_debug(" -> subtract: pcrel? %s\n",
5677 + current_insn.pcrel ? "yes" : "no");
5678 + /* fall through */
5679 +#endif
5680 + default:
5681 + pr_debug(" -> (%p <%d> %p + %d)\n",
5682 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5683 + exp->X_add_number);
5684 + current_insn.field_value[slot].value = 0;
5685 + break;
5686 + }
5687 +
5688 + input_line_pointer = save;
5689 +}
5690 +
5691 +static void
5692 +parse_jmplabel(const struct avr32_operand *op, char *str,
5693 + int opindex ATTRIBUTE_UNUSED)
5694 +{
5695 + expressionS *exp = &current_insn.immediate;
5696 + int slot;
5697 + char *save;
5698 +
5699 + pr_debug("parse_jmplabel: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5700 + str, op->is_signed, op->is_pcrel, op->align_order);
5701 +
5702 + save = input_line_pointer;
5703 + input_line_pointer = str;
5704 +
5705 + expression(exp);
5706 +
5707 + slot = current_insn.next_slot++;
5708 + current_insn.field_value[slot].align_order = op->align_order;
5709 + current_insn.pcrel = TRUE;
5710 +
5711 + switch (exp->X_op)
5712 + {
5713 + case O_illegal:
5714 + as_bad(_("illegal operand"));
5715 + break;
5716 + case O_absent:
5717 + as_bad(_("missing operand"));
5718 + break;
5719 + case O_constant:
5720 + pr_debug(" -> constant: %ld\n", (long)exp->X_add_number);
5721 + current_insn.field_value[slot].value = exp->X_add_number;
5722 + current_insn.pcrel = 0;
5723 + break;
5724 + default:
5725 + pr_debug(" -> (%p <%d> %p + %d)\n",
5726 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5727 + exp->X_add_number);
5728 + current_insn.field_value[slot].value = 0;
5729 + break;
5730 + }
5731 +
5732 + input_line_pointer = save;
5733 +}
5734 +
5735 +static void
5736 +parse_intreg(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5737 + char *str, int opindex ATTRIBUTE_UNUSED)
5738 +{
5739 + int regid, slot;
5740 +
5741 + pr_debug("parse_intreg: `%s'\n", str);
5742 +
5743 + regid = avr32_parse_intreg(str);
5744 + assert(regid >= 0);
5745 +
5746 + slot = current_insn.next_slot++;
5747 + current_insn.field_value[slot].value = regid;
5748 + current_insn.field_value[slot].align_order = op->align_order;
5749 +}
5750 +
5751 +static void
5752 +parse_intreg_predec(const struct avr32_operand *op, char *str, int opindex)
5753 +{
5754 + parse_intreg(op, str + 2, opindex);
5755 +}
5756 +
5757 +static void
5758 +parse_intreg_postinc(const struct avr32_operand *op, char *str, int opindex)
5759 +{
5760 + char *p, c;
5761 +
5762 + pr_debug("parse_intreg_postinc: `%s'\n", str);
5763 +
5764 + for (p = str; *p != '+'; p++) ;
5765 +
5766 + c = *p, *p = 0;
5767 + parse_intreg(op, str, opindex);
5768 + *p = c;
5769 +}
5770 +
5771 +static void
5772 +parse_intreg_shift(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5773 + char *str, int opindex ATTRIBUTE_UNUSED)
5774 +{
5775 + int regid, slot, shift = 0;
5776 + char *p, c;
5777 + char shiftop;
5778 +
5779 + pr_debug("parse Ry<<sa: `%s'\n", str);
5780 +
5781 + for (p = str; *p; p++)
5782 + if (*p == '<' || *p == '>')
5783 + break;
5784 +
5785 + shiftop = *p;
5786 +
5787 + c = *p, *p = 0;
5788 + regid = avr32_parse_intreg(str);
5789 + assert(regid >= 0);
5790 + *p = c;
5791 +
5792 + if (c)
5793 + {
5794 + if (p[0] != shiftop || p[1] != shiftop)
5795 + as_bad(_("expected shift operator in `%s'"), p);
5796 + else
5797 + {
5798 + expressionS exp;
5799 + char *saved;
5800 +
5801 + saved = input_line_pointer;
5802 + input_line_pointer = p + 2;
5803 + expression(&exp);
5804 + input_line_pointer = saved;
5805 +
5806 + if (exp.X_op != O_constant)
5807 + as_bad(_("shift amount must be a numeric constant"));
5808 + else
5809 + shift = exp.X_add_number;
5810 + }
5811 + }
5812 +
5813 + slot = current_insn.next_slot++;
5814 + current_insn.field_value[slot].value = regid;
5815 + slot = current_insn.next_slot++;
5816 + current_insn.field_value[slot].value = shift;
5817 +}
5818 +
5819 +/* The match() function selected the right opcode, so it doesn't
5820 + matter which way we shift any more. */
5821 +#define parse_intreg_lsl parse_intreg_shift
5822 +#define parse_intreg_lsr parse_intreg_shift
5823 +
5824 +static void
5825 +parse_intreg_part(const struct avr32_operand *op, char *str,
5826 + int opindex ATTRIBUTE_UNUSED)
5827 +{
5828 + static const char bparts[] = { 'b', 'l', 'u', 't' };
5829 + static const char hparts[] = { 'b', 't' };
5830 + unsigned int slot, sel;
5831 + int regid;
5832 + char *p, c;
5833 +
5834 + pr_debug("parse reg:part `%s'\n", str);
5835 +
5836 + for (p = str; *p; p++)
5837 + if (*p == ':')
5838 + break;
5839 +
5840 + c = *p, *p = 0;
5841 + regid = avr32_parse_intreg(str);
5842 + assert(regid >= 0);
5843 + *p = c;
5844 +
5845 + assert(c == ':');
5846 +
5847 + if (op->align_order)
5848 + {
5849 + for (sel = 0; sel < sizeof(hparts); sel++)
5850 + if (TOLOWER(p[1]) == hparts[sel])
5851 + break;
5852 +
5853 + if (sel >= sizeof(hparts))
5854 + {
5855 + as_bad(_("invalid halfword selector `%c' (must be either b or t)"),
5856 + p[1]);
5857 + sel = 0;
5858 + }
5859 + }
5860 + else
5861 + {
5862 + for (sel = 0; sel < sizeof(bparts); sel++)
5863 + if (TOLOWER(p[1]) == bparts[sel])
5864 + break;
5865 +
5866 + if (sel >= sizeof(bparts))
5867 + {
5868 + as_bad(_("invalid byte selector `%c' (must be one of b,l,u,t)"),
5869 + p[1]);
5870 + sel = 0;
5871 + }
5872 + }
5873 +
5874 + slot = current_insn.next_slot++;
5875 + current_insn.field_value[slot].value = regid;
5876 + slot = current_insn.next_slot++;
5877 + current_insn.field_value[slot].value = sel;
5878 +}
5879 +
5880 +/* This is the parser for "Rp[displacement]" expressions. In addition
5881 + to the "official" syntax, we accept a label as a replacement for
5882 + the register expression. This syntax implies Rp=PC and the
5883 + displacement is the pc-relative distance to the label. */
5884 +static void
5885 +parse_intreg_disp(const struct avr32_operand *op, char *str, int opindex)
5886 +{
5887 + expressionS *exp = &current_insn.immediate;
5888 + int slot, regid;
5889 + char *save, *p, c;
5890 +
5891 + pr_debug("parse_intreg_disp: `%s' (signed: %d, pcrel: %d, align: %d)\n",
5892 + str, op->is_signed, op->is_pcrel, op->align_order);
5893 +
5894 + for (p = str; *p; p++)
5895 + if (*p == '[')
5896 + break;
5897 +
5898 + slot = current_insn.next_slot++;
5899 +
5900 + /* First, check if we have a valid register either before '[' or as
5901 + the sole expression. If so, we use the Rp[disp] syntax. */
5902 + c = *p, *p = 0;
5903 + regid = avr32_parse_intreg(str);
5904 + *p = c;
5905 +
5906 + if (regid >= 0)
5907 + {
5908 + current_insn.field_value[slot].value = regid;
5909 +
5910 + slot = current_insn.next_slot++;
5911 + current_insn.field_value[slot].align_order = op->align_order;
5912 +
5913 + if (c == '[')
5914 + {
5915 + save = input_line_pointer;
5916 + input_line_pointer = p + 1;
5917 +
5918 + expression(exp);
5919 +
5920 + if (*input_line_pointer != ']')
5921 + as_bad(_("junk after displacement expression"));
5922 +
5923 + input_line_pointer = save;
5924 +
5925 + switch (exp->X_op)
5926 + {
5927 + case O_illegal:
5928 + as_bad(_("illegal displacement expression"));
5929 + break;
5930 + case O_absent:
5931 + as_bad(_("missing displacement expression"));
5932 + break;
5933 + case O_constant:
5934 + pr_debug(" -> constant: %ld\n", exp->X_add_number);
5935 + current_insn.field_value[slot].value = exp->X_add_number;
5936 + break;
5937 +#if 0
5938 + case O_subtract:
5939 + if (S_GET_SEGMENT(exp->X_op_symbol) == now_seg)
5940 + current_insn.pcrel = TRUE;
5941 + pr_debug(" -> subtract: pcrel? %s\n",
5942 + current_insn.pcrel ? "yes" : "no");
5943 + /* fall through */
5944 +#endif
5945 + default:
5946 + pr_debug(" -> (%p <%d> %p + %d)\n",
5947 + exp->X_add_symbol, exp->X_op, exp->X_op_symbol,
5948 + exp->X_add_number);
5949 + current_insn.field_value[slot].value = 0;
5950 + }
5951 + }
5952 + else
5953 + {
5954 + exp->X_op = O_constant;
5955 + exp->X_add_number = 0;
5956 + current_insn.field_value[slot].value = 0;
5957 + }
5958 + }
5959 + else
5960 + {
5961 + /* Didn't find a valid register. Try parsing it as a label. */
5962 + current_insn.field_value[slot].value = AVR32_REG_PC;
5963 + parse_jmplabel(op, str, opindex);
5964 + }
5965 +}
5966 +
5967 +static void
5968 +parse_intreg_index(const struct avr32_operand *op ATTRIBUTE_UNUSED,
5969 + char *str, int opindex ATTRIBUTE_UNUSED)
5970 +{
5971 + int slot, regid;
5972 + char *p, *end, c;
5973 +
5974 + for (p = str; *p; p++)
5975 + if (*p == '[')
5976 + break;
5977 +
5978 + assert(*p);
5979 +
5980 + c = *p, *p = 0;
5981 + regid = avr32_parse_intreg(str);
5982 + assert(regid >= 0);
5983 + *p = c;
5984 +
5985 + slot = current_insn.next_slot++;
5986 + current_insn.field_value[slot].value = regid;
5987 +
5988 + p++;
5989 + for (end = p; *end; end++)
5990 + if (*end == ']' || *end == '<')
5991 + break;
5992 +
5993 + assert(*end);
5994 +
5995 + c = *end, *end = 0;
5996 + regid = avr32_parse_intreg(p);
5997 + assert(regid >= 0);
5998 + *end = c;
5999 +
6000 + slot = current_insn.next_slot++;
6001 + current_insn.field_value[slot].value = regid;
6002 +
6003 + slot = current_insn.next_slot++;
6004 + current_insn.field_value[slot].value = 0;
6005 +
6006 + if (*end == '<')
6007 + {
6008 + expressionS exp;
6009 + char *save;
6010 +
6011 + p = end + 2;
6012 + for (end = p; *end; end++)
6013 + if (*end == ']')
6014 + break;
6015 +
6016 + assert(*end == ']');
6017 +
6018 + c = *end, *end = 0;
6019 + save = input_line_pointer;
6020 + input_line_pointer = p;
6021 + expression(&exp);
6022 +
6023 + if (*input_line_pointer)
6024 + as_bad(_("junk after shift expression"));
6025 +
6026 + *end = c;
6027 + input_line_pointer = save;
6028 +
6029 + if (exp.X_op == O_constant)
6030 + current_insn.field_value[slot].value = exp.X_add_number;
6031 + else
6032 + as_bad(_("shift expression too complex"));
6033 + }
6034 +}
6035 +
6036 +static void
6037 +parse_intreg_xindex(const struct avr32_operand *op, char *str, int opindex)
6038 +{
6039 + int slot, regid;
6040 + char *p, *end, c;
6041 +
6042 + for (p = str; *p; p++)
6043 + if (*p == '[')
6044 + break;
6045 +
6046 + assert(*p);
6047 +
6048 + c = *p, *p = 0;
6049 + regid = avr32_parse_intreg(str);
6050 + assert(regid >= 0);
6051 + *p = c;
6052 +
6053 + slot = current_insn.next_slot++;
6054 + current_insn.field_value[slot].value = regid;
6055 +
6056 + p++;
6057 + for (end = p; *end; end++)
6058 + if (*end == '<')
6059 + break;
6060 +
6061 + assert(*end);
6062 +
6063 + c = *end, *end = 0;
6064 + parse_intreg_part(op, p, opindex);
6065 + *end = c;
6066 +}
6067 +
6068 +static void
6069 +parse_pc_disp(const struct avr32_operand *op, char *str, int opindex)
6070 +{
6071 + char *p, c;
6072 +
6073 + for (p = str; *p; p++)
6074 + if (*p == '[')
6075 + break;
6076 +
6077 + /* The lddpc instruction comes in two different syntax variants:
6078 + lddpc reg, expression
6079 + lddpc reg, pc[disp]
6080 + If the operand contains a '[', we use the second form. */
6081 + if (*p)
6082 + {
6083 + int regid;
6084 +
6085 + c = *p, *p = 0;
6086 + regid = avr32_parse_intreg(str);
6087 + *p = c;
6088 + if (regid == AVR32_REG_PC)
6089 + {
6090 + char *end;
6091 +
6092 + for (end = ++p; *end; end++) ;
6093 + if (*(--end) != ']')
6094 + as_bad(_("unrecognized form of instruction: `%s'"), str);
6095 + else
6096 + {
6097 + c = *end, *end = 0;
6098 + parse_const(op, p, opindex);
6099 + *end = c;
6100 + current_insn.pcrel = 0;
6101 + }
6102 + }
6103 + else
6104 + as_bad(_("unrecognized form of instruction: `%s'"), str);
6105 + }
6106 + else
6107 + {
6108 + parse_jmplabel(op, str, opindex);
6109 + }
6110 +}
6111 +
6112 +static void parse_sp(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6113 + char *str ATTRIBUTE_UNUSED,
6114 + int opindex ATTRIBUTE_UNUSED)
6115 +{
6116 + int slot;
6117 +
6118 + slot = current_insn.next_slot++;
6119 + current_insn.field_value[slot].value = AVR32_REG_SP;
6120 +}
6121 +
6122 +static void
6123 +parse_sp_disp(const struct avr32_operand *op, char *str, int opindex)
6124 +{
6125 + char *p, c;
6126 +
6127 + for (; *str; str++)
6128 + if (*str == '[')
6129 + break;
6130 +
6131 + assert(*str);
6132 +
6133 + for (p = ++str; *p; p++)
6134 + if (*p == ']')
6135 + break;
6136 +
6137 + c = *p, *p = 0;
6138 + parse_const(op, str, opindex);
6139 + *p = c;
6140 +}
6141 +
6142 +static void
6143 +parse_cpno(const struct avr32_operand *op ATTRIBUTE_UNUSED, char *str,
6144 + int opindex ATTRIBUTE_UNUSED)
6145 +{
6146 + int slot;
6147 +
6148 + str += 2;
6149 + if (*str == '#')
6150 + str++;
6151 + if (*str < '0' || *str > '7' || str[1])
6152 + as_bad(_("invalid coprocessor `%s'"), str);
6153 +
6154 + slot = current_insn.next_slot++;
6155 + current_insn.field_value[slot].value = *str - '0';
6156 +}
6157 +
6158 +static void
6159 +parse_cpreg(const struct avr32_operand *op, char *str,
6160 + int opindex ATTRIBUTE_UNUSED)
6161 +{
6162 + unsigned int crid;
6163 + int slot;
6164 + char *endptr;
6165 +
6166 + str += 2;
6167 + crid = strtoul(str, &endptr, 10);
6168 + if (*endptr || crid > 15 || crid & ((1 << op->align_order) - 1))
6169 + as_bad(_("invalid coprocessor register `%s'"), str);
6170 +
6171 + crid >>= op->align_order;
6172 +
6173 + slot = current_insn.next_slot++;
6174 + current_insn.field_value[slot].value = crid;
6175 +}
6176 +
6177 +static void
6178 +parse_number(const struct avr32_operand *op, char *str,
6179 + int opindex ATTRIBUTE_UNUSED)
6180 +{
6181 + expressionS exp;
6182 + int slot;
6183 + char *save;
6184 +
6185 + save = input_line_pointer;
6186 + input_line_pointer = str;
6187 + expression(&exp);
6188 + input_line_pointer = save;
6189 +
6190 + slot = current_insn.next_slot++;
6191 + current_insn.field_value[slot].align_order = op->align_order;
6192 +
6193 + if (exp.X_op == O_constant)
6194 + current_insn.field_value[slot].value = exp.X_add_number;
6195 + else
6196 + as_bad(_("invalid numeric expression `%s'"), str);
6197 +}
6198 +
6199 +static void
6200 +parse_reglist8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6201 + char *str, int opindex ATTRIBUTE_UNUSED)
6202 +{
6203 + unsigned long regmask;
6204 + unsigned long value = 0;
6205 + int slot;
6206 + char *tail;
6207 +
6208 + regmask = avr32_parse_reglist(str, &tail);
6209 + if (*tail)
6210 + as_bad(_("invalid register list `%s'"), str);
6211 + else
6212 + {
6213 + if (avr32_make_regmask8(regmask, &value))
6214 + as_bad(_("register list `%s' doesn't fit"), str);
6215 + }
6216 +
6217 + slot = current_insn.next_slot++;
6218 + current_insn.field_value[slot].value = value;
6219 +}
6220 +
6221 +static int
6222 +parse_reglist_tail(char *str, unsigned long regmask)
6223 +{
6224 + expressionS exp;
6225 + char *save, *p, c;
6226 + int regid;
6227 +
6228 + for (p = str + 1; *p; p++)
6229 + if (*p == '=')
6230 + break;
6231 +
6232 + if (!*p)
6233 + {
6234 + as_bad(_("invalid register list `%s'"), str);
6235 + return -2;
6236 + }
6237 +
6238 + c = *p, *p = 0;
6239 + regid = avr32_parse_intreg(str);
6240 + *p = c;
6241 +
6242 + if (regid != 12)
6243 + {
6244 + as_bad(_("invalid register list `%s'"), str);
6245 + return -2;
6246 + }
6247 +
6248 + /* If we have an assignment, we must pop PC and we must _not_
6249 + pop LR or R12 */
6250 + if (!(regmask & (1 << AVR32_REG_PC)))
6251 + {
6252 + as_bad(_("return value specified for non-return instruction"));
6253 + return -2;
6254 + }
6255 + else if (regmask & ((1 << AVR32_REG_R12) | (1 << AVR32_REG_LR)))
6256 + {
6257 + as_bad(_("can't pop LR or R12 when specifying return value"));
6258 + return -2;
6259 + }
6260 +
6261 + save = input_line_pointer;
6262 + input_line_pointer = p + 1;
6263 + expression(&exp);
6264 + input_line_pointer = save;
6265 +
6266 + if (exp.X_op != O_constant
6267 + || exp.X_add_number < -1
6268 + || exp.X_add_number > 1)
6269 + {
6270 + as_bad(_("invalid return value `%s'"), str);
6271 + return -2;
6272 + }
6273 +
6274 + return exp.X_add_number;
6275 +}
6276 +
6277 +static void
6278 +parse_reglist9(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6279 + char *str, int opindex ATTRIBUTE_UNUSED)
6280 +{
6281 + unsigned long regmask;
6282 + unsigned long value = 0, kbit = 0;
6283 + int slot;
6284 + char *tail;
6285 +
6286 + regmask = avr32_parse_reglist(str, &tail);
6287 + /* printf("parsed reglist16: %04lx, tail: `%s'\n", regmask, tail); */
6288 + if (*tail)
6289 + {
6290 + int retval;
6291 +
6292 + retval = parse_reglist_tail(tail, regmask);
6293 +
6294 + switch (retval)
6295 + {
6296 + case -1:
6297 + regmask |= 1 << AVR32_REG_LR;
6298 + break;
6299 + case 0:
6300 + break;
6301 + case 1:
6302 + regmask |= 1 << AVR32_REG_R12;
6303 + break;
6304 + default:
6305 + break;
6306 + }
6307 +
6308 + kbit = 1;
6309 + }
6310 +
6311 + if (avr32_make_regmask8(regmask, &value))
6312 + as_bad(_("register list `%s' doesn't fit"), str);
6313 +
6314 +
6315 + slot = current_insn.next_slot++;
6316 + current_insn.field_value[slot].value = (value << 1) | kbit;
6317 +}
6318 +
6319 +static void
6320 +parse_reglist16(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6321 + char *str, int opindex ATTRIBUTE_UNUSED)
6322 +{
6323 + unsigned long regmask;
6324 + int slot;
6325 + char *tail;
6326 +
6327 + regmask = avr32_parse_reglist(str, &tail);
6328 + if (*tail)
6329 + as_bad(_("invalid register list `%s'"), str);
6330 +
6331 + slot = current_insn.next_slot++;
6332 + current_insn.field_value[slot].value = regmask;
6333 +}
6334 +
6335 +static void
6336 +parse_reglist_ldm(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6337 + char *str, int opindex ATTRIBUTE_UNUSED)
6338 +{
6339 + unsigned long regmask;
6340 + int slot, rp, w_bit = 0;
6341 + char *tail, *p, c;
6342 +
6343 + for (p = str; *p && *p != ','; p++)
6344 + if (*p == '+')
6345 + break;
6346 +
6347 + c = *p, *p = 0;
6348 + rp = avr32_parse_intreg(str);
6349 + *p = c;
6350 + if (rp < 0)
6351 + {
6352 + as_bad(_("invalid destination register in `%s'"), str);
6353 + return;
6354 + }
6355 +
6356 + if (p[0] == '+' && p[1] == '+')
6357 + {
6358 + w_bit = 1;
6359 + p += 2;
6360 + }
6361 +
6362 + if (*p != ',')
6363 + {
6364 + as_bad(_("expected `,' after destination register in `%s'"), str);
6365 + return;
6366 + }
6367 +
6368 + str = p + 1;
6369 + regmask = avr32_parse_reglist(str, &tail);
6370 + if (*tail)
6371 + {
6372 + int retval;
6373 +
6374 + if (rp != AVR32_REG_SP)
6375 + {
6376 + as_bad(_("junk at end of line: `%s'"), tail);
6377 + return;
6378 + }
6379 +
6380 + rp = AVR32_REG_PC;
6381 +
6382 + retval = parse_reglist_tail(tail, regmask);
6383 +
6384 + switch (retval)
6385 + {
6386 + case -1:
6387 + regmask |= 1 << AVR32_REG_LR;
6388 + break;
6389 + case 0:
6390 + break;
6391 + case 1:
6392 + regmask |= 1 << AVR32_REG_R12;
6393 + break;
6394 + default:
6395 + return;
6396 + }
6397 + }
6398 +
6399 + slot = current_insn.next_slot++;
6400 + current_insn.field_value[slot].value = rp;
6401 + slot = current_insn.next_slot++;
6402 + current_insn.field_value[slot].value = w_bit;
6403 + slot = current_insn.next_slot++;
6404 + current_insn.field_value[slot].value = regmask;
6405 +}
6406 +
6407 +static void
6408 +parse_reglist_cp8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6409 + char *str, int opindex ATTRIBUTE_UNUSED)
6410 +{
6411 + unsigned long regmask;
6412 + int slot, h_bit = 0;
6413 + char *tail;
6414 +
6415 + regmask = avr32_parse_cpreglist(str, &tail);
6416 + if (*tail)
6417 + as_bad(_("junk at end of line: `%s'"), tail);
6418 + else if (regmask & 0xffUL)
6419 + {
6420 + if (regmask & 0xff00UL)
6421 + as_bad(_("register list `%s' doesn't fit"), str);
6422 + regmask &= 0xff;
6423 + }
6424 + else if (regmask & 0xff00UL)
6425 + {
6426 + regmask >>= 8;
6427 + h_bit = 1;
6428 + }
6429 + else
6430 + as_warn(_("register list is empty"));
6431 +
6432 + slot = current_insn.next_slot++;
6433 + current_insn.field_value[slot].value = regmask;
6434 + slot = current_insn.next_slot++;
6435 + current_insn.field_value[slot].value = h_bit;
6436 +}
6437 +
6438 +static void
6439 +parse_reglist_cpd8(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6440 + char *str, int opindex ATTRIBUTE_UNUSED)
6441 +{
6442 + unsigned long regmask, regmask_d = 0;
6443 + int slot, i;
6444 + char *tail;
6445 +
6446 + regmask = avr32_parse_cpreglist(str, &tail);
6447 + if (*tail)
6448 + as_bad(_("junk at end of line: `%s'"), tail);
6449 +
6450 + for (i = 0; i < 8; i++)
6451 + {
6452 + if (regmask & 1)
6453 + {
6454 + if (!(regmask & 2))
6455 + {
6456 + as_bad(_("register list `%s' doesn't fit"), str);
6457 + break;
6458 + }
6459 + regmask_d |= 1 << i;
6460 + }
6461 + else if (regmask & 2)
6462 + {
6463 + as_bad(_("register list `%s' doesn't fit"), str);
6464 + break;
6465 + }
6466 +
6467 + regmask >>= 2;
6468 + }
6469 +
6470 + slot = current_insn.next_slot++;
6471 + current_insn.field_value[slot].value = regmask_d;
6472 +}
6473 +
6474 +static void
6475 +parse_retval(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6476 + char *str, int opindex ATTRIBUTE_UNUSED)
6477 +{
6478 + int regid, slot;
6479 +
6480 + regid = avr32_parse_intreg(str);
6481 + if (regid < 0)
6482 + {
6483 + expressionS exp;
6484 + char *save;
6485 +
6486 + regid = 0;
6487 +
6488 + save = input_line_pointer;
6489 + input_line_pointer = str;
6490 + expression(&exp);
6491 + input_line_pointer = save;
6492 +
6493 + if (exp.X_op != O_constant)
6494 + as_bad(_("invalid return value `%s'"), str);
6495 + else
6496 + switch (exp.X_add_number)
6497 + {
6498 + case -1:
6499 + regid = AVR32_REG_LR;
6500 + break;
6501 + case 0:
6502 + regid = AVR32_REG_SP;
6503 + break;
6504 + case 1:
6505 + regid = AVR32_REG_PC;
6506 + break;
6507 + default:
6508 + as_bad(_("invalid return value `%s'"), str);
6509 + break;
6510 + }
6511 + }
6512 +
6513 + slot = current_insn.next_slot++;
6514 + current_insn.field_value[slot].value = regid;
6515 +}
6516 +
6517 +#define parse_mcall parse_intreg_disp
6518 +
6519 +static void
6520 +parse_jospinc(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6521 + char *str, int opindex ATTRIBUTE_UNUSED)
6522 +{
6523 + expressionS exp;
6524 + int slot;
6525 + char *save;
6526 +
6527 + save = input_line_pointer;
6528 + input_line_pointer = str;
6529 + expression(&exp);
6530 + input_line_pointer = save;
6531 +
6532 + slot = current_insn.next_slot++;
6533 +
6534 + if (exp.X_op == O_constant)
6535 + {
6536 + if (exp.X_add_number > 0)
6537 + exp.X_add_number--;
6538 + current_insn.field_value[slot].value = exp.X_add_number;
6539 + }
6540 + else
6541 + as_bad(_("invalid numeric expression `%s'"), str);
6542 +}
6543 +
6544 +#define parse_coh parse_nothing
6545 +
6546 +static void
6547 +parse_fpreg(const struct avr32_operand *op,
6548 + char *str, int opindex ATTRIBUTE_UNUSED)
6549 +{
6550 + unsigned long regid;
6551 + int slot;
6552 +
6553 + regid = strtoul(str + 2, NULL, 10);
6554 +
6555 + if ((regid >= 16) || (regid & ((1 << op->align_order) - 1)))
6556 + as_bad(_("invalid floating-point register `%s'"), str);
6557 +
6558 + slot = current_insn.next_slot++;
6559 + current_insn.field_value[slot].value = regid;
6560 + current_insn.field_value[slot].align_order = op->align_order;
6561 +}
6562 +
6563 +static void
6564 +parse_picoreg(const struct avr32_operand *op,
6565 + char *str, int opindex ATTRIBUTE_UNUSED)
6566 +{
6567 + unsigned long regid;
6568 + int slot;
6569 +
6570 + regid = avr32_parse_picoreg(str);
6571 + if (regid & ((1 << op->align_order) - 1))
6572 + as_bad(_("invalid double-word PiCo register `%s'"), str);
6573 +
6574 + slot = current_insn.next_slot++;
6575 + current_insn.field_value[slot].value = regid;
6576 + current_insn.field_value[slot].align_order = op->align_order;
6577 +}
6578 +
6579 +static void
6580 +parse_pico_reglist_w(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6581 + char *str, int opindex ATTRIBUTE_UNUSED)
6582 +{
6583 + unsigned long regmask;
6584 + int slot, h_bit = 0;
6585 + char *tail;
6586 +
6587 + regmask = avr32_parse_pico_reglist(str, &tail);
6588 + if (*tail)
6589 + as_bad(_("junk at end of line: `%s'"), tail);
6590 +
6591 + if (regmask & 0x00ffUL)
6592 + {
6593 + if (regmask & 0xff00UL)
6594 + as_bad(_("register list `%s' doesn't fit"), str);
6595 + regmask &= 0x00ffUL;
6596 + }
6597 + else if (regmask & 0xff00UL)
6598 + {
6599 + regmask >>= 8;
6600 + h_bit = 1;
6601 + }
6602 + else
6603 + as_warn(_("register list is empty"));
6604 +
6605 + slot = current_insn.next_slot++;
6606 + current_insn.field_value[slot].value = regmask;
6607 + slot = current_insn.next_slot++;
6608 + current_insn.field_value[slot].value = h_bit;
6609 +}
6610 +
6611 +static void
6612 +parse_pico_reglist_d(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6613 + char *str, int opindex ATTRIBUTE_UNUSED)
6614 +{
6615 + unsigned long regmask, regmask_d = 0;
6616 + int slot, i;
6617 + char *tail;
6618 +
6619 + regmask = avr32_parse_pico_reglist(str, &tail);
6620 + if (*tail)
6621 + as_bad(_("junk at end of line: `%s'"), tail);
6622 +
6623 + for (i = 0; i < 8; i++)
6624 + {
6625 + if (regmask & 1)
6626 + {
6627 + if (!(regmask & 2))
6628 + {
6629 + as_bad(_("register list `%s' doesn't fit"), str);
6630 + break;
6631 + }
6632 + regmask_d |= 1 << i;
6633 + }
6634 + else if (regmask & 2)
6635 + {
6636 + as_bad(_("register list `%s' doesn't fit"), str);
6637 + break;
6638 + }
6639 +
6640 + regmask >>= 2;
6641 + }
6642 +
6643 + slot = current_insn.next_slot++;
6644 + current_insn.field_value[slot].value = regmask_d;
6645 +}
6646 +
6647 +static void
6648 +parse_pico_in(const struct avr32_operand *op ATTRIBUTE_UNUSED,
6649 + char *str, int opindex ATTRIBUTE_UNUSED)
6650 +{
6651 + unsigned long regid;
6652 + int slot;
6653 +
6654 + regid = strtoul(str + 2, NULL, 10);
6655 +
6656 + if (regid >= 12)
6657 + as_bad(_("invalid PiCo IN register `%s'"), str);
6658 +
6659 + slot = current_insn.next_slot++;
6660 + current_insn.field_value[slot].value = regid;
6661 + current_insn.field_value[slot].align_order = 0;
6662 +}
6663 +
6664 +#define parse_pico_out0 parse_nothing
6665 +#define parse_pico_out1 parse_nothing
6666 +#define parse_pico_out2 parse_nothing
6667 +#define parse_pico_out3 parse_nothing
6668 +
6669 +#define OP(name, sgn, pcrel, align, func) \
6670 + { AVR32_OPERAND_##name, sgn, pcrel, align, match_##func, parse_##func }
6671 +
6672 +struct avr32_operand avr32_operand_table[] = {
6673 + OP(INTREG, 0, 0, 0, intreg),
6674 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
6675 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
6676 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
6677 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
6678 + OP(INTREG_BSEL, 0, 0, 0, intreg_part),
6679 + OP(INTREG_HSEL, 0, 0, 1, intreg_part),
6680 + OP(INTREG_SDISP, 1, 0, 0, intreg_disp),
6681 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_disp),
6682 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_disp),
6683 + OP(INTREG_UDISP, 0, 0, 0, intreg_disp),
6684 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_disp),
6685 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_disp),
6686 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
6687 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
6688 + OP(DWREG, 0, 0, 1, intreg),
6689 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
6690 + OP(SP, 0, 0, 0, sp),
6691 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
6692 + OP(CPNO, 0, 0, 0, cpno),
6693 + OP(CPREG, 0, 0, 0, cpreg),
6694 + OP(CPREG_D, 0, 0, 1, cpreg),
6695 + OP(UNSIGNED_CONST, 0, 0, 0, const),
6696 + OP(UNSIGNED_CONST_W, 0, 0, 2, const),
6697 + OP(SIGNED_CONST, 1, 0, 0, const),
6698 + OP(SIGNED_CONST_W, 1, 0, 2, const),
6699 + OP(JMPLABEL, 1, 1, 1, jmplabel),
6700 + OP(UNSIGNED_NUMBER, 0, 0, 0, number),
6701 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, number),
6702 + OP(REGLIST8, 0, 0, 0, reglist8),
6703 + OP(REGLIST9, 0, 0, 0, reglist9),
6704 + OP(REGLIST16, 0, 0, 0, reglist16),
6705 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
6706 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
6707 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
6708 + OP(RETVAL, 0, 0, 0, retval),
6709 + OP(MCALL, 1, 0, 2, mcall),
6710 + OP(JOSPINC, 0, 0, 0, jospinc),
6711 + OP(COH, 0, 0, 0, coh),
6712 + OP(FPREG_S, 0, 0, 0, fpreg),
6713 + OP(FPREG_D, 0, 0, 1, fpreg),
6714 + OP(PICO_REG_W, 0, 0, 0, picoreg),
6715 + OP(PICO_REG_D, 0, 0, 1, picoreg),
6716 + OP(PICO_REGLIST_W, 0, 0, 0, pico_reglist_w),
6717 + OP(PICO_REGLIST_D, 0, 0, 0, pico_reglist_d),
6718 + OP(PICO_IN, 0, 0, 0, pico_in),
6719 + OP(PICO_OUT0, 0, 0, 0, pico_out0),
6720 + OP(PICO_OUT1, 0, 0, 0, pico_out1),
6721 + OP(PICO_OUT2, 0, 0, 0, pico_out2),
6722 + OP(PICO_OUT3, 0, 0, 0, pico_out3),
6723 +};
6724 +
6725 +symbolS *
6726 +md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
6727 +{
6728 + pr_debug("md_undefined_symbol: %s\n", name);
6729 + return 0;
6730 +}
6731 +
6732 +struct avr32_relax_type
6733 +{
6734 + long lower_bound;
6735 + long upper_bound;
6736 + unsigned char align;
6737 + unsigned char length;
6738 + signed short next;
6739 +};
6740 +
6741 +#define EMPTY { 0, 0, 0, 0, -1 }
6742 +#define C(lower, upper, align, next) \
6743 + { (lower), (upper), (align), 2, AVR32_OPC_##next }
6744 +#define E(lower, upper, align) \
6745 + { (lower), (upper), (align), 4, -1 }
6746 +
6747 +static const struct avr32_relax_type avr32_relax_table[] =
6748 + {
6749 + /* 0 */
6750 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6751 + EMPTY, EMPTY, EMPTY,
6752 + E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0), E(0, 65535, 0),
6753 + EMPTY,
6754 + /* 16 */
6755 + EMPTY, EMPTY, EMPTY, EMPTY,
6756 +
6757 + C(-256, 254, 1, BREQ2), C(-256, 254, 1, BRNE2),
6758 + C(-256, 254, 1, BRCC2), C(-256, 254, 1, BRCS2),
6759 + C(-256, 254, 1, BRGE2), C(-256, 254, 1, BRLT2),
6760 + C(-256, 254, 1, BRMI2), C(-256, 254, 1, BRPL2),
6761 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6762 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6763 + /* 32 */
6764 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6765 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6766 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6767 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6768 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6769 + E(-2097152, 2097150, 1), E(-2097152, 2097150, 1),
6770 +
6771 + EMPTY, EMPTY, EMPTY, EMPTY,
6772 + /* 48 */
6773 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6774 + EMPTY, EMPTY, EMPTY,
6775 +
6776 + C(-32, 31, 0, CP_W3), E(-1048576, 1048575, 0),
6777 +
6778 + EMPTY, EMPTY, EMPTY,
6779 + /* 64: csrfcz */
6780 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6781 + E(0, 65535, 0), E(0, 65535, 0),
6782 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6783 + E(-32768, 32767, 0),
6784 + /* 80: LD_SB2 */
6785 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6786 +
6787 + C(0, 7, 0, LD_UB4), E(-32768, 32767, 0),
6788 +
6789 + EMPTY,
6790 + EMPTY, EMPTY,
6791 +
6792 + C(0, 14, 1, LD_SH4), E(-32768, 32767, 0),
6793 +
6794 + EMPTY, EMPTY, EMPTY,
6795 +
6796 + C(0, 14, 1, LD_UH4),
6797 +
6798 + /* 96: LD_UH4 */
6799 + E(-32768, 32767, 0),
6800 +
6801 + EMPTY, EMPTY, EMPTY, EMPTY,
6802 +
6803 + C(0, 124, 2, LD_W4), E(-32768, 32767, 0),
6804 +
6805 + E(0, 1020, 2), /* LDC_D1 */
6806 + EMPTY, EMPTY,
6807 + E(0, 1020, 2), /* LDC_W1 */
6808 + EMPTY, EMPTY,
6809 + E(0, 16380, 2), /* LDC0_D */
6810 + E(0, 16380, 2), /* LDC0_W */
6811 + EMPTY,
6812 +
6813 + /* 112: LDCM_D_PU */
6814 + EMPTY, EMPTY, EMPTY,
6815 +
6816 + C(0, 508, 2, LDDPC_EXT), E(-32768, 32767, 0),
6817 +
6818 + EMPTY,EMPTY, EMPTY,
6819 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6820 +
6821 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6822 + /* 134: MACHH_W */
6823 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6824 + E(-131072, 131068, 2), /* MCALL */
6825 + E(0, 1020, 2), /* MFDR */
6826 + E(0, 1020, 2), /* MFSR */
6827 + EMPTY, EMPTY,
6828 +
6829 + C(-128, 127, 0, MOV2), E(-1048576, 1048575, 0),
6830 +
6831 + EMPTY, EMPTY, EMPTY,
6832 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6833 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6834 +
6835 + E(-128, 127, 0), /* MOVEQ2 */
6836 + E(-128, 127, 0), /* MOVNE2 */
6837 + E(-128, 127, 0), /* MOVCC2 */
6838 + E(-128, 127, 0), /* 166: MOVCS2 */
6839 + E(-128, 127, 0), /* MOVGE2 */
6840 + E(-128, 127, 0), /* MOVLT2 */
6841 + E(-128, 127, 0), /* MOVMI2 */
6842 + E(-128, 127, 0), /* MOVPL2 */
6843 + E(-128, 127, 0), /* MOVLS2 */
6844 + E(-128, 127, 0), /* MOVGT2 */
6845 + E(-128, 127, 0), /* MOVLE2 */
6846 + E(-128, 127, 0), /* MOVHI2 */
6847 + E(-128, 127, 0), /* MOVVS2 */
6848 + E(-128, 127, 0), /* MOVVC2 */
6849 + E(-128, 127, 0), /* MOVQS2 */
6850 + E(-128, 127, 0), /* MOVAL2 */
6851 +
6852 + E(0, 1020, 2), /* MTDR */
6853 + E(0, 1020, 2), /* MTSR */
6854 + EMPTY,
6855 + EMPTY,
6856 + E(-128, 127, 0), /* MUL3 */
6857 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6858 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6859 + /* 198: MVCR_W */
6860 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6861 + E(0, 65535, 0), E(0, 65535, 0),
6862 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6863 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6864 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6865 + /* 230: PASR_H */
6866 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6867 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6868 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6869 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6870 + /* 262: PUNPCKSB_H */
6871 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6872 +
6873 + C(-1024, 1022, 1, RCALL2), E(-2097152, 2097150, 1),
6874 +
6875 + EMPTY,
6876 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6877 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6878 + EMPTY, EMPTY, EMPTY,
6879 +
6880 + C(-1024, 1022, 1, BRAL),
6881 +
6882 + EMPTY, EMPTY, EMPTY,
6883 + E(-128, 127, 0), /* RSUB2 */
6884 + /* 294: SATADD_H */
6885 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6886 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6887 + E(0, 255, 0), /* SLEEP */
6888 + EMPTY, EMPTY,
6889 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6890 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6891 + /* 326: ST_B2 */
6892 + EMPTY, EMPTY,
6893 + C(0, 7, 0, ST_B4), E(-32768, 32767, 0),
6894 + EMPTY, EMPTY, EMPTY, EMPTY,
6895 + E(-32768, 32767, 0),
6896 + EMPTY, EMPTY, EMPTY,
6897 + C(0, 14, 1, ST_H4), E(-32768, 32767, 0),
6898 + EMPTY, EMPTY,
6899 + EMPTY,
6900 + C(0, 60, 2, ST_W4), E(-32768, 32767, 0),
6901 + E(0, 1020, 2), /* STC_D1 */
6902 + EMPTY, EMPTY,
6903 + E(0, 1020, 2), /* STC_W1 */
6904 + EMPTY, EMPTY,
6905 + E(0, 16380, 2), /* STC0_D */
6906 + E(0, 16380, 2), /* STC0_W */
6907 +
6908 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6909 + /* 358: STDSP */
6910 + EMPTY, EMPTY,
6911 + E(0, 1020, 2), /* STHH_W1 */
6912 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6913 + EMPTY, EMPTY, EMPTY,
6914 + E(-32768, 32767, 0),
6915 + C(-512, 508, 2, SUB4),
6916 + C(-128, 127, 0, SUB4), E(-1048576, 1048576, 0),
6917 + /* SUB{cond} */
6918 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6919 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6920 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6921 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6922 + /* SUBF{cond} */
6923 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6924 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6925 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6926 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6927 + EMPTY,
6928 +
6929 + /* 406: SWAP_B */
6930 + EMPTY, EMPTY, EMPTY,
6931 + E(0, 255, 0), /* SYNC */
6932 + EMPTY, EMPTY, EMPTY, EMPTY,
6933 + /* 414: TST */
6934 + EMPTY, EMPTY, E(-65536, 65535, 2), E(-65536, 65535, 2), E(-65536, 65535, 2), EMPTY, EMPTY, EMPTY,
6935 + /* 422: RSUB{cond} */
6936 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6937 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6938 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6939 + E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0), E(-128, 127, 0),
6940 + /* 436: ADD{cond} */
6941 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6942 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6943 + /* 454: SUB{cond} */
6944 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6945 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6946 + /* 472: AND{cond} */
6947 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6948 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6949 + /* 486: OR{cond} */
6950 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6951 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6952 + /* 502: EOR{cond} */
6953 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6954 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6955 + /* 518: LD.w{cond} */
6956 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6957 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6958 + /* 534: LD.sh{cond} */
6959 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6960 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6961 + /* 550: LD.uh{cond} */
6962 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6963 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6964 + /* 566: LD.sb{cond} */
6965 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6966 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6967 + /* 582: LD.ub{cond} */
6968 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6969 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6970 + /* 596: ST.w{cond} */
6971 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6972 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6973 + /* 614: ST.h{cond} */
6974 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6975 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6976 + /* 630: ST.b{cond} */
6977 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6978 + EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
6979 + /* 646: movh */
6980 + E(0, 65535, 0)
6981 + };
6982 +
6983 +#undef E
6984 +#undef C
6985 +#undef EMPTY
6986 +
6987 +#define AVR32_RS_NONE (-1)
6988 +
6989 +#define avr32_rs_size(state) (avr32_relax_table[(state)].length)
6990 +#define avr32_rs_align(state) (avr32_relax_table[(state)].align)
6991 +#define relax_more(state) (avr32_relax_table[(state)].next)
6992 +
6993 +#define opc_initial_substate(opc) ((opc)->id)
6994 +
6995 +static int need_relax(int subtype, offsetT distance)
6996 +{
6997 + offsetT upper_bound, lower_bound;
6998 +
6999 + upper_bound = avr32_relax_table[subtype].upper_bound;
7000 + lower_bound = avr32_relax_table[subtype].lower_bound;
7001 +
7002 + if (distance & ((1 << avr32_rs_align(subtype)) - 1))
7003 + return 1;
7004 + if ((distance > upper_bound) || (distance < lower_bound))
7005 + return 1;
7006 +
7007 + return 0;
7008 +}
7009 +
7010 +enum {
7011 + LDA_SUBTYPE_MOV1,
7012 + LDA_SUBTYPE_MOV2,
7013 + LDA_SUBTYPE_SUB,
7014 + LDA_SUBTYPE_LDDPC,
7015 + LDA_SUBTYPE_LDW,
7016 + LDA_SUBTYPE_GOTLOAD,
7017 + LDA_SUBTYPE_GOTLOAD_LARGE,
7018 +};
7019 +
7020 +enum {
7021 + CALL_SUBTYPE_RCALL1,
7022 + CALL_SUBTYPE_RCALL2,
7023 + CALL_SUBTYPE_MCALL_CP,
7024 + CALL_SUBTYPE_MCALL_GOT,
7025 + CALL_SUBTYPE_MCALL_LARGE,
7026 +};
7027 +
7028 +#define LDA_INITIAL_SIZE (avr32_pic ? 4 : 2)
7029 +#define CALL_INITIAL_SIZE 2
7030 +
7031 +#define need_reloc(sym, seg, pcrel) \
7032 + (!(S_IS_DEFINED(sym) \
7033 + && ((pcrel && S_GET_SEGMENT(sym) == seg) \
7034 + || (!pcrel && S_GET_SEGMENT(sym) == absolute_section))) \
7035 + || S_FORCE_RELOC(sym, 1))
7036 +
7037 +/* Return an initial guess of the length by which a fragment must grow to
7038 + hold a branch to reach its destination.
7039 + Also updates fr_type/fr_subtype as necessary.
7040 +
7041 + Called just before doing relaxation.
7042 + Any symbol that is now undefined will not become defined.
7043 + The guess for fr_var is ACTUALLY the growth beyond fr_fix.
7044 + Whatever we do to grow fr_fix or fr_var contributes to our returned value.
7045 + Although it may not be explicit in the frag, pretend fr_var starts with a
7046 + 0 value. */
7047 +
7048 +static int
7049 +avr32_default_estimate_size_before_relax (fragS *fragP, segT segment)
7050 +{
7051 + int growth = 0;
7052 +
7053 + assert(fragP);
7054 + assert(fragP->fr_symbol);
7055 +
7056 + if (fragP->tc_frag_data.force_extended
7057 + || need_reloc(fragP->fr_symbol, segment, fragP->tc_frag_data.pcrel))
7058 + {
7059 + int largest_state = fragP->fr_subtype;
7060 + while (relax_more(largest_state) != AVR32_RS_NONE)
7061 + largest_state = relax_more(largest_state);
7062 + growth = avr32_rs_size(largest_state) - fragP->fr_var;
7063 + }
7064 + else
7065 + {
7066 + growth = avr32_rs_size(fragP->fr_subtype) - fragP->fr_var;
7067 + }
7068 +
7069 + pr_debug("%s:%d: md_estimate_size_before_relax: %d\n",
7070 + fragP->fr_file, fragP->fr_line, growth);
7071 +
7072 + return growth;
7073 +}
7074 +
7075 +static int
7076 +avr32_lda_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
7077 +{
7078 + return fragP->fr_var - LDA_INITIAL_SIZE;
7079 +}
7080 +
7081 +static int
7082 +avr32_call_estimate_size_before_relax(fragS *fragP, segT segment ATTRIBUTE_UNUSED)
7083 +{
7084 + return fragP->fr_var - CALL_INITIAL_SIZE;
7085 +}
7086 +
7087 +static int
7088 +avr32_cpool_estimate_size_before_relax(fragS *fragP,
7089 + segT segment ATTRIBUTE_UNUSED)
7090 +{
7091 + return fragP->fr_var;
7092 +}
7093 +
7094 +/* This macro may be defined to relax a frag. GAS will call this with the
7095 + * segment, the frag, and the change in size of all previous frags;
7096 + * md_relax_frag should return the change in size of the frag. */
7097 +static long
7098 +avr32_default_relax_frag (segT segment, fragS *fragP, long stretch)
7099 +{
7100 + int state, next_state;
7101 + symbolS *symbolP; /* The target symbol */
7102 + long growth = 0;
7103 +
7104 + state = next_state = fragP->fr_subtype;
7105 +
7106 + symbolP = fragP->fr_symbol;
7107 +
7108 + if (fragP->tc_frag_data.force_extended
7109 + || need_reloc(symbolP, segment, fragP->tc_frag_data.pcrel))
7110 + {
7111 + /* Symbol must be resolved by the linker. Emit the largest
7112 + possible opcode. */
7113 + while (relax_more(next_state) != AVR32_RS_NONE)
7114 + next_state = relax_more(next_state);
7115 + }
7116 + else
7117 + {
7118 + addressT address; /* The address of fragP */
7119 + addressT target; /* The address of the target symbol */
7120 + offsetT distance; /* The distance between the insn and the symbol */
7121 + fragS *sym_frag;
7122 +
7123 + address = fragP->fr_address;
7124 + target = fragP->fr_offset;
7125 + symbolP = fragP->fr_symbol;
7126 + sym_frag = symbol_get_frag(symbolP);
7127 +
7128 + address += fragP->fr_fix - fragP->fr_var;
7129 + target += S_GET_VALUE(symbolP);
7130 +
7131 + if (stretch != 0
7132 + && sym_frag->relax_marker != fragP->relax_marker
7133 + && S_GET_SEGMENT(symbolP) == segment)
7134 + /* if it was correctly aligned before, make sure it stays aligned */
7135 + target += stretch & (~0UL << avr32_rs_align(state));
7136 +
7137 + if (fragP->tc_frag_data.pcrel)
7138 + distance = target - (address & (~0UL << avr32_rs_align(state)));
7139 + else
7140 + distance = target;
7141 +
7142 + pr_debug("%s:%d: relax more? 0x%x - 0x%x = 0x%x (%d), align %d\n",
7143 + fragP->fr_file, fragP->fr_line, target, address,
7144 + distance, distance, avr32_rs_align(state));
7145 +
7146 + if (need_relax(state, distance))
7147 + {
7148 + if (relax_more(state) != AVR32_RS_NONE)
7149 + next_state = relax_more(state);
7150 + pr_debug("%s:%d: relax more %d -> %d (%d - %d, align %d)\n",
7151 + fragP->fr_file, fragP->fr_line, state, next_state,
7152 + target, address, avr32_rs_align(state));
7153 + }
7154 + }
7155 +
7156 + growth = avr32_rs_size(next_state) - avr32_rs_size(state);
7157 + fragP->fr_subtype = next_state;
7158 +
7159 + pr_debug("%s:%d: md_relax_frag: growth=%d, subtype=%d, opc=0x%08lx\n",
7160 + fragP->fr_file, fragP->fr_line, growth, fragP->fr_subtype,
7161 + avr32_opc_table[next_state].value);
7162 +
7163 + return growth;
7164 +}
7165 +
7166 +static long
7167 +avr32_lda_relax_frag(segT segment, fragS *fragP, long stretch)
7168 +{
7169 + struct cpool *pool= NULL;
7170 + unsigned int entry = 0;
7171 + addressT address, target;
7172 + offsetT distance;
7173 + symbolS *symbolP;
7174 + fragS *sym_frag;
7175 + long old_size, new_size;
7176 +
7177 + symbolP = fragP->fr_symbol;
7178 + old_size = fragP->fr_var;
7179 + if (!avr32_pic)
7180 + {
7181 + pool = fragP->tc_frag_data.pool;
7182 + entry = fragP->tc_frag_data.pool_entry;
7183 + }
7184 +
7185 + address = fragP->fr_address;
7186 + address += fragP->fr_fix - LDA_INITIAL_SIZE;
7187 +
7188 + if (!S_IS_DEFINED(symbolP) || S_FORCE_RELOC(symbolP, 1))
7189 + goto relax_max;
7190 +
7191 + target = fragP->fr_offset;
7192 + sym_frag = symbol_get_frag(symbolP);
7193 + target += S_GET_VALUE(symbolP);
7194 +
7195 + if (sym_frag->relax_marker != fragP->relax_marker
7196 + && S_GET_SEGMENT(symbolP) == segment)
7197 + target += stretch;
7198 +
7199 + distance = target - address;
7200 +
7201 + pr_debug("lda_relax_frag: target: %d, address: %d, var: %d\n",
7202 + target, address, fragP->fr_var);
7203 +
7204 + if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
7205 + && target <= 127 && (offsetT)target >= -128)
7206 + {
7207 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7208 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
7209 + pool->literals[entry].refcount--;
7210 + new_size = 2;
7211 + fragP->fr_subtype = LDA_SUBTYPE_MOV1;
7212 + }
7213 + else if (!avr32_pic && S_GET_SEGMENT(symbolP) == absolute_section
7214 + && target <= 1048575 && (offsetT)target >= -1048576)
7215 + {
7216 + if (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7217 + || fragP->fr_subtype == LDA_SUBTYPE_LDW)
7218 + pool->literals[entry].refcount--;
7219 + new_size = 4;
7220 + fragP->fr_subtype = LDA_SUBTYPE_MOV2;
7221 + }
7222 + else if (!linkrelax && S_GET_SEGMENT(symbolP) == segment
7223 + /* the field will be negated, so this is really -(-32768)
7224 + and -(32767) */
7225 + && distance <= 32768 && distance >= -32767)
7226 + {
7227 + if (!avr32_pic
7228 + && (fragP->fr_subtype == LDA_SUBTYPE_LDDPC
7229 + || fragP->fr_subtype == LDA_SUBTYPE_LDW))
7230 + pool->literals[entry].refcount--;
7231 + new_size = 4;
7232 + fragP->fr_subtype = LDA_SUBTYPE_SUB;
7233 + }
7234 + else
7235 + {
7236 + relax_max:
7237 + if (avr32_pic)
7238 + {
7239 + if (linkrelax)
7240 + {
7241 + new_size = 8;
7242 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD_LARGE;
7243 + }
7244 + else
7245 + {
7246 + new_size = 4;
7247 + fragP->fr_subtype = LDA_SUBTYPE_GOTLOAD;
7248 + }
7249 + }
7250 + else
7251 + {
7252 + if (fragP->fr_subtype != LDA_SUBTYPE_LDDPC
7253 + && fragP->fr_subtype != LDA_SUBTYPE_LDW)
7254 + pool->literals[entry].refcount++;
7255 +
7256 + sym_frag = symbol_get_frag(pool->symbol);
7257 + target = (sym_frag->fr_address + sym_frag->fr_fix
7258 + + pool->padding + pool->literals[entry].offset);
7259 +
7260 + pr_debug("cpool sym address: 0x%lx\n",
7261 + sym_frag->fr_address + sym_frag->fr_fix);
7262 +
7263 + know(pool->section == segment);
7264 +
7265 + if (sym_frag->relax_marker != fragP->relax_marker)
7266 + target += stretch;
7267 +
7268 + distance = target - address;
7269 + if (distance <= 508 && distance >= 0)
7270 + {
7271 + new_size = 2;
7272 + fragP->fr_subtype = LDA_SUBTYPE_LDDPC;
7273 + }
7274 + else
7275 + {
7276 + new_size = 4;
7277 + fragP->fr_subtype = LDA_SUBTYPE_LDW;
7278 + }
7279 +
7280 + pr_debug("lda_relax_frag (cpool): target=0x%lx, address=0x%lx, refcount=%d\n",
7281 + target, address, pool->literals[entry].refcount);
7282 + }
7283 + }
7284 +
7285 + fragP->fr_var = new_size;
7286 +
7287 + pr_debug("%s:%d: lda: relax pass done. subtype: %d, growth: %ld\n",
7288 + fragP->fr_file, fragP->fr_line,
7289 + fragP->fr_subtype, new_size - old_size);
7290 +
7291 + return new_size - old_size;
7292 +}
7293 +
7294 +static long
7295 +avr32_call_relax_frag(segT segment, fragS *fragP, long stretch)
7296 +{
7297 + struct cpool *pool = NULL;
7298 + unsigned int entry = 0;
7299 + addressT address, target;
7300 + offsetT distance;
7301 + symbolS *symbolP;
7302 + fragS *sym_frag;
7303 + long old_size, new_size;
7304 +
7305 + symbolP = fragP->fr_symbol;
7306 + old_size = fragP->fr_var;
7307 + if (!avr32_pic)
7308 + {
7309 + pool = fragP->tc_frag_data.pool;
7310 + entry = fragP->tc_frag_data.pool_entry;
7311 + }
7312 +
7313 + address = fragP->fr_address;
7314 + address += fragP->fr_fix - CALL_INITIAL_SIZE;
7315 +
7316 + if (need_reloc(symbolP, segment, 1))
7317 + {
7318 + pr_debug("call: must emit reloc\n");
7319 + goto relax_max;
7320 + }
7321 +
7322 + target = fragP->fr_offset;
7323 + sym_frag = symbol_get_frag(symbolP);
7324 + target += S_GET_VALUE(symbolP);
7325 +
7326 + if (sym_frag->relax_marker != fragP->relax_marker
7327 + && S_GET_SEGMENT(symbolP) == segment)
7328 + target += stretch;
7329 +
7330 + distance = target - address;
7331 +
7332 + if (distance <= 1022 && distance >= -1024)
7333 + {
7334 + pr_debug("call: distance is %d, emitting short rcall\n", distance);
7335 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7336 + pool->literals[entry].refcount--;
7337 + new_size = 2;
7338 + fragP->fr_subtype = CALL_SUBTYPE_RCALL1;
7339 + }
7340 + else if (distance <= 2097150 && distance >= -2097152)
7341 + {
7342 + pr_debug("call: distance is %d, emitting long rcall\n", distance);
7343 + if (!avr32_pic && fragP->fr_subtype == CALL_SUBTYPE_MCALL_CP)
7344 + pool->literals[entry].refcount--;
7345 + new_size = 4;
7346 + fragP->fr_subtype = CALL_SUBTYPE_RCALL2;
7347 + }
7348 + else
7349 + {
7350 + pr_debug("call: distance %d too far, emitting something big\n", distance);
7351 +
7352 + relax_max:
7353 + if (avr32_pic)
7354 + {
7355 + if (linkrelax)
7356 + {
7357 + new_size = 10;
7358 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_LARGE;
7359 + }
7360 + else
7361 + {
7362 + new_size = 4;
7363 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_GOT;
7364 + }
7365 + }
7366 + else
7367 + {
7368 + if (fragP->fr_subtype != CALL_SUBTYPE_MCALL_CP)
7369 + pool->literals[entry].refcount++;
7370 +
7371 + new_size = 4;
7372 + fragP->fr_subtype = CALL_SUBTYPE_MCALL_CP;
7373 + }
7374 + }
7375 +
7376 + fragP->fr_var = new_size;
7377 +
7378 + pr_debug("%s:%d: call: relax pass done, growth: %d, fr_var: %d\n",
7379 + fragP->fr_file, fragP->fr_line,
7380 + new_size - old_size, fragP->fr_var);
7381 +
7382 + return new_size - old_size;
7383 +}
7384 +
7385 +static long
7386 +avr32_cpool_relax_frag(segT segment ATTRIBUTE_UNUSED,
7387 + fragS *fragP,
7388 + long stretch ATTRIBUTE_UNUSED)
7389 +{
7390 + struct cpool *pool;
7391 + addressT address;
7392 + long old_size, new_size;
7393 + unsigned int entry;
7394 +
7395 + pool = fragP->tc_frag_data.pool;
7396 + address = fragP->fr_address + fragP->fr_fix;
7397 + old_size = fragP->fr_var;
7398 + new_size = 0;
7399 +
7400 + for (entry = 0; entry < pool->next_free_entry; entry++)
7401 + {
7402 + if (pool->literals[entry].refcount > 0)
7403 + {
7404 + pool->literals[entry].offset = new_size;
7405 + new_size += 4;
7406 + }
7407 + }
7408 +
7409 + fragP->fr_var = new_size;
7410 +
7411 + return new_size - old_size;
7412 +}
7413 +
7414 +/* *fragP has been relaxed to its final size, and now needs to have
7415 + the bytes inside it modified to conform to the new size.
7416 +
7417 + Called after relaxation is finished.
7418 + fragP->fr_type == rs_machine_dependent.
7419 + fragP->fr_subtype is the subtype of what the address relaxed to. */
7420 +
7421 +static void
7422 +avr32_default_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
7423 + segT segment ATTRIBUTE_UNUSED,
7424 + fragS *fragP)
7425 +{
7426 + const struct avr32_opcode *opc;
7427 + const struct avr32_ifield *ifield;
7428 + bfd_reloc_code_real_type r_type;
7429 + symbolS *symbolP;
7430 + fixS *fixP;
7431 + bfd_vma value;
7432 + int subtype;
7433 +
7434 + opc = &avr32_opc_table[fragP->fr_subtype];
7435 + ifield = opc->fields[opc->var_field];
7436 + symbolP = fragP->fr_symbol;
7437 + subtype = fragP->fr_subtype;
7438 + r_type = opc->reloc_type;
7439 +
7440 + /* Clear the opcode bits and the bits belonging to the relaxed
7441 + field. We assume all other fields stay the same. */
7442 + value = bfd_getb32(fragP->fr_opcode);
7443 + value &= ~(opc->mask | ifield->mask);
7444 +
7445 + /* Insert the new opcode */
7446 + value |= opc->value;
7447 + bfd_putb32(value, fragP->fr_opcode);
7448 +
7449 + fragP->fr_fix += opc->size - fragP->fr_var;
7450 +
7451 + if (fragP->tc_frag_data.reloc_info != AVR32_OPINFO_NONE)
7452 + {
7453 + switch (fragP->tc_frag_data.reloc_info)
7454 + {
7455 + case AVR32_OPINFO_HI:
7456 + r_type = BFD_RELOC_HI16;
7457 + break;
7458 + case AVR32_OPINFO_LO:
7459 + r_type = BFD_RELOC_LO16;
7460 + break;
7461 + case AVR32_OPINFO_GOT:
7462 + switch (r_type)
7463 + {
7464 + case BFD_RELOC_AVR32_18W_PCREL:
7465 + r_type = BFD_RELOC_AVR32_GOT18SW;
7466 + break;
7467 + case BFD_RELOC_AVR32_16S:
7468 + r_type = BFD_RELOC_AVR32_GOT16S;
7469 + break;
7470 + default:
7471 + BAD_CASE(r_type);
7472 + break;
7473 + }
7474 + break;
7475 + default:
7476 + BAD_CASE(fragP->tc_frag_data.reloc_info);
7477 + break;
7478 + }
7479 + }
7480 +
7481 + pr_debug("%s:%d: convert_frag: new %s fixup\n",
7482 + fragP->fr_file, fragP->fr_line,
7483 + bfd_get_reloc_code_name(r_type));
7484 +
7485 +#if 1
7486 + fixP = fix_new_exp(fragP, fragP->fr_fix - opc->size, opc->size,
7487 + &fragP->tc_frag_data.exp,
7488 + fragP->tc_frag_data.pcrel, r_type);
7489 +#else
7490 + fixP = fix_new(fragP, fragP->fr_fix - opc->size, opc->size, symbolP,
7491 + fragP->fr_offset, fragP->tc_frag_data.pcrel, r_type);
7492 +#endif
7493 +
7494 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7495 + the point of the fixup, relative to the frag address. fix_new()
7496 + and friends think they are only being called during the assembly
7497 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7498 + and fx_line are all initialized to the wrong value. But we don't
7499 + know the size of the fixup until now, so we really can't live up
7500 + to the assumptions these functions make about the target. What
7501 + do these functions think the "where" and "frag" argument mean
7502 + anyway? */
7503 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7504 + fixP->fx_file = fragP->fr_file;
7505 + fixP->fx_line = fragP->fr_line;
7506 +
7507 + fixP->tc_fix_data.ifield = ifield;
7508 + fixP->tc_fix_data.align = avr32_rs_align(subtype);
7509 + fixP->tc_fix_data.min = avr32_relax_table[subtype].lower_bound;
7510 + fixP->tc_fix_data.max = avr32_relax_table[subtype].upper_bound;
7511 +}
7512 +
7513 +static void
7514 +avr32_lda_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7515 + segT segment ATTRIBUTE_UNUSED,
7516 + fragS *fragP)
7517 +{
7518 + const struct avr32_opcode *opc;
7519 + const struct avr32_ifield *ifield;
7520 + bfd_reloc_code_real_type r_type;
7521 + expressionS exp;
7522 + struct cpool *pool;
7523 + fixS *fixP;
7524 + bfd_vma value;
7525 + int regid, pcrel = 0, align = 0;
7526 + char *p;
7527 +
7528 + r_type = BFD_RELOC_NONE;
7529 + regid = fragP->tc_frag_data.reloc_info;
7530 + p = fragP->fr_opcode;
7531 + exp.X_add_symbol = fragP->fr_symbol;
7532 + exp.X_add_number = fragP->fr_offset;
7533 + exp.X_op = O_symbol;
7534 +
7535 + pr_debug("%s:%d: lda_convert_frag, subtype: %d, fix: %d, var: %d, regid: %d\n",
7536 + fragP->fr_file, fragP->fr_line,
7537 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var, regid);
7538 +
7539 + switch (fragP->fr_subtype)
7540 + {
7541 + case LDA_SUBTYPE_MOV1:
7542 + opc = &avr32_opc_table[AVR32_OPC_MOV1];
7543 + opc->fields[0]->insert(opc->fields[0], p, regid);
7544 + ifield = opc->fields[1];
7545 + r_type = opc->reloc_type;
7546 + break;
7547 + case LDA_SUBTYPE_MOV2:
7548 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7549 + opc->fields[0]->insert(opc->fields[0], p, regid);
7550 + ifield = opc->fields[1];
7551 + r_type = opc->reloc_type;
7552 + break;
7553 + case LDA_SUBTYPE_SUB:
7554 + opc = &avr32_opc_table[AVR32_OPC_SUB5];
7555 + opc->fields[0]->insert(opc->fields[0], p, regid);
7556 + opc->fields[1]->insert(opc->fields[1], p, AVR32_REG_PC);
7557 + ifield = opc->fields[2];
7558 + r_type = BFD_RELOC_AVR32_16N_PCREL;
7559 +
7560 + /* Pretend that SUB5 isn't a "negated" pcrel expression for now.
7561 + We'll have to fix it up later when we know whether to
7562 + generate a reloc for it (in which case the linker will negate
7563 + it, so we shouldn't). */
7564 + pcrel = 1;
7565 + break;
7566 + case LDA_SUBTYPE_LDDPC:
7567 + opc = &avr32_opc_table[AVR32_OPC_LDDPC];
7568 + align = 2;
7569 + r_type = BFD_RELOC_AVR32_9W_CP;
7570 + goto cpool_common;
7571 + case LDA_SUBTYPE_LDW:
7572 + opc = &avr32_opc_table[AVR32_OPC_LDDPC_EXT];
7573 + r_type = BFD_RELOC_AVR32_16_CP;
7574 + cpool_common:
7575 + opc->fields[0]->insert(opc->fields[0], p, regid);
7576 + ifield = opc->fields[1];
7577 + pool = fragP->tc_frag_data.pool;
7578 + exp.X_add_symbol = pool->symbol;
7579 + exp.X_add_number = pool->literals[fragP->tc_frag_data.pool_entry].offset;
7580 + pcrel = 1;
7581 + break;
7582 + case LDA_SUBTYPE_GOTLOAD_LARGE:
7583 + /* ld.w Rd, r6[Rd << 2] (last) */
7584 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7585 + bfd_putb32(opc->value, p + 4);
7586 + opc->fields[0]->insert(opc->fields[0], p + 4, regid);
7587 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7588 + opc->fields[2]->insert(opc->fields[2], p + 4, regid);
7589 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7590 +
7591 + /* mov Rd, (got_offset / 4) */
7592 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7593 + opc->fields[0]->insert(opc->fields[0], p, regid);
7594 + ifield = opc->fields[1];
7595 + r_type = BFD_RELOC_AVR32_LDA_GOT;
7596 + break;
7597 + case LDA_SUBTYPE_GOTLOAD:
7598 + opc = &avr32_opc_table[AVR32_OPC_LD_W4];
7599 + opc->fields[0]->insert(opc->fields[0], p, regid);
7600 + opc->fields[1]->insert(opc->fields[1], p, 6);
7601 + ifield = opc->fields[2];
7602 + if (r_type == BFD_RELOC_NONE)
7603 + r_type = BFD_RELOC_AVR32_GOT16S;
7604 + break;
7605 + default:
7606 + BAD_CASE(fragP->fr_subtype);
7607 + }
7608 +
7609 + value = bfd_getb32(p);
7610 + value &= ~(opc->mask | ifield->mask);
7611 + value |= opc->value;
7612 + bfd_putb32(value, p);
7613 +
7614 + fragP->fr_fix += fragP->fr_var - LDA_INITIAL_SIZE;
7615 +
7616 + if (fragP->fr_next
7617 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7618 + != fragP->fr_fix))
7619 + {
7620 + fprintf(stderr, "LDA frag: fr_fix is wrong! fragP->fr_var = %ld, r_type = %s\n",
7621 + fragP->fr_var, bfd_get_reloc_code_name(r_type));
7622 + abort();
7623 + }
7624 +
7625 + fixP = fix_new_exp(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7626 + &exp, pcrel, r_type);
7627 +
7628 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7629 + the point of the fixup, relative to the frag address. fix_new()
7630 + and friends think they are only being called during the assembly
7631 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7632 + and fx_line are all initialized to the wrong value. But we don't
7633 + know the size of the fixup until now, so we really can't live up
7634 + to the assumptions these functions make about the target. What
7635 + do these functions think the "where" and "frag" argument mean
7636 + anyway? */
7637 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7638 + fixP->fx_file = fragP->fr_file;
7639 + fixP->fx_line = fragP->fr_line;
7640 +
7641 + fixP->tc_fix_data.ifield = ifield;
7642 + fixP->tc_fix_data.align = align;
7643 + /* these are only used if the fixup can actually be resolved */
7644 + fixP->tc_fix_data.min = -32768;
7645 + fixP->tc_fix_data.max = 32767;
7646 +}
7647 +
7648 +static void
7649 +avr32_call_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7650 + segT segment ATTRIBUTE_UNUSED,
7651 + fragS *fragP)
7652 +{
7653 + const struct avr32_opcode *opc = NULL;
7654 + const struct avr32_ifield *ifield;
7655 + bfd_reloc_code_real_type r_type;
7656 + symbolS *symbol;
7657 + offsetT offset;
7658 + fixS *fixP;
7659 + bfd_vma value;
7660 + int pcrel = 0, align = 0;
7661 + char *p;
7662 +
7663 + symbol = fragP->fr_symbol;
7664 + offset = fragP->fr_offset;
7665 + r_type = BFD_RELOC_NONE;
7666 + p = fragP->fr_opcode;
7667 +
7668 + pr_debug("%s:%d: call_convert_frag, subtype: %d, fix: %d, var: %d\n",
7669 + fragP->fr_file, fragP->fr_line,
7670 + fragP->fr_subtype, fragP->fr_fix, fragP->fr_var);
7671 +
7672 + switch (fragP->fr_subtype)
7673 + {
7674 + case CALL_SUBTYPE_RCALL1:
7675 + opc = &avr32_opc_table[AVR32_OPC_RCALL1];
7676 + /* fall through */
7677 + case CALL_SUBTYPE_RCALL2:
7678 + if (!opc)
7679 + opc = &avr32_opc_table[AVR32_OPC_RCALL2];
7680 + ifield = opc->fields[0];
7681 + r_type = opc->reloc_type;
7682 + pcrel = 1;
7683 + align = 1;
7684 + break;
7685 + case CALL_SUBTYPE_MCALL_CP:
7686 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7687 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_PC);
7688 + ifield = opc->fields[1];
7689 + r_type = BFD_RELOC_AVR32_CPCALL;
7690 + symbol = fragP->tc_frag_data.pool->symbol;
7691 + offset = fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].offset;
7692 + assert(fragP->tc_frag_data.pool->literals[fragP->tc_frag_data.pool_entry].refcount > 0);
7693 + pcrel = 1;
7694 + align = 2;
7695 + break;
7696 + case CALL_SUBTYPE_MCALL_GOT:
7697 + opc = &avr32_opc_table[AVR32_OPC_MCALL];
7698 + opc->fields[0]->insert(opc->fields[0], p, 6);
7699 + ifield = opc->fields[1];
7700 + r_type = BFD_RELOC_AVR32_GOT18SW;
7701 + break;
7702 + case CALL_SUBTYPE_MCALL_LARGE:
7703 + assert(fragP->fr_var == 10);
7704 + /* ld.w lr, r6[lr << 2] */
7705 + opc = &avr32_opc_table[AVR32_OPC_LD_W5];
7706 + bfd_putb32(opc->value, p + 4);
7707 + opc->fields[0]->insert(opc->fields[0], p + 4, AVR32_REG_LR);
7708 + opc->fields[1]->insert(opc->fields[1], p + 4, 6);
7709 + opc->fields[2]->insert(opc->fields[2], p + 4, AVR32_REG_LR);
7710 + opc->fields[3]->insert(opc->fields[3], p + 4, 2);
7711 +
7712 + /* icall lr */
7713 + opc = &avr32_opc_table[AVR32_OPC_ICALL];
7714 + bfd_putb16(opc->value >> 16, p + 8);
7715 + opc->fields[0]->insert(opc->fields[0], p + 8, AVR32_REG_LR);
7716 +
7717 + /* mov lr, (got_offset / 4) */
7718 + opc = &avr32_opc_table[AVR32_OPC_MOV2];
7719 + opc->fields[0]->insert(opc->fields[0], p, AVR32_REG_LR);
7720 + ifield = opc->fields[1];
7721 + r_type = BFD_RELOC_AVR32_GOTCALL;
7722 + break;
7723 + default:
7724 + BAD_CASE(fragP->fr_subtype);
7725 + }
7726 +
7727 + /* Insert the opcode and clear the variable ifield */
7728 + value = bfd_getb32(p);
7729 + value &= ~(opc->mask | ifield->mask);
7730 + value |= opc->value;
7731 + bfd_putb32(value, p);
7732 +
7733 + fragP->fr_fix += fragP->fr_var - CALL_INITIAL_SIZE;
7734 +
7735 + if (fragP->fr_next
7736 + && ((offsetT)(fragP->fr_next->fr_address - fragP->fr_address)
7737 + != fragP->fr_fix))
7738 + {
7739 + fprintf(stderr, "%s:%d: fr_fix %lu is wrong! fr_var=%lu, r_type=%s\n",
7740 + fragP->fr_file, fragP->fr_line,
7741 + fragP->fr_fix, fragP->fr_var, bfd_get_reloc_code_name(r_type));
7742 + fprintf(stderr, "fr_fix should be %ld. next frag is %s:%d\n",
7743 + (offsetT)(fragP->fr_next->fr_address - fragP->fr_address),
7744 + fragP->fr_next->fr_file, fragP->fr_next->fr_line);
7745 + }
7746 +
7747 + fixP = fix_new(fragP, fragP->fr_fix - fragP->fr_var, fragP->fr_var,
7748 + symbol, offset, pcrel, r_type);
7749 +
7750 + /* Revert fix_new brain damage. "dot_value" is the value of PC at
7751 + the point of the fixup, relative to the frag address. fix_new()
7752 + and friends think they are only being called during the assembly
7753 + pass, not during relaxation or similar, so fx_dot_value, fx_file
7754 + and fx_line are all initialized to the wrong value. But we don't
7755 + know the size of the fixup until now, so we really can't live up
7756 + to the assumptions these functions make about the target. What
7757 + do these functions think the "where" and "frag" argument mean
7758 + anyway? */
7759 + fixP->fx_dot_value = fragP->fr_fix - opc->size;
7760 + fixP->fx_file = fragP->fr_file;
7761 + fixP->fx_line = fragP->fr_line;
7762 +
7763 + fixP->tc_fix_data.ifield = ifield;
7764 + fixP->tc_fix_data.align = align;
7765 + /* these are only used if the fixup can actually be resolved */
7766 + fixP->tc_fix_data.min = -2097152;
7767 + fixP->tc_fix_data.max = 2097150;
7768 +}
7769 +
7770 +static void
7771 +avr32_cpool_convert_frag(bfd *abfd ATTRIBUTE_UNUSED,
7772 + segT segment ATTRIBUTE_UNUSED,
7773 + fragS *fragP)
7774 +{
7775 + struct cpool *pool;
7776 + addressT address;
7777 + unsigned int entry;
7778 + char *p;
7779 + char sym_name[20];
7780 +
7781 + /* Did we get rid of the frag altogether? */
7782 + if (!fragP->fr_var)
7783 + return;
7784 +
7785 + pool = fragP->tc_frag_data.pool;
7786 + address = fragP->fr_address + fragP->fr_fix;
7787 + p = fragP->fr_literal + fragP->fr_fix;
7788 +
7789 + sprintf(sym_name, "$$cp_\002%x", pool->id);
7790 + symbol_locate(pool->symbol, sym_name, pool->section, fragP->fr_fix, fragP);
7791 + symbol_table_insert(pool->symbol);
7792 +
7793 + for (entry = 0; entry < pool->next_free_entry; entry++)
7794 + {
7795 + if (pool->literals[entry].refcount > 0)
7796 + {
7797 + fix_new_exp(fragP, fragP->fr_fix, 4, &pool->literals[entry].exp,
7798 + FALSE, BFD_RELOC_AVR32_32_CPENT);
7799 + fragP->fr_fix += 4;
7800 + }
7801 + }
7802 +}
7803 +
7804 +static struct avr32_relaxer avr32_default_relaxer = {
7805 + .estimate_size = avr32_default_estimate_size_before_relax,
7806 + .relax_frag = avr32_default_relax_frag,
7807 + .convert_frag = avr32_default_convert_frag,
7808 +};
7809 +static struct avr32_relaxer avr32_lda_relaxer = {
7810 + .estimate_size = avr32_lda_estimate_size_before_relax,
7811 + .relax_frag = avr32_lda_relax_frag,
7812 + .convert_frag = avr32_lda_convert_frag,
7813 +};
7814 +static struct avr32_relaxer avr32_call_relaxer = {
7815 + .estimate_size = avr32_call_estimate_size_before_relax,
7816 + .relax_frag = avr32_call_relax_frag,
7817 + .convert_frag = avr32_call_convert_frag,
7818 +};
7819 +static struct avr32_relaxer avr32_cpool_relaxer = {
7820 + .estimate_size = avr32_cpool_estimate_size_before_relax,
7821 + .relax_frag = avr32_cpool_relax_frag,
7822 + .convert_frag = avr32_cpool_convert_frag,
7823 +};
7824 +
7825 +static void s_cpool(int arg ATTRIBUTE_UNUSED)
7826 +{
7827 + struct cpool *pool;
7828 + unsigned int max_size;
7829 + char *buf;
7830 +
7831 + pool = find_cpool(now_seg, now_subseg);
7832 + if (!pool || !pool->symbol || pool->next_free_entry == 0)
7833 + return;
7834 +
7835 + /* Make sure the constant pool is properly aligned */
7836 + frag_align_code(2, 0);
7837 + if (bfd_get_section_alignment(stdoutput, pool->section) < 2)
7838 + bfd_set_section_alignment(stdoutput, pool->section, 2);
7839 +
7840 + /* Assume none of the entries are discarded, and that we need the
7841 + maximum amount of alignment. But we're not going to allocate
7842 + anything up front. */
7843 + max_size = pool->next_free_entry * 4 + 2;
7844 + frag_grow(max_size);
7845 + buf = frag_more(0);
7846 +
7847 + frag_now->tc_frag_data.relaxer = &avr32_cpool_relaxer;
7848 + frag_now->tc_frag_data.pool = pool;
7849 +
7850 + symbol_set_frag(pool->symbol, frag_now);
7851 +
7852 + /* Assume zero initial size, allowing other relaxers to be
7853 + optimistic about things. */
7854 + frag_var(rs_machine_dependent, max_size, 0,
7855 + 0, pool->symbol, 0, NULL);
7856 +
7857 + /* Mark the pool as empty. */
7858 + pool->used = 1;
7859 +}
7860 +
7861 +/* The location from which a PC relative jump should be calculated,
7862 + given a PC relative reloc. */
7863 +
7864 +long
7865 +md_pcrel_from_section (fixS *fixP, segT sec)
7866 +{
7867 + pr_debug("pcrel_from_section, fx_offset = %d\n", fixP->fx_offset);
7868 +
7869 + if (fixP->fx_addsy != NULL
7870 + && (! S_IS_DEFINED (fixP->fx_addsy)
7871 + || S_GET_SEGMENT (fixP->fx_addsy) != sec
7872 + || S_FORCE_RELOC(fixP->fx_addsy, 1)))
7873 + {
7874 + pr_debug("Unknown pcrel symbol: %s\n", S_GET_NAME(fixP->fx_addsy));
7875 +
7876 + /* The symbol is undefined (or is defined but not in this section).
7877 + Let the linker figure it out. */
7878 + return 0;
7879 + }
7880 +
7881 + pr_debug("pcrel from %x + %x, symbol: %s (%x)\n",
7882 + fixP->fx_frag->fr_address, fixP->fx_where,
7883 + fixP->fx_addsy?S_GET_NAME(fixP->fx_addsy):"(null)",
7884 + fixP->fx_addsy?S_GET_VALUE(fixP->fx_addsy):0);
7885 +
7886 + return ((fixP->fx_frag->fr_address + fixP->fx_where)
7887 + & (~0UL << fixP->tc_fix_data.align));
7888 +}
7889 +
7890 +valueT
7891 +md_section_align (segT segment, valueT size)
7892 +{
7893 + int align = bfd_get_section_alignment (stdoutput, segment);
7894 + return ((size + (1 << align) - 1) & (-1 << align));
7895 +}
7896 +
7897 +static int syntax_matches(const struct avr32_syntax *syntax,
7898 + char *str)
7899 +{
7900 + int i;
7901 +
7902 + pr_debug("syntax %d matches `%s'?\n", syntax->id, str);
7903 +
7904 + if (syntax->nr_operands < 0)
7905 + {
7906 + struct avr32_operand *op;
7907 + int optype;
7908 +
7909 + for (i = 0; i < (-syntax->nr_operands - 1); i++)
7910 + {
7911 + char *p;
7912 + char c;
7913 +
7914 + optype = syntax->operand[i];
7915 + assert(optype < AVR32_NR_OPERANDS);
7916 + op = &avr32_operand_table[optype];
7917 +
7918 + for (p = str; *p; p++)
7919 + if (*p == ',')
7920 + break;
7921 +
7922 + if (p == str)
7923 + return 0;
7924 +
7925 + c = *p;
7926 + *p = 0;
7927 +
7928 + if (!op->match(str))
7929 + {
7930 + *p = c;
7931 + return 0;
7932 + }
7933 +
7934 + str = p;
7935 + *p = c;
7936 + if (c)
7937 + str++;
7938 + }
7939 +
7940 + optype = syntax->operand[i];
7941 + assert(optype < AVR32_NR_OPERANDS);
7942 + op = &avr32_operand_table[optype];
7943 +
7944 + if (!op->match(str))
7945 + return 0;
7946 + return 1;
7947 + }
7948 +
7949 + for (i = 0; i < syntax->nr_operands; i++)
7950 + {
7951 + struct avr32_operand *op;
7952 + int optype = syntax->operand[i];
7953 + char *p;
7954 + char c;
7955 +
7956 + assert(optype < AVR32_NR_OPERANDS);
7957 + op = &avr32_operand_table[optype];
7958 +
7959 + for (p = str; *p; p++)
7960 + if (*p == ',')
7961 + break;
7962 +
7963 + if (p == str)
7964 + return 0;
7965 +
7966 + c = *p;
7967 + *p = 0;
7968 +
7969 + if (!op->match(str))
7970 + {
7971 + *p = c;
7972 + return 0;
7973 + }
7974 +
7975 + str = p;
7976 + *p = c;
7977 + if (c)
7978 + str++;
7979 + }
7980 +
7981 + if (*str == '\0')
7982 + return 1;
7983 +
7984 + if ((*str == 'e' || *str == 'E') && !str[1])
7985 + return 1;
7986 +
7987 + return 0;
7988 +}
7989 +
7990 +static int parse_operands(char *str)
7991 +{
7992 + int i;
7993 +
7994 + if (current_insn.syntax->nr_operands < 0)
7995 + {
7996 + int optype;
7997 + struct avr32_operand *op;
7998 +
7999 + for (i = 0; i < (-current_insn.syntax->nr_operands - 1); i++)
8000 + {
8001 + char *p;
8002 + char c;
8003 +
8004 + optype = current_insn.syntax->operand[i];
8005 + op = &avr32_operand_table[optype];
8006 +
8007 + for (p = str; *p; p++)
8008 + if (*p == ',')
8009 + break;
8010 +
8011 + assert(p != str);
8012 +
8013 + c = *p, *p = 0;
8014 + op->parse(op, str, i);
8015 + *p = c;
8016 +
8017 + str = p;
8018 + if (c) str++;
8019 + }
8020 +
8021 + /* give the rest of the line to the last operand */
8022 + optype = current_insn.syntax->operand[i];
8023 + op = &avr32_operand_table[optype];
8024 + op->parse(op, str, i);
8025 + }
8026 + else
8027 + {
8028 + for (i = 0; i < current_insn.syntax->nr_operands; i++)
8029 + {
8030 + int optype = current_insn.syntax->operand[i];
8031 + struct avr32_operand *op = &avr32_operand_table[optype];
8032 + char *p;
8033 + char c;
8034 +
8035 + skip_whitespace(str);
8036 +
8037 + for (p = str; *p; p++)
8038 + if (*p == ',')
8039 + break;
8040 +
8041 + assert(p != str);
8042 +
8043 + c = *p, *p = 0;
8044 + op->parse(op, str, i);
8045 + *p = c;
8046 +
8047 + str = p;
8048 + if (c) str++;
8049 + }
8050 +
8051 + if (*str == 'E' || *str == 'e')
8052 + current_insn.force_extended = 1;
8053 + }
8054 +
8055 + return 0;
8056 +}
8057 +
8058 +static const char *
8059 +finish_insn(const struct avr32_opcode *opc)
8060 +{
8061 + expressionS *exp = &current_insn.immediate;
8062 + unsigned int i;
8063 + int will_relax = 0;
8064 + char *buf;
8065 +
8066 + assert(current_insn.next_slot == opc->nr_fields);
8067 +
8068 + pr_debug("%s:%d: finish_insn: trying opcode %d\n",
8069 + frag_now->fr_file, frag_now->fr_line, opc->id);
8070 +
8071 + /* Go through the relaxation stage for all instructions that can
8072 + possibly take a symbolic immediate. The relax code will take
8073 + care of range checking and alignment. */
8074 + if (opc->var_field != -1)
8075 + {
8076 + int substate, largest_substate;
8077 + symbolS *sym;
8078 + offsetT off;
8079 +
8080 + will_relax = 1;
8081 + substate = largest_substate = opc_initial_substate(opc);
8082 +
8083 + while (relax_more(largest_substate) != AVR32_RS_NONE)
8084 + largest_substate = relax_more(largest_substate);
8085 +
8086 + pr_debug("will relax. initial substate: %d (size %d), largest substate: %d (size %d)\n",
8087 + substate, avr32_rs_size(substate),
8088 + largest_substate, avr32_rs_size(largest_substate));
8089 +
8090 + /* make sure we have enough room for the largest possible opcode */
8091 + frag_grow(avr32_rs_size(largest_substate));
8092 + buf = frag_more(opc->size);
8093 +
8094 + dwarf2_emit_insn(opc->size);
8095 +
8096 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_NONE;
8097 + frag_now->tc_frag_data.pcrel = current_insn.pcrel;
8098 + frag_now->tc_frag_data.force_extended = current_insn.force_extended;
8099 + frag_now->tc_frag_data.relaxer = &avr32_default_relaxer;
8100 +
8101 + if (exp->X_op == O_hi)
8102 + {
8103 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_HI;
8104 + exp->X_op = exp->X_md;
8105 + }
8106 + else if (exp->X_op == O_lo)
8107 + {
8108 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_LO;
8109 + exp->X_op = exp->X_md;
8110 + }
8111 + else if (exp->X_op == O_got)
8112 + {
8113 + frag_now->tc_frag_data.reloc_info = AVR32_OPINFO_GOT;
8114 + exp->X_op = O_symbol;
8115 + }
8116 +
8117 +#if 0
8118 + if ((opc->reloc_type == BFD_RELOC_AVR32_SUB5)
8119 + && exp->X_op == O_subtract)
8120 + {
8121 + symbolS *tmp;
8122 + tmp = exp->X_add_symbol;
8123 + exp->X_add_symbol = exp->X_op_symbol;
8124 + exp->X_op_symbol = tmp;
8125 + }
8126 +#endif
8127 +
8128 + frag_now->tc_frag_data.exp = current_insn.immediate;
8129 +
8130 + sym = exp->X_add_symbol;
8131 + off = exp->X_add_number;
8132 + if (exp->X_op != O_symbol)
8133 + {
8134 + sym = make_expr_symbol(exp);
8135 + off = 0;
8136 + }
8137 +
8138 + frag_var(rs_machine_dependent,
8139 + avr32_rs_size(largest_substate) - opc->size,
8140 + opc->size,
8141 + substate, sym, off, buf);
8142 + }
8143 + else
8144 + {
8145 + assert(avr32_rs_size(opc_initial_substate(opc)) == 0);
8146 +
8147 + /* Make sure we always have room for another whole word, as the ifield
8148 + inserters can only write words. */
8149 + frag_grow(4);
8150 + buf = frag_more(opc->size);
8151 + dwarf2_emit_insn(opc->size);
8152 + }
8153 +
8154 + assert(!(opc->value & ~opc->mask));
8155 +
8156 + pr_debug("inserting opcode: 0x%lx\n", opc->value);
8157 + bfd_putb32(opc->value, buf);
8158 +
8159 + for (i = 0; i < opc->nr_fields; i++)
8160 + {
8161 + const struct avr32_ifield *f = opc->fields[i];
8162 + const struct avr32_ifield_data *fd = &current_insn.field_value[i];
8163 +
8164 + pr_debug("inserting field: 0x%lx & 0x%lx\n",
8165 + fd->value >> fd->align_order, f->mask);
8166 +
8167 + f->insert(f, buf, fd->value >> fd->align_order);
8168 + }
8169 +
8170 + assert(will_relax || !current_insn.immediate.X_add_symbol);
8171 + return NULL;
8172 +}
8173 +
8174 +static const char *
8175 +finish_alias(const struct avr32_alias *alias)
8176 +{
8177 + const struct avr32_opcode *opc;
8178 + struct {
8179 + unsigned long value;
8180 + unsigned long align;
8181 + } mapped_operand[AVR32_MAX_OPERANDS];
8182 + unsigned int i;
8183 +
8184 + opc = alias->opc;
8185 +
8186 + /* Remap the operands from the alias to the real opcode */
8187 + for (i = 0; i < opc->nr_fields; i++)
8188 + {
8189 + if (alias->operand_map[i].is_opindex)
8190 + {
8191 + struct avr32_ifield_data *fd;
8192 + fd = &current_insn.field_value[alias->operand_map[i].value];
8193 + mapped_operand[i].value = fd->value;
8194 + mapped_operand[i].align = fd->align_order;
8195 + }
8196 + else
8197 + {
8198 + mapped_operand[i].value = alias->operand_map[i].value;
8199 + mapped_operand[i].align = 0;
8200 + }
8201 + }
8202 +
8203 + for (i = 0; i < opc->nr_fields; i++)
8204 + {
8205 + current_insn.field_value[i].value = mapped_operand[i].value;
8206 + if (opc->id == AVR32_OPC_COP)
8207 + current_insn.field_value[i].align_order = 0;
8208 + else
8209 + current_insn.field_value[i].align_order
8210 + = mapped_operand[i].align;
8211 + }
8212 +
8213 + current_insn.next_slot = opc->nr_fields;
8214 +
8215 + return finish_insn(opc);
8216 +}
8217 +
8218 +static const char *
8219 +finish_lda(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
8220 +{
8221 + expressionS *exp = &current_insn.immediate;
8222 + relax_substateT initial_subtype;
8223 + symbolS *sym;
8224 + offsetT off;
8225 + int initial_size, max_size;
8226 + char *buf;
8227 +
8228 + initial_size = LDA_INITIAL_SIZE;
8229 +
8230 + if (avr32_pic)
8231 + {
8232 + initial_subtype = LDA_SUBTYPE_SUB;
8233 + if (linkrelax)
8234 + max_size = 8;
8235 + else
8236 + max_size = 4;
8237 + }
8238 + else
8239 + {
8240 + initial_subtype = LDA_SUBTYPE_MOV1;
8241 + max_size = 4;
8242 + }
8243 +
8244 + frag_grow(max_size);
8245 + buf = frag_more(initial_size);
8246 + dwarf2_emit_insn(initial_size);
8247 +
8248 + if (exp->X_op == O_symbol)
8249 + {
8250 + sym = exp->X_add_symbol;
8251 + off = exp->X_add_number;
8252 + }
8253 + else
8254 + {
8255 + sym = make_expr_symbol(exp);
8256 + off = 0;
8257 + }
8258 +
8259 + frag_now->tc_frag_data.reloc_info = current_insn.field_value[0].value;
8260 + frag_now->tc_frag_data.relaxer = &avr32_lda_relaxer;
8261 +
8262 + if (!avr32_pic)
8263 + {
8264 + /* The relaxer will bump the refcount if necessary */
8265 + frag_now->tc_frag_data.pool
8266 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
8267 + }
8268 +
8269 + frag_var(rs_machine_dependent, max_size - initial_size,
8270 + initial_size, initial_subtype, sym, off, buf);
8271 +
8272 + return NULL;
8273 +}
8274 +
8275 +static const char *
8276 +finish_call(const struct avr32_syntax *syntax ATTRIBUTE_UNUSED)
8277 +{
8278 + expressionS *exp = &current_insn.immediate;
8279 + symbolS *sym;
8280 + offsetT off;
8281 + int initial_size, max_size;
8282 + char *buf;
8283 +
8284 + initial_size = CALL_INITIAL_SIZE;
8285 +
8286 + if (avr32_pic)
8287 + {
8288 + if (linkrelax)
8289 + max_size = 10;
8290 + else
8291 + max_size = 4;
8292 + }
8293 + else
8294 + max_size = 4;
8295 +
8296 + frag_grow(max_size);
8297 + buf = frag_more(initial_size);
8298 + dwarf2_emit_insn(initial_size);
8299 +
8300 + frag_now->tc_frag_data.relaxer = &avr32_call_relaxer;
8301 +
8302 + if (exp->X_op == O_symbol)
8303 + {
8304 + sym = exp->X_add_symbol;
8305 + off = exp->X_add_number;
8306 + }
8307 + else
8308 + {
8309 + sym = make_expr_symbol(exp);
8310 + off = 0;
8311 + }
8312 +
8313 + if (!avr32_pic)
8314 + {
8315 + /* The relaxer will bump the refcount if necessary */
8316 + frag_now->tc_frag_data.pool
8317 + = add_to_cpool(exp, &frag_now->tc_frag_data.pool_entry, 0);
8318 + }
8319 +
8320 + frag_var(rs_machine_dependent, max_size - initial_size,
8321 + initial_size, CALL_SUBTYPE_RCALL1, sym, off, buf);
8322 +
8323 + return NULL;
8324 +}
8325 +
8326 +void
8327 +md_begin (void)
8328 +{
8329 + unsigned long flags = 0;
8330 + int i;
8331 +
8332 + avr32_mnemonic_htab = hash_new();
8333 +
8334 + if (!avr32_mnemonic_htab)
8335 + as_fatal(_("virtual memory exhausted"));
8336 +
8337 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8338 + {
8339 + hash_insert(avr32_mnemonic_htab, avr32_mnemonic_table[i].name,
8340 + (void *)&avr32_mnemonic_table[i]);
8341 + }
8342 +
8343 + if (linkrelax)
8344 + flags |= EF_AVR32_LINKRELAX;
8345 + if (avr32_pic)
8346 + flags |= EF_AVR32_PIC;
8347 +
8348 + bfd_set_private_flags(stdoutput, flags);
8349 +
8350 +#ifdef OPC_CONSISTENCY_CHECK
8351 + if (sizeof(avr32_operand_table)/sizeof(avr32_operand_table[0])
8352 + < AVR32_NR_OPERANDS)
8353 + as_fatal(_("operand table is incomplete"));
8354 +
8355 + for (i = 0; i < AVR32_NR_OPERANDS; i++)
8356 + if (avr32_operand_table[i].id != i)
8357 + as_fatal(_("operand table inconsistency found at index %d\n"), i);
8358 + pr_debug("%d operands verified\n", AVR32_NR_OPERANDS);
8359 +
8360 + for (i = 0; i < AVR32_NR_IFIELDS; i++)
8361 + if (avr32_ifield_table[i].id != i)
8362 + as_fatal(_("ifield table inconsistency found at index %d\n"), i);
8363 + pr_debug("%d instruction fields verified\n", AVR32_NR_IFIELDS);
8364 +
8365 + for (i = 0; i < AVR32_NR_OPCODES; i++)
8366 + {
8367 + if (avr32_opc_table[i].id != i)
8368 + as_fatal(_("opcode table inconsistency found at index %d\n"), i);
8369 + if ((avr32_opc_table[i].var_field == -1
8370 + && avr32_relax_table[i].length != 0)
8371 + || (avr32_opc_table[i].var_field != -1
8372 + && avr32_relax_table[i].length == 0))
8373 + as_fatal(_("relax table inconsistency found at index %d\n"), i);
8374 + }
8375 + pr_debug("%d opcodes verified\n", AVR32_NR_OPCODES);
8376 +
8377 + for (i = 0; i < AVR32_NR_SYNTAX; i++)
8378 + if (avr32_syntax_table[i].id != i)
8379 + as_fatal(_("syntax table inconsistency found at index %d\n"), i);
8380 + pr_debug("%d syntax variants verified\n", AVR32_NR_SYNTAX);
8381 +
8382 + for (i = 0; i < AVR32_NR_ALIAS; i++)
8383 + if (avr32_alias_table[i].id != i)
8384 + as_fatal(_("alias table inconsistency found at index %d\n"), i);
8385 + pr_debug("%d aliases verified\n", AVR32_NR_ALIAS);
8386 +
8387 + for (i = 0; i < AVR32_NR_MNEMONICS; i++)
8388 + if (avr32_mnemonic_table[i].id != i)
8389 + as_fatal(_("mnemonic table inconsistency found at index %d\n"), i);
8390 + pr_debug("%d mnemonics verified\n", AVR32_NR_MNEMONICS);
8391 +#endif
8392 +}
8393 +
8394 +void
8395 +md_assemble (char *str)
8396 +{
8397 + struct avr32_mnemonic *mnemonic;
8398 + char *p, c;
8399 +
8400 + memset(&current_insn, 0, sizeof(current_insn));
8401 + current_insn.immediate.X_op = O_constant;
8402 +
8403 + skip_whitespace(str);
8404 + for (p = str; *p; p++)
8405 + if (*p == ' ')
8406 + break;
8407 + c = *p;
8408 + *p = 0;
8409 +
8410 + mnemonic = hash_find(avr32_mnemonic_htab, str);
8411 + *p = c;
8412 + if (c) p++;
8413 +
8414 + if (mnemonic)
8415 + {
8416 + const struct avr32_syntax *syntax;
8417 +
8418 + for (syntax = mnemonic->syntax; syntax; syntax = syntax->next)
8419 + {
8420 + const char *errmsg = NULL;
8421 +
8422 + if (syntax_matches(syntax, p))
8423 + {
8424 + if (!(syntax->isa_flags & avr32_arch->isa_flags))
8425 + {
8426 + as_bad(_("Selected architecture `%s' does not support `%s'"),
8427 + avr32_arch->name, str);
8428 + return;
8429 + }
8430 +
8431 + current_insn.syntax = syntax;
8432 + parse_operands(p);
8433 +
8434 + switch (syntax->type)
8435 + {
8436 + case AVR32_PARSER_NORMAL:
8437 + errmsg = finish_insn(syntax->u.opc);
8438 + break;
8439 + case AVR32_PARSER_ALIAS:
8440 + errmsg = finish_alias(syntax->u.alias);
8441 + break;
8442 + case AVR32_PARSER_LDA:
8443 + errmsg = finish_lda(syntax);
8444 + break;
8445 + case AVR32_PARSER_CALL:
8446 + errmsg = finish_call(syntax);
8447 + break;
8448 + default:
8449 + BAD_CASE(syntax->type);
8450 + break;
8451 + }
8452 +
8453 + if (errmsg)
8454 + as_bad("%s in `%s'", errmsg, str);
8455 +
8456 + return;
8457 + }
8458 + }
8459 +
8460 + as_bad(_("unrecognized form of instruction: `%s'"), str);
8461 + }
8462 + else
8463 + as_bad(_("unrecognized instruction `%s'"), str);
8464 +}
8465 +
8466 +void avr32_cleanup(void)
8467 +{
8468 + struct cpool *pool;
8469 +
8470 + /* Emit any constant pools that haven't been explicitly flushed with
8471 + a .cpool directive. */
8472 + for (pool = cpool_list; pool; pool = pool->next)
8473 + {
8474 + subseg_set(pool->section, pool->sub_section);
8475 + s_cpool(0);
8476 + }
8477 +}
8478 +
8479 +/* Handle any PIC-related operands in data allocation pseudo-ops */
8480 +void
8481 +avr32_cons_fix_new (fragS *frag, int off, int size, expressionS *exp)
8482 +{
8483 + bfd_reloc_code_real_type r_type = BFD_RELOC_UNUSED;
8484 + int pcrel = 0;
8485 +
8486 + pr_debug("%s:%u: cons_fix_new, add_sym: %s, op_sym: %s, op: %d, add_num: %d\n",
8487 + frag->fr_file, frag->fr_line,
8488 + exp->X_add_symbol?S_GET_NAME(exp->X_add_symbol):"(none)",
8489 + exp->X_op_symbol?S_GET_NAME(exp->X_op_symbol):"(none)",
8490 + exp->X_op, exp->X_add_number);
8491 +
8492 + if (exp->X_op == O_subtract && exp->X_op_symbol)
8493 + {
8494 + if (exp->X_op_symbol == GOT_symbol)
8495 + {
8496 + if (size != 4)
8497 + goto bad_size;
8498 + r_type = BFD_RELOC_AVR32_GOTPC;
8499 + exp->X_op = O_symbol;
8500 + exp->X_op_symbol = NULL;
8501 + }
8502 + }
8503 + else if (exp->X_op == O_got)
8504 + {
8505 + switch (size)
8506 + {
8507 + case 1:
8508 + r_type = BFD_RELOC_AVR32_GOT8;
8509 + break;
8510 + case 2:
8511 + r_type = BFD_RELOC_AVR32_GOT16;
8512 + break;
8513 + case 4:
8514 + r_type = BFD_RELOC_AVR32_GOT32;
8515 + break;
8516 + default:
8517 + goto bad_size;
8518 + }
8519 +
8520 + exp->X_op = O_symbol;
8521 + }
8522 +
8523 + if (r_type == BFD_RELOC_UNUSED)
8524 + switch (size)
8525 + {
8526 + case 1:
8527 + r_type = BFD_RELOC_8;
8528 + break;
8529 + case 2:
8530 + r_type = BFD_RELOC_16;
8531 + break;
8532 + case 4:
8533 + r_type = BFD_RELOC_32;
8534 + break;
8535 + default:
8536 + goto bad_size;
8537 + }
8538 + else if (size != 4)
8539 + {
8540 + bad_size:
8541 + as_bad(_("unsupported BFD relocation size %u"), size);
8542 + r_type = BFD_RELOC_UNUSED;
8543 + }
8544 +
8545 + fix_new_exp (frag, off, size, exp, pcrel, r_type);
8546 +}
8547 +
8548 +static void
8549 +avr32_frob_section(bfd *abfd ATTRIBUTE_UNUSED, segT sec,
8550 + void *ignore ATTRIBUTE_UNUSED)
8551 +{
8552 + segment_info_type *seginfo;
8553 + fixS *fix;
8554 +
8555 + seginfo = seg_info(sec);
8556 + if (!seginfo)
8557 + return;
8558 +
8559 + for (fix = seginfo->fix_root; fix; fix = fix->fx_next)
8560 + {
8561 + if (fix->fx_done)
8562 + continue;
8563 +
8564 + if (fix->fx_r_type == BFD_RELOC_AVR32_SUB5
8565 + && fix->fx_addsy && fix->fx_subsy)
8566 + {
8567 + if (S_GET_SEGMENT(fix->fx_addsy) != S_GET_SEGMENT(fix->fx_subsy)
8568 + || linkrelax)
8569 + {
8570 + symbolS *tmp;
8571 +#ifdef DEBUG
8572 + fprintf(stderr, "Swapping symbols in fixup:\n");
8573 + print_fixup(fix);
8574 +#endif
8575 + tmp = fix->fx_addsy;
8576 + fix->fx_addsy = fix->fx_subsy;
8577 + fix->fx_subsy = tmp;
8578 + fix->fx_offset = -fix->fx_offset;
8579 + }
8580 + }
8581 + }
8582 +}
8583 +
8584 +/* We need to look for SUB5 instructions with expressions that will be
8585 + made PC-relative and switch fx_addsy with fx_subsy. This has to be
8586 + done before adjustment or the wrong symbol might be adjusted.
8587 +
8588 + This applies to fixups that are a result of expressions like -(sym
8589 + - .) and that will make it all the way to md_apply_fix3(). LDA
8590 + does the right thing in convert_frag, so we must not convert
8591 + those. */
8592 +void
8593 +avr32_frob_file(void)
8594 +{
8595 + /* if (1 || !linkrelax)
8596 + return; */
8597 +
8598 + bfd_map_over_sections(stdoutput, avr32_frob_section, NULL);
8599 +}
8600 +
8601 +static bfd_boolean
8602 +convert_to_diff_reloc(fixS *fixP)
8603 +{
8604 + switch (fixP->fx_r_type)
8605 + {
8606 + case BFD_RELOC_32:
8607 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8608 + break;
8609 + case BFD_RELOC_16:
8610 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF16;
8611 + break;
8612 + case BFD_RELOC_8:
8613 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF8;
8614 + break;
8615 + default:
8616 + return FALSE;
8617 + }
8618 +
8619 + return TRUE;
8620 +}
8621 +
8622 +/* Simplify a fixup. If possible, the fixup is reduced to a single
8623 + constant which is written to the output file. Otherwise, a
8624 + relocation is generated so that the linker can take care of the
8625 + rest.
8626 +
8627 + ELF relocations have certain constraints: They can only take a
8628 + single symbol and a single addend. This means that for difference
8629 + expressions, we _must_ get rid of the fx_subsy symbol somehow.
8630 +
8631 + The difference between two labels in the same section can be
8632 + calculated directly unless 'linkrelax' is set, or a relocation is
8633 + forced. If so, we must emit a R_AVR32_DIFFxx relocation. If there
8634 + are addends involved at this point, we must be especially careful
8635 + as the relocation must point exactly to the symbol being
8636 + subtracted.
8637 +
8638 + When subtracting a symbol defined in the same section as the fixup,
8639 + we might be able to convert it to a PC-relative expression, unless
8640 + linkrelax is set. If this is the case, there's no way we can make
8641 + sure that the difference between the fixup and fx_subsy stays
8642 + constant. So for now, we're just going to disallow that.
8643 + */
8644 +void
8645 +avr32_process_fixup(fixS *fixP, segT this_segment)
8646 +{
8647 + segT add_symbol_segment = absolute_section;
8648 + segT sub_symbol_segment = absolute_section;
8649 + symbolS *fx_addsy, *fx_subsy;
8650 + offsetT value = 0, fx_offset;
8651 + bfd_boolean apply = FALSE;
8652 +
8653 + assert(this_segment != absolute_section);
8654 +
8655 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8656 + {
8657 + as_bad_where(fixP->fx_file, fixP->fx_line,
8658 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8659 + return;
8660 + }
8661 +
8662 + /* BFD_RELOC_AVR32_SUB5 fixups have been swapped by avr32_frob_section() */
8663 + fx_addsy = fixP->fx_addsy;
8664 + fx_subsy = fixP->fx_subsy;
8665 + fx_offset = fixP->fx_offset;
8666 +
8667 + if (fx_addsy)
8668 + add_symbol_segment = S_GET_SEGMENT(fx_addsy);
8669 +
8670 + if (fx_subsy)
8671 + {
8672 + resolve_symbol_value(fx_subsy);
8673 + sub_symbol_segment = S_GET_SEGMENT(fx_subsy);
8674 +
8675 + if (sub_symbol_segment == this_segment
8676 + && (!linkrelax
8677 + || S_GET_VALUE(fx_subsy) == (fixP->fx_frag->fr_address
8678 + + fixP->fx_where)))
8679 + {
8680 + fixP->fx_pcrel = TRUE;
8681 + fx_offset += (fixP->fx_frag->fr_address + fixP->fx_where
8682 + - S_GET_VALUE(fx_subsy));
8683 + fx_subsy = NULL;
8684 + }
8685 + else if (sub_symbol_segment == absolute_section)
8686 + {
8687 + /* The symbol is really a constant. */
8688 + fx_offset -= S_GET_VALUE(fx_subsy);
8689 + fx_subsy = NULL;
8690 + }
8691 + else if (SEG_NORMAL(add_symbol_segment)
8692 + && sub_symbol_segment == add_symbol_segment
8693 + && (!linkrelax || convert_to_diff_reloc(fixP)))
8694 + {
8695 + /* Difference between two labels in the same section. */
8696 + if (linkrelax)
8697 + {
8698 + /* convert_to_diff() has ensured that the reloc type is
8699 + either DIFF32, DIFF16 or DIFF8. */
8700 + value = (S_GET_VALUE(fx_addsy) + fixP->fx_offset
8701 + - S_GET_VALUE(fx_subsy));
8702 +
8703 + /* Try to convert it to a section symbol if possible */
8704 + if (!S_FORCE_RELOC(fx_addsy, 1)
8705 + && !(sub_symbol_segment->flags & SEC_THREAD_LOCAL))
8706 + {
8707 + fx_offset = S_GET_VALUE(fx_subsy);
8708 + fx_addsy = section_symbol(sub_symbol_segment);
8709 + }
8710 + else
8711 + {
8712 + fx_addsy = fx_subsy;
8713 + fx_offset = 0;
8714 + }
8715 +
8716 + fx_subsy = NULL;
8717 + apply = TRUE;
8718 + }
8719 + else
8720 + {
8721 + fx_offset += S_GET_VALUE(fx_addsy);
8722 + fx_offset -= S_GET_VALUE(fx_subsy);
8723 + fx_addsy = NULL;
8724 + fx_subsy = NULL;
8725 + }
8726 + }
8727 + else
8728 + {
8729 + as_bad_where(fixP->fx_file, fixP->fx_line,
8730 + _("can't resolve `%s' {%s section} - `%s' {%s section}"),
8731 + fx_addsy ? S_GET_NAME (fx_addsy) : "0",
8732 + segment_name (add_symbol_segment),
8733 + S_GET_NAME (fx_subsy),
8734 + segment_name (sub_symbol_segment));
8735 + return;
8736 + }
8737 + }
8738 +
8739 + if (fx_addsy && !TC_FORCE_RELOCATION(fixP))
8740 + {
8741 + if (add_symbol_segment == this_segment
8742 + && fixP->fx_pcrel)
8743 + {
8744 + value += S_GET_VALUE(fx_addsy);
8745 + value -= md_pcrel_from_section(fixP, this_segment);
8746 + fx_addsy = NULL;
8747 + fixP->fx_pcrel = FALSE;
8748 + }
8749 + else if (add_symbol_segment == absolute_section)
8750 + {
8751 + fx_offset += S_GET_VALUE(fixP->fx_addsy);
8752 + fx_addsy = NULL;
8753 + }
8754 + }
8755 +
8756 + if (!fx_addsy)
8757 + fixP->fx_done = TRUE;
8758 +
8759 + if (fixP->fx_pcrel)
8760 + {
8761 + if (fx_addsy != NULL
8762 + && S_IS_DEFINED(fx_addsy)
8763 + && S_GET_SEGMENT(fx_addsy) != this_segment)
8764 + value += md_pcrel_from_section(fixP, this_segment);
8765 +
8766 + switch (fixP->fx_r_type)
8767 + {
8768 + case BFD_RELOC_32:
8769 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8770 + break;
8771 + case BFD_RELOC_16:
8772 + fixP->fx_r_type = BFD_RELOC_16_PCREL;
8773 + break;
8774 + case BFD_RELOC_8:
8775 + fixP->fx_r_type = BFD_RELOC_8_PCREL;
8776 + break;
8777 + case BFD_RELOC_AVR32_SUB5:
8778 + fixP->fx_r_type = BFD_RELOC_AVR32_16N_PCREL;
8779 + break;
8780 + case BFD_RELOC_AVR32_16S:
8781 + fixP->fx_r_type = BFD_RELOC_AVR32_16B_PCREL;
8782 + break;
8783 + case BFD_RELOC_AVR32_14UW:
8784 + fixP->fx_r_type = BFD_RELOC_AVR32_14UW_PCREL;
8785 + break;
8786 + case BFD_RELOC_AVR32_10UW:
8787 + fixP->fx_r_type = BFD_RELOC_AVR32_10UW_PCREL;
8788 + break;
8789 + default:
8790 + /* Should have been taken care of already */
8791 + break;
8792 + }
8793 + }
8794 +
8795 + if (fixP->fx_done || apply)
8796 + {
8797 + const struct avr32_ifield *ifield;
8798 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8799 +
8800 + if (fixP->fx_done)
8801 + value += fx_offset;
8802 +
8803 + /* For hosts with longs bigger than 32-bits make sure that the top
8804 + bits of a 32-bit negative value read in by the parser are set,
8805 + so that the correct comparisons are made. */
8806 + if (value & 0x80000000)
8807 + value |= (-1L << 31);
8808 +
8809 + switch (fixP->fx_r_type)
8810 + {
8811 + case BFD_RELOC_32:
8812 + case BFD_RELOC_16:
8813 + case BFD_RELOC_8:
8814 + case BFD_RELOC_AVR32_DIFF32:
8815 + case BFD_RELOC_AVR32_DIFF16:
8816 + case BFD_RELOC_AVR32_DIFF8:
8817 + md_number_to_chars(buf, value, fixP->fx_size);
8818 + break;
8819 + case BFD_RELOC_HI16:
8820 + value >>= 16;
8821 + case BFD_RELOC_LO16:
8822 + value &= 0xffff;
8823 + md_number_to_chars(buf + 2, value, 2);
8824 + break;
8825 + case BFD_RELOC_AVR32_16N_PCREL:
8826 + value = -value;
8827 + /* fall through */
8828 + case BFD_RELOC_AVR32_22H_PCREL:
8829 + case BFD_RELOC_AVR32_18W_PCREL:
8830 + case BFD_RELOC_AVR32_16B_PCREL:
8831 + case BFD_RELOC_AVR32_11H_PCREL:
8832 + case BFD_RELOC_AVR32_9H_PCREL:
8833 + case BFD_RELOC_AVR32_9UW_PCREL:
8834 + case BFD_RELOC_AVR32_3U:
8835 + case BFD_RELOC_AVR32_4UH:
8836 + case BFD_RELOC_AVR32_6UW:
8837 + case BFD_RELOC_AVR32_6S:
8838 + case BFD_RELOC_AVR32_7UW:
8839 + case BFD_RELOC_AVR32_8S_EXT:
8840 + case BFD_RELOC_AVR32_8S:
8841 + case BFD_RELOC_AVR32_10UW:
8842 + case BFD_RELOC_AVR32_10SW:
8843 + case BFD_RELOC_AVR32_STHH_W:
8844 + case BFD_RELOC_AVR32_14UW:
8845 + case BFD_RELOC_AVR32_16S:
8846 + case BFD_RELOC_AVR32_16U:
8847 + case BFD_RELOC_AVR32_21S:
8848 + case BFD_RELOC_AVR32_SUB5:
8849 + case BFD_RELOC_AVR32_CPCALL:
8850 + case BFD_RELOC_AVR32_16_CP:
8851 + case BFD_RELOC_AVR32_9W_CP:
8852 + case BFD_RELOC_AVR32_15S:
8853 + ifield = fixP->tc_fix_data.ifield;
8854 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
8855 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
8856 + fixP->tc_fix_data.align);
8857 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
8858 + as_bad_where(fixP->fx_file, fixP->fx_line,
8859 + _("operand out of range (%ld not between %ld and %ld)"),
8860 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
8861 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
8862 + as_bad_where(fixP->fx_file, fixP->fx_line,
8863 + _("misaligned operand (required alignment: %d)"),
8864 + 1 << fixP->tc_fix_data.align);
8865 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
8866 + break;
8867 + case BFD_RELOC_AVR32_ALIGN:
8868 + /* Nothing to do */
8869 + fixP->fx_done = FALSE;
8870 + break;
8871 + default:
8872 + as_fatal("reloc type %s not handled\n",
8873 + bfd_get_reloc_code_name(fixP->fx_r_type));
8874 + }
8875 + }
8876 +
8877 + fixP->fx_addsy = fx_addsy;
8878 + fixP->fx_subsy = fx_subsy;
8879 + fixP->fx_offset = fx_offset;
8880 +
8881 + if (!fixP->fx_done)
8882 + {
8883 + if (!fixP->fx_addsy)
8884 + fixP->fx_addsy = abs_section_sym;
8885 +
8886 + symbol_mark_used_in_reloc(fixP->fx_addsy);
8887 + if (fixP->fx_subsy)
8888 + abort();
8889 + }
8890 +}
8891 +
8892 +#if 0
8893 +void
8894 +md_apply_fix3 (fixS *fixP, valueT *valP, segT seg)
8895 +{
8896 + const struct avr32_ifield *ifield;
8897 + offsetT value = *valP;
8898 + char *buf = fixP->fx_where + fixP->fx_frag->fr_literal;
8899 + bfd_boolean apply;
8900 +
8901 + pr_debug("%s:%u: apply_fix3: r_type=%d value=%lx offset=%lx\n",
8902 + fixP->fx_file, fixP->fx_line, fixP->fx_r_type, *valP,
8903 + fixP->fx_offset);
8904 +
8905 + if (fixP->fx_r_type >= BFD_RELOC_UNUSED)
8906 + {
8907 + as_bad_where(fixP->fx_file, fixP->fx_line,
8908 + _("Bad relocation type %d\n"), fixP->fx_r_type);
8909 + return;
8910 + }
8911 +
8912 + if (!fixP->fx_addsy && !fixP->fx_subsy)
8913 + fixP->fx_done = 1;
8914 +
8915 + if (fixP->fx_pcrel)
8916 + {
8917 + if (fixP->fx_addsy != NULL
8918 + && S_IS_DEFINED(fixP->fx_addsy)
8919 + && S_GET_SEGMENT(fixP->fx_addsy) != seg)
8920 + value += md_pcrel_from_section(fixP, seg);
8921 +
8922 + switch (fixP->fx_r_type)
8923 + {
8924 + case BFD_RELOC_32:
8925 + fixP->fx_r_type = BFD_RELOC_32_PCREL;
8926 + break;
8927 + case BFD_RELOC_16:
8928 + case BFD_RELOC_8:
8929 + as_bad_where (fixP->fx_file, fixP->fx_line,
8930 + _("8- and 16-bit PC-relative relocations not supported"));
8931 + break;
8932 + case BFD_RELOC_AVR32_SUB5:
8933 + fixP->fx_r_type = BFD_RELOC_AVR32_PCREL_SUB5;
8934 + break;
8935 + case BFD_RELOC_AVR32_16S:
8936 + fixP->fx_r_type = BFD_RELOC_AVR32_16_PCREL;
8937 + break;
8938 + default:
8939 + /* Should have been taken care of already */
8940 + break;
8941 + }
8942 + }
8943 +
8944 + if (fixP->fx_r_type == BFD_RELOC_32
8945 + && fixP->fx_subsy)
8946 + {
8947 + fixP->fx_r_type = BFD_RELOC_AVR32_DIFF32;
8948 +
8949 + /* Offsets are only allowed if it's a result of adjusting a
8950 + local symbol into a section-relative offset.
8951 + tc_fix_adjustable() should prevent any adjustment if there
8952 + was an offset involved before. */
8953 + if (fixP->fx_offset && !symbol_section_p(fixP->fx_addsy))
8954 + as_bad_where(fixP->fx_file, fixP->fx_line,
8955 + _("cannot represent symbol difference with an offset"));
8956 +
8957 + value = (S_GET_VALUE(fixP->fx_addsy) + fixP->fx_offset
8958 + - S_GET_VALUE(fixP->fx_subsy));
8959 +
8960 + /* The difference before any relaxing takes place is written
8961 + out, and the DIFF32 reloc identifies the address of the first
8962 + symbol (i.e. the on that's subtracted.) */
8963 + *valP = value;
8964 + fixP->fx_offset -= value;
8965 + fixP->fx_subsy = NULL;
8966 +
8967 + md_number_to_chars(buf, value, fixP->fx_size);
8968 + }
8969 +
8970 + if (fixP->fx_done)
8971 + {
8972 + switch (fixP->fx_r_type)
8973 + {
8974 + case BFD_RELOC_8:
8975 + case BFD_RELOC_16:
8976 + case BFD_RELOC_32:
8977 + md_number_to_chars(buf, value, fixP->fx_size);
8978 + break;
8979 + case BFD_RELOC_HI16:
8980 + value >>= 16;
8981 + case BFD_RELOC_LO16:
8982 + value &= 0xffff;
8983 + *valP = value;
8984 + md_number_to_chars(buf + 2, value, 2);
8985 + break;
8986 + case BFD_RELOC_AVR32_PCREL_SUB5:
8987 + value = -value;
8988 + /* fall through */
8989 + case BFD_RELOC_AVR32_9_PCREL:
8990 + case BFD_RELOC_AVR32_11_PCREL:
8991 + case BFD_RELOC_AVR32_16_PCREL:
8992 + case BFD_RELOC_AVR32_18_PCREL:
8993 + case BFD_RELOC_AVR32_22_PCREL:
8994 + case BFD_RELOC_AVR32_3U:
8995 + case BFD_RELOC_AVR32_4UH:
8996 + case BFD_RELOC_AVR32_6UW:
8997 + case BFD_RELOC_AVR32_6S:
8998 + case BFD_RELOC_AVR32_7UW:
8999 + case BFD_RELOC_AVR32_8S:
9000 + case BFD_RELOC_AVR32_10UW:
9001 + case BFD_RELOC_AVR32_10SW:
9002 + case BFD_RELOC_AVR32_14UW:
9003 + case BFD_RELOC_AVR32_16S:
9004 + case BFD_RELOC_AVR32_16U:
9005 + case BFD_RELOC_AVR32_21S:
9006 + case BFD_RELOC_AVR32_BRC1:
9007 + case BFD_RELOC_AVR32_SUB5:
9008 + case BFD_RELOC_AVR32_CPCALL:
9009 + case BFD_RELOC_AVR32_16_CP:
9010 + case BFD_RELOC_AVR32_9_CP:
9011 + case BFD_RELOC_AVR32_15S:
9012 + ifield = fixP->tc_fix_data.ifield;
9013 + pr_debug("insert field: %ld <= %ld <= %ld (align %u)\n",
9014 + fixP->tc_fix_data.min, value, fixP->tc_fix_data.max,
9015 + fixP->tc_fix_data.align);
9016 + if (value < fixP->tc_fix_data.min || value > fixP->tc_fix_data.max)
9017 + as_bad_where(fixP->fx_file, fixP->fx_line,
9018 + _("operand out of range (%ld not between %ld and %ld)"),
9019 + value, fixP->tc_fix_data.min, fixP->tc_fix_data.max);
9020 + if (value & ((1 << fixP->tc_fix_data.align) - 1))
9021 + as_bad_where(fixP->fx_file, fixP->fx_line,
9022 + _("misaligned operand (required alignment: %d)"),
9023 + 1 << fixP->tc_fix_data.align);
9024 + ifield->insert(ifield, buf, value >> fixP->tc_fix_data.align);
9025 + break;
9026 + case BFD_RELOC_AVR32_ALIGN:
9027 + /* Nothing to do */
9028 + fixP->fx_done = FALSE;
9029 + break;
9030 + default:
9031 + as_fatal("reloc type %s not handled\n",
9032 + bfd_get_reloc_code_name(fixP->fx_r_type));
9033 + }
9034 + }
9035 +}
9036 +#endif
9037 +
9038 +arelent *
9039 +tc_gen_reloc (asection *section ATTRIBUTE_UNUSED,
9040 + fixS *fixp)
9041 +{
9042 + arelent *reloc;
9043 + bfd_reloc_code_real_type code;
9044 +
9045 + reloc = xmalloc (sizeof (arelent));
9046 +
9047 + reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *));
9048 + *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
9049 + reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
9050 + reloc->addend = fixp->fx_offset;
9051 + code = fixp->fx_r_type;
9052 +
9053 + reloc->howto = bfd_reloc_type_lookup (stdoutput, code);
9054 +
9055 + if (reloc->howto == NULL)
9056 + {
9057 + as_bad_where (fixp->fx_file, fixp->fx_line,
9058 + _("cannot represent relocation %s in this object file format"),
9059 + bfd_get_reloc_code_name (code));
9060 + return NULL;
9061 + }
9062 +
9063 + return reloc;
9064 +}
9065 +
9066 +bfd_boolean
9067 +avr32_force_reloc(fixS *fixP)
9068 +{
9069 + if (linkrelax && fixP->fx_addsy
9070 + && !(S_GET_SEGMENT(fixP->fx_addsy)->flags & SEC_DEBUGGING)
9071 + && S_GET_SEGMENT(fixP->fx_addsy) != absolute_section)
9072 + {
9073 + pr_debug(stderr, "force reloc: addsy=%p, r_type=%d, sec=%s\n",
9074 + fixP->fx_addsy, fixP->fx_r_type, S_GET_SEGMENT(fixP->fx_addsy)->name);
9075 + return 1;
9076 + }
9077 +
9078 + return generic_force_reloc(fixP);
9079 +}
9080 +
9081 +bfd_boolean
9082 +avr32_fix_adjustable(fixS *fixP)
9083 +{
9084 + switch (fixP->fx_r_type)
9085 + {
9086 + /* GOT relocations can't have addends since BFD treats all
9087 + references to a given symbol the same. This means that we
9088 + must avoid section-relative references to local symbols when
9089 + dealing with these kinds of relocs */
9090 + case BFD_RELOC_AVR32_GOT32:
9091 + case BFD_RELOC_AVR32_GOT16:
9092 + case BFD_RELOC_AVR32_GOT8:
9093 + case BFD_RELOC_AVR32_GOT21S:
9094 + case BFD_RELOC_AVR32_GOT18SW:
9095 + case BFD_RELOC_AVR32_GOT16S:
9096 + case BFD_RELOC_AVR32_LDA_GOT:
9097 + case BFD_RELOC_AVR32_GOTCALL:
9098 + pr_debug("fix not adjustable\n");
9099 + return 0;
9100 +
9101 + default:
9102 + break;
9103 + }
9104 +
9105 + return 1;
9106 +}
9107 +
9108 +/* When we want the linker to be able to relax the code, we need to
9109 + output a reloc for every .align directive requesting an alignment
9110 + to a four byte boundary or larger. If we don't do this, the linker
9111 + can't guarantee that the alignment is actually maintained in the
9112 + linker output.
9113 +
9114 + TODO: Might as well insert proper NOPs while we're at it... */
9115 +void
9116 +avr32_handle_align(fragS *frag)
9117 +{
9118 + if (linkrelax
9119 + && frag->fr_type == rs_align_code
9120 + && frag->fr_address + frag->fr_fix > 0
9121 + && frag->fr_offset > 0)
9122 + {
9123 + /* The alignment order (fr_offset) is stored in the addend. */
9124 + fix_new(frag, frag->fr_fix, 2, &abs_symbol, frag->fr_offset,
9125 + FALSE, BFD_RELOC_AVR32_ALIGN);
9126 + }
9127 +}
9128 +
9129 +/* Relax_align. Advance location counter to next address that has 'alignment'
9130 + lowest order bits all 0s, return size of adjustment made. */
9131 +relax_addressT
9132 +avr32_relax_align(segT segment ATTRIBUTE_UNUSED,
9133 + fragS *fragP,
9134 + relax_addressT address)
9135 +{
9136 + relax_addressT mask;
9137 + relax_addressT new_address;
9138 + int alignment;
9139 +
9140 + alignment = fragP->fr_offset;
9141 + mask = ~((~0) << alignment);
9142 + new_address = (address + mask) & (~mask);
9143 +
9144 + return new_address - address;
9145 +}
9146 +
9147 +/* Turn a string in input_line_pointer into a floating point constant
9148 + of type type, and store the appropriate bytes in *litP. The number
9149 + of LITTLENUMS emitted is stored in *sizeP . An error message is
9150 + returned, or NULL on OK. */
9151 +
9152 +/* Equal to MAX_PRECISION in atof-ieee.c */
9153 +#define MAX_LITTLENUMS 6
9154 +
9155 +char *
9156 +md_atof (type, litP, sizeP)
9157 +char type;
9158 +char * litP;
9159 +int * sizeP;
9160 +{
9161 + int i;
9162 + int prec;
9163 + LITTLENUM_TYPE words [MAX_LITTLENUMS];
9164 + char * t;
9165 +
9166 + switch (type)
9167 + {
9168 + case 'f':
9169 + case 'F':
9170 + case 's':
9171 + case 'S':
9172 + prec = 2;
9173 + break;
9174 +
9175 + case 'd':
9176 + case 'D':
9177 + case 'r':
9178 + case 'R':
9179 + prec = 4;
9180 + break;
9181 +
9182 + /* FIXME: Some targets allow other format chars for bigger sizes here. */
9183 +
9184 + default:
9185 + * sizeP = 0;
9186 + return _("Bad call to md_atof()");
9187 + }
9188 +
9189 + t = atof_ieee (input_line_pointer, type, words);
9190 + if (t)
9191 + input_line_pointer = t;
9192 + * sizeP = prec * sizeof (LITTLENUM_TYPE);
9193 +
9194 + for (i = 0; i < prec; i++)
9195 + {
9196 + md_number_to_chars (litP, (valueT) words[i],
9197 + sizeof (LITTLENUM_TYPE));
9198 + litP += sizeof (LITTLENUM_TYPE);
9199 + }
9200 +
9201 + return 0;
9202 +}
9203 +
9204 +static char *avr32_end_of_match(char *cont, char *what)
9205 +{
9206 + int len = strlen (what);
9207 +
9208 + if (! is_part_of_name (cont[len])
9209 + && strncasecmp (cont, what, len) == 0)
9210 + return cont + len;
9211 +
9212 + return NULL;
9213 +}
9214 +
9215 +int
9216 +avr32_parse_name (char const *name, expressionS *exp, char *nextchar)
9217 +{
9218 + char *next = input_line_pointer;
9219 + char *next_end;
9220 +
9221 + pr_debug("parse_name: %s, nextchar=%c (%02x)\n", name, *nextchar, *nextchar);
9222 +
9223 + if (*nextchar == '(')
9224 + {
9225 + if (strcasecmp(name, "hi") == 0)
9226 + {
9227 + *next = *nextchar;
9228 +
9229 + expression(exp);
9230 +
9231 + if (exp->X_op == O_constant)
9232 + {
9233 + pr_debug(" -> constant hi(0x%08lx) -> 0x%04lx\n",
9234 + exp->X_add_number, exp->X_add_number >> 16);
9235 + exp->X_add_number = (exp->X_add_number >> 16) & 0xffff;
9236 + }
9237 + else
9238 + {
9239 + exp->X_md = exp->X_op;
9240 + exp->X_op = O_hi;
9241 + }
9242 +
9243 + return 1;
9244 + }
9245 + else if (strcasecmp(name, "lo") == 0)
9246 + {
9247 + *next = *nextchar;
9248 +
9249 + expression(exp);
9250 +
9251 + if (exp->X_op == O_constant)
9252 + exp->X_add_number &= 0xffff;
9253 + else
9254 + {
9255 + exp->X_md = exp->X_op;
9256 + exp->X_op = O_lo;
9257 + }
9258 +
9259 + return 1;
9260 + }
9261 + }
9262 + else if (*nextchar == '@')
9263 + {
9264 + exp->X_md = exp->X_op;
9265 +
9266 + if ((next_end = avr32_end_of_match (next + 1, "got")))
9267 + exp->X_op = O_got;
9268 + else if ((next_end = avr32_end_of_match (next + 1, "tlsgd")))
9269 + exp->X_op = O_tlsgd;
9270 + /* Add more as needed */
9271 + else
9272 + {
9273 + char c;
9274 + input_line_pointer++;
9275 + c = get_symbol_end();
9276 + as_bad (_("unknown relocation override `%s'"), next + 1);
9277 + *input_line_pointer = c;
9278 + input_line_pointer = next;
9279 + return 0;
9280 + }
9281 +
9282 + exp->X_op_symbol = NULL;
9283 + exp->X_add_symbol = symbol_find_or_make (name);
9284 + exp->X_add_number = 0;
9285 +
9286 + *input_line_pointer = *nextchar;
9287 + input_line_pointer = next_end;
9288 + *nextchar = *input_line_pointer;
9289 + *input_line_pointer = '\0';
9290 + return 1;
9291 + }
9292 + else if (strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
9293 + {
9294 + if (!GOT_symbol)
9295 + GOT_symbol = symbol_find_or_make(name);
9296 +
9297 + exp->X_add_symbol = GOT_symbol;
9298 + exp->X_op = O_symbol;
9299 + exp->X_add_number = 0;
9300 + return 1;
9301 + }
9302 +
9303 + return 0;
9304 +}
9305 +
9306 +static void
9307 +s_rseg (int value ATTRIBUTE_UNUSED)
9308 +{
9309 + /* Syntax: RSEG segment_name [:type] [NOROOT|ROOT] [(align)]
9310 + * Defaults:
9311 + * - type: undocumented ("typically CODE or DATA")
9312 + * - ROOT
9313 + * - align: 1 for code, 0 for others
9314 + *
9315 + * TODO: NOROOT is ignored. If gas supports discardable segments, it should
9316 + * be implemented.
9317 + */
9318 + char *name, *end;
9319 + int length, type, attr;
9320 + int align = 0;
9321 +
9322 + SKIP_WHITESPACE();
9323 +
9324 + end = input_line_pointer;
9325 + while (0 == strchr ("\n\t;:( ", *end))
9326 + end++;
9327 + if (end == input_line_pointer)
9328 + {
9329 + as_warn (_("missing name"));
9330 + ignore_rest_of_line();
9331 + return;
9332 + }
9333 +
9334 + name = xmalloc (end - input_line_pointer + 1);
9335 + memcpy (name, input_line_pointer, end - input_line_pointer);
9336 + name[end - input_line_pointer] = '\0';
9337 + input_line_pointer = end;
9338 +
9339 + SKIP_WHITESPACE();
9340 +
9341 + type = SHT_NULL;
9342 + attr = 0;
9343 +
9344 + if (*input_line_pointer == ':')
9345 + {
9346 + /* Skip the colon */
9347 + ++input_line_pointer;
9348 + SKIP_WHITESPACE();
9349 +
9350 + /* Possible options at this point:
9351 + * - flag (ROOT or NOROOT)
9352 + * - a segment type
9353 + */
9354 + end = input_line_pointer;
9355 + while (0 == strchr ("\n\t;:( ", *end))
9356 + end++;
9357 + length = end - input_line_pointer;
9358 + if (((length == 4) && (0 == strncasecmp( input_line_pointer, "ROOT", 4))) ||
9359 + ((length == 6) && (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9360 + {
9361 + /* Ignore ROOT/NOROOT */
9362 + input_line_pointer = end;
9363 + }
9364 + else
9365 + {
9366 + /* Must be a segment type */
9367 + switch (*input_line_pointer)
9368 + {
9369 + case 'C':
9370 + case 'c':
9371 + if ((length == 4) &&
9372 + (0 == strncasecmp (input_line_pointer, "CODE", 4)))
9373 + {
9374 + attr |= SHF_ALLOC | SHF_EXECINSTR;
9375 + type = SHT_PROGBITS;
9376 + align = 1;
9377 + break;
9378 + }
9379 + if ((length == 5) &&
9380 + (0 == strncasecmp (input_line_pointer, "CONST", 5)))
9381 + {
9382 + attr |= SHF_ALLOC;
9383 + type = SHT_PROGBITS;
9384 + break;
9385 + }
9386 + goto de_fault;
9387 +
9388 + case 'D':
9389 + case 'd':
9390 + if ((length == 4) &&
9391 + (0 == strncasecmp (input_line_pointer, "DATA", 4)))
9392 + {
9393 + attr |= SHF_ALLOC | SHF_WRITE;
9394 + type = SHT_PROGBITS;
9395 + break;
9396 + }
9397 + goto de_fault;
9398 +
9399 + /* TODO: Add FAR*, HUGE*, IDATA and NEAR* if necessary */
9400 +
9401 + case 'U':
9402 + case 'u':
9403 + if ((length == 7) &&
9404 + (0 == strncasecmp (input_line_pointer, "UNTYPED", 7)))
9405 + break;
9406 + goto de_fault;
9407 +
9408 + /* TODO: Add XDATA and ZPAGE if necessary */
9409 +
9410 + de_fault:
9411 + default:
9412 + as_warn (_("unrecognized segment type"));
9413 + }
9414 +
9415 + input_line_pointer = end;
9416 + SKIP_WHITESPACE();
9417 +
9418 + if (*input_line_pointer == ':')
9419 + {
9420 + /* ROOT/NOROOT */
9421 + ++input_line_pointer;
9422 + SKIP_WHITESPACE();
9423 +
9424 + end = input_line_pointer;
9425 + while (0 == strchr ("\n\t;:( ", *end))
9426 + end++;
9427 + length = end - input_line_pointer;
9428 + if (! ((length == 4) &&
9429 + (0 == strncasecmp( input_line_pointer, "ROOT", 4))) &&
9430 + ! ((length == 6) &&
9431 + (0 == strncasecmp( input_line_pointer, "NOROOT", 6))))
9432 + {
9433 + as_warn (_("unrecognized segment flag"));
9434 + }
9435 +
9436 + input_line_pointer = end;
9437 + SKIP_WHITESPACE();
9438 + }
9439 + }
9440 + }
9441 +
9442 + if (*input_line_pointer == '(')
9443 + {
9444 + align = get_absolute_expression ();
9445 + }
9446 +
9447 + demand_empty_rest_of_line();
9448 +
9449 + obj_elf_change_section (name, type, attr, 0, NULL, 0, 0);
9450 +#ifdef AVR32_DEBUG
9451 + fprintf( stderr, "RSEG: Changed section to %s, type: 0x%x, attr: 0x%x\n",
9452 + name, type, attr );
9453 + fprintf( stderr, "RSEG: Aligning to 2**%d\n", align );
9454 +#endif
9455 +
9456 + if (align > 15)
9457 + {
9458 + align = 15;
9459 + as_warn (_("alignment too large: %u assumed"), align);
9460 + }
9461 +
9462 + /* Hope not, that is */
9463 + assert (now_seg != absolute_section);
9464 +
9465 + /* Only make a frag if we HAVE to... */
9466 + if (align != 0 && !need_pass_2)
9467 + {
9468 + if (subseg_text_p (now_seg))
9469 + frag_align_code (align, 0);
9470 + else
9471 + frag_align (align, 0, 0);
9472 + }
9473 +
9474 + record_alignment (now_seg, align - OCTETS_PER_BYTE_POWER);
9475 +}
9476 +
9477 +/* vim: syntax=c sw=2
9478 + */
9479 --- /dev/null
9480 +++ b/gas/config/tc-avr32.h
9481 @@ -0,0 +1,325 @@
9482 +/* Assembler definitions for AVR32.
9483 + Copyright 2003-2006 Atmel Corporation.
9484 +
9485 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
9486 +
9487 + This file is part of GAS, the GNU Assembler.
9488 +
9489 + GAS is free software; you can redistribute it and/or modify it
9490 + under the terms of the GNU General Public License as published by
9491 + the Free Software Foundation; either version 2, or (at your option)
9492 + any later version.
9493 +
9494 + GAS is distributed in the hope that it will be useful, but WITHOUT
9495 + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
9496 + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
9497 + License for more details.
9498 +
9499 + You should have received a copy of the GNU General Public License
9500 + along with GAS; see the file COPYING. If not, write to the Free
9501 + Software Foundation, 59 Temple Place - Suite 330, Boston, MA
9502 + 02111-1307, USA. */
9503 +
9504 +#if 0
9505 +#define DEBUG
9506 +#define DEBUG1
9507 +#define DEBUG2
9508 +#define DEBUG3
9509 +#define DEBUG4
9510 +#define DEBUG5
9511 +#endif
9512 +
9513 +/* Are we trying to be compatible with the IAR assembler? (--iar) */
9514 +extern int avr32_iarcompat;
9515 +
9516 +/* By convention, you should define this macro in the `.h' file. For
9517 + example, `tc-m68k.h' defines `TC_M68K'. You might have to use this
9518 + if it is necessary to add CPU specific code to the object format
9519 + file. */
9520 +#define TC_AVR32
9521 +
9522 +/* This macro is the BFD target name to use when creating the output
9523 + file. This will normally depend upon the `OBJ_FMT' macro. */
9524 +#define TARGET_FORMAT "elf32-avr32"
9525 +
9526 +/* This macro is the BFD architecture to pass to `bfd_set_arch_mach'. */
9527 +#define TARGET_ARCH bfd_arch_avr32
9528 +
9529 +/* This macro is the BFD machine number to pass to
9530 + `bfd_set_arch_mach'. If it is not defined, GAS will use 0. */
9531 +#define TARGET_MACH 0
9532 +
9533 +/* UNDOCUMENTED: Allow //-style comments */
9534 +#define DOUBLESLASH_LINE_COMMENTS
9535 +
9536 +/* You should define this macro to be non-zero if the target is big
9537 + endian, and zero if the target is little endian. */
9538 +#define TARGET_BYTES_BIG_ENDIAN 1
9539 +
9540 +/* FIXME: It seems that GAS only expects a one-byte opcode...
9541 + #define NOP_OPCODE 0xd703 */
9542 +
9543 +/* If you define this macro, GAS will warn about the use of
9544 + nonstandard escape sequences in a string. */
9545 +#undef ONLY_STANDARD_ESCAPES
9546 +
9547 +#define DWARF2_FORMAT() dwarf2_format_32bit
9548 +
9549 +/* Instructions are either 2 or 4 bytes long */
9550 +/* #define DWARF2_LINE_MIN_INSN_LENGTH 2 */
9551 +
9552 +/* GAS will call this function for any expression that can not be
9553 + recognized. When the function is called, `input_line_pointer'
9554 + will point to the start of the expression. */
9555 +#define md_operand(x)
9556 +
9557 +#define md_parse_name(name, expr, mode, c) avr32_parse_name(name, expr, c)
9558 +extern int avr32_parse_name(const char *, struct expressionS *, char *);
9559 +
9560 +/* You may define this macro to generate a fixup for a data
9561 + allocation pseudo-op. */
9562 +#define TC_CONS_FIX_NEW(FRAG, OFF, LEN, EXP) \
9563 + avr32_cons_fix_new(FRAG, OFF, LEN, EXP)
9564 +void avr32_cons_fix_new (fragS *, int, int, expressionS *);
9565 +
9566 +/* `extsym - .' expressions can be emitted using PC-relative relocs */
9567 +#define DIFF_EXPR_OK
9568 +
9569 +/* This is used to construct expressions out of @gotoff, etc. The
9570 + relocation type is stored in X_md */
9571 +#define O_got O_md1
9572 +#define O_hi O_md2
9573 +#define O_lo O_md3
9574 +#define O_tlsgd O_md4
9575 +
9576 +/* You may define this macro to parse an expression used in a data
9577 + allocation pseudo-op such as `.word'. You can use this to
9578 + recognize relocation directives that may appear in such directives. */
9579 +/* #define TC_PARSE_CONS_EXPRESSION(EXPR,N) avr_parse_cons_expression (EXPR,N)
9580 + void avr_parse_cons_expression (expressionS *exp, int nbytes); */
9581 +
9582 +/* This should just call either `number_to_chars_bigendian' or
9583 + `number_to_chars_littleendian', whichever is appropriate. On
9584 + targets like the MIPS which support options to change the
9585 + endianness, which function to call is a runtime decision. On
9586 + other targets, `md_number_to_chars' can be a simple macro. */
9587 +#define md_number_to_chars number_to_chars_bigendian
9588 +
9589 +/* `md_short_jump_size'
9590 + `md_long_jump_size'
9591 + `md_create_short_jump'
9592 + `md_create_long_jump'
9593 + If `WORKING_DOT_WORD' is defined, GAS will not do broken word
9594 + processing (*note Broken words::.). Otherwise, you should set
9595 + `md_short_jump_size' to the size of a short jump (a jump that is
9596 + just long enough to jump around a long jmp) and
9597 + `md_long_jump_size' to the size of a long jump (a jump that can go
9598 + anywhere in the function), You should define
9599 + `md_create_short_jump' to create a short jump around a long jump,
9600 + and define `md_create_long_jump' to create a long jump. */
9601 +#define WORKING_DOT_WORD
9602 +
9603 +/* If you define this macro, it means that `tc_gen_reloc' may return
9604 + multiple relocation entries for a single fixup. In this case, the
9605 + return value of `tc_gen_reloc' is a pointer to a null terminated
9606 + array. */
9607 +#undef RELOC_EXPANSION_POSSIBLE
9608 +
9609 +/* If you define this macro, GAS will not require pseudo-ops to start with a .
9610 + character. */
9611 +#define NO_PSEUDO_DOT (avr32_iarcompat)
9612 +
9613 +/* The IAR assembler uses $ as the location counter. Unfortunately, we
9614 + can't make this dependent on avr32_iarcompat... */
9615 +#define DOLLAR_DOT
9616 +
9617 +/* Values passed to md_apply_fix3 don't include the symbol value. */
9618 +#define MD_APPLY_SYM_VALUE(FIX) 0
9619 +
9620 +/* The number of bytes to put into a word in a listing. This affects
9621 + the way the bytes are clumped together in the listing. For
9622 + example, a value of 2 might print `1234 5678' where a value of 1
9623 + would print `12 34 56 78'. The default value is 4. */
9624 +#define LISTING_WORD_SIZE 4
9625 +
9626 +/* extern const struct relax_type md_relax_table[];
9627 +#define TC_GENERIC_RELAX_TABLE md_relax_table */
9628 +
9629 +/*
9630 + An `.lcomm' directive with no explicit alignment parameter will use
9631 + this macro to set P2VAR to the alignment that a request for SIZE
9632 + bytes will have. The alignment is expressed as a power of two. If
9633 + no alignment should take place, the macro definition should do
9634 + nothing. Some targets define a `.bss' directive that is also
9635 + affected by this macro. The default definition will set P2VAR to
9636 + the truncated power of two of sizes up to eight bytes.
9637 +
9638 + We want doublewords to be word-aligned, so we're going to modify the
9639 + default definition a tiny bit.
9640 +*/
9641 +#define TC_IMPLICIT_LCOMM_ALIGNMENT(SIZE, P2VAR) \
9642 + do \
9643 + { \
9644 + if ((SIZE) >= 4) \
9645 + (P2VAR) = 2; \
9646 + else if ((SIZE) >= 2) \
9647 + (P2VAR) = 1; \
9648 + else \
9649 + (P2VAR) = 0; \
9650 + } \
9651 + while (0)
9652 +
9653 +/* When relaxing, we need to generate relocations for alignment
9654 + directives. */
9655 +#define HANDLE_ALIGN(frag) avr32_handle_align(frag)
9656 +extern void avr32_handle_align(fragS *);
9657 +
9658 +/* See internals doc for explanation. Oh wait...
9659 + Now, can you guess where "alignment" comes from? ;-) */
9660 +#define MAX_MEM_FOR_RS_ALIGN_CODE ((1 << alignment) - 1)
9661 +
9662 +/* We need to stop gas from reducing certain expressions (e.g. GOT
9663 + references) */
9664 +#define tc_fix_adjustable(fix) avr32_fix_adjustable(fix)
9665 +extern bfd_boolean avr32_fix_adjustable(struct fix *);
9666 +
9667 +/* The linker needs to be passed a little more information when relaxing. */
9668 +#define TC_FORCE_RELOCATION(fix) avr32_force_reloc(fix)
9669 +extern bfd_boolean avr32_force_reloc(struct fix *);
9670 +
9671 +/* I'm tired of working around all the madness in fixup_segment().
9672 + This hook will do basically the same things as the generic code,
9673 + and then it will "goto" right past it. */
9674 +#define TC_VALIDATE_FIX(FIX, SEG, SKIP) \
9675 + do \
9676 + { \
9677 + avr32_process_fixup(FIX, SEG); \
9678 + if (!(FIX)->fx_done) \
9679 + ++seg_reloc_count; \
9680 + goto SKIP; \
9681 + } \
9682 + while (0)
9683 +extern void avr32_process_fixup(struct fix *fixP, segT this_segment);
9684 +
9685 +/* Positive values of TC_FX_SIZE_SLACK allow a target to define
9686 + fixups that far past the end of a frag. Having such fixups
9687 + is of course most most likely a bug in setting fx_size correctly.
9688 + A negative value disables the fixup check entirely, which is
9689 + appropriate for something like the Renesas / SuperH SH_COUNT
9690 + reloc. */
9691 +/* This target is buggy, and sets fix size too large. */
9692 +#define TC_FX_SIZE_SLACK(FIX) -1
9693 +
9694 +/* We don't want the gas core to make any assumptions about our way of
9695 + doing linkrelaxing. */
9696 +#define TC_LINKRELAX_FIXUP(SEG) 0
9697 +
9698 +/* ... but we do want it to insert lots of padding. */
9699 +#define LINKER_RELAXING_SHRINKS_ONLY
9700 +
9701 +/* Better do it ourselves, really... */
9702 +#define TC_RELAX_ALIGN(SEG, FRAG, ADDR) avr32_relax_align(SEG, FRAG, ADDR)
9703 +extern relax_addressT
9704 +avr32_relax_align(segT segment, fragS *fragP, relax_addressT address);
9705 +
9706 +/* Use line number format that is amenable to linker relaxation. */
9707 +#define DWARF2_USE_FIXED_ADVANCE_PC (linkrelax != 0)
9708 +
9709 +/* This is called by write_object_file() just before symbols are
9710 + attempted converted into section symbols. */
9711 +#define tc_frob_file_before_adjust() avr32_frob_file()
9712 +extern void avr32_frob_file(void);
9713 +
9714 +/* If you define this macro, GAS will call it at the end of each input
9715 + file. */
9716 +#define md_cleanup() avr32_cleanup()
9717 +extern void avr32_cleanup(void);
9718 +
9719 +/* There's an AVR32-specific hack in operand() which creates O_md
9720 + expressions when encountering HWRD or LWRD. We need to generate
9721 + proper relocs for them */
9722 +/* #define md_cgen_record_fixup_exp avr32_cgen_record_fixup_exp */
9723 +
9724 +/* I needed to add an extra hook in gas_cgen_finish_insn() for
9725 + conversion of O_md* operands because md_cgen_record_fixup_exp()
9726 + isn't called for relaxable insns */
9727 +/* #define md_cgen_convert_expr(exp, opinfo) avr32_cgen_convert_expr(exp, opinfo)
9728 + int avr32_cgen_convert_expr(expressionS *, int); */
9729 +
9730 +/* #define tc_gen_reloc gas_cgen_tc_gen_reloc */
9731 +
9732 +/* If you define this macro, it should return the position from which
9733 + the PC relative adjustment for a PC relative fixup should be
9734 + made. On many processors, the base of a PC relative instruction is
9735 + the next instruction, so this macro would return the length of an
9736 + instruction, plus the address of the PC relative fixup. The latter
9737 + can be calculated as fixp->fx_where + fixp->fx_frag->fr_address. */
9738 +extern long md_pcrel_from_section (struct fix *, segT);
9739 +#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
9740 +
9741 +#define LOCAL_LABEL(name) (name[0] == '.' && (name[1] == 'L'))
9742 +#define LOCAL_LABELS_FB 1
9743 +
9744 +struct avr32_relaxer
9745 +{
9746 + int (*estimate_size)(fragS *, segT);
9747 + long (*relax_frag)(segT, fragS *, long);
9748 + void (*convert_frag)(bfd *, segT, fragS *);
9749 +};
9750 +
9751 +/* AVR32 has quite complex instruction coding, which means we need
9752 + * lots of information in order to do the right thing during relaxing
9753 + * (basically, we need to be able to reconstruct a whole new opcode if
9754 + * necessary) */
9755 +#define TC_FRAG_TYPE struct avr32_frag_data
9756 +
9757 +struct cpool;
9758 +
9759 +struct avr32_frag_data
9760 +{
9761 + /* TODO: Maybe add an expression object here so that we can use
9762 + fix_new_exp() in md_convert_frag? We may have to decide
9763 + pcrel-ness in md_estimate_size_before_relax() as well...or we
9764 + might do it when parsing. Doing it while parsing may fail
9765 + because the sub_symbol is undefined then... */
9766 + int pcrel;
9767 + int force_extended;
9768 + int reloc_info;
9769 + struct avr32_relaxer *relaxer;
9770 + expressionS exp;
9771 +
9772 + /* Points to associated constant pool, for use by LDA and CALL in
9773 + non-pic mode, and when relaxing the .cpool directive */
9774 + struct cpool *pool;
9775 + unsigned int pool_entry;
9776 +};
9777 +
9778 +/* We will have to initialize the fields explicitly when needed */
9779 +#define TC_FRAG_INIT(fragP)
9780 +
9781 +#define md_estimate_size_before_relax(fragP, segT) \
9782 + ((fragP)->tc_frag_data.relaxer->estimate_size(fragP, segT))
9783 +#define md_relax_frag(segment, fragP, stretch) \
9784 + ((fragP)->tc_frag_data.relaxer->relax_frag(segment, fragP, stretch))
9785 +#define md_convert_frag(abfd, segment, fragP) \
9786 + ((fragP)->tc_frag_data.relaxer->convert_frag(abfd, segment, fragP))
9787 +
9788 +#define TC_FIX_TYPE struct avr32_fix_data
9789 +
9790 +struct avr32_fix_data
9791 +{
9792 + const struct avr32_ifield *ifield;
9793 + unsigned int align;
9794 + long min;
9795 + long max;
9796 +};
9797 +
9798 +#define TC_INIT_FIX_DATA(fixP) \
9799 + do \
9800 + { \
9801 + (fixP)->tc_fix_data.ifield = NULL; \
9802 + (fixP)->tc_fix_data.align = 0; \
9803 + (fixP)->tc_fix_data.min = 0; \
9804 + (fixP)->tc_fix_data.max = 0; \
9805 + } \
9806 + while (0)
9807 --- a/gas/configure.tgt
9808 +++ b/gas/configure.tgt
9809 @@ -33,6 +33,7 @@ case ${cpu} in
9810 am33_2.0) cpu_type=mn10300 endian=little ;;
9811 arm*be|arm*b) cpu_type=arm endian=big ;;
9812 arm*) cpu_type=arm endian=little ;;
9813 + avr32*) cpu_type=avr32 endian=big ;;
9814 bfin*) cpu_type=bfin endian=little ;;
9815 c4x*) cpu_type=tic4x ;;
9816 cr16*) cpu_type=cr16 endian=little ;;
9817 @@ -129,6 +130,9 @@ case ${generic_target} in
9818 bfin-*elf) fmt=elf ;;
9819 cr16-*-elf*) fmt=elf ;;
9820
9821 + avr32-*-linux*) fmt=elf em=linux bfd_gas=yes ;;
9822 + avr32*) fmt=elf bfd_gas=yes ;;
9823 +
9824 cris-*-linux-* | crisv32-*-linux-*)
9825 fmt=multi em=linux ;;
9826 cris-*-* | crisv32-*-*) fmt=multi ;;
9827 --- a/gas/doc/all.texi
9828 +++ b/gas/doc/all.texi
9829 @@ -30,6 +30,7 @@
9830 @set ARC
9831 @set ARM
9832 @set AVR
9833 +@set AVR32
9834 @set BFIN
9835 @set CR16
9836 @set CRIS
9837 --- a/gas/doc/as.texinfo
9838 +++ b/gas/doc/as.texinfo
9839 @@ -6353,6 +6353,9 @@ subject, see the hardware manufacturer's
9840 @ifset AVR
9841 * AVR-Dependent:: AVR Dependent Features
9842 @end ifset
9843 +@ifset AVR32
9844 +* AVR32-Dependent:: AVR32 Dependent Features
9845 +@end ifset
9846 @ifset BFIN
9847 * BFIN-Dependent:: BFIN Dependent Features
9848 @end ifset
9849 @@ -6476,6 +6479,10 @@ subject, see the hardware manufacturer's
9850 @include c-avr.texi
9851 @end ifset
9852
9853 +@ifset AVR32
9854 +@include c-avr32.texi
9855 +@end ifset
9856 +
9857 @ifset BFIN
9858 @include c-bfin.texi
9859 @end ifset
9860 --- /dev/null
9861 +++ b/gas/doc/c-avr32.texi
9862 @@ -0,0 +1,247 @@
9863 +@c Copyright 2005, 2006
9864 +@c Atmel Corporation
9865 +@c This is part of the GAS manual.
9866 +@c For copying conditions, see the file as.texinfo.
9867 +
9868 +@ifset GENERIC
9869 +@page
9870 +@node AVR32-Dependent
9871 +@chapter AVR32 Dependent Features
9872 +@end ifset
9873 +
9874 +@ifclear GENERIC
9875 +@node Machine Dependencies
9876 +@chapter AVR32 Dependent Features
9877 +@end ifclear
9878 +
9879 +@cindex AVR32 support
9880 +@menu
9881 +* AVR32 Options:: Options
9882 +* AVR32 Syntax:: Syntax
9883 +* AVR32 Directives:: Directives
9884 +* AVR32 Opcodes:: Opcodes
9885 +@end menu
9886 +
9887 +@node AVR32 Options
9888 +@section Options
9889 +@cindex AVR32 options
9890 +@cindex options for AVR32
9891 +
9892 +There are currently no AVR32-specific options. However, the following
9893 +options are planned:
9894 +
9895 +@table @code
9896 +
9897 +@cindex @code{--pic} command line option, AVR32
9898 +@cindex PIC code generation for AVR32
9899 +@item --pic
9900 +This option specifies that the output of the assembler should be marked
9901 +as position-independent code (PIC). It will also ensure that
9902 +pseudo-instructions that deal with address calculation are output as
9903 +PIC, and that all absolute address references in the code are marked as
9904 +such.
9905 +
9906 +@cindex @code{--linkrelax} command line option, AVR32
9907 +@item --linkrelax
9908 +This option specifies that the output of the assembler should be marked
9909 +as linker-relaxable. It will also ensure that all PC-relative operands
9910 +that may change during linker relaxation get appropriate relocations.
9911 +
9912 +@end table
9913 +
9914 +
9915 +@node AVR32 Syntax
9916 +@section Syntax
9917 +@menu
9918 +* AVR32-Chars:: Special Characters
9919 +* AVR32-Symrefs:: Symbol references
9920 +@end menu
9921 +
9922 +@node AVR32-Chars
9923 +@subsection Special Characters
9924 +
9925 +@cindex line comment character, AVR32
9926 +@cindex AVR32 line comment character
9927 +The presence of a @samp{//} on a line indicates the start of a comment
9928 +that extends to the end of the current line. If a @samp{#} appears as
9929 +the first character of a line, the whole line is treated as a comment.
9930 +
9931 +@cindex line separator, AVR32
9932 +@cindex statement separator, AVR32
9933 +@cindex AVR32 line separator
9934 +The @samp{;} character can be used instead of a newline to separate
9935 +statements.
9936 +
9937 +@node AVR32-Symrefs
9938 +@subsection Symbol references
9939 +
9940 +The absolute value of a symbol can be obtained by simply naming the
9941 +symbol. However, as AVR32 symbols have 32-bit values, most symbols have
9942 +values that are outside the range of any instructions.
9943 +
9944 +Instructions that take a PC-relative offset, e.g. @code{lddpc} or
9945 +@code{rcall}, can also reference a symbol by simply naming the symbol
9946 +(no explicit calculations necessary). In this case, the assembler or
9947 +linker subtracts the address of the instruction from the symbol's value
9948 +and inserts the result into the instruction. Note that even though an
9949 +overflow is less likely to happen for a relative reference than for an
9950 +absolute reference, the assembler or linker will generate an error if
9951 +the referenced symbol is too far away from the current location.
9952 +
9953 +Relative references can be used for data as well. For example:
9954 +
9955 +@smallexample
9956 + lddpc r0, 2f
9957 +1: add r0, pc
9958 + ...
9959 + .align 2
9960 +2: .int @var{some_symbol} - 1b
9961 +@end smallexample
9962 +
9963 +Here, r0 will end up with the run-time address of @var{some_symbol} even
9964 +if the program was loaded at a different address than it was linked
9965 +(position-independent code).
9966 +
9967 +@subsubsection Symbol modifiers
9968 +
9969 +@table @code
9970 +
9971 +@item @code{hi(@var{symbol})}
9972 +Evaluates to the value of the symbol shifted right 16 bits. This will
9973 +work even if @var{symbol} is defined in a different module.
9974 +
9975 +@item @code{lo(@var{symbol})}
9976 +Evaluates to the low 16 bits of the symbol's value. This will work even
9977 +if @var{symbol} is defined in a different module.
9978 +
9979 +@item @code{@var{symbol}@@got}
9980 +Create a GOT entry for @var{symbol} and return the offset of that entry
9981 +relative to the GOT base.
9982 +
9983 +@end table
9984 +
9985 +
9986 +@node AVR32 Directives
9987 +@section Directives
9988 +@cindex machine directives, AVR32
9989 +@cindex AVR32 directives
9990 +
9991 +@table @code
9992 +
9993 +@cindex @code{.cpool} directive, AVR32
9994 +@item .cpool
9995 +This directive causes the current contents of the constant pool to be
9996 +dumped into the current section at the current location (aligned to a
9997 +word boundary). @code{GAS} maintains a separate constant pool for each
9998 +section and each sub-section. The @code{.cpool} directive will only
9999 +affect the constant pool of the current section and sub-section. At the
10000 +end of assembly, all remaining, non-empty constant pools will
10001 +automatically be dumped.
10002 +
10003 +@end table
10004 +
10005 +
10006 +@node AVR32 Opcodes
10007 +@section Opcodes
10008 +@cindex AVR32 opcodes
10009 +@cindex opcodes for AVR32
10010 +
10011 +@code{@value{AS}} implements all the standard AVR32 opcodes. It also
10012 +implements several pseudo-opcodes, which are recommended to use wherever
10013 +possible because they give the tool chain better freedom to generate
10014 +optimal code.
10015 +
10016 +@table @code
10017 +
10018 +@cindex @code{LDA.W reg, symbol} pseudo op, AVR32
10019 +@item LDA.W
10020 +@smallexample
10021 + lda.w @var{reg}, @var{symbol}
10022 +@end smallexample
10023 +
10024 +This instruction will load the address of @var{symbol} into
10025 +@var{reg}. The instruction will evaluate to one of the following,
10026 +depending on the relative distance to the symbol, the relative distance
10027 +to the constant pool and whether the @code{--pic} option has been
10028 +specified. If the @code{--pic} option has not been specified, the
10029 +alternatives are as follows:
10030 +@smallexample
10031 + /* @var{symbol} evaluates to a small enough value */
10032 + mov @var{reg}, @var{symbol}
10033 +
10034 + /* (. - @var{symbol}) evaluates to a small enough value */
10035 + sub @var{reg}, pc, . - @var{symbol}
10036 +
10037 + /* Constant pool is close enough */
10038 + lddpc @var{reg}, @var{cpent}
10039 + ...
10040 +@var{cpent}:
10041 + .long @var{symbol}
10042 +
10043 + /* Otherwise (not implemented yet, probably not necessary) */
10044 + mov @var{reg}, lo(@var{symbol})
10045 + orh @var{reg}, hi(@var{symbol})
10046 +@end smallexample
10047 +
10048 +If the @code{--pic} option has been specified, the alternatives are as
10049 +follows:
10050 +@smallexample
10051 + /* (. - @var{symbol}) evaluates to a small enough value */
10052 + sub @var{reg}, pc, . - @var{symbol}
10053 +
10054 + /* If @code{--linkrelax} not specified */
10055 + ld.w @var{reg}, r6[@var{symbol}@@got]
10056 +
10057 + /* Otherwise */
10058 + mov @var{reg}, @var{symbol}@@got / 4
10059 + ld.w @var{reg}, r6[@var{reg} << 2]
10060 +@end smallexample
10061 +
10062 +If @var{symbol} is not defined in the same file and section as the
10063 +@code{LDA.W} instruction, the most pessimistic alternative of the
10064 +above is selected. The linker may convert it back into the most
10065 +optimal alternative when the final value of all symbols is known.
10066 +
10067 +@cindex @code{CALL symbol} pseudo op, AVR32
10068 +@item CALL
10069 +@smallexample
10070 + call @var{symbol}
10071 +@end smallexample
10072 +
10073 +This instruction will insert code to call the subroutine identified by
10074 +@var{symbol}. It will evaluate to one of the following, depending on
10075 +the relative distance to the symbol as well as the @code{--linkrelax}
10076 +and @code{--pic} command-line options.
10077 +
10078 +If @var{symbol} is defined in the same section and input file, and the
10079 +distance is small enough, an @code{rcall} instruction is inserted:
10080 +@smallexample
10081 + rcall @var{symbol}
10082 +@end smallexample
10083 +
10084 +Otherwise, if the @code{--pic} option has not been specified:
10085 +@smallexample
10086 + mcall @var{cpent}
10087 + ...
10088 +@var{cpent}:
10089 + .long @var{symbol}
10090 +@end smallexample
10091 +
10092 +Finally, if nothing else fits and the @code{--pic} option has been
10093 +specified, the assembler will indirect the call through the Global
10094 +Offset Table:
10095 +@smallexample
10096 + /* If @code{--linkrelax} not specified */
10097 + mcall r6[@var{symbol}@@got]
10098 +
10099 + /* If @code{--linkrelax} specified */
10100 + mov lr, @var{symbol}@@got / 4
10101 + ld.w lr, r6[lr << 2]
10102 + icall lr
10103 +@end smallexample
10104 +
10105 +The linker, after determining the final value of @var{symbol}, may
10106 +convert any of these into more optimal alternatives. This includes
10107 +deleting any superfluous constant pool- and GOT-entries.
10108 +
10109 +@end table
10110 --- a/gas/doc/Makefile.am
10111 +++ b/gas/doc/Makefile.am
10112 @@ -33,6 +33,7 @@ CPU_DOCS = \
10113 c-arc.texi \
10114 c-arm.texi \
10115 c-avr.texi \
10116 + c-avr32.texi \
10117 c-bfin.texi \
10118 c-cr16.texi \
10119 c-d10v.texi \
10120 --- a/gas/Makefile.am
10121 +++ b/gas/Makefile.am
10122 @@ -47,6 +47,7 @@ CPU_TYPES = \
10123 arc \
10124 arm \
10125 avr \
10126 + avr32 \
10127 bfin \
10128 cr16 \
10129 cris \
10130 @@ -241,6 +242,7 @@ TARGET_CPU_CFILES = \
10131 config/tc-arc.c \
10132 config/tc-arm.c \
10133 config/tc-avr.c \
10134 + config/tc-avr32.c \
10135 config/tc-bfin.c \
10136 config/tc-cr16.c \
10137 config/tc-cris.c \
10138 @@ -296,6 +298,7 @@ TARGET_CPU_HFILES = \
10139 config/tc-arc.h \
10140 config/tc-arm.h \
10141 config/tc-avr.h \
10142 + config/tc-avr32.h \
10143 config/tc-bfin.h \
10144 config/tc-cr16.h \
10145 config/tc-cris.h \
10146 @@ -1050,6 +1053,11 @@ DEPTC_avr_elf = $(srcdir)/config/obj-elf
10147 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
10148 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10149 $(INCDIR)/opcode/avr.h
10150 +DEPTC_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
10151 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10152 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
10153 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10154 + $(srcdir)/../opcodes/avr32-opc.h $(srcdir)/../opcodes/avr32-asm.h
10155 DEPTC_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10156 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
10157 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
10158 @@ -1487,6 +1495,11 @@ DEPOBJ_avr_elf = $(srcdir)/config/obj-el
10159 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr.h dwarf2dbg.h \
10160 $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10161 $(INCDIR)/obstack.h struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
10162 +DEPOBJ_avr32_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
10163 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10164 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h \
10165 + $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
10166 + struc-symbol.h dwarf2dbg.h
10167 DEPOBJ_bfin_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10168 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
10169 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-bfin.h dwarf2dbg.h \
10170 @@ -1858,6 +1871,9 @@ DEP_cr16_elf = $(srcdir)/config/obj-elf.
10171 $(INCDIR)/bfdlink.h $(srcdir)/config/tc-cr16.h dwarf2dbg.h \
10172 $(srcdir)/config/obj-coff.h $(INCDIR)/coff/internal.h \
10173 $(BFDDIR)/libcoff.h
10174 +DEP_avr32_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
10175 + $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
10176 + $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-avr32.h
10177 DEP_cris_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-cris.h \
10178 $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
10179 DEP_cris_elf = $(srcdir)/config/obj-elf.h $(BFDDIR)/elf-bfd.h \
10180 --- /dev/null
10181 +++ b/gas/testsuite/gas/avr32/aliases.d
10182 @@ -0,0 +1,19 @@
10183 +#as:
10184 +#objdump: -dr
10185 +#name: aliases
10186 +
10187 +.*: +file format .*
10188 +
10189 +Disassembly of section \.text:
10190 +
10191 +00000000 <ld_nodisp>:
10192 + 0: 19 80 [ \t]+ld\.ub r0,r12\[0x0\]
10193 + 2: f9 20 00 00[ \t]+ld\.sb r0,r12\[0\]
10194 + 6: 98 80 [ \t]+ld\.uh r0,r12\[0x0\]
10195 + 8: 98 00 [ \t]+ld\.sh r0,r12\[0x0\]
10196 + a: 78 00 [ \t]+ld\.w r0,r12\[0x0\]
10197 +
10198 +0000000c <st_nodisp>:
10199 + c: b8 80 [ \t]+st\.b r12\[0x0\],r0
10200 + e: b8 00 [ \t]+st\.h r12\[0x0\],r0
10201 + 10: 99 00 [ \t]+st\.w r12\[0x0\],r0
10202 --- /dev/null
10203 +++ b/gas/testsuite/gas/avr32/aliases.s
10204 @@ -0,0 +1,14 @@
10205 + .text
10206 + .global ld_nodisp
10207 +ld_nodisp:
10208 + ld.ub r0, r12
10209 + ld.sb r0, r12
10210 + ld.uh r0, r12
10211 + ld.sh r0, r12
10212 + ld.w r0, r12
10213 +
10214 + .global st_nodisp
10215 +st_nodisp:
10216 + st.b r12, r0
10217 + st.h r12, r0
10218 + st.w r12, r0
10219 --- /dev/null
10220 +++ b/gas/testsuite/gas/avr32/allinsn.d
10221 @@ -0,0 +1,2987 @@
10222 +#as:
10223 +#objdump: -dr
10224 +#name: allinsn
10225 +
10226 +.*: +file format .*
10227 +
10228 +Disassembly of section \.text:
10229 +
10230 +[0-9a-f]* <ld_d5>:
10231 + *[0-9a-f]*: fe 0f 02 3e ld\.d lr,pc\[pc<<0x3\]
10232 + *[0-9a-f]*: e0 00 02 00 ld\.d r0,r0\[r0\]
10233 + *[0-9a-f]*: ea 05 02 26 ld\.d r6,r5\[r5<<0x2\]
10234 + *[0-9a-f]*: e8 04 02 14 ld\.d r4,r4\[r4<<0x1\]
10235 + *[0-9a-f]*: fc 0e 02 1e ld\.d lr,lr\[lr<<0x1\]
10236 + *[0-9a-f]*: e6 0d 02 2a ld\.d r10,r3\[sp<<0x2\]
10237 + *[0-9a-f]*: f4 06 02 28 ld\.d r8,r10\[r6<<0x2\]
10238 + *[0-9a-f]*: ee 09 02 02 ld\.d r2,r7\[r9\]
10239 +
10240 +[0-9a-f]* <ld_w5>:
10241 + *[0-9a-f]*: fe 0f 03 0f ld\.w pc,pc\[pc\]
10242 + *[0-9a-f]*: f8 0c 03 3c ld\.w r12,r12\[r12<<0x3\]
10243 + *[0-9a-f]*: ea 05 03 25 ld\.w r5,r5\[r5<<0x2\]
10244 + *[0-9a-f]*: e8 04 03 14 ld\.w r4,r4\[r4<<0x1\]
10245 + *[0-9a-f]*: fc 0e 03 1e ld\.w lr,lr\[lr<<0x1\]
10246 + *[0-9a-f]*: f2 09 03 02 ld\.w r2,r9\[r9\]
10247 + *[0-9a-f]*: e4 06 03 0b ld\.w r11,r2\[r6\]
10248 + *[0-9a-f]*: e4 0d 03 30 ld\.w r0,r2\[sp<<0x3\]
10249 +
10250 +[0-9a-f]* <ld_sh5>:
10251 + *[0-9a-f]*: fe 0f 04 0f ld\.sh pc,pc\[pc\]
10252 + *[0-9a-f]*: f8 0c 04 3c ld\.sh r12,r12\[r12<<0x3\]
10253 + *[0-9a-f]*: ea 05 04 25 ld\.sh r5,r5\[r5<<0x2\]
10254 + *[0-9a-f]*: e8 04 04 14 ld\.sh r4,r4\[r4<<0x1\]
10255 + *[0-9a-f]*: fc 0e 04 1e ld\.sh lr,lr\[lr<<0x1\]
10256 + *[0-9a-f]*: e0 0f 04 2b ld\.sh r11,r0\[pc<<0x2\]
10257 + *[0-9a-f]*: fa 06 04 2a ld\.sh r10,sp\[r6<<0x2\]
10258 + *[0-9a-f]*: e4 02 04 0c ld\.sh r12,r2\[r2\]
10259 +
10260 +[0-9a-f]* <ld_uh5>:
10261 + *[0-9a-f]*: fe 0f 05 0f ld\.uh pc,pc\[pc\]
10262 + *[0-9a-f]*: f8 0c 05 3c ld\.uh r12,r12\[r12<<0x3\]
10263 + *[0-9a-f]*: ea 05 05 25 ld\.uh r5,r5\[r5<<0x2\]
10264 + *[0-9a-f]*: e8 04 05 14 ld\.uh r4,r4\[r4<<0x1\]
10265 + *[0-9a-f]*: fc 0e 05 1e ld\.uh lr,lr\[lr<<0x1\]
10266 + *[0-9a-f]*: fe 0e 05 38 ld\.uh r8,pc\[lr<<0x3\]
10267 + *[0-9a-f]*: e2 0f 05 16 ld\.uh r6,r1\[pc<<0x1\]
10268 + *[0-9a-f]*: fc 0d 05 16 ld\.uh r6,lr\[sp<<0x1\]
10269 +
10270 +[0-9a-f]* <ld_sb2>:
10271 + *[0-9a-f]*: fe 0f 06 0f ld\.sb pc,pc\[pc\]
10272 + *[0-9a-f]*: f8 0c 06 3c ld\.sb r12,r12\[r12<<0x3\]
10273 + *[0-9a-f]*: ea 05 06 25 ld\.sb r5,r5\[r5<<0x2\]
10274 + *[0-9a-f]*: e8 04 06 14 ld\.sb r4,r4\[r4<<0x1\]
10275 + *[0-9a-f]*: fc 0e 06 1e ld\.sb lr,lr\[lr<<0x1\]
10276 + *[0-9a-f]*: e2 0f 06 39 ld\.sb r9,r1\[pc<<0x3\]
10277 + *[0-9a-f]*: e6 0b 06 10 ld\.sb r0,r3\[r11<<0x1\]
10278 + *[0-9a-f]*: ea 05 06 1a ld\.sb r10,r5\[r5<<0x1\]
10279 +
10280 +[0-9a-f]* <ld_ub5>:
10281 + *[0-9a-f]*: fe 0f 07 0f ld\.ub pc,pc\[pc\]
10282 + *[0-9a-f]*: f8 0c 07 3c ld\.ub r12,r12\[r12<<0x3\]
10283 + *[0-9a-f]*: ea 05 07 25 ld\.ub r5,r5\[r5<<0x2\]
10284 + *[0-9a-f]*: e8 04 07 14 ld\.ub r4,r4\[r4<<0x1\]
10285 + *[0-9a-f]*: fc 0e 07 1e ld\.ub lr,lr\[lr<<0x1\]
10286 + *[0-9a-f]*: f8 07 07 36 ld\.ub r6,r12\[r7<<0x3\]
10287 + *[0-9a-f]*: ec 0c 07 02 ld\.ub r2,r6\[r12\]
10288 + *[0-9a-f]*: ee 0b 07 10 ld\.ub r0,r7\[r11<<0x1\]
10289 +
10290 +[0-9a-f]* <st_d5>:
10291 + *[0-9a-f]*: fe 0f 08 0e st\.d pc\[pc\],lr
10292 + *[0-9a-f]*: f8 0c 08 3c st\.d r12\[r12<<0x3\],r12
10293 + *[0-9a-f]*: ea 05 08 26 st\.d r5\[r5<<0x2\],r6
10294 + *[0-9a-f]*: e8 04 08 14 st\.d r4\[r4<<0x1\],r4
10295 + *[0-9a-f]*: fc 0e 08 1e st\.d lr\[lr<<0x1\],lr
10296 + *[0-9a-f]*: e2 09 08 14 st\.d r1\[r9<<0x1\],r4
10297 + *[0-9a-f]*: f4 02 08 14 st\.d r10\[r2<<0x1\],r4
10298 + *[0-9a-f]*: f8 06 08 0e st\.d r12\[r6\],lr
10299 +
10300 +[0-9a-f]* <st_w5>:
10301 + *[0-9a-f]*: fe 0f 09 0f st\.w pc\[pc\],pc
10302 + *[0-9a-f]*: f8 0c 09 3c st\.w r12\[r12<<0x3\],r12
10303 + *[0-9a-f]*: ea 05 09 25 st\.w r5\[r5<<0x2\],r5
10304 + *[0-9a-f]*: e8 04 09 14 st\.w r4\[r4<<0x1\],r4
10305 + *[0-9a-f]*: fc 0e 09 1e st\.w lr\[lr<<0x1\],lr
10306 + *[0-9a-f]*: e2 0a 09 03 st\.w r1\[r10\],r3
10307 + *[0-9a-f]*: e0 0a 09 19 st\.w r0\[r10<<0x1\],r9
10308 + *[0-9a-f]*: e8 05 09 3f st\.w r4\[r5<<0x3\],pc
10309 +
10310 +[0-9a-f]* <st_h5>:
10311 + *[0-9a-f]*: fe 0f 0a 0f st\.h pc\[pc\],pc
10312 + *[0-9a-f]*: f8 0c 0a 3c st\.h r12\[r12<<0x3\],r12
10313 + *[0-9a-f]*: ea 05 0a 25 st\.h r5\[r5<<0x2\],r5
10314 + *[0-9a-f]*: e8 04 0a 14 st\.h r4\[r4<<0x1\],r4
10315 + *[0-9a-f]*: fc 0e 0a 1e st\.h lr\[lr<<0x1\],lr
10316 + *[0-9a-f]*: e4 09 0a 0b st\.h r2\[r9\],r11
10317 + *[0-9a-f]*: ea 01 0a 2c st\.h r5\[r1<<0x2\],r12
10318 + *[0-9a-f]*: fe 08 0a 23 st\.h pc\[r8<<0x2\],r3
10319 +
10320 +[0-9a-f]* <st_b5>:
10321 + *[0-9a-f]*: fe 0f 0b 0f st\.b pc\[pc\],pc
10322 + *[0-9a-f]*: f8 0c 0b 3c st\.b r12\[r12<<0x3\],r12
10323 + *[0-9a-f]*: ea 05 0b 25 st\.b r5\[r5<<0x2\],r5
10324 + *[0-9a-f]*: e8 04 0b 14 st\.b r4\[r4<<0x1\],r4
10325 + *[0-9a-f]*: fc 0e 0b 1e st\.b lr\[lr<<0x1\],lr
10326 + *[0-9a-f]*: e2 08 0b 16 st\.b r1\[r8<<0x1\],r6
10327 + *[0-9a-f]*: fc 0e 0b 31 st\.b lr\[lr<<0x3\],r1
10328 + *[0-9a-f]*: ea 00 0b 2f st\.b r5\[r0<<0x2\],pc
10329 +
10330 +[0-9a-f]* <divs>:
10331 + *[0-9a-f]*: fe 0f 0c 0f divs pc,pc,pc
10332 + *[0-9a-f]*: f8 0c 0c 0c divs r12,r12,r12
10333 + *[0-9a-f]*: ea 05 0c 05 divs r5,r5,r5
10334 + *[0-9a-f]*: e8 04 0c 04 divs r4,r4,r4
10335 + *[0-9a-f]*: fc 0e 0c 0e divs lr,lr,lr
10336 + *[0-9a-f]*: fe 0f 0c 03 divs r3,pc,pc
10337 + *[0-9a-f]*: f8 02 0c 09 divs r9,r12,r2
10338 + *[0-9a-f]*: e8 01 0c 07 divs r7,r4,r1
10339 +
10340 +[0-9a-f]* <add1>:
10341 + *[0-9a-f]*: 1e 0f add pc,pc
10342 + *[0-9a-f]*: 18 0c add r12,r12
10343 + *[0-9a-f]*: 0a 05 add r5,r5
10344 + *[0-9a-f]*: 08 04 add r4,r4
10345 + *[0-9a-f]*: 1c 0e add lr,lr
10346 + *[0-9a-f]*: 12 0c add r12,r9
10347 + *[0-9a-f]*: 06 06 add r6,r3
10348 + *[0-9a-f]*: 18 0a add r10,r12
10349 +
10350 +[0-9a-f]* <sub1>:
10351 + *[0-9a-f]*: 1e 1f sub pc,pc
10352 + *[0-9a-f]*: 18 1c sub r12,r12
10353 + *[0-9a-f]*: 0a 15 sub r5,r5
10354 + *[0-9a-f]*: 08 14 sub r4,r4
10355 + *[0-9a-f]*: 1c 1e sub lr,lr
10356 + *[0-9a-f]*: 0c 1e sub lr,r6
10357 + *[0-9a-f]*: 1a 10 sub r0,sp
10358 + *[0-9a-f]*: 18 16 sub r6,r12
10359 +
10360 +[0-9a-f]* <rsub1>:
10361 + *[0-9a-f]*: 1e 2f rsub pc,pc
10362 + *[0-9a-f]*: 18 2c rsub r12,r12
10363 + *[0-9a-f]*: 0a 25 rsub r5,r5
10364 + *[0-9a-f]*: 08 24 rsub r4,r4
10365 + *[0-9a-f]*: 1c 2e rsub lr,lr
10366 + *[0-9a-f]*: 1a 2b rsub r11,sp
10367 + *[0-9a-f]*: 08 27 rsub r7,r4
10368 + *[0-9a-f]*: 02 29 rsub r9,r1
10369 +
10370 +[0-9a-f]* <cp1>:
10371 + *[0-9a-f]*: 1e 3f cp\.w pc,pc
10372 + *[0-9a-f]*: 18 3c cp\.w r12,r12
10373 + *[0-9a-f]*: 0a 35 cp\.w r5,r5
10374 + *[0-9a-f]*: 08 34 cp\.w r4,r4
10375 + *[0-9a-f]*: 1c 3e cp\.w lr,lr
10376 + *[0-9a-f]*: 04 36 cp\.w r6,r2
10377 + *[0-9a-f]*: 12 30 cp\.w r0,r9
10378 + *[0-9a-f]*: 1a 33 cp\.w r3,sp
10379 +
10380 +[0-9a-f]* <or1>:
10381 + *[0-9a-f]*: 1e 4f or pc,pc
10382 + *[0-9a-f]*: 18 4c or r12,r12
10383 + *[0-9a-f]*: 0a 45 or r5,r5
10384 + *[0-9a-f]*: 08 44 or r4,r4
10385 + *[0-9a-f]*: 1c 4e or lr,lr
10386 + *[0-9a-f]*: 12 44 or r4,r9
10387 + *[0-9a-f]*: 08 4b or r11,r4
10388 + *[0-9a-f]*: 00 44 or r4,r0
10389 +
10390 +[0-9a-f]* <eor1>:
10391 + *[0-9a-f]*: 1e 5f eor pc,pc
10392 + *[0-9a-f]*: 18 5c eor r12,r12
10393 + *[0-9a-f]*: 0a 55 eor r5,r5
10394 + *[0-9a-f]*: 08 54 eor r4,r4
10395 + *[0-9a-f]*: 1c 5e eor lr,lr
10396 + *[0-9a-f]*: 16 5c eor r12,r11
10397 + *[0-9a-f]*: 02 50 eor r0,r1
10398 + *[0-9a-f]*: 1e 55 eor r5,pc
10399 +
10400 +[0-9a-f]* <and1>:
10401 + *[0-9a-f]*: 1e 6f and pc,pc
10402 + *[0-9a-f]*: 18 6c and r12,r12
10403 + *[0-9a-f]*: 0a 65 and r5,r5
10404 + *[0-9a-f]*: 08 64 and r4,r4
10405 + *[0-9a-f]*: 1c 6e and lr,lr
10406 + *[0-9a-f]*: 02 68 and r8,r1
10407 + *[0-9a-f]*: 1a 60 and r0,sp
10408 + *[0-9a-f]*: 0a 6a and r10,r5
10409 +
10410 +[0-9a-f]* <tst>:
10411 + *[0-9a-f]*: 1e 7f tst pc,pc
10412 + *[0-9a-f]*: 18 7c tst r12,r12
10413 + *[0-9a-f]*: 0a 75 tst r5,r5
10414 + *[0-9a-f]*: 08 74 tst r4,r4
10415 + *[0-9a-f]*: 1c 7e tst lr,lr
10416 + *[0-9a-f]*: 18 70 tst r0,r12
10417 + *[0-9a-f]*: 0c 7a tst r10,r6
10418 + *[0-9a-f]*: 08 7d tst sp,r4
10419 +
10420 +[0-9a-f]* <andn>:
10421 + *[0-9a-f]*: 1e 8f andn pc,pc
10422 + *[0-9a-f]*: 18 8c andn r12,r12
10423 + *[0-9a-f]*: 0a 85 andn r5,r5
10424 + *[0-9a-f]*: 08 84 andn r4,r4
10425 + *[0-9a-f]*: 1c 8e andn lr,lr
10426 + *[0-9a-f]*: 18 89 andn r9,r12
10427 + *[0-9a-f]*: 1a 8b andn r11,sp
10428 + *[0-9a-f]*: 0a 8c andn r12,r5
10429 +
10430 +[0-9a-f]* <mov3>:
10431 + *[0-9a-f]*: 1e 9f mov pc,pc
10432 + *[0-9a-f]*: 18 9c mov r12,r12
10433 + *[0-9a-f]*: 0a 95 mov r5,r5
10434 + *[0-9a-f]*: 08 94 mov r4,r4
10435 + *[0-9a-f]*: 1c 9e mov lr,lr
10436 + *[0-9a-f]*: 12 95 mov r5,r9
10437 + *[0-9a-f]*: 16 9b mov r11,r11
10438 + *[0-9a-f]*: 1c 92 mov r2,lr
10439 +
10440 +[0-9a-f]* <st_w1>:
10441 + *[0-9a-f]*: 1e af st\.w pc\+\+,pc
10442 + *[0-9a-f]*: 18 ac st\.w r12\+\+,r12
10443 + *[0-9a-f]*: 0a a5 st\.w r5\+\+,r5
10444 + *[0-9a-f]*: 08 a4 st\.w r4\+\+,r4
10445 + *[0-9a-f]*: 1c ae st\.w lr\+\+,lr
10446 + *[0-9a-f]*: 02 ab st\.w r1\+\+,r11
10447 + *[0-9a-f]*: 1a a0 st\.w sp\+\+,r0
10448 + *[0-9a-f]*: 1a a1 st\.w sp\+\+,r1
10449 +
10450 +[0-9a-f]* <st_h1>:
10451 + *[0-9a-f]*: 1e bf st\.h pc\+\+,pc
10452 + *[0-9a-f]*: 18 bc st\.h r12\+\+,r12
10453 + *[0-9a-f]*: 0a b5 st\.h r5\+\+,r5
10454 + *[0-9a-f]*: 08 b4 st\.h r4\+\+,r4
10455 + *[0-9a-f]*: 1c be st\.h lr\+\+,lr
10456 + *[0-9a-f]*: 18 bd st\.h r12\+\+,sp
10457 + *[0-9a-f]*: 0e be st\.h r7\+\+,lr
10458 + *[0-9a-f]*: 0e b4 st\.h r7\+\+,r4
10459 +
10460 +[0-9a-f]* <st_b1>:
10461 + *[0-9a-f]*: 1e cf st\.b pc\+\+,pc
10462 + *[0-9a-f]*: 18 cc st\.b r12\+\+,r12
10463 + *[0-9a-f]*: 0a c5 st\.b r5\+\+,r5
10464 + *[0-9a-f]*: 08 c4 st\.b r4\+\+,r4
10465 + *[0-9a-f]*: 1c ce st\.b lr\+\+,lr
10466 + *[0-9a-f]*: 12 cd st\.b r9\+\+,sp
10467 + *[0-9a-f]*: 02 cd st\.b r1\+\+,sp
10468 + *[0-9a-f]*: 00 c4 st\.b r0\+\+,r4
10469 +
10470 +[0-9a-f]* <st_w2>:
10471 + *[0-9a-f]*: 1e df st\.w --pc,pc
10472 + *[0-9a-f]*: 18 dc st\.w --r12,r12
10473 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10474 + *[0-9a-f]*: 08 d4 st\.w --r4,r4
10475 + *[0-9a-f]*: 1c de st\.w --lr,lr
10476 + *[0-9a-f]*: 02 d7 st\.w --r1,r7
10477 + *[0-9a-f]*: 06 d9 st\.w --r3,r9
10478 + *[0-9a-f]*: 0a d5 st\.w --r5,r5
10479 +
10480 +[0-9a-f]* <st_h2>:
10481 + *[0-9a-f]*: 1e ef st\.h --pc,pc
10482 + *[0-9a-f]*: 18 ec st\.h --r12,r12
10483 + *[0-9a-f]*: 0a e5 st\.h --r5,r5
10484 + *[0-9a-f]*: 08 e4 st\.h --r4,r4
10485 + *[0-9a-f]*: 1c ee st\.h --lr,lr
10486 + *[0-9a-f]*: 0a e7 st\.h --r5,r7
10487 + *[0-9a-f]*: 10 e8 st\.h --r8,r8
10488 + *[0-9a-f]*: 0e e2 st\.h --r7,r2
10489 +
10490 +[0-9a-f]* <st_b2>:
10491 + *[0-9a-f]*: 1e ff st\.b --pc,pc
10492 + *[0-9a-f]*: 18 fc st\.b --r12,r12
10493 + *[0-9a-f]*: 0a f5 st\.b --r5,r5
10494 + *[0-9a-f]*: 08 f4 st\.b --r4,r4
10495 + *[0-9a-f]*: 1c fe st\.b --lr,lr
10496 + *[0-9a-f]*: 1a fd st\.b --sp,sp
10497 + *[0-9a-f]*: 1a fb st\.b --sp,r11
10498 + *[0-9a-f]*: 08 f5 st\.b --r4,r5
10499 +
10500 +[0-9a-f]* <ld_w1>:
10501 + *[0-9a-f]*: 1f 0f ld\.w pc,pc\+\+
10502 + *[0-9a-f]*: 19 0c ld\.w r12,r12\+\+
10503 + *[0-9a-f]*: 0b 05 ld\.w r5,r5\+\+
10504 + *[0-9a-f]*: 09 04 ld\.w r4,r4\+\+
10505 + *[0-9a-f]*: 1d 0e ld\.w lr,lr\+\+
10506 + *[0-9a-f]*: 0f 03 ld\.w r3,r7\+\+
10507 + *[0-9a-f]*: 1d 03 ld\.w r3,lr\+\+
10508 + *[0-9a-f]*: 0b 0c ld\.w r12,r5\+\+
10509 +
10510 +[0-9a-f]* <ld_sh1>:
10511 + *[0-9a-f]*: 1f 1f ld\.sh pc,pc\+\+
10512 + *[0-9a-f]*: 19 1c ld\.sh r12,r12\+\+
10513 + *[0-9a-f]*: 0b 15 ld\.sh r5,r5\+\+
10514 + *[0-9a-f]*: 09 14 ld\.sh r4,r4\+\+
10515 + *[0-9a-f]*: 1d 1e ld\.sh lr,lr\+\+
10516 + *[0-9a-f]*: 05 1b ld\.sh r11,r2\+\+
10517 + *[0-9a-f]*: 11 12 ld\.sh r2,r8\+\+
10518 + *[0-9a-f]*: 0d 17 ld\.sh r7,r6\+\+
10519 +
10520 +[0-9a-f]* <ld_uh1>:
10521 + *[0-9a-f]*: 1f 2f ld\.uh pc,pc\+\+
10522 + *[0-9a-f]*: 19 2c ld\.uh r12,r12\+\+
10523 + *[0-9a-f]*: 0b 25 ld\.uh r5,r5\+\+
10524 + *[0-9a-f]*: 09 24 ld\.uh r4,r4\+\+
10525 + *[0-9a-f]*: 1d 2e ld\.uh lr,lr\+\+
10526 + *[0-9a-f]*: 0f 26 ld\.uh r6,r7\+\+
10527 + *[0-9a-f]*: 17 2a ld\.uh r10,r11\+\+
10528 + *[0-9a-f]*: 09 2e ld\.uh lr,r4\+\+
10529 +
10530 +[0-9a-f]* <ld_ub1>:
10531 + *[0-9a-f]*: 1f 3f ld\.ub pc,pc\+\+
10532 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10533 + *[0-9a-f]*: 0b 35 ld\.ub r5,r5\+\+
10534 + *[0-9a-f]*: 09 34 ld\.ub r4,r4\+\+
10535 + *[0-9a-f]*: 1d 3e ld\.ub lr,lr\+\+
10536 + *[0-9a-f]*: 1d 38 ld\.ub r8,lr\+\+
10537 + *[0-9a-f]*: 19 3c ld\.ub r12,r12\+\+
10538 + *[0-9a-f]*: 15 3b ld\.ub r11,r10\+\+
10539 +
10540 +[0-9a-f]* <ld_w2>:
10541 + *[0-9a-f]*: 1f 4f ld\.w pc,--pc
10542 + *[0-9a-f]*: 19 4c ld\.w r12,--r12
10543 + *[0-9a-f]*: 0b 45 ld\.w r5,--r5
10544 + *[0-9a-f]*: 09 44 ld\.w r4,--r4
10545 + *[0-9a-f]*: 1d 4e ld\.w lr,--lr
10546 + *[0-9a-f]*: 1d 4a ld\.w r10,--lr
10547 + *[0-9a-f]*: 13 4c ld\.w r12,--r9
10548 + *[0-9a-f]*: 0b 46 ld\.w r6,--r5
10549 +
10550 +[0-9a-f]* <ld_sh2>:
10551 + *[0-9a-f]*: 1f 5f ld\.sh pc,--pc
10552 + *[0-9a-f]*: 19 5c ld\.sh r12,--r12
10553 + *[0-9a-f]*: 0b 55 ld\.sh r5,--r5
10554 + *[0-9a-f]*: 09 54 ld\.sh r4,--r4
10555 + *[0-9a-f]*: 1d 5e ld\.sh lr,--lr
10556 + *[0-9a-f]*: 15 5f ld\.sh pc,--r10
10557 + *[0-9a-f]*: 07 56 ld\.sh r6,--r3
10558 + *[0-9a-f]*: 0d 54 ld\.sh r4,--r6
10559 +
10560 +[0-9a-f]* <ld_uh2>:
10561 + *[0-9a-f]*: 1f 6f ld\.uh pc,--pc
10562 + *[0-9a-f]*: 19 6c ld\.uh r12,--r12
10563 + *[0-9a-f]*: 0b 65 ld\.uh r5,--r5
10564 + *[0-9a-f]*: 09 64 ld\.uh r4,--r4
10565 + *[0-9a-f]*: 1d 6e ld\.uh lr,--lr
10566 + *[0-9a-f]*: 05 63 ld\.uh r3,--r2
10567 + *[0-9a-f]*: 01 61 ld\.uh r1,--r0
10568 + *[0-9a-f]*: 13 62 ld\.uh r2,--r9
10569 +
10570 +[0-9a-f]* <ld_ub2>:
10571 + *[0-9a-f]*: 1f 7f ld\.ub pc,--pc
10572 + *[0-9a-f]*: 19 7c ld\.ub r12,--r12
10573 + *[0-9a-f]*: 0b 75 ld\.ub r5,--r5
10574 + *[0-9a-f]*: 09 74 ld\.ub r4,--r4
10575 + *[0-9a-f]*: 1d 7e ld\.ub lr,--lr
10576 + *[0-9a-f]*: 03 71 ld\.ub r1,--r1
10577 + *[0-9a-f]*: 0d 70 ld\.ub r0,--r6
10578 + *[0-9a-f]*: 0f 72 ld\.ub r2,--r7
10579 +
10580 +[0-9a-f]* <ld_ub3>:
10581 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
10582 + *[0-9a-f]*: 19 fc ld\.ub r12,r12\[0x7\]
10583 + *[0-9a-f]*: 0b c5 ld\.ub r5,r5\[0x4\]
10584 + *[0-9a-f]*: 09 b4 ld\.ub r4,r4\[0x3\]
10585 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
10586 + *[0-9a-f]*: 13 e6 ld\.ub r6,r9\[0x6\]
10587 + *[0-9a-f]*: 1d c2 ld\.ub r2,lr\[0x4\]
10588 + *[0-9a-f]*: 11 81 ld\.ub r1,r8\[0x0\]
10589 +
10590 +[0-9a-f]* <sub3_sp>:
10591 + *[0-9a-f]*: 20 0d sub sp,0
10592 + *[0-9a-f]*: 2f fd sub sp,-4
10593 + *[0-9a-f]*: 28 0d sub sp,-512
10594 + *[0-9a-f]*: 27 fd sub sp,508
10595 + *[0-9a-f]*: 20 1d sub sp,4
10596 + *[0-9a-f]*: 20 bd sub sp,44
10597 + *[0-9a-f]*: 20 2d sub sp,8
10598 + *[0-9a-f]*: 25 7d sub sp,348
10599 +
10600 +[0-9a-f]* <sub3>:
10601 + *[0-9a-f]*: 20 0f sub pc,0
10602 + *[0-9a-f]*: 2f fc sub r12,-1
10603 + *[0-9a-f]*: 28 05 sub r5,-128
10604 + *[0-9a-f]*: 27 f4 sub r4,127
10605 + *[0-9a-f]*: 20 1e sub lr,1
10606 + *[0-9a-f]*: 2d 76 sub r6,-41
10607 + *[0-9a-f]*: 22 54 sub r4,37
10608 + *[0-9a-f]*: 23 8c sub r12,56
10609 +
10610 +[0-9a-f]* <mov1>:
10611 + *[0-9a-f]*: 30 0f mov pc,0
10612 + *[0-9a-f]*: 3f fc mov r12,-1
10613 + *[0-9a-f]*: 38 05 mov r5,-128
10614 + *[0-9a-f]*: 37 f4 mov r4,127
10615 + *[0-9a-f]*: 30 1e mov lr,1
10616 + *[0-9a-f]*: 30 ef mov pc,14
10617 + *[0-9a-f]*: 39 c6 mov r6,-100
10618 + *[0-9a-f]*: 38 6e mov lr,-122
10619 +
10620 +[0-9a-f]* <lddsp>:
10621 + *[0-9a-f]*: 40 0f lddsp pc,sp\[0x0\]
10622 + *[0-9a-f]*: 47 fc lddsp r12,sp\[0x1fc\]
10623 + *[0-9a-f]*: 44 05 lddsp r5,sp\[0x100\]
10624 + *[0-9a-f]*: 43 f4 lddsp r4,sp\[0xfc\]
10625 + *[0-9a-f]*: 40 1e lddsp lr,sp\[0x4\]
10626 + *[0-9a-f]*: 44 0e lddsp lr,sp\[0x100\]
10627 + *[0-9a-f]*: 40 5c lddsp r12,sp\[0x14\]
10628 + *[0-9a-f]*: 47 69 lddsp r9,sp\[0x1d8\]
10629 +
10630 +[0-9a-f]* <lddpc>:
10631 + *[0-9a-f]*: 48 0f lddpc pc,[0-9a-f]* <.*>
10632 + *[0-9a-f]*: 4f f0 lddpc r0,[0-9a-f]* <.*>
10633 + *[0-9a-f]*: 4c 08 lddpc r8,[0-9a-f]* <.*>
10634 + *[0-9a-f]*: 4b f7 lddpc r7,[0-9a-f]* <.*>
10635 + *[0-9a-f]*: 48 1e lddpc lr,[0-9a-f]* <.*>
10636 + *[0-9a-f]*: 4f 6d lddpc sp,[0-9a-f]* <.*>
10637 + *[0-9a-f]*: 49 e6 lddpc r6,[0-9a-f]* <.*>
10638 + *[0-9a-f]*: 48 7b lddpc r11,[0-9a-f]* <.*>
10639 +
10640 +[0-9a-f]* <stdsp>:
10641 + *[0-9a-f]*: 50 0f stdsp sp\[0x0\],pc
10642 + *[0-9a-f]*: 57 fc stdsp sp\[0x1fc\],r12
10643 + *[0-9a-f]*: 54 05 stdsp sp\[0x100\],r5
10644 + *[0-9a-f]*: 53 f4 stdsp sp\[0xfc\],r4
10645 + *[0-9a-f]*: 50 1e stdsp sp\[0x4\],lr
10646 + *[0-9a-f]*: 54 cf stdsp sp\[0x130\],pc
10647 + *[0-9a-f]*: 54 00 stdsp sp\[0x100\],r0
10648 + *[0-9a-f]*: 55 45 stdsp sp\[0x150\],r5
10649 +
10650 +[0-9a-f]* <cp2>:
10651 + *[0-9a-f]*: 58 0f cp.w pc,0
10652 + *[0-9a-f]*: 5b fc cp.w r12,-1
10653 + *[0-9a-f]*: 5a 05 cp.w r5,-32
10654 + *[0-9a-f]*: 59 f4 cp.w r4,31
10655 + *[0-9a-f]*: 58 1e cp.w lr,1
10656 + *[0-9a-f]*: 58 38 cp.w r8,3
10657 + *[0-9a-f]*: 59 0e cp.w lr,16
10658 + *[0-9a-f]*: 5a 67 cp.w r7,-26
10659 +
10660 +[0-9a-f]* <acr>:
10661 + *[0-9a-f]*: 5c 0f acr pc
10662 + *[0-9a-f]*: 5c 0c acr r12
10663 + *[0-9a-f]*: 5c 05 acr r5
10664 + *[0-9a-f]*: 5c 04 acr r4
10665 + *[0-9a-f]*: 5c 0e acr lr
10666 + *[0-9a-f]*: 5c 02 acr r2
10667 + *[0-9a-f]*: 5c 0c acr r12
10668 + *[0-9a-f]*: 5c 0f acr pc
10669 +
10670 +[0-9a-f]* <scr>:
10671 + *[0-9a-f]*: 5c 1f scr pc
10672 + *[0-9a-f]*: 5c 1c scr r12
10673 + *[0-9a-f]*: 5c 15 scr r5
10674 + *[0-9a-f]*: 5c 14 scr r4
10675 + *[0-9a-f]*: 5c 1e scr lr
10676 + *[0-9a-f]*: 5c 1f scr pc
10677 + *[0-9a-f]*: 5c 16 scr r6
10678 + *[0-9a-f]*: 5c 11 scr r1
10679 +
10680 +[0-9a-f]* <cpc0>:
10681 + *[0-9a-f]*: 5c 2f cpc pc
10682 + *[0-9a-f]*: 5c 2c cpc r12
10683 + *[0-9a-f]*: 5c 25 cpc r5
10684 + *[0-9a-f]*: 5c 24 cpc r4
10685 + *[0-9a-f]*: 5c 2e cpc lr
10686 + *[0-9a-f]*: 5c 2f cpc pc
10687 + *[0-9a-f]*: 5c 24 cpc r4
10688 + *[0-9a-f]*: 5c 29 cpc r9
10689 +
10690 +[0-9a-f]* <neg>:
10691 + *[0-9a-f]*: 5c 3f neg pc
10692 + *[0-9a-f]*: 5c 3c neg r12
10693 + *[0-9a-f]*: 5c 35 neg r5
10694 + *[0-9a-f]*: 5c 34 neg r4
10695 + *[0-9a-f]*: 5c 3e neg lr
10696 + *[0-9a-f]*: 5c 37 neg r7
10697 + *[0-9a-f]*: 5c 31 neg r1
10698 + *[0-9a-f]*: 5c 39 neg r9
10699 +
10700 +[0-9a-f]* <abs>:
10701 + *[0-9a-f]*: 5c 4f abs pc
10702 + *[0-9a-f]*: 5c 4c abs r12
10703 + *[0-9a-f]*: 5c 45 abs r5
10704 + *[0-9a-f]*: 5c 44 abs r4
10705 + *[0-9a-f]*: 5c 4e abs lr
10706 + *[0-9a-f]*: 5c 46 abs r6
10707 + *[0-9a-f]*: 5c 46 abs r6
10708 + *[0-9a-f]*: 5c 44 abs r4
10709 +
10710 +[0-9a-f]* <castu_b>:
10711 + *[0-9a-f]*: 5c 5f castu\.b pc
10712 + *[0-9a-f]*: 5c 5c castu\.b r12
10713 + *[0-9a-f]*: 5c 55 castu\.b r5
10714 + *[0-9a-f]*: 5c 54 castu\.b r4
10715 + *[0-9a-f]*: 5c 5e castu\.b lr
10716 + *[0-9a-f]*: 5c 57 castu\.b r7
10717 + *[0-9a-f]*: 5c 5d castu\.b sp
10718 + *[0-9a-f]*: 5c 59 castu\.b r9
10719 +
10720 +[0-9a-f]* <casts_b>:
10721 + *[0-9a-f]*: 5c 6f casts\.b pc
10722 + *[0-9a-f]*: 5c 6c casts\.b r12
10723 + *[0-9a-f]*: 5c 65 casts\.b r5
10724 + *[0-9a-f]*: 5c 64 casts\.b r4
10725 + *[0-9a-f]*: 5c 6e casts\.b lr
10726 + *[0-9a-f]*: 5c 6b casts\.b r11
10727 + *[0-9a-f]*: 5c 61 casts\.b r1
10728 + *[0-9a-f]*: 5c 6a casts\.b r10
10729 +
10730 +[0-9a-f]* <castu_h>:
10731 + *[0-9a-f]*: 5c 7f castu\.h pc
10732 + *[0-9a-f]*: 5c 7c castu\.h r12
10733 + *[0-9a-f]*: 5c 75 castu\.h r5
10734 + *[0-9a-f]*: 5c 74 castu\.h r4
10735 + *[0-9a-f]*: 5c 7e castu\.h lr
10736 + *[0-9a-f]*: 5c 7a castu\.h r10
10737 + *[0-9a-f]*: 5c 7b castu\.h r11
10738 + *[0-9a-f]*: 5c 71 castu\.h r1
10739 +
10740 +[0-9a-f]* <casts_h>:
10741 + *[0-9a-f]*: 5c 8f casts\.h pc
10742 + *[0-9a-f]*: 5c 8c casts\.h r12
10743 + *[0-9a-f]*: 5c 85 casts\.h r5
10744 + *[0-9a-f]*: 5c 84 casts\.h r4
10745 + *[0-9a-f]*: 5c 8e casts\.h lr
10746 + *[0-9a-f]*: 5c 80 casts\.h r0
10747 + *[0-9a-f]*: 5c 85 casts\.h r5
10748 + *[0-9a-f]*: 5c 89 casts\.h r9
10749 +
10750 +[0-9a-f]* <brev>:
10751 + *[0-9a-f]*: 5c 9f brev pc
10752 + *[0-9a-f]*: 5c 9c brev r12
10753 + *[0-9a-f]*: 5c 95 brev r5
10754 + *[0-9a-f]*: 5c 94 brev r4
10755 + *[0-9a-f]*: 5c 9e brev lr
10756 + *[0-9a-f]*: 5c 95 brev r5
10757 + *[0-9a-f]*: 5c 9a brev r10
10758 + *[0-9a-f]*: 5c 98 brev r8
10759 +
10760 +[0-9a-f]* <swap_h>:
10761 + *[0-9a-f]*: 5c af swap\.h pc
10762 + *[0-9a-f]*: 5c ac swap\.h r12
10763 + *[0-9a-f]*: 5c a5 swap\.h r5
10764 + *[0-9a-f]*: 5c a4 swap\.h r4
10765 + *[0-9a-f]*: 5c ae swap\.h lr
10766 + *[0-9a-f]*: 5c a7 swap\.h r7
10767 + *[0-9a-f]*: 5c a0 swap\.h r0
10768 + *[0-9a-f]*: 5c a8 swap\.h r8
10769 +
10770 +[0-9a-f]* <swap_b>:
10771 + *[0-9a-f]*: 5c bf swap\.b pc
10772 + *[0-9a-f]*: 5c bc swap\.b r12
10773 + *[0-9a-f]*: 5c b5 swap\.b r5
10774 + *[0-9a-f]*: 5c b4 swap\.b r4
10775 + *[0-9a-f]*: 5c be swap\.b lr
10776 + *[0-9a-f]*: 5c ba swap\.b r10
10777 + *[0-9a-f]*: 5c bc swap\.b r12
10778 + *[0-9a-f]*: 5c b1 swap\.b r1
10779 +
10780 +[0-9a-f]* <swap_bh>:
10781 + *[0-9a-f]*: 5c cf swap\.bh pc
10782 + *[0-9a-f]*: 5c cc swap\.bh r12
10783 + *[0-9a-f]*: 5c c5 swap\.bh r5
10784 + *[0-9a-f]*: 5c c4 swap\.bh r4
10785 + *[0-9a-f]*: 5c ce swap\.bh lr
10786 + *[0-9a-f]*: 5c c9 swap\.bh r9
10787 + *[0-9a-f]*: 5c c4 swap\.bh r4
10788 + *[0-9a-f]*: 5c c1 swap\.bh r1
10789 +
10790 +[0-9a-f]* <One_s_compliment>:
10791 + *[0-9a-f]*: 5c df com pc
10792 + *[0-9a-f]*: 5c dc com r12
10793 + *[0-9a-f]*: 5c d5 com r5
10794 + *[0-9a-f]*: 5c d4 com r4
10795 + *[0-9a-f]*: 5c de com lr
10796 + *[0-9a-f]*: 5c d2 com r2
10797 + *[0-9a-f]*: 5c d2 com r2
10798 + *[0-9a-f]*: 5c d7 com r7
10799 +
10800 +[0-9a-f]* <tnbz>:
10801 + *[0-9a-f]*: 5c ef tnbz pc
10802 + *[0-9a-f]*: 5c ec tnbz r12
10803 + *[0-9a-f]*: 5c e5 tnbz r5
10804 + *[0-9a-f]*: 5c e4 tnbz r4
10805 + *[0-9a-f]*: 5c ee tnbz lr
10806 + *[0-9a-f]*: 5c e8 tnbz r8
10807 + *[0-9a-f]*: 5c ec tnbz r12
10808 + *[0-9a-f]*: 5c ef tnbz pc
10809 +
10810 +[0-9a-f]* <rol>:
10811 + *[0-9a-f]*: 5c ff rol pc
10812 + *[0-9a-f]*: 5c fc rol r12
10813 + *[0-9a-f]*: 5c f5 rol r5
10814 + *[0-9a-f]*: 5c f4 rol r4
10815 + *[0-9a-f]*: 5c fe rol lr
10816 + *[0-9a-f]*: 5c fa rol r10
10817 + *[0-9a-f]*: 5c f9 rol r9
10818 + *[0-9a-f]*: 5c f5 rol r5
10819 +
10820 +[0-9a-f]* <ror>:
10821 + *[0-9a-f]*: 5d 0f ror pc
10822 + *[0-9a-f]*: 5d 0c ror r12
10823 + *[0-9a-f]*: 5d 05 ror r5
10824 + *[0-9a-f]*: 5d 04 ror r4
10825 + *[0-9a-f]*: 5d 0e ror lr
10826 + *[0-9a-f]*: 5d 08 ror r8
10827 + *[0-9a-f]*: 5d 04 ror r4
10828 + *[0-9a-f]*: 5d 07 ror r7
10829 +
10830 +[0-9a-f]* <icall>:
10831 + *[0-9a-f]*: 5d 1f icall pc
10832 + *[0-9a-f]*: 5d 1c icall r12
10833 + *[0-9a-f]*: 5d 15 icall r5
10834 + *[0-9a-f]*: 5d 14 icall r4
10835 + *[0-9a-f]*: 5d 1e icall lr
10836 + *[0-9a-f]*: 5d 13 icall r3
10837 + *[0-9a-f]*: 5d 11 icall r1
10838 + *[0-9a-f]*: 5d 13 icall r3
10839 +
10840 +[0-9a-f]* <mustr>:
10841 + *[0-9a-f]*: 5d 2f mustr pc
10842 + *[0-9a-f]*: 5d 2c mustr r12
10843 + *[0-9a-f]*: 5d 25 mustr r5
10844 + *[0-9a-f]*: 5d 24 mustr r4
10845 + *[0-9a-f]*: 5d 2e mustr lr
10846 + *[0-9a-f]*: 5d 21 mustr r1
10847 + *[0-9a-f]*: 5d 24 mustr r4
10848 + *[0-9a-f]*: 5d 2c mustr r12
10849 +
10850 +[0-9a-f]* <musfr>:
10851 + *[0-9a-f]*: 5d 3f musfr pc
10852 + *[0-9a-f]*: 5d 3c musfr r12
10853 + *[0-9a-f]*: 5d 35 musfr r5
10854 + *[0-9a-f]*: 5d 34 musfr r4
10855 + *[0-9a-f]*: 5d 3e musfr lr
10856 + *[0-9a-f]*: 5d 3b musfr r11
10857 + *[0-9a-f]*: 5d 3c musfr r12
10858 + *[0-9a-f]*: 5d 32 musfr r2
10859 +
10860 +[0-9a-f]* <ret_cond>:
10861 + *[0-9a-f]*: 5e 0f reteq 1
10862 + *[0-9a-f]*: 5e fc retal r12
10863 + *[0-9a-f]*: 5e 85 retls r5
10864 + *[0-9a-f]*: 5e 74 retpl r4
10865 + *[0-9a-f]*: 5e 1e retne -1
10866 + *[0-9a-f]*: 5e 90 retgt r0
10867 + *[0-9a-f]*: 5e 9c retgt r12
10868 + *[0-9a-f]*: 5e 4a retge r10
10869 +
10870 +[0-9a-f]* <sr_cond>:
10871 + *[0-9a-f]*: 5f 0f sreq pc
10872 + *[0-9a-f]*: 5f fc sral r12
10873 + *[0-9a-f]*: 5f 85 srls r5
10874 + *[0-9a-f]*: 5f 74 srpl r4
10875 + *[0-9a-f]*: 5f 1e srne lr
10876 + *[0-9a-f]*: 5f 50 srlt r0
10877 + *[0-9a-f]*: 5f fd sral sp
10878 + *[0-9a-f]*: 5f 49 srge r9
10879 +
10880 +[0-9a-f]* <ld_w3>:
10881 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
10882 + *[0-9a-f]*: 79 fc ld\.w r12,r12\[0x7c\]
10883 + *[0-9a-f]*: 6b 05 ld\.w r5,r5\[0x40\]
10884 + *[0-9a-f]*: 68 f4 ld\.w r4,r4\[0x3c\]
10885 + *[0-9a-f]*: 7c 1e ld\.w lr,lr\[0x4\]
10886 + *[0-9a-f]*: 64 dd ld\.w sp,r2\[0x34\]
10887 + *[0-9a-f]*: 62 29 ld\.w r9,r1\[0x8\]
10888 + *[0-9a-f]*: 7a f5 ld\.w r5,sp\[0x3c\]
10889 +
10890 +[0-9a-f]* <ld_sh3>:
10891 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
10892 + *[0-9a-f]*: 98 7c ld\.sh r12,r12\[0xe\]
10893 + *[0-9a-f]*: 8a 45 ld\.sh r5,r5\[0x8\]
10894 + *[0-9a-f]*: 88 34 ld\.sh r4,r4\[0x6\]
10895 + *[0-9a-f]*: 9c 1e ld\.sh lr,lr\[0x2\]
10896 + *[0-9a-f]*: 84 44 ld\.sh r4,r2\[0x8\]
10897 + *[0-9a-f]*: 9c 5d ld\.sh sp,lr\[0xa\]
10898 + *[0-9a-f]*: 96 12 ld\.sh r2,r11\[0x2\]
10899 +
10900 +[0-9a-f]* <ld_uh3>:
10901 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
10902 + *[0-9a-f]*: 98 fc ld\.uh r12,r12\[0xe\]
10903 + *[0-9a-f]*: 8a c5 ld\.uh r5,r5\[0x8\]
10904 + *[0-9a-f]*: 88 b4 ld\.uh r4,r4\[0x6\]
10905 + *[0-9a-f]*: 9c 9e ld\.uh lr,lr\[0x2\]
10906 + *[0-9a-f]*: 80 da ld\.uh r10,r0\[0xa\]
10907 + *[0-9a-f]*: 96 c8 ld\.uh r8,r11\[0x8\]
10908 + *[0-9a-f]*: 84 ea ld\.uh r10,r2\[0xc\]
10909 +
10910 +[0-9a-f]* <st_w3>:
10911 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
10912 + *[0-9a-f]*: 99 fc st\.w r12\[0x3c\],r12
10913 + *[0-9a-f]*: 8b 85 st\.w r5\[0x20\],r5
10914 + *[0-9a-f]*: 89 74 st\.w r4\[0x1c\],r4
10915 + *[0-9a-f]*: 9d 1e st\.w lr\[0x4\],lr
10916 + *[0-9a-f]*: 8f bb st\.w r7\[0x2c\],r11
10917 + *[0-9a-f]*: 85 66 st\.w r2\[0x18\],r6
10918 + *[0-9a-f]*: 89 39 st\.w r4\[0xc\],r9
10919 +
10920 +[0-9a-f]* <st_h3>:
10921 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
10922 + *[0-9a-f]*: b8 7c st\.h r12\[0xe\],r12
10923 + *[0-9a-f]*: aa 45 st\.h r5\[0x8\],r5
10924 + *[0-9a-f]*: a8 34 st\.h r4\[0x6\],r4
10925 + *[0-9a-f]*: bc 1e st\.h lr\[0x2\],lr
10926 + *[0-9a-f]*: bc 5c st\.h lr\[0xa\],r12
10927 + *[0-9a-f]*: ac 20 st\.h r6\[0x4\],r0
10928 + *[0-9a-f]*: aa 6d st\.h r5\[0xc\],sp
10929 +
10930 +[0-9a-f]* <st_b3>:
10931 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
10932 + *[0-9a-f]*: b8 fc st\.b r12\[0x7\],r12
10933 + *[0-9a-f]*: aa c5 st\.b r5\[0x4\],r5
10934 + *[0-9a-f]*: a8 b4 st\.b r4\[0x3\],r4
10935 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
10936 + *[0-9a-f]*: b8 e9 st\.b r12\[0x6\],r9
10937 + *[0-9a-f]*: a4 be st\.b r2\[0x3\],lr
10938 + *[0-9a-f]*: a2 bb st\.b r1\[0x3\],r11
10939 +
10940 +[0-9a-f]* <ldd>:
10941 + *[0-9a-f]*: bf 00 ld\.d r0,pc
10942 + *[0-9a-f]*: b9 0e ld\.d lr,r12
10943 + *[0-9a-f]*: ab 08 ld\.d r8,r5
10944 + *[0-9a-f]*: a9 06 ld\.d r6,r4
10945 + *[0-9a-f]*: bd 02 ld\.d r2,lr
10946 + *[0-9a-f]*: af 0e ld\.d lr,r7
10947 + *[0-9a-f]*: a9 04 ld\.d r4,r4
10948 + *[0-9a-f]*: bf 0e ld\.d lr,pc
10949 +
10950 +[0-9a-f]* <ldd_postinc>:
10951 + *[0-9a-f]*: bf 01 ld\.d r0,pc\+\+
10952 + *[0-9a-f]*: b9 0f ld\.d lr,r12\+\+
10953 + *[0-9a-f]*: ab 09 ld\.d r8,r5\+\+
10954 + *[0-9a-f]*: a9 07 ld\.d r6,r4\+\+
10955 + *[0-9a-f]*: bd 03 ld\.d r2,lr\+\+
10956 + *[0-9a-f]*: ab 0f ld\.d lr,r5\+\+
10957 + *[0-9a-f]*: b7 0d ld\.d r12,r11\+\+
10958 + *[0-9a-f]*: b9 03 ld\.d r2,r12\+\+
10959 +
10960 +[0-9a-f]* <ldd_predec>:
10961 + *[0-9a-f]*: bf 10 ld\.d r0,--pc
10962 + *[0-9a-f]*: b9 1e ld\.d lr,--r12
10963 + *[0-9a-f]*: ab 18 ld\.d r8,--r5
10964 + *[0-9a-f]*: a9 16 ld\.d r6,--r4
10965 + *[0-9a-f]*: bd 12 ld\.d r2,--lr
10966 + *[0-9a-f]*: a1 18 ld\.d r8,--r0
10967 + *[0-9a-f]*: bf 1a ld\.d r10,--pc
10968 + *[0-9a-f]*: a9 12 ld\.d r2,--r4
10969 +
10970 +[0-9a-f]* <std>:
10971 + *[0-9a-f]*: bf 11 st\.d pc,r0
10972 + *[0-9a-f]*: b9 1f st\.d r12,lr
10973 + *[0-9a-f]*: ab 19 st\.d r5,r8
10974 + *[0-9a-f]*: a9 17 st\.d r4,r6
10975 + *[0-9a-f]*: bd 13 st\.d lr,r2
10976 + *[0-9a-f]*: a1 1d st\.d r0,r12
10977 + *[0-9a-f]*: bb 15 st\.d sp,r4
10978 + *[0-9a-f]*: b9 1d st\.d r12,r12
10979 +
10980 +[0-9a-f]* <std_postinc>:
10981 + *[0-9a-f]*: bf 20 st\.d pc\+\+,r0
10982 + *[0-9a-f]*: b9 2e st\.d r12\+\+,lr
10983 + *[0-9a-f]*: ab 28 st\.d r5\+\+,r8
10984 + *[0-9a-f]*: a9 26 st\.d r4\+\+,r6
10985 + *[0-9a-f]*: bd 22 st\.d lr\+\+,r2
10986 + *[0-9a-f]*: bb 26 st\.d sp\+\+,r6
10987 + *[0-9a-f]*: b5 26 st\.d r10\+\+,r6
10988 + *[0-9a-f]*: af 22 st\.d r7\+\+,r2
10989 +
10990 +[0-9a-f]* <std_predec>:
10991 + *[0-9a-f]*: bf 21 st\.d --pc,r0
10992 + *[0-9a-f]*: b9 2f st\.d --r12,lr
10993 + *[0-9a-f]*: ab 29 st\.d --r5,r8
10994 + *[0-9a-f]*: a9 27 st\.d --r4,r6
10995 + *[0-9a-f]*: bd 23 st\.d --lr,r2
10996 + *[0-9a-f]*: a7 27 st\.d --r3,r6
10997 + *[0-9a-f]*: bd 23 st\.d --lr,r2
10998 + *[0-9a-f]*: a1 25 st\.d --r0,r4
10999 +
11000 +[0-9a-f]* <mul>:
11001 + *[0-9a-f]*: bf 3f mul pc,pc
11002 + *[0-9a-f]*: b9 3c mul r12,r12
11003 + *[0-9a-f]*: ab 35 mul r5,r5
11004 + *[0-9a-f]*: a9 34 mul r4,r4
11005 + *[0-9a-f]*: bd 3e mul lr,lr
11006 + *[0-9a-f]*: bd 3a mul r10,lr
11007 + *[0-9a-f]*: b1 30 mul r0,r8
11008 + *[0-9a-f]*: ab 38 mul r8,r5
11009 +
11010 +[0-9a-f]* <asr_imm5>:
11011 + *[0-9a-f]*: a1 4f asr pc,0x0
11012 + *[0-9a-f]*: bf 5c asr r12,0x1f
11013 + *[0-9a-f]*: b1 45 asr r5,0x10
11014 + *[0-9a-f]*: af 54 asr r4,0xf
11015 + *[0-9a-f]*: a1 5e asr lr,0x1
11016 + *[0-9a-f]*: b7 56 asr r6,0x17
11017 + *[0-9a-f]*: b3 46 asr r6,0x12
11018 + *[0-9a-f]*: a9 45 asr r5,0x8
11019 +
11020 +[0-9a-f]* <lsl_imm5>:
11021 + *[0-9a-f]*: a1 6f lsl pc,0x0
11022 + *[0-9a-f]*: bf 7c lsl r12,0x1f
11023 + *[0-9a-f]*: b1 65 lsl r5,0x10
11024 + *[0-9a-f]*: af 74 lsl r4,0xf
11025 + *[0-9a-f]*: a1 7e lsl lr,0x1
11026 + *[0-9a-f]*: ad 7c lsl r12,0xd
11027 + *[0-9a-f]*: b1 66 lsl r6,0x10
11028 + *[0-9a-f]*: b9 71 lsl r1,0x19
11029 +
11030 +[0-9a-f]* <lsr_imm5>:
11031 + *[0-9a-f]*: a1 8f lsr pc,0x0
11032 + *[0-9a-f]*: bf 9c lsr r12,0x1f
11033 + *[0-9a-f]*: b1 85 lsr r5,0x10
11034 + *[0-9a-f]*: af 94 lsr r4,0xf
11035 + *[0-9a-f]*: a1 9e lsr lr,0x1
11036 + *[0-9a-f]*: a1 90 lsr r0,0x1
11037 + *[0-9a-f]*: ab 88 lsr r8,0xa
11038 + *[0-9a-f]*: bb 87 lsr r7,0x1a
11039 +
11040 +[0-9a-f]* <sbr>:
11041 + *[0-9a-f]*: a1 af sbr pc,0x0
11042 + *[0-9a-f]*: bf bc sbr r12,0x1f
11043 + *[0-9a-f]*: b1 a5 sbr r5,0x10
11044 + *[0-9a-f]*: af b4 sbr r4,0xf
11045 + *[0-9a-f]*: a1 be sbr lr,0x1
11046 + *[0-9a-f]*: bf b8 sbr r8,0x1f
11047 + *[0-9a-f]*: b7 a6 sbr r6,0x16
11048 + *[0-9a-f]*: b7 b1 sbr r1,0x17
11049 +
11050 +[0-9a-f]* <cbr>:
11051 + *[0-9a-f]*: a1 cf cbr pc,0x0
11052 + *[0-9a-f]*: bf dc cbr r12,0x1f
11053 + *[0-9a-f]*: b1 c5 cbr r5,0x10
11054 + *[0-9a-f]*: af d4 cbr r4,0xf
11055 + *[0-9a-f]*: a1 de cbr lr,0x1
11056 + *[0-9a-f]*: ab cc cbr r12,0xa
11057 + *[0-9a-f]*: b7 c7 cbr r7,0x16
11058 + *[0-9a-f]*: a9 d8 cbr r8,0x9
11059 +
11060 +[0-9a-f]* <brc1>:
11061 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
11062 + *[0-9a-f]*: cf f7 brpl [0-9a-f]* <.*>
11063 + *[0-9a-f]*: c8 04 brge [0-9a-f]* <.*>
11064 + *[0-9a-f]*: c7 f3 brcs [0-9a-f]* <.*>
11065 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
11066 + *[0-9a-f]*: c7 33 brcs [0-9a-f]* <.*>
11067 + *[0-9a-f]*: cf 70 breq [0-9a-f]* <.*>
11068 + *[0-9a-f]*: c0 60 breq [0-9a-f]* <.*>
11069 +
11070 +[0-9a-f]* <rjmp>:
11071 + *[0-9a-f]*: c0 08 rjmp [0-9a-f]* <.*>
11072 + *[0-9a-f]*: cf fb rjmp [0-9a-f]* <.*>
11073 + *[0-9a-f]*: c0 0a rjmp [0-9a-f]* <.*>
11074 + *[0-9a-f]*: cf f9 rjmp [0-9a-f]* <.*>
11075 + *[0-9a-f]*: c0 18 rjmp [0-9a-f]* <.*>
11076 + *[0-9a-f]*: c1 fa rjmp [0-9a-f]* <.*>
11077 + *[0-9a-f]*: c0 78 rjmp [0-9a-f]* <.*>
11078 + *[0-9a-f]*: cf ea rjmp [0-9a-f]* <.*>
11079 +
11080 +[0-9a-f]* <rcall1>:
11081 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
11082 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
11083 + *[0-9a-f]*: c0 0e rcall [0-9a-f]* <.*>
11084 + *[0-9a-f]*: cf fd rcall [0-9a-f]* <.*>
11085 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
11086 + *[0-9a-f]*: c6 cc rcall [0-9a-f]* <.*>
11087 + *[0-9a-f]*: cf 7e rcall [0-9a-f]* <.*>
11088 + *[0-9a-f]*: c1 ae rcall [0-9a-f]* <.*>
11089 +
11090 +[0-9a-f]* <acall>:
11091 + *[0-9a-f]*: d0 00 acall 0x0
11092 + *[0-9a-f]*: df f0 acall 0x3fc
11093 + *[0-9a-f]*: d8 00 acall 0x200
11094 + *[0-9a-f]*: d7 f0 acall 0x1fc
11095 + *[0-9a-f]*: d0 10 acall 0x4
11096 + *[0-9a-f]*: d5 90 acall 0x164
11097 + *[0-9a-f]*: d4 c0 acall 0x130
11098 + *[0-9a-f]*: d2 b0 acall 0xac
11099 +
11100 +[0-9a-f]* <scall>:
11101 + *[0-9a-f]*: d7 33 scall
11102 + *[0-9a-f]*: d7 33 scall
11103 + *[0-9a-f]*: d7 33 scall
11104 + *[0-9a-f]*: d7 33 scall
11105 + *[0-9a-f]*: d7 33 scall
11106 + *[0-9a-f]*: d7 33 scall
11107 + *[0-9a-f]*: d7 33 scall
11108 + *[0-9a-f]*: d7 33 scall
11109 +
11110 +[0-9a-f]* <popm>:
11111 + *[0-9a-f]*: d8 02 popm pc
11112 + *[0-9a-f]*: dd fa popm r0-r11,pc,r12=-1
11113 + *[0-9a-f]*: d4 02 popm lr
11114 + *[0-9a-f]*: db fa popm r0-r11,pc,r12=1
11115 + *[0-9a-f]*: d0 12 popm r0-r3
11116 + *[0-9a-f]*: d8 e2 popm r4-r10,pc
11117 + *[0-9a-f]*: d9 1a popm r0-r3,r11,pc,r12=0
11118 + *[0-9a-f]*: d7 b2 popm r0-r7,r10-r12,lr
11119 +
11120 +[0-9a-f]* <pushm>:
11121 + *[0-9a-f]*: d8 01 pushm pc
11122 + *[0-9a-f]*: df f1 pushm r0-r12,lr-pc
11123 + *[0-9a-f]*: d8 01 pushm pc
11124 + *[0-9a-f]*: d7 f1 pushm r0-r12,lr
11125 + *[0-9a-f]*: d0 11 pushm r0-r3
11126 + *[0-9a-f]*: dc c1 pushm r8-r10,lr-pc
11127 + *[0-9a-f]*: d0 91 pushm r0-r3,r10
11128 + *[0-9a-f]*: d2 41 pushm r8-r9,r12
11129 +
11130 +[0-9a-f]* <popm_n>:
11131 +.*
11132 +.*
11133 +.*
11134 +.*
11135 +.*
11136 +.*
11137 +.*
11138 +.*
11139 +
11140 +[0-9a-f]* <pushm_n>:
11141 +.*
11142 +.*
11143 +.*
11144 +.*
11145 +.*
11146 +.*
11147 +.*
11148 +.*
11149 +
11150 +[0-9a-f]* <csrfcz>:
11151 + *[0-9a-f]*: d0 03 csrfcz 0x0
11152 + *[0-9a-f]*: d1 f3 csrfcz 0x1f
11153 + *[0-9a-f]*: d1 03 csrfcz 0x10
11154 + *[0-9a-f]*: d0 f3 csrfcz 0xf
11155 + *[0-9a-f]*: d0 13 csrfcz 0x1
11156 + *[0-9a-f]*: d0 53 csrfcz 0x5
11157 + *[0-9a-f]*: d0 d3 csrfcz 0xd
11158 + *[0-9a-f]*: d1 73 csrfcz 0x17
11159 +
11160 +[0-9a-f]* <ssrf>:
11161 + *[0-9a-f]*: d2 03 ssrf 0x0
11162 + *[0-9a-f]*: d3 f3 ssrf 0x1f
11163 + *[0-9a-f]*: d3 03 ssrf 0x10
11164 + *[0-9a-f]*: d2 f3 ssrf 0xf
11165 + *[0-9a-f]*: d2 13 ssrf 0x1
11166 + *[0-9a-f]*: d3 d3 ssrf 0x1d
11167 + *[0-9a-f]*: d2 d3 ssrf 0xd
11168 + *[0-9a-f]*: d2 d3 ssrf 0xd
11169 +
11170 +[0-9a-f]* <csrf>:
11171 + *[0-9a-f]*: d4 03 csrf 0x0
11172 + *[0-9a-f]*: d5 f3 csrf 0x1f
11173 + *[0-9a-f]*: d5 03 csrf 0x10
11174 + *[0-9a-f]*: d4 f3 csrf 0xf
11175 + *[0-9a-f]*: d4 13 csrf 0x1
11176 + *[0-9a-f]*: d4 a3 csrf 0xa
11177 + *[0-9a-f]*: d4 f3 csrf 0xf
11178 + *[0-9a-f]*: d4 b3 csrf 0xb
11179 +
11180 +[0-9a-f]* <rete>:
11181 + *[0-9a-f]*: d6 03 rete
11182 +
11183 +[0-9a-f]* <rets>:
11184 + *[0-9a-f]*: d6 13 rets
11185 +
11186 +[0-9a-f]* <retd>:
11187 + *[0-9a-f]*: d6 23 retd
11188 +
11189 +[0-9a-f]* <retj>:
11190 + *[0-9a-f]*: d6 33 retj
11191 +
11192 +[0-9a-f]* <tlbr>:
11193 + *[0-9a-f]*: d6 43 tlbr
11194 +
11195 +[0-9a-f]* <tlbs>:
11196 + *[0-9a-f]*: d6 53 tlbs
11197 +
11198 +[0-9a-f]* <tlbw>:
11199 + *[0-9a-f]*: d6 63 tlbw
11200 +
11201 +[0-9a-f]* <breakpoint>:
11202 + *[0-9a-f]*: d6 73 breakpoint
11203 +
11204 +[0-9a-f]* <incjosp>:
11205 + *[0-9a-f]*: d6 83 incjosp 1
11206 + *[0-9a-f]*: d6 93 incjosp 2
11207 + *[0-9a-f]*: d6 a3 incjosp 3
11208 + *[0-9a-f]*: d6 b3 incjosp 4
11209 + *[0-9a-f]*: d6 c3 incjosp -4
11210 + *[0-9a-f]*: d6 d3 incjosp -3
11211 + *[0-9a-f]*: d6 e3 incjosp -2
11212 + *[0-9a-f]*: d6 f3 incjosp -1
11213 +
11214 +[0-9a-f]* <nop>:
11215 + *[0-9a-f]*: d7 03 nop
11216 +
11217 +[0-9a-f]* <popjc>:
11218 + *[0-9a-f]*: d7 13 popjc
11219 +
11220 +[0-9a-f]* <pushjc>:
11221 + *[0-9a-f]*: d7 23 pushjc
11222 +
11223 +[0-9a-f]* <add2>:
11224 + *[0-9a-f]*: fe 0f 00 0f add pc,pc,pc
11225 + *[0-9a-f]*: f8 0c 00 3c add r12,r12,r12<<0x3
11226 + *[0-9a-f]*: ea 05 00 25 add r5,r5,r5<<0x2
11227 + *[0-9a-f]*: e8 04 00 14 add r4,r4,r4<<0x1
11228 + *[0-9a-f]*: fc 0e 00 1e add lr,lr,lr<<0x1
11229 + *[0-9a-f]*: f8 00 00 10 add r0,r12,r0<<0x1
11230 + *[0-9a-f]*: f8 04 00 09 add r9,r12,r4
11231 + *[0-9a-f]*: f8 07 00 2c add r12,r12,r7<<0x2
11232 +
11233 +[0-9a-f]* <sub2>:
11234 + *[0-9a-f]*: fe 0f 01 0f sub pc,pc,pc
11235 + *[0-9a-f]*: f8 0c 01 3c sub r12,r12,r12<<0x3
11236 + *[0-9a-f]*: ea 05 01 25 sub r5,r5,r5<<0x2
11237 + *[0-9a-f]*: e8 04 01 14 sub r4,r4,r4<<0x1
11238 + *[0-9a-f]*: fc 0e 01 1e sub lr,lr,lr<<0x1
11239 + *[0-9a-f]*: e6 04 01 0d sub sp,r3,r4
11240 + *[0-9a-f]*: ee 03 01 03 sub r3,r7,r3
11241 + *[0-9a-f]*: f4 0d 01 1d sub sp,r10,sp<<0x1
11242 +
11243 +[0-9a-f]* <divu>:
11244 + *[0-9a-f]*: fe 0f 0d 0f divu pc,pc,pc
11245 + *[0-9a-f]*: f8 0c 0d 0c divu r12,r12,r12
11246 + *[0-9a-f]*: ea 05 0d 05 divu r5,r5,r5
11247 + *[0-9a-f]*: e8 04 0d 04 divu r4,r4,r4
11248 + *[0-9a-f]*: fc 0e 0d 0e divu lr,lr,lr
11249 + *[0-9a-f]*: e8 0f 0d 0d divu sp,r4,pc
11250 + *[0-9a-f]*: ea 0d 0d 05 divu r5,r5,sp
11251 + *[0-9a-f]*: fa 00 0d 0a divu r10,sp,r0
11252 +
11253 +[0-9a-f]* <addhh_w>:
11254 + *[0-9a-f]*: fe 0f 0e 0f addhh\.w pc,pc:b,pc:b
11255 + *[0-9a-f]*: f8 0c 0e 3c addhh\.w r12,r12:t,r12:t
11256 + *[0-9a-f]*: ea 05 0e 35 addhh\.w r5,r5:t,r5:t
11257 + *[0-9a-f]*: e8 04 0e 04 addhh\.w r4,r4:b,r4:b
11258 + *[0-9a-f]*: fc 0e 0e 3e addhh\.w lr,lr:t,lr:t
11259 + *[0-9a-f]*: e0 03 0e 00 addhh\.w r0,r0:b,r3:b
11260 + *[0-9a-f]*: f8 07 0e 2e addhh\.w lr,r12:t,r7:b
11261 + *[0-9a-f]*: f4 02 0e 23 addhh\.w r3,r10:t,r2:b
11262 +
11263 +[0-9a-f]* <subhh_w>:
11264 + *[0-9a-f]*: fe 0f 0f 0f subhh\.w pc,pc:b,pc:b
11265 + *[0-9a-f]*: f8 0c 0f 3c subhh\.w r12,r12:t,r12:t
11266 + *[0-9a-f]*: ea 05 0f 35 subhh\.w r5,r5:t,r5:t
11267 + *[0-9a-f]*: e8 04 0f 04 subhh\.w r4,r4:b,r4:b
11268 + *[0-9a-f]*: fc 0e 0f 3e subhh\.w lr,lr:t,lr:t
11269 + *[0-9a-f]*: e2 07 0f 2a subhh\.w r10,r1:t,r7:b
11270 + *[0-9a-f]*: f4 0e 0f 3f subhh\.w pc,r10:t,lr:t
11271 + *[0-9a-f]*: e0 0c 0f 23 subhh\.w r3,r0:t,r12:b
11272 +
11273 +[0-9a-f]* <adc>:
11274 + *[0-9a-f]*: fe 0f 00 4f adc pc,pc,pc
11275 + *[0-9a-f]*: f8 0c 00 4c adc r12,r12,r12
11276 + *[0-9a-f]*: ea 05 00 45 adc r5,r5,r5
11277 + *[0-9a-f]*: e8 04 00 44 adc r4,r4,r4
11278 + *[0-9a-f]*: fc 0e 00 4e adc lr,lr,lr
11279 + *[0-9a-f]*: e0 07 00 44 adc r4,r0,r7
11280 + *[0-9a-f]*: e8 03 00 4d adc sp,r4,r3
11281 + *[0-9a-f]*: f8 00 00 42 adc r2,r12,r0
11282 +
11283 +[0-9a-f]* <sbc>:
11284 + *[0-9a-f]*: fe 0f 01 4f sbc pc,pc,pc
11285 + *[0-9a-f]*: f8 0c 01 4c sbc r12,r12,r12
11286 + *[0-9a-f]*: ea 05 01 45 sbc r5,r5,r5
11287 + *[0-9a-f]*: e8 04 01 44 sbc r4,r4,r4
11288 + *[0-9a-f]*: fc 0e 01 4e sbc lr,lr,lr
11289 + *[0-9a-f]*: ee 09 01 46 sbc r6,r7,r9
11290 + *[0-9a-f]*: f0 05 01 40 sbc r0,r8,r5
11291 + *[0-9a-f]*: e0 04 01 41 sbc r1,r0,r4
11292 +
11293 +[0-9a-f]* <mul_2>:
11294 + *[0-9a-f]*: fe 0f 02 4f mul pc,pc,pc
11295 + *[0-9a-f]*: f8 0c 02 4c mul r12,r12,r12
11296 + *[0-9a-f]*: ea 05 02 45 mul r5,r5,r5
11297 + *[0-9a-f]*: e8 04 02 44 mul r4,r4,r4
11298 + *[0-9a-f]*: fc 0e 02 4e mul lr,lr,lr
11299 + *[0-9a-f]*: e0 00 02 4f mul pc,r0,r0
11300 + *[0-9a-f]*: fe 0e 02 48 mul r8,pc,lr
11301 + *[0-9a-f]*: f8 0f 02 44 mul r4,r12,pc
11302 +
11303 +[0-9a-f]* <mac>:
11304 + *[0-9a-f]*: fe 0f 03 4f mac pc,pc,pc
11305 + *[0-9a-f]*: f8 0c 03 4c mac r12,r12,r12
11306 + *[0-9a-f]*: ea 05 03 45 mac r5,r5,r5
11307 + *[0-9a-f]*: e8 04 03 44 mac r4,r4,r4
11308 + *[0-9a-f]*: fc 0e 03 4e mac lr,lr,lr
11309 + *[0-9a-f]*: e8 00 03 4a mac r10,r4,r0
11310 + *[0-9a-f]*: fc 00 03 47 mac r7,lr,r0
11311 + *[0-9a-f]*: f2 0c 03 42 mac r2,r9,r12
11312 +
11313 +[0-9a-f]* <mulsd>:
11314 + *[0-9a-f]*: fe 0f 04 4f muls\.d pc,pc,pc
11315 + *[0-9a-f]*: f8 0c 04 4c muls\.d r12,r12,r12
11316 + *[0-9a-f]*: ea 05 04 45 muls\.d r5,r5,r5
11317 + *[0-9a-f]*: e8 04 04 44 muls\.d r4,r4,r4
11318 + *[0-9a-f]*: fc 0e 04 4e muls\.d lr,lr,lr
11319 + *[0-9a-f]*: f0 0e 04 42 muls\.d r2,r8,lr
11320 + *[0-9a-f]*: e0 0b 04 44 muls\.d r4,r0,r11
11321 + *[0-9a-f]*: fc 06 04 45 muls\.d r5,lr,r6
11322 +
11323 +[0-9a-f]* <macsd>:
11324 + *[0-9a-f]*: fe 0f 05 40 macs\.d r0,pc,pc
11325 + *[0-9a-f]*: f8 0c 05 4e macs\.d lr,r12,r12
11326 + *[0-9a-f]*: ea 05 05 48 macs\.d r8,r5,r5
11327 + *[0-9a-f]*: e8 04 05 46 macs\.d r6,r4,r4
11328 + *[0-9a-f]*: fc 0e 05 42 macs\.d r2,lr,lr
11329 + *[0-9a-f]*: e2 09 05 48 macs\.d r8,r1,r9
11330 + *[0-9a-f]*: f0 08 05 4e macs\.d lr,r8,r8
11331 + *[0-9a-f]*: e6 0c 05 44 macs\.d r4,r3,r12
11332 +
11333 +[0-9a-f]* <mulud>:
11334 + *[0-9a-f]*: fe 0f 06 40 mulu\.d r0,pc,pc
11335 + *[0-9a-f]*: f8 0c 06 4e mulu\.d lr,r12,r12
11336 + *[0-9a-f]*: ea 05 06 48 mulu\.d r8,r5,r5
11337 + *[0-9a-f]*: e8 04 06 46 mulu\.d r6,r4,r4
11338 + *[0-9a-f]*: fc 0e 06 42 mulu\.d r2,lr,lr
11339 + *[0-9a-f]*: ea 00 06 46 mulu\.d r6,r5,r0
11340 + *[0-9a-f]*: ec 01 06 44 mulu\.d r4,r6,r1
11341 + *[0-9a-f]*: f0 02 06 48 mulu\.d r8,r8,r2
11342 +
11343 +[0-9a-f]* <macud>:
11344 + *[0-9a-f]*: fe 0f 07 40 macu\.d r0,pc,pc
11345 + *[0-9a-f]*: f8 0c 07 4e macu\.d lr,r12,r12
11346 + *[0-9a-f]*: ea 05 07 48 macu\.d r8,r5,r5
11347 + *[0-9a-f]*: e8 04 07 46 macu\.d r6,r4,r4
11348 + *[0-9a-f]*: fc 0e 07 42 macu\.d r2,lr,lr
11349 + *[0-9a-f]*: fa 0b 07 46 macu\.d r6,sp,r11
11350 + *[0-9a-f]*: e8 08 07 42 macu\.d r2,r4,r8
11351 + *[0-9a-f]*: f4 09 07 46 macu\.d r6,r10,r9
11352 +
11353 +[0-9a-f]* <asr_1>:
11354 + *[0-9a-f]*: fe 0f 08 4f asr pc,pc,pc
11355 + *[0-9a-f]*: f8 0c 08 4c asr r12,r12,r12
11356 + *[0-9a-f]*: ea 05 08 45 asr r5,r5,r5
11357 + *[0-9a-f]*: e8 04 08 44 asr r4,r4,r4
11358 + *[0-9a-f]*: fc 0e 08 4e asr lr,lr,lr
11359 + *[0-9a-f]*: ec 0f 08 4f asr pc,r6,pc
11360 + *[0-9a-f]*: ec 0c 08 40 asr r0,r6,r12
11361 + *[0-9a-f]*: fa 00 08 44 asr r4,sp,r0
11362 +
11363 +[0-9a-f]* <lsl_1>:
11364 + *[0-9a-f]*: fe 0f 09 4f lsl pc,pc,pc
11365 + *[0-9a-f]*: f8 0c 09 4c lsl r12,r12,r12
11366 + *[0-9a-f]*: ea 05 09 45 lsl r5,r5,r5
11367 + *[0-9a-f]*: e8 04 09 44 lsl r4,r4,r4
11368 + *[0-9a-f]*: fc 0e 09 4e lsl lr,lr,lr
11369 + *[0-9a-f]*: ea 0e 09 4e lsl lr,r5,lr
11370 + *[0-9a-f]*: fe 03 09 45 lsl r5,pc,r3
11371 + *[0-9a-f]*: fe 09 09 41 lsl r1,pc,r9
11372 +
11373 +[0-9a-f]* <lsr_1>:
11374 + *[0-9a-f]*: fe 0f 0a 4f lsr pc,pc,pc
11375 + *[0-9a-f]*: f8 0c 0a 4c lsr r12,r12,r12
11376 + *[0-9a-f]*: ea 05 0a 45 lsr r5,r5,r5
11377 + *[0-9a-f]*: e8 04 0a 44 lsr r4,r4,r4
11378 + *[0-9a-f]*: fc 0e 0a 4e lsr lr,lr,lr
11379 + *[0-9a-f]*: e8 01 0a 42 lsr r2,r4,r1
11380 + *[0-9a-f]*: e2 06 0a 45 lsr r5,r1,r6
11381 + *[0-9a-f]*: ec 07 0a 4d lsr sp,r6,r7
11382 +
11383 +[0-9a-f]* <xchg>:
11384 + *[0-9a-f]*: fe 0f 0b 4f xchg pc,pc,pc
11385 + *[0-9a-f]*: f8 0c 0b 4c xchg r12,r12,r12
11386 + *[0-9a-f]*: ea 05 0b 45 xchg r5,r5,r5
11387 + *[0-9a-f]*: e8 04 0b 44 xchg r4,r4,r4
11388 + *[0-9a-f]*: fc 0e 0b 4e xchg lr,lr,lr
11389 + *[0-9a-f]*: e8 0d 0b 4e xchg lr,r4,sp
11390 + *[0-9a-f]*: ea 0c 0b 41 xchg r1,r5,r12
11391 + *[0-9a-f]*: f8 00 0b 4e xchg lr,r12,r0
11392 +
11393 +[0-9a-f]* <max>:
11394 + *[0-9a-f]*: fe 0f 0c 4f max pc,pc,pc
11395 + *[0-9a-f]*: f8 0c 0c 4c max r12,r12,r12
11396 + *[0-9a-f]*: ea 05 0c 45 max r5,r5,r5
11397 + *[0-9a-f]*: e8 04 0c 44 max r4,r4,r4
11398 + *[0-9a-f]*: fc 0e 0c 4e max lr,lr,lr
11399 + *[0-9a-f]*: e4 0d 0c 4e max lr,r2,sp
11400 + *[0-9a-f]*: f4 09 0c 44 max r4,r10,r9
11401 + *[0-9a-f]*: f2 0e 0c 4e max lr,r9,lr
11402 +
11403 +[0-9a-f]* <min>:
11404 + *[0-9a-f]*: fe 0f 0d 4f min pc,pc,pc
11405 + *[0-9a-f]*: f8 0c 0d 4c min r12,r12,r12
11406 + *[0-9a-f]*: ea 05 0d 45 min r5,r5,r5
11407 + *[0-9a-f]*: e8 04 0d 44 min r4,r4,r4
11408 + *[0-9a-f]*: fc 0e 0d 4e min lr,lr,lr
11409 + *[0-9a-f]*: ee 08 0d 49 min r9,r7,r8
11410 + *[0-9a-f]*: ea 05 0d 4d min sp,r5,r5
11411 + *[0-9a-f]*: e2 04 0d 44 min r4,r1,r4
11412 +
11413 +[0-9a-f]* <addabs>:
11414 + *[0-9a-f]*: fe 0f 0e 4f addabs pc,pc,pc
11415 + *[0-9a-f]*: f8 0c 0e 4c addabs r12,r12,r12
11416 + *[0-9a-f]*: ea 05 0e 45 addabs r5,r5,r5
11417 + *[0-9a-f]*: e8 04 0e 44 addabs r4,r4,r4
11418 + *[0-9a-f]*: fc 0e 0e 4e addabs lr,lr,lr
11419 + *[0-9a-f]*: f4 00 0e 47 addabs r7,r10,r0
11420 + *[0-9a-f]*: f2 07 0e 49 addabs r9,r9,r7
11421 + *[0-9a-f]*: f0 0c 0e 42 addabs r2,r8,r12
11422 +
11423 +[0-9a-f]* <mulnhh_w>:
11424 + *[0-9a-f]*: fe 0f 01 8f mulnhh\.w pc,pc:b,pc:b
11425 + *[0-9a-f]*: f8 0c 01 bc mulnhh\.w r12,r12:t,r12:t
11426 + *[0-9a-f]*: ea 05 01 b5 mulnhh\.w r5,r5:t,r5:t
11427 + *[0-9a-f]*: e8 04 01 84 mulnhh\.w r4,r4:b,r4:b
11428 + *[0-9a-f]*: fc 0e 01 be mulnhh\.w lr,lr:t,lr:t
11429 + *[0-9a-f]*: fa 09 01 ab mulnhh\.w r11,sp:t,r9:b
11430 + *[0-9a-f]*: e8 0e 01 9d mulnhh\.w sp,r4:b,lr:t
11431 + *[0-9a-f]*: e4 0b 01 ac mulnhh\.w r12,r2:t,r11:b
11432 +
11433 +[0-9a-f]* <mulnwh_d>:
11434 + *[0-9a-f]*: fe 0f 02 80 mulnwh\.d r0,pc,pc:b
11435 + *[0-9a-f]*: f8 0c 02 9e mulnwh\.d lr,r12,r12:t
11436 + *[0-9a-f]*: ea 05 02 98 mulnwh\.d r8,r5,r5:t
11437 + *[0-9a-f]*: e8 04 02 86 mulnwh\.d r6,r4,r4:b
11438 + *[0-9a-f]*: fc 0e 02 92 mulnwh\.d r2,lr,lr:t
11439 + *[0-9a-f]*: e6 02 02 9e mulnwh\.d lr,r3,r2:t
11440 + *[0-9a-f]*: ea 09 02 84 mulnwh\.d r4,r5,r9:b
11441 + *[0-9a-f]*: e8 04 02 9c mulnwh\.d r12,r4,r4:t
11442 +
11443 +[0-9a-f]* <machh_w>:
11444 + *[0-9a-f]*: fe 0f 04 8f machh\.w pc,pc:b,pc:b
11445 + *[0-9a-f]*: f8 0c 04 bc machh\.w r12,r12:t,r12:t
11446 + *[0-9a-f]*: ea 05 04 b5 machh\.w r5,r5:t,r5:t
11447 + *[0-9a-f]*: e8 04 04 84 machh\.w r4,r4:b,r4:b
11448 + *[0-9a-f]*: fc 0e 04 be machh\.w lr,lr:t,lr:t
11449 + *[0-9a-f]*: ea 01 04 9e machh\.w lr,r5:b,r1:t
11450 + *[0-9a-f]*: ec 07 04 89 machh\.w r9,r6:b,r7:b
11451 + *[0-9a-f]*: fc 0c 04 a5 machh\.w r5,lr:t,r12:b
11452 +
11453 +[0-9a-f]* <machh_d>:
11454 + *[0-9a-f]*: fe 0f 05 80 machh\.d r0,pc:b,pc:b
11455 + *[0-9a-f]*: f8 0c 05 be machh\.d lr,r12:t,r12:t
11456 + *[0-9a-f]*: ea 05 05 b8 machh\.d r8,r5:t,r5:t
11457 + *[0-9a-f]*: e8 04 05 86 machh\.d r6,r4:b,r4:b
11458 + *[0-9a-f]*: fc 0e 05 b2 machh\.d r2,lr:t,lr:t
11459 + *[0-9a-f]*: e0 08 05 8a machh\.d r10,r0:b,r8:b
11460 + *[0-9a-f]*: e8 05 05 9e machh\.d lr,r4:b,r5:t
11461 + *[0-9a-f]*: e0 04 05 98 machh\.d r8,r0:b,r4:t
11462 +
11463 +[0-9a-f]* <macsathh_w>:
11464 + *[0-9a-f]*: fe 0f 06 8f macsathh\.w pc,pc:b,pc:b
11465 + *[0-9a-f]*: f8 0c 06 bc macsathh\.w r12,r12:t,r12:t
11466 + *[0-9a-f]*: ea 05 06 b5 macsathh\.w r5,r5:t,r5:t
11467 + *[0-9a-f]*: e8 04 06 84 macsathh\.w r4,r4:b,r4:b
11468 + *[0-9a-f]*: fc 0e 06 be macsathh\.w lr,lr:t,lr:t
11469 + *[0-9a-f]*: ee 0f 06 b7 macsathh\.w r7,r7:t,pc:t
11470 + *[0-9a-f]*: e4 04 06 a4 macsathh\.w r4,r2:t,r4:b
11471 + *[0-9a-f]*: f0 03 06 b4 macsathh\.w r4,r8:t,r3:t
11472 +
11473 +[0-9a-f]* <mulhh_w>:
11474 + *[0-9a-f]*: fe 0f 07 8f mulhh\.w pc,pc:b,pc:b
11475 + *[0-9a-f]*: f8 0c 07 bc mulhh\.w r12,r12:t,r12:t
11476 + *[0-9a-f]*: ea 05 07 b5 mulhh\.w r5,r5:t,r5:t
11477 + *[0-9a-f]*: e8 04 07 84 mulhh\.w r4,r4:b,r4:b
11478 + *[0-9a-f]*: fc 0e 07 be mulhh\.w lr,lr:t,lr:t
11479 + *[0-9a-f]*: e8 09 07 a7 mulhh\.w r7,r4:t,r9:b
11480 + *[0-9a-f]*: e6 07 07 bf mulhh\.w pc,r3:t,r7:t
11481 + *[0-9a-f]*: e8 09 07 9f mulhh\.w pc,r4:b,r9:t
11482 +
11483 +[0-9a-f]* <mulsathh_h>:
11484 + *[0-9a-f]*: fe 0f 08 8f mulsathh\.h pc,pc:b,pc:b
11485 + *[0-9a-f]*: f8 0c 08 bc mulsathh\.h r12,r12:t,r12:t
11486 + *[0-9a-f]*: ea 05 08 b5 mulsathh\.h r5,r5:t,r5:t
11487 + *[0-9a-f]*: e8 04 08 84 mulsathh\.h r4,r4:b,r4:b
11488 + *[0-9a-f]*: fc 0e 08 be mulsathh\.h lr,lr:t,lr:t
11489 + *[0-9a-f]*: e2 0d 08 83 mulsathh\.h r3,r1:b,sp:b
11490 + *[0-9a-f]*: fc 0b 08 ab mulsathh\.h r11,lr:t,r11:b
11491 + *[0-9a-f]*: f0 0b 08 98 mulsathh\.h r8,r8:b,r11:t
11492 +
11493 +[0-9a-f]* <mulsathh_w>:
11494 + *[0-9a-f]*: fe 0f 09 8f mulsathh\.w pc,pc:b,pc:b
11495 + *[0-9a-f]*: f8 0c 09 bc mulsathh\.w r12,r12:t,r12:t
11496 + *[0-9a-f]*: ea 05 09 b5 mulsathh\.w r5,r5:t,r5:t
11497 + *[0-9a-f]*: e8 04 09 84 mulsathh\.w r4,r4:b,r4:b
11498 + *[0-9a-f]*: fc 0e 09 be mulsathh\.w lr,lr:t,lr:t
11499 + *[0-9a-f]*: f6 06 09 ae mulsathh\.w lr,r11:t,r6:b
11500 + *[0-9a-f]*: ec 07 09 96 mulsathh\.w r6,r6:b,r7:t
11501 + *[0-9a-f]*: e4 03 09 8a mulsathh\.w r10,r2:b,r3:b
11502 +
11503 +[0-9a-f]* <mulsatrndhh_h>:
11504 + *[0-9a-f]*: fe 0f 0a 8f mulsatrndhh\.h pc,pc:b,pc:b
11505 + *[0-9a-f]*: f8 0c 0a bc mulsatrndhh\.h r12,r12:t,r12:t
11506 + *[0-9a-f]*: ea 05 0a b5 mulsatrndhh\.h r5,r5:t,r5:t
11507 + *[0-9a-f]*: e8 04 0a 84 mulsatrndhh\.h r4,r4:b,r4:b
11508 + *[0-9a-f]*: fc 0e 0a be mulsatrndhh\.h lr,lr:t,lr:t
11509 + *[0-9a-f]*: ec 09 0a 8b mulsatrndhh\.h r11,r6:b,r9:b
11510 + *[0-9a-f]*: e6 08 0a 9b mulsatrndhh\.h r11,r3:b,r8:t
11511 + *[0-9a-f]*: fa 07 0a b5 mulsatrndhh\.h r5,sp:t,r7:t
11512 +
11513 +[0-9a-f]* <mulsatrndwh_w>:
11514 + *[0-9a-f]*: fe 0f 0b 8f mulsatrndwh\.w pc,pc,pc:b
11515 + *[0-9a-f]*: f8 0c 0b 9c mulsatrndwh\.w r12,r12,r12:t
11516 + *[0-9a-f]*: ea 05 0b 95 mulsatrndwh\.w r5,r5,r5:t
11517 + *[0-9a-f]*: e8 04 0b 84 mulsatrndwh\.w r4,r4,r4:b
11518 + *[0-9a-f]*: fc 0e 0b 9e mulsatrndwh\.w lr,lr,lr:t
11519 + *[0-9a-f]*: f8 00 0b 85 mulsatrndwh\.w r5,r12,r0:b
11520 + *[0-9a-f]*: f4 0f 0b 87 mulsatrndwh\.w r7,r10,pc:b
11521 + *[0-9a-f]*: f0 05 0b 9a mulsatrndwh\.w r10,r8,r5:t
11522 +
11523 +[0-9a-f]* <macwh_d>:
11524 + *[0-9a-f]*: fe 0f 0c 80 macwh\.d r0,pc,pc:b
11525 + *[0-9a-f]*: f8 0c 0c 9e macwh\.d lr,r12,r12:t
11526 + *[0-9a-f]*: ea 05 0c 98 macwh\.d r8,r5,r5:t
11527 + *[0-9a-f]*: e8 04 0c 86 macwh\.d r6,r4,r4:b
11528 + *[0-9a-f]*: fc 0e 0c 92 macwh\.d r2,lr,lr:t
11529 + *[0-9a-f]*: f4 0c 0c 94 macwh\.d r4,r10,r12:t
11530 + *[0-9a-f]*: ee 0d 0c 84 macwh\.d r4,r7,sp:b
11531 + *[0-9a-f]*: f2 0b 0c 8e macwh\.d lr,r9,r11:b
11532 +
11533 +[0-9a-f]* <mulwh_d>:
11534 + *[0-9a-f]*: fe 0f 0d 80 mulwh\.d r0,pc,pc:b
11535 + *[0-9a-f]*: f8 0c 0d 9e mulwh\.d lr,r12,r12:t
11536 + *[0-9a-f]*: ea 05 0d 98 mulwh\.d r8,r5,r5:t
11537 + *[0-9a-f]*: e8 04 0d 86 mulwh\.d r6,r4,r4:b
11538 + *[0-9a-f]*: fc 0e 0d 92 mulwh\.d r2,lr,lr:t
11539 + *[0-9a-f]*: ea 01 0d 8c mulwh\.d r12,r5,r1:b
11540 + *[0-9a-f]*: e2 03 0d 90 mulwh\.d r0,r1,r3:t
11541 + *[0-9a-f]*: f2 02 0d 80 mulwh\.d r0,r9,r2:b
11542 +
11543 +[0-9a-f]* <mulsatwh_w>:
11544 + *[0-9a-f]*: fe 0f 0e 8f mulsatwh\.w pc,pc,pc:b
11545 + *[0-9a-f]*: f8 0c 0e 9c mulsatwh\.w r12,r12,r12:t
11546 + *[0-9a-f]*: ea 05 0e 95 mulsatwh\.w r5,r5,r5:t
11547 + *[0-9a-f]*: e8 04 0e 84 mulsatwh\.w r4,r4,r4:b
11548 + *[0-9a-f]*: fc 0e 0e 9e mulsatwh\.w lr,lr,lr:t
11549 + *[0-9a-f]*: fe 0a 0e 9b mulsatwh\.w r11,pc,r10:t
11550 + *[0-9a-f]*: f8 09 0e 9d mulsatwh\.w sp,r12,r9:t
11551 + *[0-9a-f]*: e6 02 0e 90 mulsatwh\.w r0,r3,r2:t
11552 +
11553 +[0-9a-f]* <ldw7>:
11554 + *[0-9a-f]*: fe 0f 0f 8f ld\.w pc,pc\[pc:b<<2\]
11555 + *[0-9a-f]*: f8 0c 0f bc ld\.w r12,r12\[r12:t<<2\]
11556 + *[0-9a-f]*: ea 05 0f a5 ld\.w r5,r5\[r5:u<<2\]
11557 + *[0-9a-f]*: e8 04 0f 94 ld\.w r4,r4\[r4:l<<2\]
11558 + *[0-9a-f]*: fc 0e 0f 9e ld\.w lr,lr\[lr:l<<2\]
11559 + *[0-9a-f]*: f4 06 0f 99 ld\.w r9,r10\[r6:l<<2\]
11560 + *[0-9a-f]*: f4 0a 0f 82 ld\.w r2,r10\[r10:b<<2\]
11561 + *[0-9a-f]*: ea 0f 0f 8b ld\.w r11,r5\[pc:b<<2\]
11562 +
11563 +[0-9a-f]* <satadd_w>:
11564 + *[0-9a-f]*: fe 0f 00 cf satadd\.w pc,pc,pc
11565 + *[0-9a-f]*: f8 0c 00 cc satadd\.w r12,r12,r12
11566 + *[0-9a-f]*: ea 05 00 c5 satadd\.w r5,r5,r5
11567 + *[0-9a-f]*: e8 04 00 c4 satadd\.w r4,r4,r4
11568 + *[0-9a-f]*: fc 0e 00 ce satadd\.w lr,lr,lr
11569 + *[0-9a-f]*: f0 0b 00 c4 satadd\.w r4,r8,r11
11570 + *[0-9a-f]*: f8 06 00 c3 satadd\.w r3,r12,r6
11571 + *[0-9a-f]*: fc 09 00 c3 satadd\.w r3,lr,r9
11572 +
11573 +[0-9a-f]* <satsub_w1>:
11574 + *[0-9a-f]*: fe 0f 01 cf satsub\.w pc,pc,pc
11575 + *[0-9a-f]*: f8 0c 01 cc satsub\.w r12,r12,r12
11576 + *[0-9a-f]*: ea 05 01 c5 satsub\.w r5,r5,r5
11577 + *[0-9a-f]*: e8 04 01 c4 satsub\.w r4,r4,r4
11578 + *[0-9a-f]*: fc 0e 01 ce satsub\.w lr,lr,lr
11579 + *[0-9a-f]*: fa 00 01 c8 satsub\.w r8,sp,r0
11580 + *[0-9a-f]*: f0 04 01 c9 satsub\.w r9,r8,r4
11581 + *[0-9a-f]*: fc 02 01 cf satsub\.w pc,lr,r2
11582 +
11583 +[0-9a-f]* <satadd_h>:
11584 + *[0-9a-f]*: fe 0f 02 cf satadd\.h pc,pc,pc
11585 + *[0-9a-f]*: f8 0c 02 cc satadd\.h r12,r12,r12
11586 + *[0-9a-f]*: ea 05 02 c5 satadd\.h r5,r5,r5
11587 + *[0-9a-f]*: e8 04 02 c4 satadd\.h r4,r4,r4
11588 + *[0-9a-f]*: fc 0e 02 ce satadd\.h lr,lr,lr
11589 + *[0-9a-f]*: e6 09 02 c7 satadd\.h r7,r3,r9
11590 + *[0-9a-f]*: e0 02 02 c1 satadd\.h r1,r0,r2
11591 + *[0-9a-f]*: e8 0e 02 c1 satadd\.h r1,r4,lr
11592 +
11593 +[0-9a-f]* <satsub_h>:
11594 + *[0-9a-f]*: fe 0f 03 cf satsub\.h pc,pc,pc
11595 + *[0-9a-f]*: f8 0c 03 cc satsub\.h r12,r12,r12
11596 + *[0-9a-f]*: ea 05 03 c5 satsub\.h r5,r5,r5
11597 + *[0-9a-f]*: e8 04 03 c4 satsub\.h r4,r4,r4
11598 + *[0-9a-f]*: fc 0e 03 ce satsub\.h lr,lr,lr
11599 + *[0-9a-f]*: fc 03 03 ce satsub\.h lr,lr,r3
11600 + *[0-9a-f]*: ec 05 03 cb satsub\.h r11,r6,r5
11601 + *[0-9a-f]*: fa 00 03 c3 satsub\.h r3,sp,r0
11602 +
11603 +[0-9a-f]* <mul3>:
11604 + *[0-9a-f]*: fe 0f 10 00 mul pc,pc,0
11605 + *[0-9a-f]*: f8 0c 10 ff mul r12,r12,-1
11606 + *[0-9a-f]*: ea 05 10 80 mul r5,r5,-128
11607 + *[0-9a-f]*: e8 04 10 7f mul r4,r4,127
11608 + *[0-9a-f]*: fc 0e 10 01 mul lr,lr,1
11609 + *[0-9a-f]*: e4 0c 10 f9 mul r12,r2,-7
11610 + *[0-9a-f]*: fe 01 10 5f mul r1,pc,95
11611 + *[0-9a-f]*: ec 04 10 13 mul r4,r6,19
11612 +
11613 +[0-9a-f]* <rsub2>:
11614 + *[0-9a-f]*: fe 0f 11 00 rsub pc,pc,0
11615 + *[0-9a-f]*: f8 0c 11 ff rsub r12,r12,-1
11616 + *[0-9a-f]*: ea 05 11 80 rsub r5,r5,-128
11617 + *[0-9a-f]*: e8 04 11 7f rsub r4,r4,127
11618 + *[0-9a-f]*: fc 0e 11 01 rsub lr,lr,1
11619 + *[0-9a-f]*: fc 09 11 60 rsub r9,lr,96
11620 + *[0-9a-f]*: e2 0b 11 38 rsub r11,r1,56
11621 + *[0-9a-f]*: ee 00 11 a9 rsub r0,r7,-87
11622 +
11623 +[0-9a-f]* <clz>:
11624 + *[0-9a-f]*: fe 0f 12 00 clz pc,pc
11625 + *[0-9a-f]*: f8 0c 12 00 clz r12,r12
11626 + *[0-9a-f]*: ea 05 12 00 clz r5,r5
11627 + *[0-9a-f]*: e8 04 12 00 clz r4,r4
11628 + *[0-9a-f]*: fc 0e 12 00 clz lr,lr
11629 + *[0-9a-f]*: e6 02 12 00 clz r2,r3
11630 + *[0-9a-f]*: f6 05 12 00 clz r5,r11
11631 + *[0-9a-f]*: e6 0f 12 00 clz pc,r3
11632 +
11633 +[0-9a-f]* <cpc1>:
11634 + *[0-9a-f]*: fe 0f 13 00 cpc pc,pc
11635 + *[0-9a-f]*: f8 0c 13 00 cpc r12,r12
11636 + *[0-9a-f]*: ea 05 13 00 cpc r5,r5
11637 + *[0-9a-f]*: e8 04 13 00 cpc r4,r4
11638 + *[0-9a-f]*: fc 0e 13 00 cpc lr,lr
11639 + *[0-9a-f]*: e8 0f 13 00 cpc pc,r4
11640 + *[0-9a-f]*: f2 05 13 00 cpc r5,r9
11641 + *[0-9a-f]*: ee 06 13 00 cpc r6,r7
11642 +
11643 +[0-9a-f]* <asr3>:
11644 + *[0-9a-f]*: fe 0f 14 00 asr pc,pc,0x0
11645 + *[0-9a-f]*: f8 0c 14 1f asr r12,r12,0x1f
11646 + *[0-9a-f]*: ea 05 14 10 asr r5,r5,0x10
11647 + *[0-9a-f]*: e8 04 14 0f asr r4,r4,0xf
11648 + *[0-9a-f]*: fc 0e 14 01 asr lr,lr,0x1
11649 + *[0-9a-f]*: f6 04 14 13 asr r4,r11,0x13
11650 + *[0-9a-f]*: fe 0d 14 1a asr sp,pc,0x1a
11651 + *[0-9a-f]*: fa 0b 14 08 asr r11,sp,0x8
11652 +
11653 +[0-9a-f]* <lsl3>:
11654 + *[0-9a-f]*: fe 0f 15 00 lsl pc,pc,0x0
11655 + *[0-9a-f]*: f8 0c 15 1f lsl r12,r12,0x1f
11656 + *[0-9a-f]*: ea 05 15 10 lsl r5,r5,0x10
11657 + *[0-9a-f]*: e8 04 15 0f lsl r4,r4,0xf
11658 + *[0-9a-f]*: fc 0e 15 01 lsl lr,lr,0x1
11659 + *[0-9a-f]*: f4 08 15 11 lsl r8,r10,0x11
11660 + *[0-9a-f]*: fc 02 15 03 lsl r2,lr,0x3
11661 + *[0-9a-f]*: f6 0e 15 0e lsl lr,r11,0xe
11662 +
11663 +[0-9a-f]* <lsr3>:
11664 + *[0-9a-f]*: fe 0f 16 00 lsr pc,pc,0x0
11665 + *[0-9a-f]*: f8 0c 16 1f lsr r12,r12,0x1f
11666 + *[0-9a-f]*: ea 05 16 10 lsr r5,r5,0x10
11667 + *[0-9a-f]*: e8 04 16 0f lsr r4,r4,0xf
11668 + *[0-9a-f]*: fc 0e 16 01 lsr lr,lr,0x1
11669 + *[0-9a-f]*: e6 04 16 1f lsr r4,r3,0x1f
11670 + *[0-9a-f]*: f2 0f 16 0e lsr pc,r9,0xe
11671 + *[0-9a-f]*: e0 03 16 06 lsr r3,r0,0x6
11672 +
11673 +[0-9a-f]* <movc1>:
11674 + *[0-9a-f]*: fe 0f 17 00 moveq pc,pc
11675 + *[0-9a-f]*: f8 0c 17 f0 moval r12,r12
11676 + *[0-9a-f]*: ea 05 17 80 movls r5,r5
11677 + *[0-9a-f]*: e8 04 17 70 movpl r4,r4
11678 + *[0-9a-f]*: fc 0e 17 10 movne lr,lr
11679 + *[0-9a-f]*: f6 0f 17 10 movne pc,r11
11680 + *[0-9a-f]*: e4 0a 17 60 movmi r10,r2
11681 + *[0-9a-f]*: f8 08 17 80 movls r8,r12
11682 +
11683 +[0-9a-f]* <padd_h>:
11684 + *[0-9a-f]*: fe 0f 20 0f padd\.h pc,pc,pc
11685 + *[0-9a-f]*: f8 0c 20 0c padd\.h r12,r12,r12
11686 + *[0-9a-f]*: ea 05 20 05 padd\.h r5,r5,r5
11687 + *[0-9a-f]*: e8 04 20 04 padd\.h r4,r4,r4
11688 + *[0-9a-f]*: fc 0e 20 0e padd\.h lr,lr,lr
11689 + *[0-9a-f]*: e4 07 20 08 padd\.h r8,r2,r7
11690 + *[0-9a-f]*: e0 03 20 00 padd\.h r0,r0,r3
11691 + *[0-9a-f]*: f6 06 20 0d padd\.h sp,r11,r6
11692 +
11693 +[0-9a-f]* <psub_h>:
11694 + *[0-9a-f]*: fe 0f 20 1f psub\.h pc,pc,pc
11695 + *[0-9a-f]*: f8 0c 20 1c psub\.h r12,r12,r12
11696 + *[0-9a-f]*: ea 05 20 15 psub\.h r5,r5,r5
11697 + *[0-9a-f]*: e8 04 20 14 psub\.h r4,r4,r4
11698 + *[0-9a-f]*: fc 0e 20 1e psub\.h lr,lr,lr
11699 + *[0-9a-f]*: ec 08 20 1e psub\.h lr,r6,r8
11700 + *[0-9a-f]*: e2 0d 20 10 psub\.h r0,r1,sp
11701 + *[0-9a-f]*: fe 0d 20 1f psub\.h pc,pc,sp
11702 +
11703 +[0-9a-f]* <paddx_h>:
11704 + *[0-9a-f]*: fe 0f 20 2f paddx\.h pc,pc,pc
11705 + *[0-9a-f]*: f8 0c 20 2c paddx\.h r12,r12,r12
11706 + *[0-9a-f]*: ea 05 20 25 paddx\.h r5,r5,r5
11707 + *[0-9a-f]*: e8 04 20 24 paddx\.h r4,r4,r4
11708 + *[0-9a-f]*: fc 0e 20 2e paddx\.h lr,lr,lr
11709 + *[0-9a-f]*: fe 01 20 2f paddx\.h pc,pc,r1
11710 + *[0-9a-f]*: e8 05 20 2a paddx\.h r10,r4,r5
11711 + *[0-9a-f]*: fe 02 20 25 paddx\.h r5,pc,r2
11712 +
11713 +[0-9a-f]* <psubx_h>:
11714 + *[0-9a-f]*: fe 0f 20 3f psubx\.h pc,pc,pc
11715 + *[0-9a-f]*: f8 0c 20 3c psubx\.h r12,r12,r12
11716 + *[0-9a-f]*: ea 05 20 35 psubx\.h r5,r5,r5
11717 + *[0-9a-f]*: e8 04 20 34 psubx\.h r4,r4,r4
11718 + *[0-9a-f]*: fc 0e 20 3e psubx\.h lr,lr,lr
11719 + *[0-9a-f]*: f8 05 20 35 psubx\.h r5,r12,r5
11720 + *[0-9a-f]*: f0 03 20 33 psubx\.h r3,r8,r3
11721 + *[0-9a-f]*: e4 03 20 35 psubx\.h r5,r2,r3
11722 +
11723 +[0-9a-f]* <padds_sh>:
11724 + *[0-9a-f]*: fe 0f 20 4f padds\.sh pc,pc,pc
11725 + *[0-9a-f]*: f8 0c 20 4c padds\.sh r12,r12,r12
11726 + *[0-9a-f]*: ea 05 20 45 padds\.sh r5,r5,r5
11727 + *[0-9a-f]*: e8 04 20 44 padds\.sh r4,r4,r4
11728 + *[0-9a-f]*: fc 0e 20 4e padds\.sh lr,lr,lr
11729 + *[0-9a-f]*: fc 02 20 49 padds\.sh r9,lr,r2
11730 + *[0-9a-f]*: f0 01 20 46 padds\.sh r6,r8,r1
11731 + *[0-9a-f]*: e8 0a 20 46 padds\.sh r6,r4,r10
11732 +
11733 +[0-9a-f]* <psubs_sh>:
11734 + *[0-9a-f]*: fe 0f 20 5f psubs\.sh pc,pc,pc
11735 + *[0-9a-f]*: f8 0c 20 5c psubs\.sh r12,r12,r12
11736 + *[0-9a-f]*: ea 05 20 55 psubs\.sh r5,r5,r5
11737 + *[0-9a-f]*: e8 04 20 54 psubs\.sh r4,r4,r4
11738 + *[0-9a-f]*: fc 0e 20 5e psubs\.sh lr,lr,lr
11739 + *[0-9a-f]*: fc 0b 20 56 psubs\.sh r6,lr,r11
11740 + *[0-9a-f]*: f8 04 20 52 psubs\.sh r2,r12,r4
11741 + *[0-9a-f]*: f2 00 20 50 psubs\.sh r0,r9,r0
11742 +
11743 +[0-9a-f]* <paddxs_sh>:
11744 + *[0-9a-f]*: fe 0f 20 6f paddxs\.sh pc,pc,pc
11745 + *[0-9a-f]*: f8 0c 20 6c paddxs\.sh r12,r12,r12
11746 + *[0-9a-f]*: ea 05 20 65 paddxs\.sh r5,r5,r5
11747 + *[0-9a-f]*: e8 04 20 64 paddxs\.sh r4,r4,r4
11748 + *[0-9a-f]*: fc 0e 20 6e paddxs\.sh lr,lr,lr
11749 + *[0-9a-f]*: e6 09 20 60 paddxs\.sh r0,r3,r9
11750 + *[0-9a-f]*: f4 0b 20 6f paddxs\.sh pc,r10,r11
11751 + *[0-9a-f]*: f4 0f 20 6f paddxs\.sh pc,r10,pc
11752 +
11753 +[0-9a-f]* <psubxs_sh>:
11754 + *[0-9a-f]*: fe 0f 20 7f psubxs\.sh pc,pc,pc
11755 + *[0-9a-f]*: f8 0c 20 7c psubxs\.sh r12,r12,r12
11756 + *[0-9a-f]*: ea 05 20 75 psubxs\.sh r5,r5,r5
11757 + *[0-9a-f]*: e8 04 20 74 psubxs\.sh r4,r4,r4
11758 + *[0-9a-f]*: fc 0e 20 7e psubxs\.sh lr,lr,lr
11759 + *[0-9a-f]*: e8 04 20 77 psubxs\.sh r7,r4,r4
11760 + *[0-9a-f]*: f0 03 20 77 psubxs\.sh r7,r8,r3
11761 + *[0-9a-f]*: ec 05 20 7f psubxs\.sh pc,r6,r5
11762 +
11763 +[0-9a-f]* <padds_uh>:
11764 + *[0-9a-f]*: fe 0f 20 8f padds\.uh pc,pc,pc
11765 + *[0-9a-f]*: f8 0c 20 8c padds\.uh r12,r12,r12
11766 + *[0-9a-f]*: ea 05 20 85 padds\.uh r5,r5,r5
11767 + *[0-9a-f]*: e8 04 20 84 padds\.uh r4,r4,r4
11768 + *[0-9a-f]*: fc 0e 20 8e padds\.uh lr,lr,lr
11769 + *[0-9a-f]*: f6 07 20 8c padds\.uh r12,r11,r7
11770 + *[0-9a-f]*: f0 0e 20 87 padds\.uh r7,r8,lr
11771 + *[0-9a-f]*: f2 07 20 86 padds\.uh r6,r9,r7
11772 +
11773 +[0-9a-f]* <psubs_uh>:
11774 + *[0-9a-f]*: fe 0f 20 9f psubs\.uh pc,pc,pc
11775 + *[0-9a-f]*: f8 0c 20 9c psubs\.uh r12,r12,r12
11776 + *[0-9a-f]*: ea 05 20 95 psubs\.uh r5,r5,r5
11777 + *[0-9a-f]*: e8 04 20 94 psubs\.uh r4,r4,r4
11778 + *[0-9a-f]*: fc 0e 20 9e psubs\.uh lr,lr,lr
11779 + *[0-9a-f]*: f4 06 20 9e psubs\.uh lr,r10,r6
11780 + *[0-9a-f]*: e4 0f 20 9d psubs\.uh sp,r2,pc
11781 + *[0-9a-f]*: f2 02 20 92 psubs\.uh r2,r9,r2
11782 +
11783 +[0-9a-f]* <paddxs_uh>:
11784 + *[0-9a-f]*: fe 0f 20 af paddxs\.uh pc,pc,pc
11785 + *[0-9a-f]*: f8 0c 20 ac paddxs\.uh r12,r12,r12
11786 + *[0-9a-f]*: ea 05 20 a5 paddxs\.uh r5,r5,r5
11787 + *[0-9a-f]*: e8 04 20 a4 paddxs\.uh r4,r4,r4
11788 + *[0-9a-f]*: fc 0e 20 ae paddxs\.uh lr,lr,lr
11789 + *[0-9a-f]*: f2 05 20 a7 paddxs\.uh r7,r9,r5
11790 + *[0-9a-f]*: e2 04 20 a9 paddxs\.uh r9,r1,r4
11791 + *[0-9a-f]*: e4 03 20 a5 paddxs\.uh r5,r2,r3
11792 +
11793 +[0-9a-f]* <psubxs_uh>:
11794 + *[0-9a-f]*: fe 0f 20 bf psubxs\.uh pc,pc,pc
11795 + *[0-9a-f]*: f8 0c 20 bc psubxs\.uh r12,r12,r12
11796 + *[0-9a-f]*: ea 05 20 b5 psubxs\.uh r5,r5,r5
11797 + *[0-9a-f]*: e8 04 20 b4 psubxs\.uh r4,r4,r4
11798 + *[0-9a-f]*: fc 0e 20 be psubxs\.uh lr,lr,lr
11799 + *[0-9a-f]*: ea 0d 20 bd psubxs\.uh sp,r5,sp
11800 + *[0-9a-f]*: ec 06 20 bd psubxs\.uh sp,r6,r6
11801 + *[0-9a-f]*: f6 08 20 b3 psubxs\.uh r3,r11,r8
11802 +
11803 +[0-9a-f]* <paddh_sh>:
11804 + *[0-9a-f]*: fe 0f 20 cf paddh\.sh pc,pc,pc
11805 + *[0-9a-f]*: f8 0c 20 cc paddh\.sh r12,r12,r12
11806 + *[0-9a-f]*: ea 05 20 c5 paddh\.sh r5,r5,r5
11807 + *[0-9a-f]*: e8 04 20 c4 paddh\.sh r4,r4,r4
11808 + *[0-9a-f]*: fc 0e 20 ce paddh\.sh lr,lr,lr
11809 + *[0-9a-f]*: fa 03 20 cc paddh\.sh r12,sp,r3
11810 + *[0-9a-f]*: ea 03 20 cf paddh\.sh pc,r5,r3
11811 + *[0-9a-f]*: f0 0d 20 c8 paddh\.sh r8,r8,sp
11812 +
11813 +[0-9a-f]* <psubh_sh>:
11814 + *[0-9a-f]*: fe 0f 20 df psubh\.sh pc,pc,pc
11815 + *[0-9a-f]*: f8 0c 20 dc psubh\.sh r12,r12,r12
11816 + *[0-9a-f]*: ea 05 20 d5 psubh\.sh r5,r5,r5
11817 + *[0-9a-f]*: e8 04 20 d4 psubh\.sh r4,r4,r4
11818 + *[0-9a-f]*: fc 0e 20 de psubh\.sh lr,lr,lr
11819 + *[0-9a-f]*: ea 08 20 d1 psubh\.sh r1,r5,r8
11820 + *[0-9a-f]*: e6 06 20 d7 psubh\.sh r7,r3,r6
11821 + *[0-9a-f]*: e6 03 20 d4 psubh\.sh r4,r3,r3
11822 +
11823 +[0-9a-f]* <paddxh_sh>:
11824 + *[0-9a-f]*: fe 0f 20 ef paddxh\.sh pc,pc,pc
11825 + *[0-9a-f]*: f8 0c 20 ec paddxh\.sh r12,r12,r12
11826 + *[0-9a-f]*: ea 05 20 e5 paddxh\.sh r5,r5,r5
11827 + *[0-9a-f]*: e8 04 20 e4 paddxh\.sh r4,r4,r4
11828 + *[0-9a-f]*: fc 0e 20 ee paddxh\.sh lr,lr,lr
11829 + *[0-9a-f]*: e0 04 20 e6 paddxh\.sh r6,r0,r4
11830 + *[0-9a-f]*: f0 09 20 e9 paddxh\.sh r9,r8,r9
11831 + *[0-9a-f]*: e0 0d 20 e3 paddxh\.sh r3,r0,sp
11832 +
11833 +[0-9a-f]* <psubxh_sh>:
11834 + *[0-9a-f]*: fe 0f 20 ff psubxh\.sh pc,pc,pc
11835 + *[0-9a-f]*: f8 0c 20 fc psubxh\.sh r12,r12,r12
11836 + *[0-9a-f]*: ea 05 20 f5 psubxh\.sh r5,r5,r5
11837 + *[0-9a-f]*: e8 04 20 f4 psubxh\.sh r4,r4,r4
11838 + *[0-9a-f]*: fc 0e 20 fe psubxh\.sh lr,lr,lr
11839 + *[0-9a-f]*: fe 0c 20 f4 psubxh\.sh r4,pc,r12
11840 + *[0-9a-f]*: e8 06 20 f8 psubxh\.sh r8,r4,r6
11841 + *[0-9a-f]*: f2 04 20 fc psubxh\.sh r12,r9,r4
11842 +
11843 +[0-9a-f]* <paddsub_h>:
11844 + *[0-9a-f]*: fe 0f 21 0f paddsub\.h pc,pc:b,pc:b
11845 + *[0-9a-f]*: f8 0c 21 3c paddsub\.h r12,r12:t,r12:t
11846 + *[0-9a-f]*: ea 05 21 35 paddsub\.h r5,r5:t,r5:t
11847 + *[0-9a-f]*: e8 04 21 04 paddsub\.h r4,r4:b,r4:b
11848 + *[0-9a-f]*: fc 0e 21 3e paddsub\.h lr,lr:t,lr:t
11849 + *[0-9a-f]*: e4 0e 21 25 paddsub\.h r5,r2:t,lr:b
11850 + *[0-9a-f]*: e2 08 21 07 paddsub\.h r7,r1:b,r8:b
11851 + *[0-9a-f]*: f4 05 21 36 paddsub\.h r6,r10:t,r5:t
11852 +
11853 +[0-9a-f]* <psubadd_h>:
11854 + *[0-9a-f]*: fe 0f 21 4f psubadd\.h pc,pc:b,pc:b
11855 + *[0-9a-f]*: f8 0c 21 7c psubadd\.h r12,r12:t,r12:t
11856 + *[0-9a-f]*: ea 05 21 75 psubadd\.h r5,r5:t,r5:t
11857 + *[0-9a-f]*: e8 04 21 44 psubadd\.h r4,r4:b,r4:b
11858 + *[0-9a-f]*: fc 0e 21 7e psubadd\.h lr,lr:t,lr:t
11859 + *[0-9a-f]*: f6 08 21 79 psubadd\.h r9,r11:t,r8:t
11860 + *[0-9a-f]*: ee 0e 21 7a psubadd\.h r10,r7:t,lr:t
11861 + *[0-9a-f]*: fe 0f 21 66 psubadd\.h r6,pc:t,pc:b
11862 +
11863 +[0-9a-f]* <paddsubs_sh>:
11864 + *[0-9a-f]*: fe 0f 21 8f paddsubs\.sh pc,pc:b,pc:b
11865 + *[0-9a-f]*: f8 0c 21 bc paddsubs\.sh r12,r12:t,r12:t
11866 + *[0-9a-f]*: ea 05 21 b5 paddsubs\.sh r5,r5:t,r5:t
11867 + *[0-9a-f]*: e8 04 21 84 paddsubs\.sh r4,r4:b,r4:b
11868 + *[0-9a-f]*: fc 0e 21 be paddsubs\.sh lr,lr:t,lr:t
11869 + *[0-9a-f]*: fc 00 21 a0 paddsubs\.sh r0,lr:t,r0:b
11870 + *[0-9a-f]*: e4 04 21 b9 paddsubs\.sh r9,r2:t,r4:t
11871 + *[0-9a-f]*: f2 0d 21 bc paddsubs\.sh r12,r9:t,sp:t
11872 +
11873 +[0-9a-f]* <psubadds_sh>:
11874 + *[0-9a-f]*: fe 0f 21 cf psubadds\.sh pc,pc:b,pc:b
11875 + *[0-9a-f]*: f8 0c 21 fc psubadds\.sh r12,r12:t,r12:t
11876 + *[0-9a-f]*: ea 05 21 f5 psubadds\.sh r5,r5:t,r5:t
11877 + *[0-9a-f]*: e8 04 21 c4 psubadds\.sh r4,r4:b,r4:b
11878 + *[0-9a-f]*: fc 0e 21 fe psubadds\.sh lr,lr:t,lr:t
11879 + *[0-9a-f]*: fc 01 21 df psubadds\.sh pc,lr:b,r1:t
11880 + *[0-9a-f]*: e6 0c 21 cb psubadds\.sh r11,r3:b,r12:b
11881 + *[0-9a-f]*: e4 08 21 fa psubadds\.sh r10,r2:t,r8:t
11882 +
11883 +[0-9a-f]* <paddsubs_uh>:
11884 + *[0-9a-f]*: fe 0f 22 0f paddsubs\.uh pc,pc:b,pc:b
11885 + *[0-9a-f]*: f8 0c 22 3c paddsubs\.uh r12,r12:t,r12:t
11886 + *[0-9a-f]*: ea 05 22 35 paddsubs\.uh r5,r5:t,r5:t
11887 + *[0-9a-f]*: e8 04 22 04 paddsubs\.uh r4,r4:b,r4:b
11888 + *[0-9a-f]*: fc 0e 22 3e paddsubs\.uh lr,lr:t,lr:t
11889 + *[0-9a-f]*: e4 03 22 09 paddsubs\.uh r9,r2:b,r3:b
11890 + *[0-9a-f]*: fa 07 22 1d paddsubs\.uh sp,sp:b,r7:t
11891 + *[0-9a-f]*: e0 0a 22 1e paddsubs\.uh lr,r0:b,r10:t
11892 +
11893 +[0-9a-f]* <psubadds_uh>:
11894 + *[0-9a-f]*: fe 0f 22 4f psubadds\.uh pc,pc:b,pc:b
11895 + *[0-9a-f]*: f8 0c 22 7c psubadds\.uh r12,r12:t,r12:t
11896 + *[0-9a-f]*: ea 05 22 75 psubadds\.uh r5,r5:t,r5:t
11897 + *[0-9a-f]*: e8 04 22 44 psubadds\.uh r4,r4:b,r4:b
11898 + *[0-9a-f]*: fc 0e 22 7e psubadds\.uh lr,lr:t,lr:t
11899 + *[0-9a-f]*: f2 0f 22 7c psubadds\.uh r12,r9:t,pc:t
11900 + *[0-9a-f]*: ec 08 22 48 psubadds\.uh r8,r6:b,r8:b
11901 + *[0-9a-f]*: f0 04 22 48 psubadds\.uh r8,r8:b,r4:b
11902 +
11903 +[0-9a-f]* <paddsubh_sh>:
11904 + *[0-9a-f]*: fe 0f 22 8f paddsubh\.sh pc,pc:b,pc:b
11905 + *[0-9a-f]*: f8 0c 22 bc paddsubh\.sh r12,r12:t,r12:t
11906 + *[0-9a-f]*: ea 05 22 b5 paddsubh\.sh r5,r5:t,r5:t
11907 + *[0-9a-f]*: e8 04 22 84 paddsubh\.sh r4,r4:b,r4:b
11908 + *[0-9a-f]*: fc 0e 22 be paddsubh\.sh lr,lr:t,lr:t
11909 + *[0-9a-f]*: f2 09 22 a8 paddsubh\.sh r8,r9:t,r9:b
11910 + *[0-9a-f]*: fa 01 22 b0 paddsubh\.sh r0,sp:t,r1:t
11911 + *[0-9a-f]*: e2 00 22 93 paddsubh\.sh r3,r1:b,r0:t
11912 +
11913 +[0-9a-f]* <psubaddh_sh>:
11914 + *[0-9a-f]*: fe 0f 22 cf psubaddh\.sh pc,pc:b,pc:b
11915 + *[0-9a-f]*: f8 0c 22 fc psubaddh\.sh r12,r12:t,r12:t
11916 + *[0-9a-f]*: ea 05 22 f5 psubaddh\.sh r5,r5:t,r5:t
11917 + *[0-9a-f]*: e8 04 22 c4 psubaddh\.sh r4,r4:b,r4:b
11918 + *[0-9a-f]*: fc 0e 22 fe psubaddh\.sh lr,lr:t,lr:t
11919 + *[0-9a-f]*: e6 0a 22 e7 psubaddh\.sh r7,r3:t,r10:b
11920 + *[0-9a-f]*: e4 01 22 f7 psubaddh\.sh r7,r2:t,r1:t
11921 + *[0-9a-f]*: e6 06 22 cb psubaddh\.sh r11,r3:b,r6:b
11922 +
11923 +[0-9a-f]* <padd_b>:
11924 + *[0-9a-f]*: fe 0f 23 0f padd\.b pc,pc,pc
11925 + *[0-9a-f]*: f8 0c 23 0c padd\.b r12,r12,r12
11926 + *[0-9a-f]*: ea 05 23 05 padd\.b r5,r5,r5
11927 + *[0-9a-f]*: e8 04 23 04 padd\.b r4,r4,r4
11928 + *[0-9a-f]*: fc 0e 23 0e padd\.b lr,lr,lr
11929 + *[0-9a-f]*: ec 0f 23 02 padd\.b r2,r6,pc
11930 + *[0-9a-f]*: f2 0c 23 08 padd\.b r8,r9,r12
11931 + *[0-9a-f]*: f8 03 23 05 padd\.b r5,r12,r3
11932 +
11933 +[0-9a-f]* <psub_b>:
11934 + *[0-9a-f]*: fe 0f 23 1f psub\.b pc,pc,pc
11935 + *[0-9a-f]*: f8 0c 23 1c psub\.b r12,r12,r12
11936 + *[0-9a-f]*: ea 05 23 15 psub\.b r5,r5,r5
11937 + *[0-9a-f]*: e8 04 23 14 psub\.b r4,r4,r4
11938 + *[0-9a-f]*: fc 0e 23 1e psub\.b lr,lr,lr
11939 + *[0-9a-f]*: f8 0f 23 10 psub\.b r0,r12,pc
11940 + *[0-9a-f]*: fa 0a 23 17 psub\.b r7,sp,r10
11941 + *[0-9a-f]*: fa 0c 23 15 psub\.b r5,sp,r12
11942 +
11943 +[0-9a-f]* <padds_sb>:
11944 + *[0-9a-f]*: fe 0f 23 2f padds\.sb pc,pc,pc
11945 + *[0-9a-f]*: f8 0c 23 2c padds\.sb r12,r12,r12
11946 + *[0-9a-f]*: ea 05 23 25 padds\.sb r5,r5,r5
11947 + *[0-9a-f]*: e8 04 23 24 padds\.sb r4,r4,r4
11948 + *[0-9a-f]*: fc 0e 23 2e padds\.sb lr,lr,lr
11949 + *[0-9a-f]*: f6 04 23 2d padds\.sb sp,r11,r4
11950 + *[0-9a-f]*: f4 0b 23 2b padds\.sb r11,r10,r11
11951 + *[0-9a-f]*: f8 06 23 25 padds\.sb r5,r12,r6
11952 +
11953 +[0-9a-f]* <psubs_sb>:
11954 + *[0-9a-f]*: fe 0f 23 3f psubs\.sb pc,pc,pc
11955 + *[0-9a-f]*: f8 0c 23 3c psubs\.sb r12,r12,r12
11956 + *[0-9a-f]*: ea 05 23 35 psubs\.sb r5,r5,r5
11957 + *[0-9a-f]*: e8 04 23 34 psubs\.sb r4,r4,r4
11958 + *[0-9a-f]*: fc 0e 23 3e psubs\.sb lr,lr,lr
11959 + *[0-9a-f]*: ec 08 23 37 psubs\.sb r7,r6,r8
11960 + *[0-9a-f]*: f4 09 23 3c psubs\.sb r12,r10,r9
11961 + *[0-9a-f]*: f6 00 23 3f psubs\.sb pc,r11,r0
11962 +
11963 +[0-9a-f]* <padds_ub>:
11964 + *[0-9a-f]*: fe 0f 23 4f padds\.ub pc,pc,pc
11965 + *[0-9a-f]*: f8 0c 23 4c padds\.ub r12,r12,r12
11966 + *[0-9a-f]*: ea 05 23 45 padds\.ub r5,r5,r5
11967 + *[0-9a-f]*: e8 04 23 44 padds\.ub r4,r4,r4
11968 + *[0-9a-f]*: fc 0e 23 4e padds\.ub lr,lr,lr
11969 + *[0-9a-f]*: e4 0b 23 43 padds\.ub r3,r2,r11
11970 + *[0-9a-f]*: f0 01 23 4a padds\.ub r10,r8,r1
11971 + *[0-9a-f]*: f0 0a 23 4b padds\.ub r11,r8,r10
11972 +
11973 +[0-9a-f]* <psubs_ub>:
11974 + *[0-9a-f]*: fe 0f 23 5f psubs\.ub pc,pc,pc
11975 + *[0-9a-f]*: f8 0c 23 5c psubs\.ub r12,r12,r12
11976 + *[0-9a-f]*: ea 05 23 55 psubs\.ub r5,r5,r5
11977 + *[0-9a-f]*: e8 04 23 54 psubs\.ub r4,r4,r4
11978 + *[0-9a-f]*: fc 0e 23 5e psubs\.ub lr,lr,lr
11979 + *[0-9a-f]*: e4 07 23 50 psubs\.ub r0,r2,r7
11980 + *[0-9a-f]*: ea 03 23 5e psubs\.ub lr,r5,r3
11981 + *[0-9a-f]*: ee 09 23 56 psubs\.ub r6,r7,r9
11982 +
11983 +[0-9a-f]* <paddh_ub>:
11984 + *[0-9a-f]*: fe 0f 23 6f paddh\.ub pc,pc,pc
11985 + *[0-9a-f]*: f8 0c 23 6c paddh\.ub r12,r12,r12
11986 + *[0-9a-f]*: ea 05 23 65 paddh\.ub r5,r5,r5
11987 + *[0-9a-f]*: e8 04 23 64 paddh\.ub r4,r4,r4
11988 + *[0-9a-f]*: fc 0e 23 6e paddh\.ub lr,lr,lr
11989 + *[0-9a-f]*: e2 00 23 6e paddh\.ub lr,r1,r0
11990 + *[0-9a-f]*: ee 07 23 62 paddh\.ub r2,r7,r7
11991 + *[0-9a-f]*: e2 02 23 62 paddh\.ub r2,r1,r2
11992 +
11993 +[0-9a-f]* <psubh_ub>:
11994 + *[0-9a-f]*: fe 0f 23 7f psubh\.ub pc,pc,pc
11995 + *[0-9a-f]*: f8 0c 23 7c psubh\.ub r12,r12,r12
11996 + *[0-9a-f]*: ea 05 23 75 psubh\.ub r5,r5,r5
11997 + *[0-9a-f]*: e8 04 23 74 psubh\.ub r4,r4,r4
11998 + *[0-9a-f]*: fc 0e 23 7e psubh\.ub lr,lr,lr
11999 + *[0-9a-f]*: e2 06 23 70 psubh\.ub r0,r1,r6
12000 + *[0-9a-f]*: fc 0a 23 74 psubh\.ub r4,lr,r10
12001 + *[0-9a-f]*: f0 01 23 79 psubh\.ub r9,r8,r1
12002 +
12003 +[0-9a-f]* <pmax_ub>:
12004 + *[0-9a-f]*: fe 0f 23 8f pmax\.ub pc,pc,pc
12005 + *[0-9a-f]*: f8 0c 23 8c pmax\.ub r12,r12,r12
12006 + *[0-9a-f]*: ea 05 23 85 pmax\.ub r5,r5,r5
12007 + *[0-9a-f]*: e8 04 23 84 pmax\.ub r4,r4,r4
12008 + *[0-9a-f]*: fc 0e 23 8e pmax\.ub lr,lr,lr
12009 + *[0-9a-f]*: e4 0b 23 8f pmax\.ub pc,r2,r11
12010 + *[0-9a-f]*: e2 01 23 8c pmax\.ub r12,r1,r1
12011 + *[0-9a-f]*: e4 00 23 85 pmax\.ub r5,r2,r0
12012 +
12013 +[0-9a-f]* <pmax_sh>:
12014 + *[0-9a-f]*: fe 0f 23 9f pmax\.sh pc,pc,pc
12015 + *[0-9a-f]*: f8 0c 23 9c pmax\.sh r12,r12,r12
12016 + *[0-9a-f]*: ea 05 23 95 pmax\.sh r5,r5,r5
12017 + *[0-9a-f]*: e8 04 23 94 pmax\.sh r4,r4,r4
12018 + *[0-9a-f]*: fc 0e 23 9e pmax\.sh lr,lr,lr
12019 + *[0-9a-f]*: ec 0c 23 9e pmax\.sh lr,r6,r12
12020 + *[0-9a-f]*: fe 05 23 92 pmax\.sh r2,pc,r5
12021 + *[0-9a-f]*: e4 07 23 9f pmax\.sh pc,r2,r7
12022 +
12023 +[0-9a-f]* <pmin_ub>:
12024 + *[0-9a-f]*: fe 0f 23 af pmin\.ub pc,pc,pc
12025 + *[0-9a-f]*: f8 0c 23 ac pmin\.ub r12,r12,r12
12026 + *[0-9a-f]*: ea 05 23 a5 pmin\.ub r5,r5,r5
12027 + *[0-9a-f]*: e8 04 23 a4 pmin\.ub r4,r4,r4
12028 + *[0-9a-f]*: fc 0e 23 ae pmin\.ub lr,lr,lr
12029 + *[0-9a-f]*: e2 05 23 a8 pmin\.ub r8,r1,r5
12030 + *[0-9a-f]*: f0 03 23 a1 pmin\.ub r1,r8,r3
12031 + *[0-9a-f]*: e4 07 23 a0 pmin\.ub r0,r2,r7
12032 +
12033 +[0-9a-f]* <pmin_sh>:
12034 + *[0-9a-f]*: fe 0f 23 bf pmin\.sh pc,pc,pc
12035 + *[0-9a-f]*: f8 0c 23 bc pmin\.sh r12,r12,r12
12036 + *[0-9a-f]*: ea 05 23 b5 pmin\.sh r5,r5,r5
12037 + *[0-9a-f]*: e8 04 23 b4 pmin\.sh r4,r4,r4
12038 + *[0-9a-f]*: fc 0e 23 be pmin\.sh lr,lr,lr
12039 + *[0-9a-f]*: e8 0a 23 b8 pmin\.sh r8,r4,r10
12040 + *[0-9a-f]*: f4 0c 23 be pmin\.sh lr,r10,r12
12041 + *[0-9a-f]*: ec 02 23 b2 pmin\.sh r2,r6,r2
12042 +
12043 +[0-9a-f]* <pavg_ub>:
12044 + *[0-9a-f]*: fe 0f 23 cf pavg\.ub pc,pc,pc
12045 + *[0-9a-f]*: f8 0c 23 cc pavg\.ub r12,r12,r12
12046 + *[0-9a-f]*: ea 05 23 c5 pavg\.ub r5,r5,r5
12047 + *[0-9a-f]*: e8 04 23 c4 pavg\.ub r4,r4,r4
12048 + *[0-9a-f]*: fc 0e 23 ce pavg\.ub lr,lr,lr
12049 + *[0-9a-f]*: e2 06 23 c0 pavg\.ub r0,r1,r6
12050 + *[0-9a-f]*: e6 06 23 c8 pavg\.ub r8,r3,r6
12051 + *[0-9a-f]*: f8 0a 23 cf pavg\.ub pc,r12,r10
12052 +
12053 +[0-9a-f]* <pavg_sh>:
12054 + *[0-9a-f]*: fe 0f 23 df pavg\.sh pc,pc,pc
12055 + *[0-9a-f]*: f8 0c 23 dc pavg\.sh r12,r12,r12
12056 + *[0-9a-f]*: ea 05 23 d5 pavg\.sh r5,r5,r5
12057 + *[0-9a-f]*: e8 04 23 d4 pavg\.sh r4,r4,r4
12058 + *[0-9a-f]*: fc 0e 23 de pavg\.sh lr,lr,lr
12059 + *[0-9a-f]*: fe 0d 23 d9 pavg\.sh r9,pc,sp
12060 + *[0-9a-f]*: fa 03 23 df pavg\.sh pc,sp,r3
12061 + *[0-9a-f]*: e2 09 23 d6 pavg\.sh r6,r1,r9
12062 +
12063 +[0-9a-f]* <pabs_sb>:
12064 + *[0-9a-f]*: e0 0f 23 ef pabs\.sb pc,pc
12065 + *[0-9a-f]*: e0 0c 23 ec pabs\.sb r12,r12
12066 + *[0-9a-f]*: e0 05 23 e5 pabs\.sb r5,r5
12067 + *[0-9a-f]*: e0 04 23 e4 pabs\.sb r4,r4
12068 + *[0-9a-f]*: e0 0e 23 ee pabs\.sb lr,lr
12069 + *[0-9a-f]*: e0 06 23 eb pabs\.sb r11,r6
12070 + *[0-9a-f]*: e0 09 23 ee pabs\.sb lr,r9
12071 + *[0-9a-f]*: e0 07 23 ed pabs\.sb sp,r7
12072 +
12073 +[0-9a-f]* <pabs_sh>:
12074 + *[0-9a-f]*: e0 0f 23 ff pabs\.sh pc,pc
12075 + *[0-9a-f]*: e0 0c 23 fc pabs\.sh r12,r12
12076 + *[0-9a-f]*: e0 05 23 f5 pabs\.sh r5,r5
12077 + *[0-9a-f]*: e0 04 23 f4 pabs\.sh r4,r4
12078 + *[0-9a-f]*: e0 0e 23 fe pabs\.sh lr,lr
12079 + *[0-9a-f]*: e0 03 23 ff pabs\.sh pc,r3
12080 + *[0-9a-f]*: e0 07 23 f5 pabs\.sh r5,r7
12081 + *[0-9a-f]*: e0 00 23 f4 pabs\.sh r4,r0
12082 +
12083 +[0-9a-f]* <psad>:
12084 + *[0-9a-f]*: fe 0f 24 0f psad pc,pc,pc
12085 + *[0-9a-f]*: f8 0c 24 0c psad r12,r12,r12
12086 + *[0-9a-f]*: ea 05 24 05 psad r5,r5,r5
12087 + *[0-9a-f]*: e8 04 24 04 psad r4,r4,r4
12088 + *[0-9a-f]*: fc 0e 24 0e psad lr,lr,lr
12089 + *[0-9a-f]*: f6 0b 24 09 psad r9,r11,r11
12090 + *[0-9a-f]*: e8 0d 24 0e psad lr,r4,sp
12091 + *[0-9a-f]*: e8 05 24 0e psad lr,r4,r5
12092 +
12093 +[0-9a-f]* <pasr_b>:
12094 + *[0-9a-f]*: fe 00 24 1f pasr\.b pc,pc,0x0
12095 + *[0-9a-f]*: f8 07 24 1c pasr\.b r12,r12,0x7
12096 + *[0-9a-f]*: ea 04 24 15 pasr\.b r5,r5,0x4
12097 + *[0-9a-f]*: e8 03 24 14 pasr\.b r4,r4,0x3
12098 + *[0-9a-f]*: fc 01 24 1e pasr\.b lr,lr,0x1
12099 + *[0-9a-f]*: ee 01 24 1f pasr\.b pc,r7,0x1
12100 + *[0-9a-f]*: fc 06 24 1d pasr\.b sp,lr,0x6
12101 + *[0-9a-f]*: e6 02 24 1d pasr\.b sp,r3,0x2
12102 +
12103 +[0-9a-f]* <plsl_b>:
12104 + *[0-9a-f]*: fe 00 24 2f plsl\.b pc,pc,0x0
12105 + *[0-9a-f]*: f8 07 24 2c plsl\.b r12,r12,0x7
12106 + *[0-9a-f]*: ea 04 24 25 plsl\.b r5,r5,0x4
12107 + *[0-9a-f]*: e8 03 24 24 plsl\.b r4,r4,0x3
12108 + *[0-9a-f]*: fc 01 24 2e plsl\.b lr,lr,0x1
12109 + *[0-9a-f]*: f6 04 24 22 plsl\.b r2,r11,0x4
12110 + *[0-9a-f]*: ea 07 24 28 plsl\.b r8,r5,0x7
12111 + *[0-9a-f]*: e0 02 24 2f plsl\.b pc,r0,0x2
12112 +
12113 +[0-9a-f]* <plsr_b>:
12114 + *[0-9a-f]*: fe 00 24 3f plsr\.b pc,pc,0x0
12115 + *[0-9a-f]*: f8 07 24 3c plsr\.b r12,r12,0x7
12116 + *[0-9a-f]*: ea 04 24 35 plsr\.b r5,r5,0x4
12117 + *[0-9a-f]*: e8 03 24 34 plsr\.b r4,r4,0x3
12118 + *[0-9a-f]*: fc 01 24 3e plsr\.b lr,lr,0x1
12119 + *[0-9a-f]*: e2 02 24 3c plsr\.b r12,r1,0x2
12120 + *[0-9a-f]*: fe 07 24 36 plsr\.b r6,pc,0x7
12121 + *[0-9a-f]*: f6 02 24 3c plsr\.b r12,r11,0x2
12122 +
12123 +[0-9a-f]* <pasr_h>:
12124 + *[0-9a-f]*: fe 00 24 4f pasr\.h pc,pc,0x0
12125 + *[0-9a-f]*: f8 0f 24 4c pasr\.h r12,r12,0xf
12126 + *[0-9a-f]*: ea 08 24 45 pasr\.h r5,r5,0x8
12127 + *[0-9a-f]*: e8 07 24 44 pasr\.h r4,r4,0x7
12128 + *[0-9a-f]*: fc 01 24 4e pasr\.h lr,lr,0x1
12129 + *[0-9a-f]*: f6 0a 24 40 pasr\.h r0,r11,0xa
12130 + *[0-9a-f]*: ec 08 24 44 pasr\.h r4,r6,0x8
12131 + *[0-9a-f]*: e4 04 24 46 pasr\.h r6,r2,0x4
12132 +
12133 +[0-9a-f]* <plsl_h>:
12134 + *[0-9a-f]*: fe 00 24 5f plsl\.h pc,pc,0x0
12135 + *[0-9a-f]*: f8 0f 24 5c plsl\.h r12,r12,0xf
12136 + *[0-9a-f]*: ea 08 24 55 plsl\.h r5,r5,0x8
12137 + *[0-9a-f]*: e8 07 24 54 plsl\.h r4,r4,0x7
12138 + *[0-9a-f]*: fc 01 24 5e plsl\.h lr,lr,0x1
12139 + *[0-9a-f]*: f4 09 24 55 plsl\.h r5,r10,0x9
12140 + *[0-9a-f]*: fc 08 24 5d plsl\.h sp,lr,0x8
12141 + *[0-9a-f]*: fc 07 24 50 plsl\.h r0,lr,0x7
12142 +
12143 +[0-9a-f]* <plsr_h>:
12144 + *[0-9a-f]*: fe 00 24 6f plsr\.h pc,pc,0x0
12145 + *[0-9a-f]*: f8 0f 24 6c plsr\.h r12,r12,0xf
12146 + *[0-9a-f]*: ea 08 24 65 plsr\.h r5,r5,0x8
12147 + *[0-9a-f]*: e8 07 24 64 plsr\.h r4,r4,0x7
12148 + *[0-9a-f]*: fc 01 24 6e plsr\.h lr,lr,0x1
12149 + *[0-9a-f]*: e0 0f 24 6b plsr\.h r11,r0,0xf
12150 + *[0-9a-f]*: e6 03 24 6e plsr\.h lr,r3,0x3
12151 + *[0-9a-f]*: fc 0a 24 68 plsr\.h r8,lr,0xa
12152 +
12153 +[0-9a-f]* <packw_sh>:
12154 + *[0-9a-f]*: fe 0f 24 7f packw\.sh pc,pc,pc
12155 + *[0-9a-f]*: f8 0c 24 7c packw\.sh r12,r12,r12
12156 + *[0-9a-f]*: ea 05 24 75 packw\.sh r5,r5,r5
12157 + *[0-9a-f]*: e8 04 24 74 packw\.sh r4,r4,r4
12158 + *[0-9a-f]*: fc 0e 24 7e packw\.sh lr,lr,lr
12159 + *[0-9a-f]*: f6 0a 24 7d packw\.sh sp,r11,r10
12160 + *[0-9a-f]*: e4 0c 24 78 packw\.sh r8,r2,r12
12161 + *[0-9a-f]*: e2 05 24 78 packw\.sh r8,r1,r5
12162 +
12163 +[0-9a-f]* <punpckub_h>:
12164 + *[0-9a-f]*: fe 00 24 8f punpckub\.h pc,pc:b
12165 + *[0-9a-f]*: f8 00 24 9c punpckub\.h r12,r12:t
12166 + *[0-9a-f]*: ea 00 24 95 punpckub\.h r5,r5:t
12167 + *[0-9a-f]*: e8 00 24 84 punpckub\.h r4,r4:b
12168 + *[0-9a-f]*: fc 00 24 9e punpckub\.h lr,lr:t
12169 + *[0-9a-f]*: e2 00 24 96 punpckub\.h r6,r1:t
12170 + *[0-9a-f]*: ea 00 24 8e punpckub\.h lr,r5:b
12171 + *[0-9a-f]*: e4 00 24 9e punpckub\.h lr,r2:t
12172 +
12173 +[0-9a-f]* <punpcksb_h>:
12174 + *[0-9a-f]*: fe 00 24 af punpcksb\.h pc,pc:b
12175 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
12176 + *[0-9a-f]*: ea 00 24 b5 punpcksb\.h r5,r5:t
12177 + *[0-9a-f]*: e8 00 24 a4 punpcksb\.h r4,r4:b
12178 + *[0-9a-f]*: fc 00 24 be punpcksb\.h lr,lr:t
12179 + *[0-9a-f]*: ee 00 24 b4 punpcksb\.h r4,r7:t
12180 + *[0-9a-f]*: fc 00 24 a6 punpcksb\.h r6,lr:b
12181 + *[0-9a-f]*: f8 00 24 bc punpcksb\.h r12,r12:t
12182 +
12183 +[0-9a-f]* <packsh_ub>:
12184 + *[0-9a-f]*: fe 0f 24 cf packsh\.ub pc,pc,pc
12185 + *[0-9a-f]*: f8 0c 24 cc packsh\.ub r12,r12,r12
12186 + *[0-9a-f]*: ea 05 24 c5 packsh\.ub r5,r5,r5
12187 + *[0-9a-f]*: e8 04 24 c4 packsh\.ub r4,r4,r4
12188 + *[0-9a-f]*: fc 0e 24 ce packsh\.ub lr,lr,lr
12189 + *[0-9a-f]*: ec 03 24 c3 packsh\.ub r3,r6,r3
12190 + *[0-9a-f]*: e0 03 24 c8 packsh\.ub r8,r0,r3
12191 + *[0-9a-f]*: e6 0e 24 c9 packsh\.ub r9,r3,lr
12192 +
12193 +[0-9a-f]* <packsh_sb>:
12194 + *[0-9a-f]*: fe 0f 24 df packsh\.sb pc,pc,pc
12195 + *[0-9a-f]*: f8 0c 24 dc packsh\.sb r12,r12,r12
12196 + *[0-9a-f]*: ea 05 24 d5 packsh\.sb r5,r5,r5
12197 + *[0-9a-f]*: e8 04 24 d4 packsh\.sb r4,r4,r4
12198 + *[0-9a-f]*: fc 0e 24 de packsh\.sb lr,lr,lr
12199 + *[0-9a-f]*: f0 01 24 d6 packsh\.sb r6,r8,r1
12200 + *[0-9a-f]*: f2 08 24 de packsh\.sb lr,r9,r8
12201 + *[0-9a-f]*: ec 06 24 dd packsh\.sb sp,r6,r6
12202 +
12203 +[0-9a-f]* <andl>:
12204 + *[0-9a-f]*: e0 1f 00 00 andl pc,0x0
12205 + *[0-9a-f]*: e0 1c ff ff andl r12,0xffff
12206 + *[0-9a-f]*: e0 15 80 00 andl r5,0x8000
12207 + *[0-9a-f]*: e0 14 7f ff andl r4,0x7fff
12208 + *[0-9a-f]*: e0 1e 00 01 andl lr,0x1
12209 + *[0-9a-f]*: e0 1f 5a 58 andl pc,0x5a58
12210 + *[0-9a-f]*: e0 18 b8 9e andl r8,0xb89e
12211 + *[0-9a-f]*: e0 17 35 97 andl r7,0x3597
12212 +
12213 +[0-9a-f]* <andl_coh>:
12214 + *[0-9a-f]*: e2 1f 00 00 andl pc,0x0,COH
12215 + *[0-9a-f]*: e2 1c ff ff andl r12,0xffff,COH
12216 + *[0-9a-f]*: e2 15 80 00 andl r5,0x8000,COH
12217 + *[0-9a-f]*: e2 14 7f ff andl r4,0x7fff,COH
12218 + *[0-9a-f]*: e2 1e 00 01 andl lr,0x1,COH
12219 + *[0-9a-f]*: e2 16 58 e1 andl r6,0x58e1,COH
12220 + *[0-9a-f]*: e2 10 9e cd andl r0,0x9ecd,COH
12221 + *[0-9a-f]*: e2 14 bd c4 andl r4,0xbdc4,COH
12222 +
12223 +[0-9a-f]* <andh>:
12224 + *[0-9a-f]*: e4 1f 00 00 andh pc,0x0
12225 + *[0-9a-f]*: e4 1c ff ff andh r12,0xffff
12226 + *[0-9a-f]*: e4 15 80 00 andh r5,0x8000
12227 + *[0-9a-f]*: e4 14 7f ff andh r4,0x7fff
12228 + *[0-9a-f]*: e4 1e 00 01 andh lr,0x1
12229 + *[0-9a-f]*: e4 1c cc 58 andh r12,0xcc58
12230 + *[0-9a-f]*: e4 13 21 e3 andh r3,0x21e3
12231 + *[0-9a-f]*: e4 12 a7 eb andh r2,0xa7eb
12232 +
12233 +[0-9a-f]* <andh_coh>:
12234 + *[0-9a-f]*: e6 1f 00 00 andh pc,0x0,COH
12235 + *[0-9a-f]*: e6 1c ff ff andh r12,0xffff,COH
12236 + *[0-9a-f]*: e6 15 80 00 andh r5,0x8000,COH
12237 + *[0-9a-f]*: e6 14 7f ff andh r4,0x7fff,COH
12238 + *[0-9a-f]*: e6 1e 00 01 andh lr,0x1,COH
12239 + *[0-9a-f]*: e6 1b 86 0d andh r11,0x860d,COH
12240 + *[0-9a-f]*: e6 18 ce f6 andh r8,0xcef6,COH
12241 + *[0-9a-f]*: e6 1a 5c 83 andh r10,0x5c83,COH
12242 +
12243 +[0-9a-f]* <orl>:
12244 + *[0-9a-f]*: e8 1f 00 00 orl pc,0x0
12245 + *[0-9a-f]*: e8 1c ff ff orl r12,0xffff
12246 + *[0-9a-f]*: e8 15 80 00 orl r5,0x8000
12247 + *[0-9a-f]*: e8 14 7f ff orl r4,0x7fff
12248 + *[0-9a-f]*: e8 1e 00 01 orl lr,0x1
12249 + *[0-9a-f]*: e8 1d 41 7e orl sp,0x417e
12250 + *[0-9a-f]*: e8 10 52 bd orl r0,0x52bd
12251 + *[0-9a-f]*: e8 1f ac 47 orl pc,0xac47
12252 +
12253 +[0-9a-f]* <orh>:
12254 + *[0-9a-f]*: ea 1f 00 00 orh pc,0x0
12255 + *[0-9a-f]*: ea 1c ff ff orh r12,0xffff
12256 + *[0-9a-f]*: ea 15 80 00 orh r5,0x8000
12257 + *[0-9a-f]*: ea 14 7f ff orh r4,0x7fff
12258 + *[0-9a-f]*: ea 1e 00 01 orh lr,0x1
12259 + *[0-9a-f]*: ea 18 6e 7d orh r8,0x6e7d
12260 + *[0-9a-f]*: ea 1c 77 1c orh r12,0x771c
12261 + *[0-9a-f]*: ea 11 ea 1a orh r1,0xea1a
12262 +
12263 +[0-9a-f]* <eorl>:
12264 + *[0-9a-f]*: ec 1f 00 00 eorl pc,0x0
12265 + *[0-9a-f]*: ec 1c ff ff eorl r12,0xffff
12266 + *[0-9a-f]*: ec 15 80 00 eorl r5,0x8000
12267 + *[0-9a-f]*: ec 14 7f ff eorl r4,0x7fff
12268 + *[0-9a-f]*: ec 1e 00 01 eorl lr,0x1
12269 + *[0-9a-f]*: ec 14 c7 b9 eorl r4,0xc7b9
12270 + *[0-9a-f]*: ec 16 fb dd eorl r6,0xfbdd
12271 + *[0-9a-f]*: ec 11 51 b1 eorl r1,0x51b1
12272 +
12273 +[0-9a-f]* <eorh>:
12274 + *[0-9a-f]*: ee 1f 00 00 eorh pc,0x0
12275 + *[0-9a-f]*: ee 1c ff ff eorh r12,0xffff
12276 + *[0-9a-f]*: ee 15 80 00 eorh r5,0x8000
12277 + *[0-9a-f]*: ee 14 7f ff eorh r4,0x7fff
12278 + *[0-9a-f]*: ee 1e 00 01 eorh lr,0x1
12279 + *[0-9a-f]*: ee 10 2d d4 eorh r0,0x2dd4
12280 + *[0-9a-f]*: ee 1a 94 b5 eorh r10,0x94b5
12281 + *[0-9a-f]*: ee 19 df 2a eorh r9,0xdf2a
12282 +
12283 +[0-9a-f]* <mcall>:
12284 + *[0-9a-f]*: f0 1f 00 00 mcall [0-9a-f]* <.*>
12285 + *[0-9a-f]*: f0 1c ff ff mcall r12\[-4\]
12286 + *[0-9a-f]*: f0 15 80 00 mcall r5\[-131072\]
12287 + *[0-9a-f]*: f0 14 7f ff mcall r4\[131068\]
12288 + *[0-9a-f]*: f0 1e 00 01 mcall lr\[4\]
12289 + *[0-9a-f]*: f0 1d 3b bf mcall sp\[61180\]
12290 + *[0-9a-f]*: f0 14 dd d2 mcall r4\[-35000\]
12291 + *[0-9a-f]*: f0 10 09 b1 mcall r0\[9924\]
12292 +
12293 +[0-9a-f]* <pref>:
12294 + *[0-9a-f]*: f2 1f 00 00 pref pc\[0\]
12295 + *[0-9a-f]*: f2 1c ff ff pref r12\[-1\]
12296 + *[0-9a-f]*: f2 15 80 00 pref r5\[-32768\]
12297 + *[0-9a-f]*: f2 14 7f ff pref r4\[32767\]
12298 + *[0-9a-f]*: f2 1e 00 01 pref lr\[1\]
12299 + *[0-9a-f]*: f2 17 1e 44 pref r7\[7748\]
12300 + *[0-9a-f]*: f2 17 e1 ed pref r7\[-7699\]
12301 + *[0-9a-f]*: f2 12 9a dc pref r2\[-25892\]
12302 +
12303 +[0-9a-f]* <cache>:
12304 + *[0-9a-f]*: f4 1f 00 00 cache pc\[0\],0x0
12305 + *[0-9a-f]*: f4 1c ff ff cache r12\[-1\],0x1f
12306 + *[0-9a-f]*: f4 15 84 00 cache r5\[-1024\],0x10
12307 + *[0-9a-f]*: f4 14 7b ff cache r4\[1023\],0xf
12308 + *[0-9a-f]*: f4 1e 08 01 cache lr\[1\],0x1
12309 + *[0-9a-f]*: f4 13 8c 3c cache r3\[-964\],0x11
12310 + *[0-9a-f]*: f4 14 b6 89 cache r4\[-375\],0x16
12311 + *[0-9a-f]*: f4 13 8c 88 cache r3\[-888\],0x11
12312 +
12313 +[0-9a-f]* <sub4>:
12314 + *[0-9a-f]*: 20 0f sub pc,0
12315 + *[0-9a-f]*: 2f fc sub r12,-1
12316 + *[0-9a-f]*: f0 25 00 00 sub r5,-1048576
12317 + *[0-9a-f]*: ee 34 ff ff sub r4,1048575
12318 + *[0-9a-f]*: 20 1e sub lr,1
12319 + *[0-9a-f]*: f6 22 8d 6c sub r2,-619156
12320 + *[0-9a-f]*: e6 3e 0a cd sub lr,461517
12321 + *[0-9a-f]*: fc 38 2d 25 sub r8,-185051
12322 +
12323 +[0-9a-f]* <cp3>:
12324 + *[0-9a-f]*: 58 0f cp.w pc,0
12325 + *[0-9a-f]*: 5b fc cp.w r12,-1
12326 + *[0-9a-f]*: f0 45 00 00 cp.w r5,-1048576
12327 + *[0-9a-f]*: ee 54 ff ff cp.w r4,1048575
12328 + *[0-9a-f]*: 58 1e cp.w lr,1
12329 + *[0-9a-f]*: e0 51 e4 ae cp.w r1,124078
12330 + *[0-9a-f]*: fa 40 37 e3 cp.w r0,-378909
12331 + *[0-9a-f]*: fc 44 4a 14 cp.w r4,-243180
12332 +
12333 +[0-9a-f]* <mov2>:
12334 + *[0-9a-f]*: 30 0f mov pc,0
12335 + *[0-9a-f]*: 3f fc mov r12,-1
12336 + *[0-9a-f]*: f0 65 00 00 mov r5,-1048576
12337 + *[0-9a-f]*: ee 74 ff ff mov r4,1048575
12338 + *[0-9a-f]*: 30 1e mov lr,1
12339 + *[0-9a-f]*: fa 75 29 a3 mov r5,-317021
12340 + *[0-9a-f]*: f4 6d 91 94 mov sp,-749164
12341 + *[0-9a-f]*: ee 65 58 93 mov r5,940179
12342 +
12343 +[0-9a-f]* <brc2>:
12344 + *[0-9a-f]*: c0 00 breq [0-9a-f]* <.*>
12345 + *[0-9a-f]*: fe 9f ff ff bral [0-9a-f]* <.*>
12346 + *[0-9a-f]*: f0 88 00 00 brls [0-9a-f]* <.*>
12347 + *[0-9a-f]*: ee 97 ff ff brpl [0-9a-f]* <.*>
12348 + *[0-9a-f]*: c0 11 brne [0-9a-f]* <.*>
12349 + *[0-9a-f]*: f2 8b 4a 4d brhi [0-9a-f]* <.*>
12350 + *[0-9a-f]*: ea 8e 14 cc brqs [0-9a-f]* <.*>
12351 + *[0-9a-f]*: fa 98 98 33 brls [0-9a-f]* <.*>
12352 +
12353 +[0-9a-f]* <rcall2>:
12354 + *[0-9a-f]*: c0 0c rcall [0-9a-f]* <.*>
12355 + *[0-9a-f]*: cf ff rcall [0-9a-f]* <.*>
12356 + *[0-9a-f]*: f0 a0 00 00 rcall [0-9a-f]* <.*>
12357 + *[0-9a-f]*: ee b0 ff ff rcall [0-9a-f]* <.*>
12358 + *[0-9a-f]*: c0 1c rcall [0-9a-f]* <.*>
12359 + *[0-9a-f]*: e2 b0 ca 5a rcall [0-9a-f]* <.*>
12360 + *[0-9a-f]*: e8 a0 47 52 rcall [0-9a-f]* <.*>
12361 + *[0-9a-f]*: fe b0 fd ef rcall [0-9a-f]* <.*>
12362 +
12363 +[0-9a-f]* <sub5>:
12364 + *[0-9a-f]*: fe cf 00 00 sub pc,pc,0
12365 + *[0-9a-f]*: f8 cc ff ff sub r12,r12,-1
12366 + *[0-9a-f]*: ea c5 80 00 sub r5,r5,-32768
12367 + *[0-9a-f]*: e8 c4 7f ff sub r4,r4,32767
12368 + *[0-9a-f]*: fc ce 00 01 sub lr,lr,1
12369 + *[0-9a-f]*: fe cf ce 38 sub pc,pc,-12744
12370 + *[0-9a-f]*: ee c7 95 1b sub r7,r7,-27365
12371 + *[0-9a-f]*: f2 c2 bc 32 sub r2,r9,-17358
12372 +
12373 +[0-9a-f]* <satsub_w2>:
12374 + *[0-9a-f]*: fe df 00 00 satsub\.w pc,pc,0
12375 + *[0-9a-f]*: f8 dc ff ff satsub\.w r12,r12,-1
12376 + *[0-9a-f]*: ea d5 80 00 satsub\.w r5,r5,-32768
12377 + *[0-9a-f]*: e8 d4 7f ff satsub\.w r4,r4,32767
12378 + *[0-9a-f]*: fc de 00 01 satsub\.w lr,lr,1
12379 + *[0-9a-f]*: fc d2 f8 29 satsub\.w r2,lr,-2007
12380 + *[0-9a-f]*: f8 d7 fc f0 satsub\.w r7,r12,-784
12381 + *[0-9a-f]*: ee d4 5a 8c satsub\.w r4,r7,23180
12382 +
12383 +[0-9a-f]* <ld_d4>:
12384 + *[0-9a-f]*: fe e0 00 00 ld\.d r0,pc\[0\]
12385 + *[0-9a-f]*: f8 ee ff ff ld\.d lr,r12\[-1\]
12386 + *[0-9a-f]*: ea e8 80 00 ld\.d r8,r5\[-32768\]
12387 + *[0-9a-f]*: e8 e6 7f ff ld\.d r6,r4\[32767\]
12388 + *[0-9a-f]*: fc e2 00 01 ld\.d r2,lr\[1\]
12389 + *[0-9a-f]*: f6 ee 39 c0 ld\.d lr,r11\[14784\]
12390 + *[0-9a-f]*: f2 e6 b6 27 ld\.d r6,r9\[-18905\]
12391 + *[0-9a-f]*: e6 e2 e7 2d ld\.d r2,r3\[-6355\]
12392 +
12393 +[0-9a-f]* <ld_w4>:
12394 + *[0-9a-f]*: 7e 0f ld\.w pc,pc\[0x0\]
12395 + *[0-9a-f]*: f8 fc ff ff ld\.w r12,r12\[-1\]
12396 + *[0-9a-f]*: ea f5 80 00 ld\.w r5,r5\[-32768\]
12397 + *[0-9a-f]*: e8 f4 7f ff ld\.w r4,r4\[32767\]
12398 + *[0-9a-f]*: fc fe 00 01 ld\.w lr,lr\[1\]
12399 + *[0-9a-f]*: f8 f0 a9 8b ld\.w r0,r12\[-22133\]
12400 + *[0-9a-f]*: fe fd af d7 ld\.w sp,pc\[-20521\]
12401 + *[0-9a-f]*: d7 03 nop
12402 +
12403 +[0-9a-f]* <ld_sh4>:
12404 + *[0-9a-f]*: 9e 0f ld\.sh pc,pc\[0x0\]
12405 + *[0-9a-f]*: f9 0c ff ff ld\.sh r12,r12\[-1\]
12406 + *[0-9a-f]*: eb 05 80 00 ld\.sh r5,r5\[-32768\]
12407 + *[0-9a-f]*: e9 04 7f ff ld\.sh r4,r4\[32767\]
12408 + *[0-9a-f]*: fd 0e 00 01 ld\.sh lr,lr\[1\]
12409 + *[0-9a-f]*: f5 06 78 d2 ld\.sh r6,r10\[30930\]
12410 + *[0-9a-f]*: f5 06 55 d5 ld\.sh r6,r10\[21973\]
12411 + *[0-9a-f]*: d7 03 nop
12412 +
12413 +[0-9a-f]* <ld_uh4>:
12414 + *[0-9a-f]*: 9e 8f ld\.uh pc,pc\[0x0\]
12415 + *[0-9a-f]*: f9 1c ff ff ld\.uh r12,r12\[-1\]
12416 + *[0-9a-f]*: eb 15 80 00 ld\.uh r5,r5\[-32768\]
12417 + *[0-9a-f]*: e9 14 7f ff ld\.uh r4,r4\[32767\]
12418 + *[0-9a-f]*: fd 1e 00 01 ld\.uh lr,lr\[1\]
12419 + *[0-9a-f]*: f3 11 cb d6 ld\.uh r1,r9\[-13354\]
12420 + *[0-9a-f]*: f7 1e 53 59 ld\.uh lr,r11\[21337\]
12421 + *[0-9a-f]*: d7 03 nop
12422 +
12423 +[0-9a-f]* <ld_sb1>:
12424 + *[0-9a-f]*: ff 2f 00 00 ld\.sb pc,pc\[0\]
12425 + *[0-9a-f]*: f9 2c ff ff ld\.sb r12,r12\[-1\]
12426 + *[0-9a-f]*: eb 25 80 00 ld\.sb r5,r5\[-32768\]
12427 + *[0-9a-f]*: e9 24 7f ff ld\.sb r4,r4\[32767\]
12428 + *[0-9a-f]*: fd 2e 00 01 ld\.sb lr,lr\[1\]
12429 + *[0-9a-f]*: fb 27 90 09 ld\.sb r7,sp\[-28663\]
12430 + *[0-9a-f]*: e3 22 e9 09 ld\.sb r2,r1\[-5879\]
12431 + *[0-9a-f]*: e7 2c 49 2e ld\.sb r12,r3\[18734\]
12432 +
12433 +[0-9a-f]* <ld_ub4>:
12434 + *[0-9a-f]*: 1f 8f ld\.ub pc,pc\[0x0\]
12435 + *[0-9a-f]*: f9 3c ff ff ld\.ub r12,r12\[-1\]
12436 + *[0-9a-f]*: eb 35 80 00 ld\.ub r5,r5\[-32768\]
12437 + *[0-9a-f]*: e9 34 7f ff ld\.ub r4,r4\[32767\]
12438 + *[0-9a-f]*: 1d 9e ld\.ub lr,lr\[0x1\]
12439 + *[0-9a-f]*: e9 3f 20 55 ld\.ub pc,r4\[8277\]
12440 + *[0-9a-f]*: f9 35 4a e4 ld\.ub r5,r12\[19172\]
12441 + *[0-9a-f]*: fd 3a 66 eb ld\.ub r10,lr\[26347\]
12442 +
12443 +[0-9a-f]* <st_d4>:
12444 + *[0-9a-f]*: fe e1 00 00 st\.d pc\[0\],r0
12445 + *[0-9a-f]*: f8 ef ff ff st\.d r12\[-1\],lr
12446 + *[0-9a-f]*: ea e9 80 00 st\.d r5\[-32768\],r8
12447 + *[0-9a-f]*: e8 e7 7f ff st\.d r4\[32767\],r6
12448 + *[0-9a-f]*: fc e3 00 01 st\.d lr\[1\],r2
12449 + *[0-9a-f]*: ea eb 33 90 st\.d r5\[13200\],r10
12450 + *[0-9a-f]*: ea eb 24 88 st\.d r5\[9352\],r10
12451 + *[0-9a-f]*: ea e5 7e 75 st\.d r5\[32373\],r4
12452 +
12453 +[0-9a-f]* <st_w4>:
12454 + *[0-9a-f]*: 9f 0f st\.w pc\[0x0\],pc
12455 + *[0-9a-f]*: f9 4c ff ff st\.w r12\[-1\],r12
12456 + *[0-9a-f]*: eb 45 80 00 st\.w r5\[-32768\],r5
12457 + *[0-9a-f]*: e9 44 7f ff st\.w r4\[32767\],r4
12458 + *[0-9a-f]*: fd 4e 00 01 st\.w lr\[1\],lr
12459 + *[0-9a-f]*: fb 47 17 f8 st\.w sp\[6136\],r7
12460 + *[0-9a-f]*: ed 4c 69 cf st\.w r6\[27087\],r12
12461 + *[0-9a-f]*: d7 03 nop
12462 +
12463 +[0-9a-f]* <st_h4>:
12464 + *[0-9a-f]*: be 0f st\.h pc\[0x0\],pc
12465 + *[0-9a-f]*: f9 5c ff ff st\.h r12\[-1\],r12
12466 + *[0-9a-f]*: eb 55 80 00 st\.h r5\[-32768\],r5
12467 + *[0-9a-f]*: e9 54 7f ff st\.h r4\[32767\],r4
12468 + *[0-9a-f]*: fd 5e 00 01 st\.h lr\[1\],lr
12469 + *[0-9a-f]*: e9 57 d9 16 st\.h r4\[-9962\],r7
12470 + *[0-9a-f]*: f3 53 c0 86 st\.h r9\[-16250\],r3
12471 + *[0-9a-f]*: d7 03 nop
12472 +
12473 +[0-9a-f]* <st_b4>:
12474 + *[0-9a-f]*: be 8f st\.b pc\[0x0\],pc
12475 + *[0-9a-f]*: f9 6c ff ff st\.b r12\[-1\],r12
12476 + *[0-9a-f]*: eb 65 80 00 st\.b r5\[-32768\],r5
12477 + *[0-9a-f]*: e9 64 7f ff st\.b r4\[32767\],r4
12478 + *[0-9a-f]*: bc 9e st\.b lr\[0x1\],lr
12479 + *[0-9a-f]*: f9 66 75 96 st\.b r12\[30102\],r6
12480 + *[0-9a-f]*: eb 61 71 31 st\.b r5\[28977\],r1
12481 + *[0-9a-f]*: e1 61 15 5e st\.b r0\[5470\],r1
12482 +
12483 +[0-9a-f]* <mfsr>:
12484 + *[0-9a-f]*: e1 bf 00 00 mfsr pc,0x0
12485 + *[0-9a-f]*: e1 bc 00 ff mfsr r12,0x3fc
12486 + *[0-9a-f]*: e1 b5 00 80 mfsr r5,0x200
12487 + *[0-9a-f]*: e1 b4 00 7f mfsr r4,0x1fc
12488 + *[0-9a-f]*: e1 be 00 01 mfsr lr,0x4
12489 + *[0-9a-f]*: e1 b2 00 ae mfsr r2,0x2b8
12490 + *[0-9a-f]*: e1 b4 00 41 mfsr r4,0x104
12491 + *[0-9a-f]*: e1 ba 00 fe mfsr r10,0x3f8
12492 +
12493 +[0-9a-f]* <mtsr>:
12494 + *[0-9a-f]*: e3 bf 00 00 mtsr 0x0,pc
12495 + *[0-9a-f]*: e3 bc 00 ff mtsr 0x3fc,r12
12496 + *[0-9a-f]*: e3 b5 00 80 mtsr 0x200,r5
12497 + *[0-9a-f]*: e3 b4 00 7f mtsr 0x1fc,r4
12498 + *[0-9a-f]*: e3 be 00 01 mtsr 0x4,lr
12499 + *[0-9a-f]*: e3 ba 00 38 mtsr 0xe0,r10
12500 + *[0-9a-f]*: e3 bc 00 d1 mtsr 0x344,r12
12501 + *[0-9a-f]*: e3 b9 00 4c mtsr 0x130,r9
12502 +
12503 +[0-9a-f]* <mfdr>:
12504 + *[0-9a-f]*: e5 bf 00 00 mfdr pc,0x0
12505 + *[0-9a-f]*: e5 bc 00 ff mfdr r12,0x3fc
12506 + *[0-9a-f]*: e5 b5 00 80 mfdr r5,0x200
12507 + *[0-9a-f]*: e5 b4 00 7f mfdr r4,0x1fc
12508 + *[0-9a-f]*: e5 be 00 01 mfdr lr,0x4
12509 + *[0-9a-f]*: e5 b6 00 e9 mfdr r6,0x3a4
12510 + *[0-9a-f]*: e5 b5 00 09 mfdr r5,0x24
12511 + *[0-9a-f]*: e5 b9 00 4b mfdr r9,0x12c
12512 +
12513 +[0-9a-f]* <mtdr>:
12514 + *[0-9a-f]*: e7 bf 00 00 mtdr 0x0,pc
12515 + *[0-9a-f]*: e7 bc 00 ff mtdr 0x3fc,r12
12516 + *[0-9a-f]*: e7 b5 00 80 mtdr 0x200,r5
12517 + *[0-9a-f]*: e7 b4 00 7f mtdr 0x1fc,r4
12518 + *[0-9a-f]*: e7 be 00 01 mtdr 0x4,lr
12519 + *[0-9a-f]*: e7 b8 00 2d mtdr 0xb4,r8
12520 + *[0-9a-f]*: e7 ba 00 b4 mtdr 0x2d0,r10
12521 + *[0-9a-f]*: e7 be 00 66 mtdr 0x198,lr
12522 +
12523 +[0-9a-f]* <sleep>:
12524 + *[0-9a-f]*: e9 b0 00 00 sleep 0x0
12525 + *[0-9a-f]*: e9 b0 00 ff sleep 0xff
12526 + *[0-9a-f]*: e9 b0 00 80 sleep 0x80
12527 + *[0-9a-f]*: e9 b0 00 7f sleep 0x7f
12528 + *[0-9a-f]*: e9 b0 00 01 sleep 0x1
12529 + *[0-9a-f]*: e9 b0 00 fe sleep 0xfe
12530 + *[0-9a-f]*: e9 b0 00 0f sleep 0xf
12531 + *[0-9a-f]*: e9 b0 00 2b sleep 0x2b
12532 +
12533 +[0-9a-f]* <sync>:
12534 + *[0-9a-f]*: eb b0 00 00 sync 0x0
12535 + *[0-9a-f]*: eb b0 00 ff sync 0xff
12536 + *[0-9a-f]*: eb b0 00 80 sync 0x80
12537 + *[0-9a-f]*: eb b0 00 7f sync 0x7f
12538 + *[0-9a-f]*: eb b0 00 01 sync 0x1
12539 + *[0-9a-f]*: eb b0 00 a6 sync 0xa6
12540 + *[0-9a-f]*: eb b0 00 e6 sync 0xe6
12541 + *[0-9a-f]*: eb b0 00 b4 sync 0xb4
12542 +
12543 +[0-9a-f]* <bld>:
12544 + *[0-9a-f]*: ed bf 00 00 bld pc,0x0
12545 + *[0-9a-f]*: ed bc 00 1f bld r12,0x1f
12546 + *[0-9a-f]*: ed b5 00 10 bld r5,0x10
12547 + *[0-9a-f]*: ed b4 00 0f bld r4,0xf
12548 + *[0-9a-f]*: ed be 00 01 bld lr,0x1
12549 + *[0-9a-f]*: ed b9 00 0f bld r9,0xf
12550 + *[0-9a-f]*: ed b0 00 04 bld r0,0x4
12551 + *[0-9a-f]*: ed be 00 1a bld lr,0x1a
12552 +
12553 +[0-9a-f]* <bst>:
12554 + *[0-9a-f]*: ef bf 00 00 bst pc,0x0
12555 + *[0-9a-f]*: ef bc 00 1f bst r12,0x1f
12556 + *[0-9a-f]*: ef b5 00 10 bst r5,0x10
12557 + *[0-9a-f]*: ef b4 00 0f bst r4,0xf
12558 + *[0-9a-f]*: ef be 00 01 bst lr,0x1
12559 + *[0-9a-f]*: ef ba 00 1c bst r10,0x1c
12560 + *[0-9a-f]*: ef b0 00 03 bst r0,0x3
12561 + *[0-9a-f]*: ef bd 00 02 bst sp,0x2
12562 +
12563 +[0-9a-f]* <sats>:
12564 + *[0-9a-f]*: f1 bf 00 00 sats pc,0x0
12565 + *[0-9a-f]*: f1 bc 03 ff sats r12>>0x1f,0x1f
12566 + *[0-9a-f]*: f1 b5 02 10 sats r5>>0x10,0x10
12567 + *[0-9a-f]*: f1 b4 01 ef sats r4>>0xf,0xf
12568 + *[0-9a-f]*: f1 be 00 21 sats lr>>0x1,0x1
12569 + *[0-9a-f]*: f1 ba 02 63 sats r10>>0x3,0x13
12570 + *[0-9a-f]*: f1 ba 03 42 sats r10>>0x2,0x1a
12571 + *[0-9a-f]*: f1 b1 00 34 sats r1>>0x14,0x1
12572 +
12573 +[0-9a-f]* <satu>:
12574 + *[0-9a-f]*: f1 bf 04 00 satu pc,0x0
12575 + *[0-9a-f]*: f1 bc 07 ff satu r12>>0x1f,0x1f
12576 + *[0-9a-f]*: f1 b5 06 10 satu r5>>0x10,0x10
12577 + *[0-9a-f]*: f1 b4 05 ef satu r4>>0xf,0xf
12578 + *[0-9a-f]*: f1 be 04 21 satu lr>>0x1,0x1
12579 + *[0-9a-f]*: f1 bf 04 e5 satu pc>>0x5,0x7
12580 + *[0-9a-f]*: f1 b7 04 a5 satu r7>>0x5,0x5
12581 + *[0-9a-f]*: f1 b2 06 7a satu r2>>0x1a,0x13
12582 +
12583 +[0-9a-f]* <satrnds>:
12584 + *[0-9a-f]*: f3 bf 00 00 satrnds pc,0x0
12585 + *[0-9a-f]*: f3 bc 03 ff satrnds r12>>0x1f,0x1f
12586 + *[0-9a-f]*: f3 b5 02 10 satrnds r5>>0x10,0x10
12587 + *[0-9a-f]*: f3 b4 01 ef satrnds r4>>0xf,0xf
12588 + *[0-9a-f]*: f3 be 00 21 satrnds lr>>0x1,0x1
12589 + *[0-9a-f]*: f3 b0 02 75 satrnds r0>>0x15,0x13
12590 + *[0-9a-f]*: f3 bd 00 40 satrnds sp,0x2
12591 + *[0-9a-f]*: f3 b7 03 a6 satrnds r7>>0x6,0x1d
12592 +
12593 +[0-9a-f]* <satrndu>:
12594 + *[0-9a-f]*: f3 bf 04 00 satrndu pc,0x0
12595 + *[0-9a-f]*: f3 bc 07 ff satrndu r12>>0x1f,0x1f
12596 + *[0-9a-f]*: f3 b5 06 10 satrndu r5>>0x10,0x10
12597 + *[0-9a-f]*: f3 b4 05 ef satrndu r4>>0xf,0xf
12598 + *[0-9a-f]*: f3 be 04 21 satrndu lr>>0x1,0x1
12599 + *[0-9a-f]*: f3 bc 07 40 satrndu r12,0x1a
12600 + *[0-9a-f]*: f3 b4 04 75 satrndu r4>>0x15,0x3
12601 + *[0-9a-f]*: f3 ba 06 03 satrndu r10>>0x3,0x10
12602 +
12603 +[0-9a-f]* <subfc>:
12604 + *[0-9a-f]*: f5 bf 00 00 subfeq pc,0
12605 + *[0-9a-f]*: f5 bc 0f ff subfal r12,-1
12606 + *[0-9a-f]*: f5 b5 08 80 subfls r5,-128
12607 + *[0-9a-f]*: f5 b4 07 7f subfpl r4,127
12608 + *[0-9a-f]*: f5 be 01 01 subfne lr,1
12609 + *[0-9a-f]*: f5 ba 08 08 subfls r10,8
12610 + *[0-9a-f]*: f5 bb 0d 63 subfvc r11,99
12611 + *[0-9a-f]*: f5 b2 0c 49 subfvs r2,73
12612 +
12613 +[0-9a-f]* <subc>:
12614 + *[0-9a-f]*: f7 bf 00 00 subeq pc,0
12615 + *[0-9a-f]*: f7 bc 0f ff subal r12,-1
12616 + *[0-9a-f]*: f7 b5 08 80 subls r5,-128
12617 + *[0-9a-f]*: f7 b4 07 7f subpl r4,127
12618 + *[0-9a-f]*: f7 be 01 01 subne lr,1
12619 + *[0-9a-f]*: f7 bc 08 76 subls r12,118
12620 + *[0-9a-f]*: f7 be 0d f4 subvc lr,-12
12621 + *[0-9a-f]*: f7 b4 06 f3 submi r4,-13
12622 +
12623 +[0-9a-f]* <movc2>:
12624 + *[0-9a-f]*: f9 bf 00 00 moveq pc,0
12625 + *[0-9a-f]*: f9 bc 0f ff moval r12,-1
12626 + *[0-9a-f]*: f9 b5 08 80 movls r5,-128
12627 + *[0-9a-f]*: f9 b4 07 7f movpl r4,127
12628 + *[0-9a-f]*: f9 be 01 01 movne lr,1
12629 + *[0-9a-f]*: f9 b3 05 86 movlt r3,-122
12630 + *[0-9a-f]*: f9 b8 0d 02 movvc r8,2
12631 + *[0-9a-f]*: f9 b7 01 91 movne r7,-111
12632 +
12633 +[0-9a-f]* <cp_b>:
12634 + *[0-9a-f]*: e0 0f 18 00 cp\.b pc,r0
12635 + *[0-9a-f]*: fe 00 18 00 cp\.b r0,pc
12636 + *[0-9a-f]*: f0 07 18 00 cp\.b r7,r8
12637 + *[0-9a-f]*: ee 08 18 00 cp\.b r8,r7
12638 +
12639 +[0-9a-f]* <cp_h>:
12640 + *[0-9a-f]*: e0 0f 19 00 cp\.h pc,r0
12641 + *[0-9a-f]*: fe 00 19 00 cp\.h r0,pc
12642 + *[0-9a-f]*: f0 07 19 00 cp\.h r7,r8
12643 + *[0-9a-f]*: ee 08 19 00 cp\.h r8,r7
12644 +
12645 +[0-9a-f]* <ldm>:
12646 + *[0-9a-f]*: e1 cf 00 7e ldm pc,r1-r6
12647 + *[0-9a-f]*: e1 cc ff ff ldm r12,r0-pc
12648 + *[0-9a-f]*: e1 c5 80 00 ldm r5,pc
12649 + *[0-9a-f]*: e1 c4 7f ff ldm r4,r0-lr
12650 + *[0-9a-f]*: e1 ce 00 01 ldm lr,r0
12651 + *[0-9a-f]*: e1 c9 40 22 ldm r9,r1,r5,lr
12652 + *[0-9a-f]*: e1 cb 81 ec ldm r11,r2-r3,r5-r8,pc
12653 + *[0-9a-f]*: e1 c6 a2 09 ldm r6,r0,r3,r9,sp,pc
12654 +
12655 +[0-9a-f]* <ldm_pu>:
12656 + *[0-9a-f]*: e3 cf 03 c0 ldm pc\+\+,r6-r9
12657 + *[0-9a-f]*: e3 cc ff ff ldm r12\+\+,r0-pc
12658 + *[0-9a-f]*: e3 c5 80 00 ldm r5\+\+,pc
12659 + *[0-9a-f]*: e3 c4 7f ff ldm r4\+\+,r0-lr
12660 + *[0-9a-f]*: e3 ce 00 01 ldm lr\+\+,r0
12661 + *[0-9a-f]*: e3 cc d5 38 ldm r12\+\+,r3-r5,r8,r10,r12,lr-pc
12662 + *[0-9a-f]*: e3 ca c0 74 ldm r10\+\+,r2,r4-r6,lr-pc
12663 + *[0-9a-f]*: e3 c6 7e 1a ldm r6\+\+,r1,r3-r4,r9-lr
12664 +
12665 +[0-9a-f]* <ldmts>:
12666 + *[0-9a-f]*: e5 cf 01 80 ldmts pc,r7-r8
12667 + *[0-9a-f]*: e5 cc ff ff ldmts r12,r0-pc
12668 + *[0-9a-f]*: e5 c5 80 00 ldmts r5,pc
12669 + *[0-9a-f]*: e5 c4 7f ff ldmts r4,r0-lr
12670 + *[0-9a-f]*: e5 ce 00 01 ldmts lr,r0
12671 + *[0-9a-f]*: e5 c0 18 06 ldmts r0,r1-r2,r11-r12
12672 + *[0-9a-f]*: e5 ce 61 97 ldmts lr,r0-r2,r4,r7-r8,sp-lr
12673 + *[0-9a-f]*: e5 cc c2 3b ldmts r12,r0-r1,r3-r5,r9,lr-pc
12674 +
12675 +[0-9a-f]* <ldmts_pu>:
12676 + *[0-9a-f]*: e7 cf 02 00 ldmts pc\+\+,r9
12677 + *[0-9a-f]*: e7 cc ff ff ldmts r12\+\+,r0-pc
12678 + *[0-9a-f]*: e7 c5 80 00 ldmts r5\+\+,pc
12679 + *[0-9a-f]*: e7 c4 7f ff ldmts r4\+\+,r0-lr
12680 + *[0-9a-f]*: e7 ce 00 01 ldmts lr\+\+,r0
12681 + *[0-9a-f]*: e7 cd 0a bd ldmts sp\+\+,r0,r2-r5,r7,r9,r11
12682 + *[0-9a-f]*: e7 c5 0c 8e ldmts r5\+\+,r1-r3,r7,r10-r11
12683 + *[0-9a-f]*: e7 c8 a1 9c ldmts r8\+\+,r2-r4,r7-r8,sp,pc
12684 +
12685 +[0-9a-f]* <stm>:
12686 + *[0-9a-f]*: e9 cf 00 80 stm pc,r7
12687 + *[0-9a-f]*: e9 cc ff ff stm r12,r0-pc
12688 + *[0-9a-f]*: e9 c5 80 00 stm r5,pc
12689 + *[0-9a-f]*: e9 c4 7f ff stm r4,r0-lr
12690 + *[0-9a-f]*: e9 ce 00 01 stm lr,r0
12691 + *[0-9a-f]*: e9 cd 49 2c stm sp,r2-r3,r5,r8,r11,lr
12692 + *[0-9a-f]*: e9 c4 4c 5f stm r4,r0-r4,r6,r10-r11,lr
12693 + *[0-9a-f]*: e9 c9 f2 22 stm r9,r1,r5,r9,r12-pc
12694 +
12695 +[0-9a-f]* <stm_pu>:
12696 + *[0-9a-f]*: eb cf 00 70 stm --pc,r4-r6
12697 + *[0-9a-f]*: eb cc ff ff stm --r12,r0-pc
12698 + *[0-9a-f]*: eb c5 80 00 stm --r5,pc
12699 + *[0-9a-f]*: eb c4 7f ff stm --r4,r0-lr
12700 + *[0-9a-f]*: eb ce 00 01 stm --lr,r0
12701 + *[0-9a-f]*: eb cb fb f1 stm --r11,r0,r4-r9,r11-pc
12702 + *[0-9a-f]*: eb cb 56 09 stm --r11,r0,r3,r9-r10,r12,lr
12703 + *[0-9a-f]*: eb c6 63 04 stm --r6,r2,r8-r9,sp-lr
12704 +
12705 +[0-9a-f]* <stmts>:
12706 + *[0-9a-f]*: ed cf 01 00 stmts pc,r8
12707 + *[0-9a-f]*: ed cc ff ff stmts r12,r0-pc
12708 + *[0-9a-f]*: ed c5 80 00 stmts r5,pc
12709 + *[0-9a-f]*: ed c4 7f ff stmts r4,r0-lr
12710 + *[0-9a-f]*: ed ce 00 01 stmts lr,r0
12711 + *[0-9a-f]*: ed c1 c6 5b stmts r1,r0-r1,r3-r4,r6,r9-r10,lr-pc
12712 + *[0-9a-f]*: ed c3 1d c1 stmts r3,r0,r6-r8,r10-r12
12713 + *[0-9a-f]*: ed cb d6 d1 stmts r11,r0,r4,r6-r7,r9-r10,r12,lr-pc
12714 +
12715 +[0-9a-f]* <stmts_pu>:
12716 + *[0-9a-f]*: ef cf 01 c0 stmts --pc,r6-r8
12717 + *[0-9a-f]*: ef cc ff ff stmts --r12,r0-pc
12718 + *[0-9a-f]*: ef c5 80 00 stmts --r5,pc
12719 + *[0-9a-f]*: ef c4 7f ff stmts --r4,r0-lr
12720 + *[0-9a-f]*: ef ce 00 01 stmts --lr,r0
12721 + *[0-9a-f]*: ef c2 36 19 stmts --r2,r0,r3-r4,r9-r10,r12-sp
12722 + *[0-9a-f]*: ef c3 c0 03 stmts --r3,r0-r1,lr-pc
12723 + *[0-9a-f]*: ef c0 44 7d stmts --r0,r0,r2-r6,r10,lr
12724 +
12725 +[0-9a-f]* <ldins_h>:
12726 + *[0-9a-f]*: ff df 00 00 ldins\.h pc:b,pc\[0\]
12727 + *[0-9a-f]*: f9 dc 1f ff ldins\.h r12:t,r12\[-2\]
12728 + *[0-9a-f]*: eb d5 18 00 ldins\.h r5:t,r5\[-4096\]
12729 + *[0-9a-f]*: e9 d4 07 ff ldins\.h r4:b,r4\[4094\]
12730 + *[0-9a-f]*: fd de 10 01 ldins\.h lr:t,lr\[2\]
12731 + *[0-9a-f]*: fd d0 13 c5 ldins\.h r0:t,lr\[1930\]
12732 + *[0-9a-f]*: ef d3 0e f5 ldins\.h r3:b,r7\[-534\]
12733 + *[0-9a-f]*: f9 d2 0b 9a ldins\.h r2:b,r12\[-2252\]
12734 +
12735 +[0-9a-f]* <ldins_b>:
12736 + *[0-9a-f]*: ff df 40 00 ldins\.b pc:b,pc\[0\]
12737 + *[0-9a-f]*: f9 dc 7f ff ldins\.b r12:t,r12\[-1\]
12738 + *[0-9a-f]*: eb d5 68 00 ldins\.b r5:u,r5\[-2048\]
12739 + *[0-9a-f]*: e9 d4 57 ff ldins\.b r4:l,r4\[2047\]
12740 + *[0-9a-f]*: fd de 50 01 ldins\.b lr:l,lr\[1\]
12741 + *[0-9a-f]*: e9 d6 7d 6a ldins\.b r6:t,r4\[-662\]
12742 + *[0-9a-f]*: e3 d5 4f 69 ldins\.b r5:b,r1\[-151\]
12743 + *[0-9a-f]*: f7 da 78 7d ldins\.b r10:t,r11\[-1923\]
12744 +
12745 +[0-9a-f]* <ldswp_sh>:
12746 + *[0-9a-f]*: ff df 20 00 ldswp\.sh pc,pc\[0\]
12747 + *[0-9a-f]*: f9 dc 2f ff ldswp\.sh r12,r12\[-2\]
12748 + *[0-9a-f]*: eb d5 28 00 ldswp\.sh r5,r5\[-4096\]
12749 + *[0-9a-f]*: e9 d4 27 ff ldswp\.sh r4,r4\[4094\]
12750 + *[0-9a-f]*: fd de 20 01 ldswp\.sh lr,lr\[2\]
12751 + *[0-9a-f]*: f5 d9 27 84 ldswp\.sh r9,r10\[3848\]
12752 + *[0-9a-f]*: f9 d4 2c 04 ldswp\.sh r4,r12\[-2040\]
12753 + *[0-9a-f]*: e5 da 26 08 ldswp\.sh r10,r2\[3088\]
12754 +
12755 +[0-9a-f]* <ldswp_uh>:
12756 + *[0-9a-f]*: ff df 30 00 ldswp\.uh pc,pc\[0\]
12757 + *[0-9a-f]*: f9 dc 3f ff ldswp\.uh r12,r12\[-2\]
12758 + *[0-9a-f]*: eb d5 38 00 ldswp\.uh r5,r5\[-4096\]
12759 + *[0-9a-f]*: e9 d4 37 ff ldswp\.uh r4,r4\[4094\]
12760 + *[0-9a-f]*: fd de 30 01 ldswp\.uh lr,lr\[2\]
12761 + *[0-9a-f]*: f3 d4 37 46 ldswp\.uh r4,r9\[3724\]
12762 + *[0-9a-f]*: fb de 3c bc ldswp\.uh lr,sp\[-1672\]
12763 + *[0-9a-f]*: f9 d8 38 7d ldswp\.uh r8,r12\[-3846\]
12764 +
12765 +[0-9a-f]* <ldswp_w>:
12766 + *[0-9a-f]*: ff df 80 00 ldswp\.w pc,pc\[0\]
12767 + *[0-9a-f]*: f9 dc 8f ff ldswp\.w r12,r12\[-4\]
12768 + *[0-9a-f]*: eb d5 88 00 ldswp\.w r5,r5\[-8192\]
12769 + *[0-9a-f]*: e9 d4 87 ff ldswp\.w r4,r4\[8188\]
12770 + *[0-9a-f]*: fd de 80 01 ldswp\.w lr,lr\[4\]
12771 + *[0-9a-f]*: ef dd 81 d1 ldswp\.w sp,r7\[1860\]
12772 + *[0-9a-f]*: eb df 8c c1 ldswp\.w pc,r5\[-3324\]
12773 + *[0-9a-f]*: f5 dc 8c c8 ldswp\.w r12,r10\[-3296\]
12774 +
12775 +[0-9a-f]* <stswp_h>:
12776 + *[0-9a-f]*: ff df 90 00 stswp\.h pc\[0\],pc
12777 + *[0-9a-f]*: f9 dc 9f ff stswp\.h r12\[-2\],r12
12778 + *[0-9a-f]*: eb d5 98 00 stswp\.h r5\[-4096\],r5
12779 + *[0-9a-f]*: e9 d4 97 ff stswp\.h r4\[4094\],r4
12780 + *[0-9a-f]*: fd de 90 01 stswp\.h lr\[2\],lr
12781 + *[0-9a-f]*: ef da 90 20 stswp\.h r7\[64\],r10
12782 + *[0-9a-f]*: f5 d2 95 e8 stswp\.h r10\[3024\],r2
12783 + *[0-9a-f]*: e1 da 9b 74 stswp\.h r0\[-2328\],r10
12784 +
12785 +[0-9a-f]* <stswp_w>:
12786 + *[0-9a-f]*: ff df a0 00 stswp\.w pc\[0\],pc
12787 + *[0-9a-f]*: f9 dc af ff stswp\.w r12\[-4\],r12
12788 + *[0-9a-f]*: eb d5 a8 00 stswp\.w r5\[-8192\],r5
12789 + *[0-9a-f]*: e9 d4 a7 ff stswp\.w r4\[8188\],r4
12790 + *[0-9a-f]*: fd de a0 01 stswp\.w lr\[4\],lr
12791 + *[0-9a-f]*: ff d8 a1 21 stswp\.w pc\[1156\],r8
12792 + *[0-9a-f]*: fb da a7 ce stswp\.w sp\[7992\],r10
12793 + *[0-9a-f]*: f1 d5 ae db stswp\.w r8\[-1172\],r5
12794 +
12795 +[0-9a-f]* <and2>:
12796 + *[0-9a-f]*: ff ef 00 0f and pc,pc,pc
12797 + *[0-9a-f]*: f9 ec 01 fc and r12,r12,r12<<0x1f
12798 + *[0-9a-f]*: eb e5 01 05 and r5,r5,r5<<0x10
12799 + *[0-9a-f]*: e9 e4 00 f4 and r4,r4,r4<<0xf
12800 + *[0-9a-f]*: fd ee 00 1e and lr,lr,lr<<0x1
12801 + *[0-9a-f]*: e5 e1 00 1a and r10,r2,r1<<0x1
12802 + *[0-9a-f]*: f1 eb 01 bc and r12,r8,r11<<0x1b
12803 + *[0-9a-f]*: ef e0 00 3a and r10,r7,r0<<0x3
12804 +
12805 +[0-9a-f]* <and3>:
12806 + *[0-9a-f]*: ff ef 02 0f and pc,pc,pc
12807 + *[0-9a-f]*: f9 ec 03 fc and r12,r12,r12>>0x1f
12808 + *[0-9a-f]*: eb e5 03 05 and r5,r5,r5>>0x10
12809 + *[0-9a-f]*: e9 e4 02 f4 and r4,r4,r4>>0xf
12810 + *[0-9a-f]*: fd ee 02 1e and lr,lr,lr>>0x1
12811 + *[0-9a-f]*: f1 e7 03 1c and r12,r8,r7>>0x11
12812 + *[0-9a-f]*: e9 e9 03 4f and pc,r4,r9>>0x14
12813 + *[0-9a-f]*: f3 ea 02 ca and r10,r9,r10>>0xc
12814 +
12815 +[0-9a-f]* <or2>:
12816 + *[0-9a-f]*: ff ef 10 0f or pc,pc,pc
12817 + *[0-9a-f]*: f9 ec 11 fc or r12,r12,r12<<0x1f
12818 + *[0-9a-f]*: eb e5 11 05 or r5,r5,r5<<0x10
12819 + *[0-9a-f]*: e9 e4 10 f4 or r4,r4,r4<<0xf
12820 + *[0-9a-f]*: fd ee 10 1e or lr,lr,lr<<0x1
12821 + *[0-9a-f]*: fb eb 11 d8 or r8,sp,r11<<0x1d
12822 + *[0-9a-f]*: f3 e2 11 cf or pc,r9,r2<<0x1c
12823 + *[0-9a-f]*: e3 e2 10 35 or r5,r1,r2<<0x3
12824 +
12825 +[0-9a-f]* <or3>:
12826 + *[0-9a-f]*: ff ef 12 0f or pc,pc,pc
12827 + *[0-9a-f]*: f9 ec 13 fc or r12,r12,r12>>0x1f
12828 + *[0-9a-f]*: eb e5 13 05 or r5,r5,r5>>0x10
12829 + *[0-9a-f]*: e9 e4 12 f4 or r4,r4,r4>>0xf
12830 + *[0-9a-f]*: fd ee 12 1e or lr,lr,lr>>0x1
12831 + *[0-9a-f]*: fb ed 12 21 or r1,sp,sp>>0x2
12832 + *[0-9a-f]*: e3 e1 13 d0 or r0,r1,r1>>0x1d
12833 + *[0-9a-f]*: f9 e8 12 84 or r4,r12,r8>>0x8
12834 +
12835 +[0-9a-f]* <eor2>:
12836 + *[0-9a-f]*: ff ef 20 0f eor pc,pc,pc
12837 + *[0-9a-f]*: f9 ec 21 fc eor r12,r12,r12<<0x1f
12838 + *[0-9a-f]*: eb e5 21 05 eor r5,r5,r5<<0x10
12839 + *[0-9a-f]*: e9 e4 20 f4 eor r4,r4,r4<<0xf
12840 + *[0-9a-f]*: fd ee 20 1e eor lr,lr,lr<<0x1
12841 + *[0-9a-f]*: f3 e4 20 ba eor r10,r9,r4<<0xb
12842 + *[0-9a-f]*: e1 e1 21 f4 eor r4,r0,r1<<0x1f
12843 + *[0-9a-f]*: e5 ec 20 d6 eor r6,r2,r12<<0xd
12844 +
12845 +[0-9a-f]* <eor3>:
12846 + *[0-9a-f]*: ff ef 22 0f eor pc,pc,pc
12847 + *[0-9a-f]*: f9 ec 23 fc eor r12,r12,r12>>0x1f
12848 + *[0-9a-f]*: eb e5 23 05 eor r5,r5,r5>>0x10
12849 + *[0-9a-f]*: e9 e4 22 f4 eor r4,r4,r4>>0xf
12850 + *[0-9a-f]*: fd ee 22 1e eor lr,lr,lr>>0x1
12851 + *[0-9a-f]*: eb e5 23 65 eor r5,r5,r5>>0x16
12852 + *[0-9a-f]*: e3 ee 22 3a eor r10,r1,lr>>0x3
12853 + *[0-9a-f]*: fd ed 23 a7 eor r7,lr,sp>>0x1a
12854 +
12855 +[0-9a-f]* <sthh_w2>:
12856 + *[0-9a-f]*: ff ef 8f 0f sthh\.w pc\[pc\],pc:b,pc:b
12857 + *[0-9a-f]*: f9 ec bc 3c sthh\.w r12\[r12<<0x3\],r12:t,r12:t
12858 + *[0-9a-f]*: eb e5 b5 25 sthh\.w r5\[r5<<0x2\],r5:t,r5:t
12859 + *[0-9a-f]*: e9 e4 84 14 sthh\.w r4\[r4<<0x1\],r4:b,r4:b
12860 + *[0-9a-f]*: fd ee be 1e sthh\.w lr\[lr<<0x1\],lr:t,lr:t
12861 + *[0-9a-f]*: e3 ec b6 3d sthh\.w sp\[r6<<0x3\],r1:t,r12:t
12862 + *[0-9a-f]*: f3 e9 b6 06 sthh\.w r6\[r6\],r9:t,r9:t
12863 + *[0-9a-f]*: e1 eb 93 0a sthh\.w r10\[r3\],r0:b,r11:t
12864 +
12865 +[0-9a-f]* <sthh_w1>:
12866 + *[0-9a-f]*: ff ef c0 0f sthh\.w pc\[0x0\],pc:b,pc:b
12867 + *[0-9a-f]*: f9 ec ff fc sthh\.w r12\[0x3fc\],r12:t,r12:t
12868 + *[0-9a-f]*: eb e5 f8 05 sthh\.w r5\[0x200\],r5:t,r5:t
12869 + *[0-9a-f]*: e9 e4 c7 f4 sthh\.w r4\[0x1fc\],r4:b,r4:b
12870 + *[0-9a-f]*: fd ee f0 1e sthh\.w lr\[0x4\],lr:t,lr:t
12871 + *[0-9a-f]*: f3 e0 e6 54 sthh\.w r4\[0x194\],r9:t,r0:b
12872 + *[0-9a-f]*: e5 ea e5 78 sthh\.w r8\[0x15c\],r2:t,r10:b
12873 + *[0-9a-f]*: f3 e2 c2 bd sthh\.w sp\[0xac\],r9:b,r2:b
12874 +
12875 +[0-9a-f]* <cop>:
12876 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
12877 + *[0-9a-f]*: e7 af ff ff cop cp7,cr15,cr15,cr15,0x7f
12878 + *[0-9a-f]*: e3 a8 75 55 cop cp3,cr5,cr5,cr5,0x31
12879 + *[0-9a-f]*: e3 a8 44 44 cop cp2,cr4,cr4,cr4,0x30
12880 + *[0-9a-f]*: e5 ad a8 37 cop cp5,cr8,cr3,cr7,0x5a
12881 +
12882 +[0-9a-f]* <ldc_w1>:
12883 + *[0-9a-f]*: e9 a0 00 00 ldc\.w cp0,cr0,r0\[0x0\]
12884 + *[0-9a-f]*: e9 af ef ff ldc\.w cp7,cr15,pc\[0x3fc\]
12885 + *[0-9a-f]*: e9 a5 65 80 ldc\.w cp3,cr5,r5\[0x200\]
12886 + *[0-9a-f]*: e9 a4 44 7f ldc\.w cp2,cr4,r4\[0x1fc\]
12887 + *[0-9a-f]*: e9 ad 89 24 ldc\.w cp4,cr9,sp\[0x90\]
12888 +
12889 +[0-9a-f]* <ldc_w2>:
12890 + *[0-9a-f]*: ef a0 00 40 ldc\.w cp0,cr0,--r0
12891 + *[0-9a-f]*: ef af ef 40 ldc\.w cp7,cr15,--pc
12892 + *[0-9a-f]*: ef a5 65 40 ldc\.w cp3,cr5,--r5
12893 + *[0-9a-f]*: ef a4 44 40 ldc\.w cp2,cr4,--r4
12894 + *[0-9a-f]*: ef ad 89 40 ldc\.w cp4,cr9,--sp
12895 +
12896 +[0-9a-f]* <ldc_w3>:
12897 + *[0-9a-f]*: ef a0 10 00 ldc\.w cp0,cr0,r0\[r0\]
12898 + *[0-9a-f]*: ef af ff 3f ldc\.w cp7,cr15,pc\[pc<<0x3\]
12899 + *[0-9a-f]*: ef a5 75 24 ldc\.w cp3,cr5,r5\[r4<<0x2\]
12900 + *[0-9a-f]*: ef a4 54 13 ldc\.w cp2,cr4,r4\[r3<<0x1\]
12901 + *[0-9a-f]*: ef ad 99 0c ldc\.w cp4,cr9,sp\[r12\]
12902 +
12903 +[0-9a-f]* <ldc_d1>:
12904 + *[0-9a-f]*: e9 a0 10 00 ldc\.d cp0,cr0,r0\[0x0\]
12905 + *[0-9a-f]*: e9 af fe ff ldc\.d cp7,cr14,pc\[0x3fc\]
12906 + *[0-9a-f]*: e9 a5 76 80 ldc\.d cp3,cr6,r5\[0x200\]
12907 + *[0-9a-f]*: e9 a4 54 7f ldc\.d cp2,cr4,r4\[0x1fc\]
12908 + *[0-9a-f]*: e9 ad 98 24 ldc\.d cp4,cr8,sp\[0x90\]
12909 +
12910 +[0-9a-f]* <ldc_d2>:
12911 + *[0-9a-f]*: ef a0 00 50 ldc\.d cp0,cr0,--r0
12912 + *[0-9a-f]*: ef af ee 50 ldc\.d cp7,cr14,--pc
12913 + *[0-9a-f]*: ef a5 66 50 ldc\.d cp3,cr6,--r5
12914 + *[0-9a-f]*: ef a4 44 50 ldc\.d cp2,cr4,--r4
12915 + *[0-9a-f]*: ef ad 88 50 ldc\.d cp4,cr8,--sp
12916 +
12917 +[0-9a-f]* <ldc_d3>:
12918 + *[0-9a-f]*: ef a0 10 40 ldc\.d cp0,cr0,r0\[r0\]
12919 + *[0-9a-f]*: ef af fe 7f ldc\.d cp7,cr14,pc\[pc<<0x3\]
12920 + *[0-9a-f]*: ef a5 76 64 ldc\.d cp3,cr6,r5\[r4<<0x2\]
12921 + *[0-9a-f]*: ef a4 54 53 ldc\.d cp2,cr4,r4\[r3<<0x1\]
12922 + *[0-9a-f]*: ef ad 98 4c ldc\.d cp4,cr8,sp\[r12\]
12923 +
12924 +[0-9a-f]* <stc_w1>:
12925 + *[0-9a-f]*: eb a0 00 00 stc\.w cp0,r0\[0x0\],cr0
12926 + *[0-9a-f]*: eb af ef ff stc\.w cp7,pc\[0x3fc\],cr15
12927 + *[0-9a-f]*: eb a5 65 80 stc\.w cp3,r5\[0x200\],cr5
12928 + *[0-9a-f]*: eb a4 44 7f stc\.w cp2,r4\[0x1fc\],cr4
12929 + *[0-9a-f]*: eb ad 89 24 stc\.w cp4,sp\[0x90\],cr9
12930 +
12931 +[0-9a-f]* <stc_w2>:
12932 + *[0-9a-f]*: ef a0 00 60 stc\.w cp0,r0\+\+,cr0
12933 + *[0-9a-f]*: ef af ef 60 stc\.w cp7,pc\+\+,cr15
12934 + *[0-9a-f]*: ef a5 65 60 stc\.w cp3,r5\+\+,cr5
12935 + *[0-9a-f]*: ef a4 44 60 stc\.w cp2,r4\+\+,cr4
12936 + *[0-9a-f]*: ef ad 89 60 stc\.w cp4,sp\+\+,cr9
12937 +
12938 +[0-9a-f]* <stc_w3>:
12939 + *[0-9a-f]*: ef a0 10 80 stc\.w cp0,r0\[r0\],cr0
12940 + *[0-9a-f]*: ef af ff bf stc\.w cp7,pc\[pc<<0x3\],cr15
12941 + *[0-9a-f]*: ef a5 75 a4 stc\.w cp3,r5\[r4<<0x2\],cr5
12942 + *[0-9a-f]*: ef a4 54 93 stc\.w cp2,r4\[r3<<0x1\],cr4
12943 + *[0-9a-f]*: ef ad 99 8c stc\.w cp4,sp\[r12\],cr9
12944 +
12945 +[0-9a-f]* <stc_d1>:
12946 + *[0-9a-f]*: eb a0 10 00 stc\.d cp0,r0\[0x0\],cr0
12947 + *[0-9a-f]*: eb af fe ff stc\.d cp7,pc\[0x3fc\],cr14
12948 + *[0-9a-f]*: eb a5 76 80 stc\.d cp3,r5\[0x200\],cr6
12949 + *[0-9a-f]*: eb a4 54 7f stc\.d cp2,r4\[0x1fc\],cr4
12950 + *[0-9a-f]*: eb ad 98 24 stc\.d cp4,sp\[0x90\],cr8
12951 +
12952 +[0-9a-f]* <stc_d2>:
12953 + *[0-9a-f]*: ef a0 00 70 stc\.d cp0,r0\+\+,cr0
12954 + *[0-9a-f]*: ef af ee 70 stc\.d cp7,pc\+\+,cr14
12955 + *[0-9a-f]*: ef a5 66 70 stc\.d cp3,r5\+\+,cr6
12956 + *[0-9a-f]*: ef a4 44 70 stc\.d cp2,r4\+\+,cr4
12957 + *[0-9a-f]*: ef ad 88 70 stc\.d cp4,sp\+\+,cr8
12958 +
12959 +[0-9a-f]* <stc_d3>:
12960 + *[0-9a-f]*: ef a0 10 c0 stc\.d cp0,r0\[r0\],cr0
12961 + *[0-9a-f]*: ef af fe ff stc\.d cp7,pc\[pc<<0x3\],cr14
12962 + *[0-9a-f]*: ef a5 76 e4 stc\.d cp3,r5\[r4<<0x2\],cr6
12963 + *[0-9a-f]*: ef a4 54 d3 stc\.d cp2,r4\[r3<<0x1\],cr4
12964 + *[0-9a-f]*: ef ad 98 cc stc\.d cp4,sp\[r12\],cr8
12965 +
12966 +[0-9a-f]* <ldc0_w>:
12967 + *[0-9a-f]*: f1 a0 00 00 ldc0\.w cr0,r0\[0x0\]
12968 + *[0-9a-f]*: f1 af ff ff ldc0\.w cr15,pc\[0x3ffc\]
12969 + *[0-9a-f]*: f1 a5 85 00 ldc0\.w cr5,r5\[0x2000\]
12970 + *[0-9a-f]*: f1 a4 74 ff ldc0\.w cr4,r4\[0x1ffc\]
12971 + *[0-9a-f]*: f1 ad 09 93 ldc0\.w cr9,sp\[0x24c\]
12972 +
12973 +[0-9a-f]* <ldc0_d>:
12974 + *[0-9a-f]*: f3 a0 00 00 ldc0\.d cr0,r0\[0x0\]
12975 + *[0-9a-f]*: f3 af fe ff ldc0\.d cr14,pc\[0x3ffc\]
12976 + *[0-9a-f]*: f3 a5 86 00 ldc0\.d cr6,r5\[0x2000\]
12977 + *[0-9a-f]*: f3 a4 74 ff ldc0\.d cr4,r4\[0x1ffc\]
12978 + *[0-9a-f]*: f3 ad 08 93 ldc0\.d cr8,sp\[0x24c\]
12979 +
12980 +[0-9a-f]* <stc0_w>:
12981 + *[0-9a-f]*: f5 a0 00 00 stc0\.w r0\[0x0\],cr0
12982 + *[0-9a-f]*: f5 af ff ff stc0\.w pc\[0x3ffc\],cr15
12983 + *[0-9a-f]*: f5 a5 85 00 stc0\.w r5\[0x2000\],cr5
12984 + *[0-9a-f]*: f5 a4 74 ff stc0\.w r4\[0x1ffc\],cr4
12985 + *[0-9a-f]*: f5 ad 09 93 stc0\.w sp\[0x24c\],cr9
12986 +
12987 +[0-9a-f]* <stc0_d>:
12988 + *[0-9a-f]*: f7 a0 00 00 stc0\.d r0\[0x0\],cr0
12989 + *[0-9a-f]*: f7 af fe ff stc0\.d pc\[0x3ffc\],cr14
12990 + *[0-9a-f]*: f7 a5 86 00 stc0\.d r5\[0x2000\],cr6
12991 + *[0-9a-f]*: f7 a4 74 ff stc0\.d r4\[0x1ffc\],cr4
12992 + *[0-9a-f]*: f7 ad 08 93 stc0\.d sp\[0x24c\],cr8
12993 +
12994 +[0-9a-f]* <memc>:
12995 + *[0-9a-f]*: f6 10 00 00 memc 0,0x0
12996 + *[0-9a-f]*: f6 1f ff ff memc -4,0x1f
12997 + *[0-9a-f]*: f6 18 40 00 memc -65536,0x10
12998 + *[0-9a-f]*: f6 17 bf ff memc 65532,0xf
12999 +
13000 +[0-9a-f]* <mems>:
13001 + *[0-9a-f]*: f8 10 00 00 mems 0,0x0
13002 + *[0-9a-f]*: f8 1f ff ff mems -4,0x1f
13003 + *[0-9a-f]*: f8 18 40 00 mems -65536,0x10
13004 + *[0-9a-f]*: f8 17 bf ff mems 65532,0xf
13005 +
13006 +[0-9a-f]* <memt>:
13007 + *[0-9a-f]*: fa 10 00 00 memt 0,0x0
13008 + *[0-9a-f]*: fa 1f ff ff memt -4,0x1f
13009 + *[0-9a-f]*: fa 18 40 00 memt -65536,0x10
13010 + *[0-9a-f]*: fa 17 bf ff memt 65532,0xf
13011 +
13012 +[0-9a-f]* <stcond>:
13013 + *[0-9a-f]*: e1 70 00 00 stcond r0\[0\],r0
13014 + *[0-9a-f]*: ff 7f ff ff stcond pc\[-1\],pc
13015 + *[0-9a-f]*: f1 77 80 00 stcond r8\[-32768\],r7
13016 + *[0-9a-f]*: ef 78 7f ff stcond r7\[32767\],r8
13017 + *[0-9a-f]*: eb 7a 12 34 stcond r5\[4660\],r10
13018 +
13019 +[0-9a-f]* <ldcm_w>:
13020 + *[0-9a-f]*: ed af 00 ff ldcm\.w cp0,pc,cr0-cr7
13021 + *[0-9a-f]*: ed a0 e0 01 ldcm\.w cp7,r0,cr0
13022 + *[0-9a-f]*: ed a4 90 7f ldcm\.w cp4,r4\+\+,cr0-cr6
13023 + *[0-9a-f]*: ed a7 60 80 ldcm\.w cp3,r7,cr7
13024 + *[0-9a-f]*: ed ac 30 72 ldcm\.w cp1,r12\+\+,cr1,cr4-cr6
13025 + *[0-9a-f]*: ed af 01 ff ldcm\.w cp0,pc,cr8-cr15
13026 + *[0-9a-f]*: ed a0 e1 01 ldcm\.w cp7,r0,cr8
13027 + *[0-9a-f]*: ed a4 91 7f ldcm\.w cp4,r4\+\+,cr8-cr14
13028 + *[0-9a-f]*: ed a7 61 80 ldcm\.w cp3,r7,cr15
13029 + *[0-9a-f]*: ed ac 31 72 ldcm\.w cp1,r12\+\+,cr9,cr12-cr14
13030 +
13031 +[0-9a-f]* <ldcm_d>:
13032 + *[0-9a-f]*: ed af 04 ff ldcm\.d cp0,pc,cr0-cr15
13033 + *[0-9a-f]*: ed a0 e4 01 ldcm\.d cp7,r0,cr0-cr1
13034 + *[0-9a-f]*: ed a4 94 7f ldcm\.d cp4,r4\+\+,cr0-cr13
13035 + *[0-9a-f]*: ed a7 64 80 ldcm\.d cp3,r7,cr14-cr15
13036 + *[0-9a-f]*: ed ac 54 93 ldcm\.d cp2,r12\+\+,cr0-cr3,cr8-cr9,cr14-cr15
13037 +
13038 +[0-9a-f]* <stcm_w>:
13039 + *[0-9a-f]*: ed af 02 ff stcm\.w cp0,pc,cr0-cr7
13040 + *[0-9a-f]*: ed a0 e2 01 stcm\.w cp7,r0,cr0
13041 + *[0-9a-f]*: ed a4 92 7f stcm\.w cp4,--r4,cr0-cr6
13042 + *[0-9a-f]*: ed a7 62 80 stcm\.w cp3,r7,cr7
13043 + *[0-9a-f]*: ed ac 32 72 stcm\.w cp1,--r12,cr1,cr4-cr6
13044 + *[0-9a-f]*: ed af 03 ff stcm\.w cp0,pc,cr8-cr15
13045 + *[0-9a-f]*: ed a0 e3 01 stcm\.w cp7,r0,cr8
13046 + *[0-9a-f]*: ed a4 93 7f stcm\.w cp4,--r4,cr8-cr14
13047 + *[0-9a-f]*: ed a7 63 80 stcm\.w cp3,r7,cr15
13048 + *[0-9a-f]*: ed ac 33 72 stcm\.w cp1,--r12,cr9,cr12-cr14
13049 +
13050 +[0-9a-f]* <stcm_d>:
13051 + *[0-9a-f]*: ed af 05 ff stcm\.d cp0,pc,cr0-cr15
13052 + *[0-9a-f]*: ed a0 e5 01 stcm\.d cp7,r0,cr0-cr1
13053 + *[0-9a-f]*: ed a4 95 7f stcm\.d cp4,--r4,cr0-cr13
13054 + *[0-9a-f]*: ed a7 65 80 stcm\.d cp3,r7,cr14-cr15
13055 + *[0-9a-f]*: ed ac 55 93 stcm\.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
13056 +
13057 +[0-9a-f]* <mvcr_w>:
13058 + *[0-9a-f]*: ef af ef 00 mvcr\.w cp7,pc,cr15
13059 + *[0-9a-f]*: ef a0 00 00 mvcr\.w cp0,r0,cr0
13060 + *[0-9a-f]*: ef af 0f 00 mvcr\.w cp0,pc,cr15
13061 + *[0-9a-f]*: ef a0 ef 00 mvcr\.w cp7,r0,cr15
13062 + *[0-9a-f]*: ef af e0 00 mvcr\.w cp7,pc,cr0
13063 + *[0-9a-f]*: ef a7 88 00 mvcr\.w cp4,r7,cr8
13064 + *[0-9a-f]*: ef a8 67 00 mvcr\.w cp3,r8,cr7
13065 +
13066 +[0-9a-f]* <mvcr_d>:
13067 + *[0-9a-f]*: ef ae ee 10 mvcr\.d cp7,lr,cr14
13068 + *[0-9a-f]*: ef a0 00 10 mvcr\.d cp0,r0,cr0
13069 + *[0-9a-f]*: ef ae 0e 10 mvcr\.d cp0,lr,cr14
13070 + *[0-9a-f]*: ef a0 ee 10 mvcr\.d cp7,r0,cr14
13071 + *[0-9a-f]*: ef ae e0 10 mvcr\.d cp7,lr,cr0
13072 + *[0-9a-f]*: ef a6 88 10 mvcr\.d cp4,r6,cr8
13073 + *[0-9a-f]*: ef a8 66 10 mvcr\.d cp3,r8,cr6
13074 +
13075 +[0-9a-f]* <mvrc_w>:
13076 + *[0-9a-f]*: ef af ef 20 mvrc\.w cp7,cr15,pc
13077 + *[0-9a-f]*: ef a0 00 20 mvrc\.w cp0,cr0,r0
13078 + *[0-9a-f]*: ef af 0f 20 mvrc\.w cp0,cr15,pc
13079 + *[0-9a-f]*: ef a0 ef 20 mvrc\.w cp7,cr15,r0
13080 + *[0-9a-f]*: ef af e0 20 mvrc\.w cp7,cr0,pc
13081 + *[0-9a-f]*: ef a7 88 20 mvrc\.w cp4,cr8,r7
13082 + *[0-9a-f]*: ef a8 67 20 mvrc\.w cp3,cr7,r8
13083 +
13084 +[0-9a-f]* <mvrc_d>:
13085 + *[0-9a-f]*: ef ae ee 30 mvrc\.d cp7,cr14,lr
13086 + *[0-9a-f]*: ef a0 00 30 mvrc\.d cp0,cr0,r0
13087 + *[0-9a-f]*: ef ae 0e 30 mvrc\.d cp0,cr14,lr
13088 + *[0-9a-f]*: ef a0 ee 30 mvrc\.d cp7,cr14,r0
13089 + *[0-9a-f]*: ef ae e0 30 mvrc\.d cp7,cr0,lr
13090 + *[0-9a-f]*: ef a6 88 30 mvrc\.d cp4,cr8,r6
13091 + *[0-9a-f]*: ef a8 66 30 mvrc\.d cp3,cr6,r8
13092 +
13093 +[0-9a-f]* <bfexts>:
13094 + *[0-9a-f]*: ff df b3 ff bfexts pc,pc,0x1f,0x1f
13095 + *[0-9a-f]*: e1 d0 b0 00 bfexts r0,r0,0x0,0x0
13096 + *[0-9a-f]*: e1 df b3 ff bfexts r0,pc,0x1f,0x1f
13097 + *[0-9a-f]*: ff d0 b3 ff bfexts pc,r0,0x1f,0x1f
13098 + *[0-9a-f]*: ff df b0 1f bfexts pc,pc,0x0,0x1f
13099 + *[0-9a-f]*: ff df b3 e0 bfexts pc,pc,0x1f,0x0
13100 + *[0-9a-f]*: ef d8 b1 f0 bfexts r7,r8,0xf,0x10
13101 + *[0-9a-f]*: f1 d7 b2 0f bfexts r8,r7,0x10,0xf
13102 +
13103 +[0-9a-f]* <bfextu>:
13104 + *[0-9a-f]*: ff df c3 ff bfextu pc,pc,0x1f,0x1f
13105 + *[0-9a-f]*: e1 d0 c0 00 bfextu r0,r0,0x0,0x0
13106 + *[0-9a-f]*: e1 df c3 ff bfextu r0,pc,0x1f,0x1f
13107 + *[0-9a-f]*: ff d0 c3 ff bfextu pc,r0,0x1f,0x1f
13108 + *[0-9a-f]*: ff df c0 1f bfextu pc,pc,0x0,0x1f
13109 + *[0-9a-f]*: ff df c3 e0 bfextu pc,pc,0x1f,0x0
13110 + *[0-9a-f]*: ef d8 c1 f0 bfextu r7,r8,0xf,0x10
13111 + *[0-9a-f]*: f1 d7 c2 0f bfextu r8,r7,0x10,0xf
13112 +
13113 +[0-9a-f]* <bfins>:
13114 + *[0-9a-f]*: ff df d3 ff bfins pc,pc,0x1f,0x1f
13115 + *[0-9a-f]*: e1 d0 d0 00 bfins r0,r0,0x0,0x0
13116 + *[0-9a-f]*: e1 df d3 ff bfins r0,pc,0x1f,0x1f
13117 + *[0-9a-f]*: ff d0 d3 ff bfins pc,r0,0x1f,0x1f
13118 + *[0-9a-f]*: ff df d0 1f bfins pc,pc,0x0,0x1f
13119 + *[0-9a-f]*: ff df d3 e0 bfins pc,pc,0x1f,0x0
13120 + *[0-9a-f]*: ef d8 d1 f0 bfins r7,r8,0xf,0x10
13121 + *[0-9a-f]*: f1 d7 d2 0f bfins r8,r7,0x10,0xf
13122 +
13123 +[0-9a-f]* <rsubc>:
13124 + *[0-9a-f]*: fb bf 00 00 rsubeq pc,0
13125 + *[0-9a-f]*: fb bc 0f ff rsubal r12,-1
13126 + *[0-9a-f]*: fb b5 08 80 rsubls r5,-128
13127 + *[0-9a-f]*: fb b4 07 7f rsubpl r4,127
13128 + *[0-9a-f]*: fb be 01 01 rsubne lr,1
13129 + *[0-9a-f]*: fb bc 08 76 rsubls r12,118
13130 + *[0-9a-f]*: fb be 0d f4 rsubvc lr,-12
13131 + *[0-9a-f]*: fb b4 06 f3 rsubmi r4,-13
13132 +
13133 +[0-9a-f]* <addc>:
13134 + *[0-9a-f]*: ff df e0 0f addeq pc,pc,pc
13135 + *[0-9a-f]*: f9 dc ef 0c addal r12,r12,r12
13136 + *[0-9a-f]*: eb d5 e8 05 addls r5,r5,r5
13137 + *[0-9a-f]*: e9 d4 e7 04 addpl r4,r4,r4
13138 + *[0-9a-f]*: fd de e1 0e addne lr,lr,lr
13139 + *[0-9a-f]*: e5 d1 e8 0a addls r10,r2,r1
13140 + *[0-9a-f]*: f1 db ed 0c addvc r12,r8,r11
13141 + *[0-9a-f]*: ef d0 e6 0a addmi r10,r7,r0
13142 +
13143 +[0-9a-f]* <subc2>:
13144 + *[0-9a-f]*: ff df e0 1f subeq pc,pc,pc
13145 + *[0-9a-f]*: f9 dc ef 1c subal r12,r12,r12
13146 + *[0-9a-f]*: eb d5 e8 15 subls r5,r5,r5
13147 + *[0-9a-f]*: e9 d4 e7 14 subpl r4,r4,r4
13148 + *[0-9a-f]*: fd de e1 1e subne lr,lr,lr
13149 + *[0-9a-f]*: e5 d1 e8 1a subls r10,r2,r1
13150 + *[0-9a-f]*: f1 db ed 1c subvc r12,r8,r11
13151 + *[0-9a-f]*: ef d0 e6 1a submi r10,r7,r0
13152 +
13153 +[0-9a-f]* <andc>:
13154 + *[0-9a-f]*: ff df e0 2f andeq pc,pc,pc
13155 + *[0-9a-f]*: f9 dc ef 2c andal r12,r12,r12
13156 + *[0-9a-f]*: eb d5 e8 25 andls r5,r5,r5
13157 + *[0-9a-f]*: e9 d4 e7 24 andpl r4,r4,r4
13158 + *[0-9a-f]*: fd de e1 2e andne lr,lr,lr
13159 + *[0-9a-f]*: e5 d1 e8 2a andls r10,r2,r1
13160 + *[0-9a-f]*: f1 db ed 2c andvc r12,r8,r11
13161 + *[0-9a-f]*: ef d0 e6 2a andmi r10,r7,r0
13162 +
13163 +[0-9a-f]* <orc>:
13164 + *[0-9a-f]*: ff df e0 3f oreq pc,pc,pc
13165 + *[0-9a-f]*: f9 dc ef 3c oral r12,r12,r12
13166 + *[0-9a-f]*: eb d5 e8 35 orls r5,r5,r5
13167 + *[0-9a-f]*: e9 d4 e7 34 orpl r4,r4,r4
13168 + *[0-9a-f]*: fd de e1 3e orne lr,lr,lr
13169 + *[0-9a-f]*: e5 d1 e8 3a orls r10,r2,r1
13170 + *[0-9a-f]*: f1 db ed 3c orvc r12,r8,r11
13171 + *[0-9a-f]*: ef d0 e6 3a ormi r10,r7,r0
13172 +
13173 +[0-9a-f]* <eorc>:
13174 + *[0-9a-f]*: ff df e0 4f eoreq pc,pc,pc
13175 + *[0-9a-f]*: f9 dc ef 4c eoral r12,r12,r12
13176 + *[0-9a-f]*: eb d5 e8 45 eorls r5,r5,r5
13177 + *[0-9a-f]*: e9 d4 e7 44 eorpl r4,r4,r4
13178 + *[0-9a-f]*: fd de e1 4e eorne lr,lr,lr
13179 + *[0-9a-f]*: e5 d1 e8 4a eorls r10,r2,r1
13180 + *[0-9a-f]*: f1 db ed 4c eorvc r12,r8,r11
13181 + *[0-9a-f]*: ef d0 e6 4a eormi r10,r7,r0
13182 +
13183 +[0-9a-f]* <ldcond>:
13184 + *[0-9a-f]*: ff ff 01 ff ld.weq pc,pc[0x7fc]
13185 + *[0-9a-f]*: f9 fc f3 ff ld.shal r12,r12[0x3fe]
13186 + *[0-9a-f]*: eb f5 84 00 ld.shls r5,r5[0x0]
13187 + *[0-9a-f]*: e9 f4 79 ff ld.ubpl r4,r4[0x1ff]
13188 + *[0-9a-f]*: fd fe 16 00 ld.sbne lr,lr[0x0]
13189 + *[0-9a-f]*: e5 fa 80 00 ld.wls r10,r2[0x0]
13190 + *[0-9a-f]*: f1 fc d3 ff ld.shvc r12,r8[0x3fe]
13191 + *[0-9a-f]*: ef fa 68 01 ld.ubmi r10,r7[0x1]
13192 +
13193 +[0-9a-f]* <stcond2>:
13194 + *[0-9a-f]*: ff ff 0b ff st.weq pc[0x7fc],pc
13195 + *[0-9a-f]*: f9 fc fd ff st.hal r12[0x3fe],r12
13196 + *[0-9a-f]*: eb f5 8c 00 st.hls r5[0x0],r5
13197 + *[0-9a-f]*: e9 f4 7f ff st.bpl r4[0x1ff],r4
13198 + *[0-9a-f]*: fd fe 1e 00 st.bne lr[0x0],lr
13199 + *[0-9a-f]*: e5 fa 8a 00 st.wls r2[0x0],r10
13200 + *[0-9a-f]*: f1 fc dd ff st.hvc r8[0x3fe],r12
13201 + *[0-9a-f]*: ef fa 6e 01 st.bmi r7[0x1],r10
13202 +
13203 +[0-9a-f]* <movh>:
13204 + *[0-9a-f]*: fc 1f ff ff movh pc,0xffff
13205 + *[0-9a-f]*: fc 10 00 00 movh r0,0x0
13206 + *[0-9a-f]*: fc 15 00 01 movh r5,0x1
13207 + *[0-9a-f]*: fc 1c 7f ff movh r12,0x7fff
13208 +
13209 --- /dev/null
13210 +++ b/gas/testsuite/gas/avr32/allinsn.exp
13211 @@ -0,0 +1,5 @@
13212 +# AVR32 assembler testsuite. -*- Tcl -*-
13213 +
13214 +if [istarget avr32-*-*] {
13215 + run_dump_test "allinsn"
13216 +}
13217 --- /dev/null
13218 +++ b/gas/testsuite/gas/avr32/allinsn.s
13219 @@ -0,0 +1,3330 @@
13220 + .data
13221 +foodata: .word 42
13222 + .text
13223 +footext:
13224 + .text
13225 + .global ld_d5
13226 +ld_d5:
13227 + ld.d lr,pc[pc<<3]
13228 + ld.d r0,r0[r0<<0]
13229 + ld.d r6,r5[r5<<2]
13230 + ld.d r4,r4[r4<<1]
13231 + ld.d lr,lr[lr<<1]
13232 + ld.d r10,r3[sp<<2]
13233 + ld.d r8,r10[r6<<2]
13234 + ld.d r2,r7[r9<<0]
13235 + .text
13236 + .global ld_w5
13237 +ld_w5:
13238 + ld.w pc,pc[pc<<0]
13239 + ld.w r12,r12[r12<<3]
13240 + ld.w r5,r5[r5<<2]
13241 + ld.w r4,r4[r4<<1]
13242 + ld.w lr,lr[lr<<1]
13243 + ld.w r2,r9[r9<<0]
13244 + ld.w r11,r2[r6<<0]
13245 + ld.w r0,r2[sp<<3]
13246 + .text
13247 + .global ld_sh5
13248 +ld_sh5:
13249 + ld.sh pc,pc[pc<<0]
13250 + ld.sh r12,r12[r12<<3]
13251 + ld.sh r5,r5[r5<<2]
13252 + ld.sh r4,r4[r4<<1]
13253 + ld.sh lr,lr[lr<<1]
13254 + ld.sh r11,r0[pc<<2]
13255 + ld.sh r10,sp[r6<<2]
13256 + ld.sh r12,r2[r2<<0]
13257 + .text
13258 + .global ld_uh5
13259 +ld_uh5:
13260 + ld.uh pc,pc[pc<<0]
13261 + ld.uh r12,r12[r12<<3]
13262 + ld.uh r5,r5[r5<<2]
13263 + ld.uh r4,r4[r4<<1]
13264 + ld.uh lr,lr[lr<<1]
13265 + ld.uh r8,pc[lr<<3]
13266 + ld.uh r6,r1[pc<<1]
13267 + ld.uh r6,lr[sp<<1]
13268 + .text
13269 + .global ld_sb2
13270 +ld_sb2:
13271 + ld.sb pc,pc[pc<<0]
13272 + ld.sb r12,r12[r12<<3]
13273 + ld.sb r5,r5[r5<<2]
13274 + ld.sb r4,r4[r4<<1]
13275 + ld.sb lr,lr[lr<<1]
13276 + ld.sb r9,r1[pc<<3]
13277 + ld.sb r0,r3[r11<<1]
13278 + ld.sb r10,r5[r5<<1]
13279 + .text
13280 + .global ld_ub5
13281 +ld_ub5:
13282 + ld.ub pc,pc[pc<<0]
13283 + ld.ub r12,r12[r12<<3]
13284 + ld.ub r5,r5[r5<<2]
13285 + ld.ub r4,r4[r4<<1]
13286 + ld.ub lr,lr[lr<<1]
13287 + ld.ub r6,r12[r7<<3]
13288 + ld.ub r2,r6[r12<<0]
13289 + ld.ub r0,r7[r11<<1]
13290 + .text
13291 + .global st_d5
13292 +st_d5:
13293 + st.d pc[pc<<0],r14
13294 + st.d r12[r12<<3],r12
13295 + st.d r5[r5<<2],r6
13296 + st.d r4[r4<<1],r4
13297 + st.d lr[lr<<1],lr
13298 + st.d r1[r9<<1],r4
13299 + st.d r10[r2<<1],r4
13300 + st.d r12[r6<<0],lr
13301 + .text
13302 + .global st_w5
13303 +st_w5:
13304 + st.w pc[pc<<0],pc
13305 + st.w r12[r12<<3],r12
13306 + st.w r5[r5<<2],r5
13307 + st.w r4[r4<<1],r4
13308 + st.w lr[lr<<1],lr
13309 + st.w r1[r10<<0],r3
13310 + st.w r0[r10<<1],r9
13311 + st.w r4[r5<<3],pc
13312 + .text
13313 + .global st_h5
13314 +st_h5:
13315 + st.h pc[pc<<0],pc
13316 + st.h r12[r12<<3],r12
13317 + st.h r5[r5<<2],r5
13318 + st.h r4[r4<<1],r4
13319 + st.h lr[lr<<1],lr
13320 + st.h r2[r9<<0],r11
13321 + st.h r5[r1<<2],r12
13322 + st.h pc[r8<<2],r3
13323 + .text
13324 + .global st_b5
13325 +st_b5:
13326 + st.b pc[pc<<0],pc
13327 + st.b r12[r12<<3],r12
13328 + st.b r5[r5<<2],r5
13329 + st.b r4[r4<<1],r4
13330 + st.b lr[lr<<1],lr
13331 + st.b r1[r8<<1],r6
13332 + st.b lr[lr<<3],r1
13333 + st.b r5[r0<<2],pc
13334 + .text
13335 + .global divs
13336 +divs:
13337 + divs pc,pc,pc
13338 + divs r12,r12,r12
13339 + divs r5,r5,r5
13340 + divs r4,r4,r4
13341 + divs lr,lr,lr
13342 + divs r3,pc,pc
13343 + divs r9,r12,r2
13344 + divs r7,r4,r1
13345 + .text
13346 + .global add1
13347 +add1:
13348 + add pc,pc
13349 + add r12,r12
13350 + add r5,r5
13351 + add r4,r4
13352 + add lr,lr
13353 + add r12,r9
13354 + add r6,r3
13355 + add r10,r12
13356 + .text
13357 + .global sub1
13358 +sub1:
13359 + sub pc,pc
13360 + sub r12,r12
13361 + sub r5,r5
13362 + sub r4,r4
13363 + sub lr,lr
13364 + sub lr,r6
13365 + sub r0,sp
13366 + sub r6,r12
13367 + .text
13368 + .global rsub1
13369 +rsub1:
13370 + rsub pc,pc
13371 + rsub r12,r12
13372 + rsub r5,r5
13373 + rsub r4,r4
13374 + rsub lr,lr
13375 + rsub r11,sp
13376 + rsub r7,r4
13377 + rsub r9,r1
13378 + .text
13379 + .global cp1
13380 +cp1:
13381 + cp pc,pc
13382 + cp r12,r12
13383 + cp r5,r5
13384 + cp r4,r4
13385 + cp lr,lr
13386 + cp r6,r2
13387 + cp r0,r9
13388 + cp r3,sp
13389 + .text
13390 + .global or1
13391 +or1:
13392 + or pc,pc
13393 + or r12,r12
13394 + or r5,r5
13395 + or r4,r4
13396 + or lr,lr
13397 + or r4,r9
13398 + or r11,r4
13399 + or r4,r0
13400 + .text
13401 + .global eor1
13402 +eor1:
13403 + eor pc,pc
13404 + eor r12,r12
13405 + eor r5,r5
13406 + eor r4,r4
13407 + eor lr,lr
13408 + eor r12,r11
13409 + eor r0,r1
13410 + eor r5,pc
13411 + .text
13412 + .global and1
13413 +and1:
13414 + and pc,pc
13415 + and r12,r12
13416 + and r5,r5
13417 + and r4,r4
13418 + and lr,lr
13419 + and r8,r1
13420 + and r0,sp
13421 + and r10,r5
13422 + .text
13423 + .global tst
13424 +tst:
13425 + tst pc,pc
13426 + tst r12,r12
13427 + tst r5,r5
13428 + tst r4,r4
13429 + tst lr,lr
13430 + tst r0,r12
13431 + tst r10,r6
13432 + tst sp,r4
13433 + .text
13434 + .global andn
13435 +andn:
13436 + andn pc,pc
13437 + andn r12,r12
13438 + andn r5,r5
13439 + andn r4,r4
13440 + andn lr,lr
13441 + andn r9,r12
13442 + andn r11,sp
13443 + andn r12,r5
13444 + .text
13445 + .global mov3
13446 +mov3:
13447 + mov pc,pc
13448 + mov r12,r12
13449 + mov r5,r5
13450 + mov r4,r4
13451 + mov lr,lr
13452 + mov r5,r9
13453 + mov r11,r11
13454 + mov r2,lr
13455 + .text
13456 + .global st_w1
13457 +st_w1:
13458 + st.w pc++,pc
13459 + st.w r12++,r12
13460 + st.w r5++,r5
13461 + st.w r4++,r4
13462 + st.w lr++,lr
13463 + st.w r1++,r11
13464 + st.w sp++,r0
13465 + st.w sp++,r1
13466 + .text
13467 + .global st_h1
13468 +st_h1:
13469 + st.h pc++,pc
13470 + st.h r12++,r12
13471 + st.h r5++,r5
13472 + st.h r4++,r4
13473 + st.h lr++,lr
13474 + st.h r12++,sp
13475 + st.h r7++,lr
13476 + st.h r7++,r4
13477 + .text
13478 + .global st_b1
13479 +st_b1:
13480 + st.b pc++,pc
13481 + st.b r12++,r12
13482 + st.b r5++,r5
13483 + st.b r4++,r4
13484 + st.b lr++,lr
13485 + st.b r9++,sp
13486 + st.b r1++,sp
13487 + st.b r0++,r4
13488 + .text
13489 + .global st_w2
13490 +st_w2:
13491 + st.w --pc,pc
13492 + st.w --r12,r12
13493 + st.w --r5,r5
13494 + st.w --r4,r4
13495 + st.w --lr,lr
13496 + st.w --r1,r7
13497 + st.w --r3,r9
13498 + st.w --r5,r5
13499 + .text
13500 + .global st_h2
13501 +st_h2:
13502 + st.h --pc,pc
13503 + st.h --r12,r12
13504 + st.h --r5,r5
13505 + st.h --r4,r4
13506 + st.h --lr,lr
13507 + st.h --r5,r7
13508 + st.h --r8,r8
13509 + st.h --r7,r2
13510 + .text
13511 + .global st_b2
13512 +st_b2:
13513 + st.b --pc,pc
13514 + st.b --r12,r12
13515 + st.b --r5,r5
13516 + st.b --r4,r4
13517 + st.b --lr,lr
13518 + st.b --sp,sp
13519 + st.b --sp,r11
13520 + st.b --r4,r5
13521 + .text
13522 + .global ld_w1
13523 +ld_w1:
13524 + ld.w pc,pc++
13525 + ld.w r12,r12++
13526 + ld.w r5,r5++
13527 + ld.w r4,r4++
13528 + ld.w lr,lr++
13529 + ld.w r3,r7++
13530 + ld.w r3,lr++
13531 + ld.w r12,r5++
13532 + .text
13533 + .global ld_sh1
13534 +ld_sh1:
13535 + ld.sh pc,pc++
13536 + ld.sh r12,r12++
13537 + ld.sh r5,r5++
13538 + ld.sh r4,r4++
13539 + ld.sh lr,lr++
13540 + ld.sh r11,r2++
13541 + ld.sh r2,r8++
13542 + ld.sh r7,r6++
13543 + .text
13544 + .global ld_uh1
13545 +ld_uh1:
13546 + ld.uh pc,pc++
13547 + ld.uh r12,r12++
13548 + ld.uh r5,r5++
13549 + ld.uh r4,r4++
13550 + ld.uh lr,lr++
13551 + ld.uh r6,r7++
13552 + ld.uh r10,r11++
13553 + ld.uh lr,r4++
13554 + .text
13555 + .global ld_ub1
13556 +ld_ub1:
13557 + ld.ub pc,pc++
13558 + ld.ub r12,r12++
13559 + ld.ub r5,r5++
13560 + ld.ub r4,r4++
13561 + ld.ub lr,lr++
13562 + ld.ub r8,lr++
13563 + ld.ub r12,r12++
13564 + ld.ub r11,r10++
13565 + .text
13566 + .global ld_w2
13567 +ld_w2:
13568 + ld.w pc,--pc
13569 + ld.w r12,--r12
13570 + ld.w r5,--r5
13571 + ld.w r4,--r4
13572 + ld.w lr,--lr
13573 + ld.w r10,--lr
13574 + ld.w r12,--r9
13575 + ld.w r6,--r5
13576 + .text
13577 + .global ld_sh2
13578 +ld_sh2:
13579 + ld.sh pc,--pc
13580 + ld.sh r12,--r12
13581 + ld.sh r5,--r5
13582 + ld.sh r4,--r4
13583 + ld.sh lr,--lr
13584 + ld.sh pc,--r10
13585 + ld.sh r6,--r3
13586 + ld.sh r4,--r6
13587 + .text
13588 + .global ld_uh2
13589 +ld_uh2:
13590 + ld.uh pc,--pc
13591 + ld.uh r12,--r12
13592 + ld.uh r5,--r5
13593 + ld.uh r4,--r4
13594 + ld.uh lr,--lr
13595 + ld.uh r3,--r2
13596 + ld.uh r1,--r0
13597 + ld.uh r2,--r9
13598 + .text
13599 + .global ld_ub2
13600 +ld_ub2:
13601 + ld.ub pc,--pc
13602 + ld.ub r12,--r12
13603 + ld.ub r5,--r5
13604 + ld.ub r4,--r4
13605 + ld.ub lr,--lr
13606 + ld.ub r1,--r1
13607 + ld.ub r0,--r6
13608 + ld.ub r2,--r7
13609 + .text
13610 + .global ld_ub3
13611 +ld_ub3:
13612 + ld.ub pc,pc[0]
13613 + ld.ub r12,r12[7]
13614 + ld.ub r5,r5[4]
13615 + ld.ub r4,r4[3]
13616 + ld.ub lr,lr[1]
13617 + ld.ub r6,r9[6]
13618 + ld.ub r2,lr[4]
13619 + ld.ub r1,r8[0]
13620 + .text
13621 + .global sub3_sp
13622 +sub3_sp:
13623 + sub sp,0
13624 + sub sp,-4
13625 + sub sp,-512
13626 + sub sp,508
13627 + sub sp,4
13628 + sub sp,44
13629 + sub sp,8
13630 + sub sp,348
13631 + .text
13632 + .global sub3
13633 +sub3:
13634 + sub pc,0
13635 + sub r12,-1
13636 + sub r5,-128
13637 + sub r4,127
13638 + sub lr,1
13639 + sub r6,-41
13640 + sub r4,37
13641 + sub r12,56
13642 + .text
13643 + .global mov1
13644 +mov1:
13645 + mov pc,0
13646 + mov r12,-1
13647 + mov r5,-128
13648 + mov r4,127
13649 + mov lr,1
13650 + mov pc,14
13651 + mov r6,-100
13652 + mov lr,-122
13653 + .text
13654 + .global lddsp
13655 +lddsp:
13656 + lddsp pc,sp[0]
13657 + lddsp r12,sp[508]
13658 + lddsp r5,sp[256]
13659 + lddsp r4,sp[252]
13660 + lddsp lr,sp[4]
13661 + lddsp lr,sp[256]
13662 + lddsp r12,sp[20]
13663 + lddsp r9,sp[472]
13664 + .text
13665 + .global lddpc
13666 +lddpc:
13667 + lddpc pc,pc[0]
13668 + lddpc r0,pc[508]
13669 + lddpc r8,pc[256]
13670 + lddpc r7,pc[252]
13671 + lddpc lr,pc[4]
13672 + lddpc sp,pc[472]
13673 + lddpc r6,pc[120]
13674 + lddpc r11,pc[28]
13675 + .text
13676 + .global stdsp
13677 +stdsp:
13678 + stdsp sp[0],pc
13679 + stdsp sp[508],r12
13680 + stdsp sp[256],r5
13681 + stdsp sp[252],r4
13682 + stdsp sp[4],lr
13683 + stdsp sp[304],pc
13684 + stdsp sp[256],r0
13685 + stdsp sp[336],r5
13686 + .text
13687 + .global cp2
13688 +cp2:
13689 + cp pc,0
13690 + cp r12,-1
13691 + cp r5,-32
13692 + cp r4,31
13693 + cp lr,1
13694 + cp r8,3
13695 + cp lr,16
13696 + cp r7,-26
13697 + .text
13698 + .global acr
13699 +acr:
13700 + acr pc
13701 + acr r12
13702 + acr r5
13703 + acr r4
13704 + acr lr
13705 + acr r2
13706 + acr r12
13707 + acr pc
13708 + .text
13709 + .global scr
13710 +scr:
13711 + scr pc
13712 + scr r12
13713 + scr r5
13714 + scr r4
13715 + scr lr
13716 + scr pc
13717 + scr r6
13718 + scr r1
13719 + .text
13720 + .global cpc0
13721 +cpc0:
13722 + cpc pc
13723 + cpc r12
13724 + cpc r5
13725 + cpc r4
13726 + cpc lr
13727 + cpc pc
13728 + cpc r4
13729 + cpc r9
13730 + .text
13731 + .global neg
13732 +neg:
13733 + neg pc
13734 + neg r12
13735 + neg r5
13736 + neg r4
13737 + neg lr
13738 + neg r7
13739 + neg r1
13740 + neg r9
13741 + .text
13742 + .global abs
13743 +abs:
13744 + abs pc
13745 + abs r12
13746 + abs r5
13747 + abs r4
13748 + abs lr
13749 + abs r6
13750 + abs r6
13751 + abs r4
13752 + .text
13753 + .global castu_b
13754 +castu_b:
13755 + castu.b pc
13756 + castu.b r12
13757 + castu.b r5
13758 + castu.b r4
13759 + castu.b lr
13760 + castu.b r7
13761 + castu.b sp
13762 + castu.b r9
13763 + .text
13764 + .global casts_b
13765 +casts_b:
13766 + casts.b pc
13767 + casts.b r12
13768 + casts.b r5
13769 + casts.b r4
13770 + casts.b lr
13771 + casts.b r11
13772 + casts.b r1
13773 + casts.b r10
13774 + .text
13775 + .global castu_h
13776 +castu_h:
13777 + castu.h pc
13778 + castu.h r12
13779 + castu.h r5
13780 + castu.h r4
13781 + castu.h lr
13782 + castu.h r10
13783 + castu.h r11
13784 + castu.h r1
13785 + .text
13786 + .global casts_h
13787 +casts_h:
13788 + casts.h pc
13789 + casts.h r12
13790 + casts.h r5
13791 + casts.h r4
13792 + casts.h lr
13793 + casts.h r0
13794 + casts.h r5
13795 + casts.h r9
13796 + .text
13797 + .global brev
13798 +brev:
13799 + brev pc
13800 + brev r12
13801 + brev r5
13802 + brev r4
13803 + brev lr
13804 + brev r5
13805 + brev r10
13806 + brev r8
13807 + .text
13808 + .global swap_h
13809 +swap_h:
13810 + swap.h pc
13811 + swap.h r12
13812 + swap.h r5
13813 + swap.h r4
13814 + swap.h lr
13815 + swap.h r7
13816 + swap.h r0
13817 + swap.h r8
13818 + .text
13819 + .global swap_b
13820 +swap_b:
13821 + swap.b pc
13822 + swap.b r12
13823 + swap.b r5
13824 + swap.b r4
13825 + swap.b lr
13826 + swap.b r10
13827 + swap.b r12
13828 + swap.b r1
13829 + .text
13830 + .global swap_bh
13831 +swap_bh:
13832 + swap.bh pc
13833 + swap.bh r12
13834 + swap.bh r5
13835 + swap.bh r4
13836 + swap.bh lr
13837 + swap.bh r9
13838 + swap.bh r4
13839 + swap.bh r1
13840 + .text
13841 + .global One_s_compliment
13842 +One_s_compliment:
13843 + com pc
13844 + com r12
13845 + com r5
13846 + com r4
13847 + com lr
13848 + com r2
13849 + com r2
13850 + com r7
13851 + .text
13852 + .global tnbz
13853 +tnbz:
13854 + tnbz pc
13855 + tnbz r12
13856 + tnbz r5
13857 + tnbz r4
13858 + tnbz lr
13859 + tnbz r8
13860 + tnbz r12
13861 + tnbz pc
13862 + .text
13863 + .global rol
13864 +rol:
13865 + rol pc
13866 + rol r12
13867 + rol r5
13868 + rol r4
13869 + rol lr
13870 + rol r10
13871 + rol r9
13872 + rol r5
13873 + .text
13874 + .global ror
13875 +ror:
13876 + ror pc
13877 + ror r12
13878 + ror r5
13879 + ror r4
13880 + ror lr
13881 + ror r8
13882 + ror r4
13883 + ror r7
13884 + .text
13885 + .global icall
13886 +icall:
13887 + icall pc
13888 + icall r12
13889 + icall r5
13890 + icall r4
13891 + icall lr
13892 + icall r3
13893 + icall r1
13894 + icall r3
13895 + .text
13896 + .global mustr
13897 +mustr:
13898 + mustr pc
13899 + mustr r12
13900 + mustr r5
13901 + mustr r4
13902 + mustr lr
13903 + mustr r1
13904 + mustr r4
13905 + mustr r12
13906 + .text
13907 + .global musfr
13908 +musfr:
13909 + musfr pc
13910 + musfr r12
13911 + musfr r5
13912 + musfr r4
13913 + musfr lr
13914 + musfr r11
13915 + musfr r12
13916 + musfr r2
13917 + .text
13918 + .global ret_cond
13919 +ret_cond:
13920 + reteq pc
13921 + retal r12
13922 + retls r5
13923 + retpl r4
13924 + retne lr
13925 + retgt r0
13926 + retgt r12
13927 + retge r10
13928 + .text
13929 + .global sr_cond
13930 +sr_cond:
13931 + sreq pc
13932 + sral r12
13933 + srls r5
13934 + srpl r4
13935 + srne lr
13936 + srlt r0
13937 + sral sp
13938 + srge r9
13939 + .text
13940 + .global ld_w3
13941 +ld_w3:
13942 + ld.w pc,pc[0]
13943 + ld.w r12,r12[124]
13944 + ld.w r5,r5[64]
13945 + ld.w r4,r4[60]
13946 + ld.w lr,lr[4]
13947 + ld.w sp,r2[52]
13948 + ld.w r9,r1[8]
13949 + ld.w r5,sp[60]
13950 + .text
13951 + .global ld_sh3
13952 +ld_sh3:
13953 + ld.sh pc,pc[0]
13954 + ld.sh r12,r12[14]
13955 + ld.sh r5,r5[8]
13956 + ld.sh r4,r4[6]
13957 + ld.sh lr,lr[2]
13958 + ld.sh r4,r2[8]
13959 + ld.sh sp,lr[10]
13960 + ld.sh r2,r11[2]
13961 + .text
13962 + .global ld_uh3
13963 +ld_uh3:
13964 + ld.uh pc,pc[0]
13965 + ld.uh r12,r12[14]
13966 + ld.uh r5,r5[8]
13967 + ld.uh r4,r4[6]
13968 + ld.uh lr,lr[2]
13969 + ld.uh r10,r0[10]
13970 + ld.uh r8,r11[8]
13971 + ld.uh r10,r2[12]
13972 + .text
13973 + .global st_w3
13974 +st_w3:
13975 + st.w pc[0],pc
13976 + st.w r12[60],r12
13977 + st.w r5[32],r5
13978 + st.w r4[28],r4
13979 + st.w lr[4],lr
13980 + st.w r7[44],r11
13981 + st.w r2[24],r6
13982 + st.w r4[12],r9
13983 + .text
13984 + .global st_h3
13985 +st_h3:
13986 + st.h pc[0],pc
13987 + st.h r12[14],r12
13988 + st.h r5[8],r5
13989 + st.h r4[6],r4
13990 + st.h lr[2],lr
13991 + st.h lr[10],r12
13992 + st.h r6[4],r0
13993 + st.h r5[12],sp
13994 + .text
13995 + .global st_b3
13996 +st_b3:
13997 + st.b pc[0],pc
13998 + st.b r12[7],r12
13999 + st.b r5[4],r5
14000 + st.b r4[3],r4
14001 + st.b lr[1],lr
14002 + st.b r12[6],r9
14003 + st.b r2[3],lr
14004 + st.b r1[3],r11
14005 + .text
14006 + .global ldd
14007 +ldd:
14008 + ld.d r0,pc
14009 + ld.d r14,r12
14010 + ld.d r8,r5
14011 + ld.d r6,r4
14012 + ld.d r2,lr
14013 + ld.d r14,r7
14014 + ld.d r4,r4
14015 + ld.d r14,pc
14016 + .text
14017 + .global ldd_postinc
14018 +ldd_postinc:
14019 + ld.d r0,pc++
14020 + ld.d r14,r12++
14021 + ld.d r8,r5++
14022 + ld.d r6,r4++
14023 + ld.d r2,lr++
14024 + ld.d r14,r5++
14025 + ld.d r12,r11++
14026 + ld.d r2,r12++
14027 + .text
14028 + .global ldd_predec
14029 +ldd_predec:
14030 + ld.d r0,--pc
14031 + ld.d r14,--r12
14032 + ld.d r8,--r5
14033 + ld.d r6,--r4
14034 + ld.d r2,--lr
14035 + ld.d r8,--r0
14036 + ld.d r10,--pc
14037 + ld.d r2,--r4
14038 + .text
14039 + .global std
14040 +std:
14041 + st.d pc,r0
14042 + st.d r12,r14
14043 + st.d r5,r8
14044 + st.d r4,r6
14045 + st.d lr,r2
14046 + st.d r0,r12
14047 + st.d sp,r4
14048 + st.d r12,r12
14049 + .text
14050 + .global std_postinc
14051 +std_postinc:
14052 + st.d pc++,r0
14053 + st.d r12++,r14
14054 + st.d r5++,r8
14055 + st.d r4++,r6
14056 + st.d lr++,r2
14057 + st.d sp++,r6
14058 + st.d r10++,r6
14059 + st.d r7++,r2
14060 + .text
14061 + .global std_predec
14062 +std_predec:
14063 + st.d --pc,r0
14064 + st.d --r12,r14
14065 + st.d --r5,r8
14066 + st.d --r4,r6
14067 + st.d --lr,r2
14068 + st.d --r3,r6
14069 + st.d --lr,r2
14070 + st.d --r0,r4
14071 + .text
14072 + .global mul
14073 +mul:
14074 + mul pc,pc
14075 + mul r12,r12
14076 + mul r5,r5
14077 + mul r4,r4
14078 + mul lr,lr
14079 + mul r10,lr
14080 + mul r0,r8
14081 + mul r8,r5
14082 + .text
14083 + .global asr_imm5
14084 +asr_imm5:
14085 + asr pc,0
14086 + asr r12,31
14087 + asr r5,16
14088 + asr r4,15
14089 + asr lr,1
14090 + asr r6,23
14091 + asr r6,18
14092 + asr r5,8
14093 + .text
14094 + .global lsl_imm5
14095 +lsl_imm5:
14096 + lsl pc,0
14097 + lsl r12,31
14098 + lsl r5,16
14099 + lsl r4,15
14100 + lsl lr,1
14101 + lsl r12,13
14102 + lsl r6,16
14103 + lsl r1,25
14104 + .text
14105 + .global lsr_imm5
14106 +lsr_imm5:
14107 + lsr pc,0
14108 + lsr r12,31
14109 + lsr r5,16
14110 + lsr r4,15
14111 + lsr lr,1
14112 + lsr r0,1
14113 + lsr r8,10
14114 + lsr r7,26
14115 + .text
14116 + .global sbr
14117 +sbr:
14118 + sbr pc,0
14119 + sbr r12,31
14120 + sbr r5,16
14121 + sbr r4,15
14122 + sbr lr,1
14123 + sbr r8,31
14124 + sbr r6,22
14125 + sbr r1,23
14126 + .text
14127 + .global cbr
14128 +cbr:
14129 + cbr pc,0
14130 + cbr r12,31
14131 + cbr r5,16
14132 + cbr r4,15
14133 + cbr lr,1
14134 + cbr r12,10
14135 + cbr r7,22
14136 + cbr r8,9
14137 + .text
14138 + .global brc1
14139 +brc1:
14140 + breq 0
14141 + brpl -2
14142 + brge -256
14143 + brcs 254
14144 + brne 2
14145 + brcs 230
14146 + breq -18
14147 + breq 12
14148 + .text
14149 + .global rjmp
14150 +rjmp:
14151 + rjmp 0
14152 + rjmp -2
14153 + rjmp -1024
14154 + rjmp 1022
14155 + rjmp 2
14156 + rjmp -962
14157 + rjmp 14
14158 + rjmp -516
14159 + .text
14160 + .global rcall1
14161 +rcall1:
14162 + rcall 0
14163 + rcall -2
14164 + rcall -1024
14165 + rcall 1022
14166 + rcall 2
14167 + rcall 216
14168 + rcall -530
14169 + rcall -972
14170 + .text
14171 + .global acall
14172 +acall:
14173 + acall 0
14174 + acall 1020
14175 + acall 512
14176 + acall 508
14177 + acall 4
14178 + acall 356
14179 + acall 304
14180 + acall 172
14181 + .text
14182 + .global scall
14183 +scall:
14184 + scall
14185 + scall
14186 + scall
14187 + scall
14188 + scall
14189 + scall
14190 + scall
14191 + scall
14192 + .text
14193 + .global popm
14194 +popm:
14195 + /* popm with no argument fails currently */
14196 + popm pc
14197 + popm r0-r11,pc,r12=-1
14198 + popm lr
14199 + popm r0-r11,pc,r12=1
14200 + popm r0-r3
14201 + popm r4-r10,pc
14202 + popm r0-r3,r11,pc,r12=0
14203 + popm r0-r7,r10-r12,lr
14204 + .text
14205 + .global pushm
14206 +pushm:
14207 + pushm pc
14208 + pushm r0-r12,lr,pc
14209 + pushm pc
14210 + pushm r0-r12,lr
14211 + pushm r0-r3
14212 + pushm r8-r10,lr,pc
14213 + pushm r0-r3,r10
14214 + pushm r8-r9,r12
14215 + .text
14216 + .global popm_n
14217 +popm_n:
14218 + popm pc
14219 + popm r0-r11,pc,r12=-1
14220 + popm lr
14221 + popm r0-r11,pc,r12=1
14222 + popm r0-r3
14223 + popm r4-r10,pc
14224 + popm r0-r3,r11,pc,r12=0
14225 + popm r0-r7,r10-r12,lr
14226 + .text
14227 + .global pushm_n
14228 +pushm_n:
14229 + pushm pc
14230 + pushm r0-r12,lr,pc
14231 + pushm pc
14232 + pushm r0-r12,lr
14233 + pushm r0-r3
14234 + pushm r8-r10,lr,pc
14235 + pushm r0-r3,r10
14236 + pushm r8-r9,r12
14237 + .text
14238 + .global csrfcz
14239 +csrfcz:
14240 + csrfcz 0
14241 + csrfcz 31
14242 + csrfcz 16
14243 + csrfcz 15
14244 + csrfcz 1
14245 + csrfcz 5
14246 + csrfcz 13
14247 + csrfcz 23
14248 + .text
14249 + .global ssrf
14250 +ssrf:
14251 + ssrf 0
14252 + ssrf 31
14253 + ssrf 16
14254 + ssrf 15
14255 + ssrf 1
14256 + ssrf 29
14257 + ssrf 13
14258 + ssrf 13
14259 + .text
14260 + .global csrf
14261 +csrf:
14262 + csrf 0
14263 + csrf 31
14264 + csrf 16
14265 + csrf 15
14266 + csrf 1
14267 + csrf 10
14268 + csrf 15
14269 + csrf 11
14270 + .text
14271 + .global rete
14272 +rete:
14273 + rete
14274 + .text
14275 + .global rets
14276 +rets:
14277 + rets
14278 + .text
14279 + .global retd
14280 +retd:
14281 + retd
14282 + .text
14283 + .global retj
14284 +retj:
14285 + retj
14286 + .text
14287 + .global tlbr
14288 +tlbr:
14289 + tlbr
14290 + .text
14291 + .global tlbs
14292 +tlbs:
14293 + tlbs
14294 + .text
14295 + .global tlbw
14296 +tlbw:
14297 + tlbw
14298 + .text
14299 + .global breakpoint
14300 +breakpoint:
14301 + breakpoint
14302 + .text
14303 + .global incjosp
14304 +incjosp:
14305 + incjosp 1
14306 + incjosp 2
14307 + incjosp 3
14308 + incjosp 4
14309 + incjosp -4
14310 + incjosp -3
14311 + incjosp -2
14312 + incjosp -1
14313 + .text
14314 + .global nop
14315 +nop:
14316 + nop
14317 + .text
14318 + .global popjc
14319 +popjc:
14320 + popjc
14321 + .text
14322 + .global pushjc
14323 +pushjc:
14324 + pushjc
14325 + .text
14326 + .global add2
14327 +add2:
14328 + add pc,pc,pc<<0
14329 + add r12,r12,r12<<3
14330 + add r5,r5,r5<<2
14331 + add r4,r4,r4<<1
14332 + add lr,lr,lr<<1
14333 + add r0,r12,r0<<1
14334 + add r9,r12,r4<<0
14335 + add r12,r12,r7<<2
14336 + .text
14337 + .global sub2
14338 +sub2:
14339 + sub pc,pc,pc<<0
14340 + sub r12,r12,r12<<3
14341 + sub r5,r5,r5<<2
14342 + sub r4,r4,r4<<1
14343 + sub lr,lr,lr<<1
14344 + sub sp,r3,r4<<0
14345 + sub r3,r7,r3<<0
14346 + sub sp,r10,sp<<1
14347 + .text
14348 + .global divu
14349 +divu:
14350 + divu pc,pc,pc
14351 + divu r12,r12,r12
14352 + divu r5,r5,r5
14353 + divu r4,r4,r4
14354 + divu lr,lr,lr
14355 + divu sp,r4,pc
14356 + divu r5,r5,sp
14357 + divu r10,sp,r0
14358 + .text
14359 + .global addhh_w
14360 +addhh_w:
14361 + addhh.w pc,pc:b,pc:b
14362 + addhh.w r12,r12:t,r12:t
14363 + addhh.w r5,r5:t,r5:t
14364 + addhh.w r4,r4:b,r4:b
14365 + addhh.w lr,lr:t,lr:t
14366 + addhh.w r0,r0:b,r3:b
14367 + addhh.w lr,r12:t,r7:b
14368 + addhh.w r3,r10:t,r2:b
14369 + .text
14370 + .global subhh_w
14371 +subhh_w:
14372 + subhh.w pc,pc:b,pc:b
14373 + subhh.w r12,r12:t,r12:t
14374 + subhh.w r5,r5:t,r5:t
14375 + subhh.w r4,r4:b,r4:b
14376 + subhh.w lr,lr:t,lr:t
14377 + subhh.w r10,r1:t,r7:b
14378 + subhh.w pc,r10:t,lr:t
14379 + subhh.w r3,r0:t,r12:b
14380 + .text
14381 + .global adc
14382 +adc:
14383 + adc pc,pc,pc
14384 + adc r12,r12,r12
14385 + adc r5,r5,r5
14386 + adc r4,r4,r4
14387 + adc lr,lr,lr
14388 + adc r4,r0,r7
14389 + adc sp,r4,r3
14390 + adc r2,r12,r0
14391 + .text
14392 + .global sbc
14393 +sbc:
14394 + sbc pc,pc,pc
14395 + sbc r12,r12,r12
14396 + sbc r5,r5,r5
14397 + sbc r4,r4,r4
14398 + sbc lr,lr,lr
14399 + sbc r6,r7,r9
14400 + sbc r0,r8,r5
14401 + sbc r1,r0,r4
14402 + .text
14403 + .global mul_2
14404 +mul_2:
14405 + mul pc,pc,pc
14406 + mul r12,r12,r12
14407 + mul r5,r5,r5
14408 + mul r4,r4,r4
14409 + mul lr,lr,lr
14410 + mul pc,r0,r0
14411 + mul r8,pc,lr
14412 + mul r4,r12,pc
14413 + .text
14414 + .global mac
14415 +mac:
14416 + mac pc,pc,pc
14417 + mac r12,r12,r12
14418 + mac r5,r5,r5
14419 + mac r4,r4,r4
14420 + mac lr,lr,lr
14421 + mac r10,r4,r0
14422 + mac r7,lr,r0
14423 + mac r2,r9,r12
14424 + .text
14425 + .global mulsd
14426 +mulsd:
14427 + muls.d pc,pc,pc
14428 + muls.d r12,r12,r12
14429 + muls.d r5,r5,r5
14430 + muls.d r4,r4,r4
14431 + muls.d lr,lr,lr
14432 + muls.d r2,r8,lr
14433 + muls.d r4,r0,r11
14434 + muls.d r5,lr,r6
14435 + .text
14436 + .global macsd
14437 +macsd:
14438 + macs.d r0,pc,pc
14439 + macs.d r14,r12,r12
14440 + macs.d r8,r5,r5
14441 + macs.d r6,r4,r4
14442 + macs.d r2,lr,lr
14443 + macs.d r8,r1,r9
14444 + macs.d r14,r8,r8
14445 + macs.d r4,r3,r12
14446 + .text
14447 + .global mulud
14448 +mulud:
14449 + mulu.d r0,pc,pc
14450 + mulu.d r14,r12,r12
14451 + mulu.d r8,r5,r5
14452 + mulu.d r6,r4,r4
14453 + mulu.d r2,lr,lr
14454 + mulu.d r6,r5,r0
14455 + mulu.d r4,r6,r1
14456 + mulu.d r8,r8,r2
14457 + .text
14458 + .global macud
14459 +macud:
14460 + macu.d r0,pc,pc
14461 + macu.d r14,r12,r12
14462 + macu.d r8,r5,r5
14463 + macu.d r6,r4,r4
14464 + macu.d r2,lr,lr
14465 + macu.d r6,sp,r11
14466 + macu.d r2,r4,r8
14467 + macu.d r6,r10,r9
14468 + .text
14469 + .global asr_1
14470 +asr_1:
14471 + asr pc,pc,pc
14472 + asr r12,r12,r12
14473 + asr r5,r5,r5
14474 + asr r4,r4,r4
14475 + asr lr,lr,lr
14476 + asr pc,r6,pc
14477 + asr r0,r6,r12
14478 + asr r4,sp,r0
14479 + .text
14480 + .global lsl_1
14481 +lsl_1:
14482 + lsl pc,pc,pc
14483 + lsl r12,r12,r12
14484 + lsl r5,r5,r5
14485 + lsl r4,r4,r4
14486 + lsl lr,lr,lr
14487 + lsl lr,r5,lr
14488 + lsl r5,pc,r3
14489 + lsl r1,pc,r9
14490 + .text
14491 + .global lsr_1
14492 +lsr_1:
14493 + lsr pc,pc,pc
14494 + lsr r12,r12,r12
14495 + lsr r5,r5,r5
14496 + lsr r4,r4,r4
14497 + lsr lr,lr,lr
14498 + lsr r2,r4,r1
14499 + lsr r5,r1,r6
14500 + lsr sp,r6,r7
14501 + .text
14502 + .global xchg
14503 +xchg:
14504 + xchg pc,pc,pc
14505 + xchg r12,r12,r12
14506 + xchg r5,r5,r5
14507 + xchg r4,r4,r4
14508 + xchg lr,lr,lr
14509 + xchg lr,r4,sp
14510 + xchg r1,r5,r12
14511 + xchg lr,r12,r0
14512 + .text
14513 + .global max
14514 +max:
14515 + max pc,pc,pc
14516 + max r12,r12,r12
14517 + max r5,r5,r5
14518 + max r4,r4,r4
14519 + max lr,lr,lr
14520 + max lr,r2,sp
14521 + max r4,r10,r9
14522 + max lr,r9,lr
14523 + .text
14524 + .global min
14525 +min:
14526 + min pc,pc,pc
14527 + min r12,r12,r12
14528 + min r5,r5,r5
14529 + min r4,r4,r4
14530 + min lr,lr,lr
14531 + min r9,r7,r8
14532 + min sp,r5,r5
14533 + min r4,r1,r4
14534 + .text
14535 + .global addabs
14536 +addabs:
14537 + addabs pc,pc,pc
14538 + addabs r12,r12,r12
14539 + addabs r5,r5,r5
14540 + addabs r4,r4,r4
14541 + addabs lr,lr,lr
14542 + addabs r7,r10,r0
14543 + addabs r9,r9,r7
14544 + addabs r2,r8,r12
14545 + .text
14546 + .global mulnhh_w
14547 +mulnhh_w:
14548 + mulnhh.w pc,pc:b,pc:b
14549 + mulnhh.w r12,r12:t,r12:t
14550 + mulnhh.w r5,r5:t,r5:t
14551 + mulnhh.w r4,r4:b,r4:b
14552 + mulnhh.w lr,lr:t,lr:t
14553 + mulnhh.w r11,sp:t,r9:b
14554 + mulnhh.w sp,r4:b,lr:t
14555 + mulnhh.w r12,r2:t,r11:b
14556 + .text
14557 + .global mulnwh_d
14558 +mulnwh_d:
14559 + mulnwh.d r0,pc,pc:b
14560 + mulnwh.d r14,r12,r12:t
14561 + mulnwh.d r8,r5,r5:t
14562 + mulnwh.d r6,r4,r4:b
14563 + mulnwh.d r2,lr,lr:t
14564 + mulnwh.d r14,r3,r2:t
14565 + mulnwh.d r4,r5,r9:b
14566 + mulnwh.d r12,r4,r4:t
14567 + .text
14568 + .global machh_w
14569 +machh_w:
14570 + machh.w pc,pc:b,pc:b
14571 + machh.w r12,r12:t,r12:t
14572 + machh.w r5,r5:t,r5:t
14573 + machh.w r4,r4:b,r4:b
14574 + machh.w lr,lr:t,lr:t
14575 + machh.w lr,r5:b,r1:t
14576 + machh.w r9,r6:b,r7:b
14577 + machh.w r5,lr:t,r12:b
14578 + .text
14579 + .global machh_d
14580 +machh_d:
14581 + machh.d r0,pc:b,pc:b
14582 + machh.d r14,r12:t,r12:t
14583 + machh.d r8,r5:t,r5:t
14584 + machh.d r6,r4:b,r4:b
14585 + machh.d r2,lr:t,lr:t
14586 + machh.d r10,r0:b,r8:b
14587 + machh.d r14,r4:b,r5:t
14588 + machh.d r8,r0:b,r4:t
14589 + .text
14590 + .global macsathh_w
14591 +macsathh_w:
14592 + macsathh.w pc,pc:b,pc:b
14593 + macsathh.w r12,r12:t,r12:t
14594 + macsathh.w r5,r5:t,r5:t
14595 + macsathh.w r4,r4:b,r4:b
14596 + macsathh.w lr,lr:t,lr:t
14597 + macsathh.w r7,r7:t,pc:t
14598 + macsathh.w r4,r2:t,r4:b
14599 + macsathh.w r4,r8:t,r3:t
14600 + .text
14601 + .global mulhh_w
14602 +mulhh_w:
14603 + mulhh.w pc,pc:b,pc:b
14604 + mulhh.w r12,r12:t,r12:t
14605 + mulhh.w r5,r5:t,r5:t
14606 + mulhh.w r4,r4:b,r4:b
14607 + mulhh.w lr,lr:t,lr:t
14608 + mulhh.w r7,r4:t,r9:b
14609 + mulhh.w pc,r3:t,r7:t
14610 + mulhh.w pc,r4:b,r9:t
14611 + .text
14612 + .global mulsathh_h
14613 +mulsathh_h:
14614 + mulsathh.h pc,pc:b,pc:b
14615 + mulsathh.h r12,r12:t,r12:t
14616 + mulsathh.h r5,r5:t,r5:t
14617 + mulsathh.h r4,r4:b,r4:b
14618 + mulsathh.h lr,lr:t,lr:t
14619 + mulsathh.h r3,r1:b,sp:b
14620 + mulsathh.h r11,lr:t,r11:b
14621 + mulsathh.h r8,r8:b,r11:t
14622 + .text
14623 + .global mulsathh_w
14624 +mulsathh_w:
14625 + mulsathh.w pc,pc:b,pc:b
14626 + mulsathh.w r12,r12:t,r12:t
14627 + mulsathh.w r5,r5:t,r5:t
14628 + mulsathh.w r4,r4:b,r4:b
14629 + mulsathh.w lr,lr:t,lr:t
14630 + mulsathh.w lr,r11:t,r6:b
14631 + mulsathh.w r6,r6:b,r7:t
14632 + mulsathh.w r10,r2:b,r3:b
14633 + .text
14634 + .global mulsatrndhh_h
14635 +mulsatrndhh_h:
14636 + mulsatrndhh.h pc,pc:b,pc:b
14637 + mulsatrndhh.h r12,r12:t,r12:t
14638 + mulsatrndhh.h r5,r5:t,r5:t
14639 + mulsatrndhh.h r4,r4:b,r4:b
14640 + mulsatrndhh.h lr,lr:t,lr:t
14641 + mulsatrndhh.h r11,r6:b,r9:b
14642 + mulsatrndhh.h r11,r3:b,r8:t
14643 + mulsatrndhh.h r5,sp:t,r7:t
14644 + .text
14645 + .global mulsatrndwh_w
14646 +mulsatrndwh_w:
14647 + mulsatrndwh.w pc,pc,pc:b
14648 + mulsatrndwh.w r12,r12,r12:t
14649 + mulsatrndwh.w r5,r5,r5:t
14650 + mulsatrndwh.w r4,r4,r4:b
14651 + mulsatrndwh.w lr,lr,lr:t
14652 + mulsatrndwh.w r5,r12,r0:b
14653 + mulsatrndwh.w r7,r10,pc:b
14654 + mulsatrndwh.w r10,r8,r5:t
14655 + .text
14656 + .global macwh_d
14657 +macwh_d:
14658 + macwh.d r0,pc,pc:b
14659 + macwh.d r14,r12,r12:t
14660 + macwh.d r8,r5,r5:t
14661 + macwh.d r6,r4,r4:b
14662 + macwh.d r2,lr,lr:t
14663 + macwh.d r4,r10,r12:t
14664 + macwh.d r4,r7,sp:b
14665 + macwh.d r14,r9,r11:b
14666 + .text
14667 + .global mulwh_d
14668 +mulwh_d:
14669 + mulwh.d r0,pc,pc:b
14670 + mulwh.d r14,r12,r12:t
14671 + mulwh.d r8,r5,r5:t
14672 + mulwh.d r6,r4,r4:b
14673 + mulwh.d r2,lr,lr:t
14674 + mulwh.d r12,r5,r1:b
14675 + mulwh.d r0,r1,r3:t
14676 + mulwh.d r0,r9,r2:b
14677 + .text
14678 + .global mulsatwh_w
14679 +mulsatwh_w:
14680 + mulsatwh.w pc,pc,pc:b
14681 + mulsatwh.w r12,r12,r12:t
14682 + mulsatwh.w r5,r5,r5:t
14683 + mulsatwh.w r4,r4,r4:b
14684 + mulsatwh.w lr,lr,lr:t
14685 + mulsatwh.w r11,pc,r10:t
14686 + mulsatwh.w sp,r12,r9:t
14687 + mulsatwh.w r0,r3,r2:t
14688 + .text
14689 + .global ldw7
14690 +ldw7:
14691 + ld.w pc,pc[pc:b<<2]
14692 + ld.w r12,r12[r12:t<<2]
14693 + ld.w r5,r5[r5:u<<2]
14694 + ld.w r4,r4[r4:l<<2]
14695 + ld.w lr,lr[lr:l<<2]
14696 + ld.w r9,r10[r6:l<<2]
14697 + ld.w r2,r10[r10:b<<2]
14698 + ld.w r11,r5[pc:b<<2]
14699 + .text
14700 + .global satadd_w
14701 +satadd_w:
14702 + satadd.w pc,pc,pc
14703 + satadd.w r12,r12,r12
14704 + satadd.w r5,r5,r5
14705 + satadd.w r4,r4,r4
14706 + satadd.w lr,lr,lr
14707 + satadd.w r4,r8,r11
14708 + satadd.w r3,r12,r6
14709 + satadd.w r3,lr,r9
14710 + .text
14711 + .global satsub_w1
14712 +satsub_w1:
14713 + satsub.w pc,pc,pc
14714 + satsub.w r12,r12,r12
14715 + satsub.w r5,r5,r5
14716 + satsub.w r4,r4,r4
14717 + satsub.w lr,lr,lr
14718 + satsub.w r8,sp,r0
14719 + satsub.w r9,r8,r4
14720 + satsub.w pc,lr,r2
14721 + .text
14722 + .global satadd_h
14723 +satadd_h:
14724 + satadd.h pc,pc,pc
14725 + satadd.h r12,r12,r12
14726 + satadd.h r5,r5,r5
14727 + satadd.h r4,r4,r4
14728 + satadd.h lr,lr,lr
14729 + satadd.h r7,r3,r9
14730 + satadd.h r1,r0,r2
14731 + satadd.h r1,r4,lr
14732 + .text
14733 + .global satsub_h
14734 +satsub_h:
14735 + satsub.h pc,pc,pc
14736 + satsub.h r12,r12,r12
14737 + satsub.h r5,r5,r5
14738 + satsub.h r4,r4,r4
14739 + satsub.h lr,lr,lr
14740 + satsub.h lr,lr,r3
14741 + satsub.h r11,r6,r5
14742 + satsub.h r3,sp,r0
14743 + .text
14744 + .global mul3
14745 +mul3:
14746 + mul pc,pc,0
14747 + mul r12,r12,-1
14748 + mul r5,r5,-128
14749 + mul r4,r4,127
14750 + mul lr,lr,1
14751 + mul r12,r2,-7
14752 + mul r1,pc,95
14753 + mul r4,r6,19
14754 + .text
14755 + .global rsub2
14756 +rsub2:
14757 + rsub pc,pc,0
14758 + rsub r12,r12,-1
14759 + rsub r5,r5,-128
14760 + rsub r4,r4,127
14761 + rsub lr,lr,1
14762 + rsub r9,lr,96
14763 + rsub r11,r1,56
14764 + rsub r0,r7,-87
14765 + .text
14766 + .global clz
14767 +clz:
14768 + clz pc,pc
14769 + clz r12,r12
14770 + clz r5,r5
14771 + clz r4,r4
14772 + clz lr,lr
14773 + clz r2,r3
14774 + clz r5,r11
14775 + clz pc,r3
14776 + .text
14777 + .global cpc1
14778 +cpc1:
14779 + cpc pc,pc
14780 + cpc r12,r12
14781 + cpc r5,r5
14782 + cpc r4,r4
14783 + cpc lr,lr
14784 + cpc pc,r4
14785 + cpc r5,r9
14786 + cpc r6,r7
14787 + .text
14788 + .global asr3
14789 +asr3:
14790 + asr pc,pc,0
14791 + asr r12,r12,31
14792 + asr r5,r5,16
14793 + asr r4,r4,15
14794 + asr lr,lr,1
14795 + asr r4,r11,19
14796 + asr sp,pc,26
14797 + asr r11,sp,8
14798 + .text
14799 + .global lsl3
14800 +lsl3:
14801 + lsl pc,pc,0
14802 + lsl r12,r12,31
14803 + lsl r5,r5,16
14804 + lsl r4,r4,15
14805 + lsl lr,lr,1
14806 + lsl r8,r10,17
14807 + lsl r2,lr,3
14808 + lsl lr,r11,14
14809 + .text
14810 + .global lsr3
14811 +lsr3:
14812 + lsr pc,pc,0
14813 + lsr r12,r12,31
14814 + lsr r5,r5,16
14815 + lsr r4,r4,15
14816 + lsr lr,lr,1
14817 + lsr r4,r3,31
14818 + lsr pc,r9,14
14819 + lsr r3,r0,6
14820 +/* .text
14821 + .global extract_b
14822 +extract_b:
14823 + extract.b pc,pc:b
14824 + extract.b r12,r12:t
14825 + extract.b r5,r5:u
14826 + extract.b r4,r4:l
14827 + extract.b lr,lr:l
14828 + extract.b r2,r5:l
14829 + extract.b r12,r3:l
14830 + extract.b sp,r3:l
14831 + .text
14832 + .global insert_b
14833 +insert_b:
14834 + insert.b pc:b,pc
14835 + insert.b r12:t,r12
14836 + insert.b r5:u,r5
14837 + insert.b r4:l,r4
14838 + insert.b lr:l,lr
14839 + insert.b r12:u,r3
14840 + insert.b r10:l,lr
14841 + insert.b r11:l,r12
14842 + .text
14843 + .global extract_h
14844 +extract_h:
14845 + extract.h pc,pc:b
14846 + extract.h r12,r12:t
14847 + extract.h r5,r5:t
14848 + extract.h r4,r4:b
14849 + extract.h lr,lr:t
14850 + extract.h r11,lr:b
14851 + extract.h r10,r0:b
14852 + extract.h r11,r12:b
14853 + .text
14854 + .global insert_h
14855 +insert_h:
14856 + insert.h pc:b,pc
14857 + insert.h r12:t,r12
14858 + insert.h r5:t,r5
14859 + insert.h r4:b,r4
14860 + insert.h lr:t,lr
14861 + insert.h r12:t,r11
14862 + insert.h r7:b,r6
14863 + insert.h r1:t,r11 */
14864 + .text
14865 + .global movc1
14866 +movc1:
14867 + moveq pc,pc
14868 + moval r12,r12
14869 + movls r5,r5
14870 + movpl r4,r4
14871 + movne lr,lr
14872 + movne pc,r11
14873 + movmi r10,r2
14874 + movls r8,r12
14875 + .text
14876 + .global padd_h
14877 +padd_h:
14878 + padd.h pc,pc,pc
14879 + padd.h r12,r12,r12
14880 + padd.h r5,r5,r5
14881 + padd.h r4,r4,r4
14882 + padd.h lr,lr,lr
14883 + padd.h r8,r2,r7
14884 + padd.h r0,r0,r3
14885 + padd.h sp,r11,r6
14886 + .text
14887 + .global psub_h
14888 +psub_h:
14889 + psub.h pc,pc,pc
14890 + psub.h r12,r12,r12
14891 + psub.h r5,r5,r5
14892 + psub.h r4,r4,r4
14893 + psub.h lr,lr,lr
14894 + psub.h lr,r6,r8
14895 + psub.h r0,r1,sp
14896 + psub.h pc,pc,sp
14897 + .text
14898 + .global paddx_h
14899 +paddx_h:
14900 + paddx.h pc,pc,pc
14901 + paddx.h r12,r12,r12
14902 + paddx.h r5,r5,r5
14903 + paddx.h r4,r4,r4
14904 + paddx.h lr,lr,lr
14905 + paddx.h pc,pc,r1
14906 + paddx.h r10,r4,r5
14907 + paddx.h r5,pc,r2
14908 + .text
14909 + .global psubx_h
14910 +psubx_h:
14911 + psubx.h pc,pc,pc
14912 + psubx.h r12,r12,r12
14913 + psubx.h r5,r5,r5
14914 + psubx.h r4,r4,r4
14915 + psubx.h lr,lr,lr
14916 + psubx.h r5,r12,r5
14917 + psubx.h r3,r8,r3
14918 + psubx.h r5,r2,r3
14919 + .text
14920 + .global padds_sh
14921 +padds_sh:
14922 + padds.sh pc,pc,pc
14923 + padds.sh r12,r12,r12
14924 + padds.sh r5,r5,r5
14925 + padds.sh r4,r4,r4
14926 + padds.sh lr,lr,lr
14927 + padds.sh r9,lr,r2
14928 + padds.sh r6,r8,r1
14929 + padds.sh r6,r4,r10
14930 + .text
14931 + .global psubs_sh
14932 +psubs_sh:
14933 + psubs.sh pc,pc,pc
14934 + psubs.sh r12,r12,r12
14935 + psubs.sh r5,r5,r5
14936 + psubs.sh r4,r4,r4
14937 + psubs.sh lr,lr,lr
14938 + psubs.sh r6,lr,r11
14939 + psubs.sh r2,r12,r4
14940 + psubs.sh r0,r9,r0
14941 + .text
14942 + .global paddxs_sh
14943 +paddxs_sh:
14944 + paddxs.sh pc,pc,pc
14945 + paddxs.sh r12,r12,r12
14946 + paddxs.sh r5,r5,r5
14947 + paddxs.sh r4,r4,r4
14948 + paddxs.sh lr,lr,lr
14949 + paddxs.sh r0,r3,r9
14950 + paddxs.sh pc,r10,r11
14951 + paddxs.sh pc,r10,pc
14952 + .text
14953 + .global psubxs_sh
14954 +psubxs_sh:
14955 + psubxs.sh pc,pc,pc
14956 + psubxs.sh r12,r12,r12
14957 + psubxs.sh r5,r5,r5
14958 + psubxs.sh r4,r4,r4
14959 + psubxs.sh lr,lr,lr
14960 + psubxs.sh r7,r4,r4
14961 + psubxs.sh r7,r8,r3
14962 + psubxs.sh pc,r6,r5
14963 + .text
14964 + .global padds_uh
14965 +padds_uh:
14966 + padds.uh pc,pc,pc
14967 + padds.uh r12,r12,r12
14968 + padds.uh r5,r5,r5
14969 + padds.uh r4,r4,r4
14970 + padds.uh lr,lr,lr
14971 + padds.uh r12,r11,r7
14972 + padds.uh r7,r8,lr
14973 + padds.uh r6,r9,r7
14974 + .text
14975 + .global psubs_uh
14976 +psubs_uh:
14977 + psubs.uh pc,pc,pc
14978 + psubs.uh r12,r12,r12
14979 + psubs.uh r5,r5,r5
14980 + psubs.uh r4,r4,r4
14981 + psubs.uh lr,lr,lr
14982 + psubs.uh lr,r10,r6
14983 + psubs.uh sp,r2,pc
14984 + psubs.uh r2,r9,r2
14985 + .text
14986 + .global paddxs_uh
14987 +paddxs_uh:
14988 + paddxs.uh pc,pc,pc
14989 + paddxs.uh r12,r12,r12
14990 + paddxs.uh r5,r5,r5
14991 + paddxs.uh r4,r4,r4
14992 + paddxs.uh lr,lr,lr
14993 + paddxs.uh r7,r9,r5
14994 + paddxs.uh r9,r1,r4
14995 + paddxs.uh r5,r2,r3
14996 + .text
14997 + .global psubxs_uh
14998 +psubxs_uh:
14999 + psubxs.uh pc,pc,pc
15000 + psubxs.uh r12,r12,r12
15001 + psubxs.uh r5,r5,r5
15002 + psubxs.uh r4,r4,r4
15003 + psubxs.uh lr,lr,lr
15004 + psubxs.uh sp,r5,sp
15005 + psubxs.uh sp,r6,r6
15006 + psubxs.uh r3,r11,r8
15007 + .text
15008 + .global paddh_sh
15009 +paddh_sh:
15010 + paddh.sh pc,pc,pc
15011 + paddh.sh r12,r12,r12
15012 + paddh.sh r5,r5,r5
15013 + paddh.sh r4,r4,r4
15014 + paddh.sh lr,lr,lr
15015 + paddh.sh r12,sp,r3
15016 + paddh.sh pc,r5,r3
15017 + paddh.sh r8,r8,sp
15018 + .text
15019 + .global psubh_sh
15020 +psubh_sh:
15021 + psubh.sh pc,pc,pc
15022 + psubh.sh r12,r12,r12
15023 + psubh.sh r5,r5,r5
15024 + psubh.sh r4,r4,r4
15025 + psubh.sh lr,lr,lr
15026 + psubh.sh r1,r5,r8
15027 + psubh.sh r7,r3,r6
15028 + psubh.sh r4,r3,r3
15029 + .text
15030 + .global paddxh_sh
15031 +paddxh_sh:
15032 + paddxh.sh pc,pc,pc
15033 + paddxh.sh r12,r12,r12
15034 + paddxh.sh r5,r5,r5
15035 + paddxh.sh r4,r4,r4
15036 + paddxh.sh lr,lr,lr
15037 + paddxh.sh r6,r0,r4
15038 + paddxh.sh r9,r8,r9
15039 + paddxh.sh r3,r0,sp
15040 + .text
15041 + .global psubxh_sh
15042 +psubxh_sh:
15043 + psubxh.sh pc,pc,pc
15044 + psubxh.sh r12,r12,r12
15045 + psubxh.sh r5,r5,r5
15046 + psubxh.sh r4,r4,r4
15047 + psubxh.sh lr,lr,lr
15048 + psubxh.sh r4,pc,r12
15049 + psubxh.sh r8,r4,r6
15050 + psubxh.sh r12,r9,r4
15051 + .text
15052 + .global paddsub_h
15053 +paddsub_h:
15054 + paddsub.h pc,pc:b,pc:b
15055 + paddsub.h r12,r12:t,r12:t
15056 + paddsub.h r5,r5:t,r5:t
15057 + paddsub.h r4,r4:b,r4:b
15058 + paddsub.h lr,lr:t,lr:t
15059 + paddsub.h r5,r2:t,lr:b
15060 + paddsub.h r7,r1:b,r8:b
15061 + paddsub.h r6,r10:t,r5:t
15062 + .text
15063 + .global psubadd_h
15064 +psubadd_h:
15065 + psubadd.h pc,pc:b,pc:b
15066 + psubadd.h r12,r12:t,r12:t
15067 + psubadd.h r5,r5:t,r5:t
15068 + psubadd.h r4,r4:b,r4:b
15069 + psubadd.h lr,lr:t,lr:t
15070 + psubadd.h r9,r11:t,r8:t
15071 + psubadd.h r10,r7:t,lr:t
15072 + psubadd.h r6,pc:t,pc:b
15073 + .text
15074 + .global paddsubs_sh
15075 +paddsubs_sh:
15076 + paddsubs.sh pc,pc:b,pc:b
15077 + paddsubs.sh r12,r12:t,r12:t
15078 + paddsubs.sh r5,r5:t,r5:t
15079 + paddsubs.sh r4,r4:b,r4:b
15080 + paddsubs.sh lr,lr:t,lr:t
15081 + paddsubs.sh r0,lr:t,r0:b
15082 + paddsubs.sh r9,r2:t,r4:t
15083 + paddsubs.sh r12,r9:t,sp:t
15084 + .text
15085 + .global psubadds_sh
15086 +psubadds_sh:
15087 + psubadds.sh pc,pc:b,pc:b
15088 + psubadds.sh r12,r12:t,r12:t
15089 + psubadds.sh r5,r5:t,r5:t
15090 + psubadds.sh r4,r4:b,r4:b
15091 + psubadds.sh lr,lr:t,lr:t
15092 + psubadds.sh pc,lr:b,r1:t
15093 + psubadds.sh r11,r3:b,r12:b
15094 + psubadds.sh r10,r2:t,r8:t
15095 + .text
15096 + .global paddsubs_uh
15097 +paddsubs_uh:
15098 + paddsubs.uh pc,pc:b,pc:b
15099 + paddsubs.uh r12,r12:t,r12:t
15100 + paddsubs.uh r5,r5:t,r5:t
15101 + paddsubs.uh r4,r4:b,r4:b
15102 + paddsubs.uh lr,lr:t,lr:t
15103 + paddsubs.uh r9,r2:b,r3:b
15104 + paddsubs.uh sp,sp:b,r7:t
15105 + paddsubs.uh lr,r0:b,r10:t
15106 + .text
15107 + .global psubadds_uh
15108 +psubadds_uh:
15109 + psubadds.uh pc,pc:b,pc:b
15110 + psubadds.uh r12,r12:t,r12:t
15111 + psubadds.uh r5,r5:t,r5:t
15112 + psubadds.uh r4,r4:b,r4:b
15113 + psubadds.uh lr,lr:t,lr:t
15114 + psubadds.uh r12,r9:t,pc:t
15115 + psubadds.uh r8,r6:b,r8:b
15116 + psubadds.uh r8,r8:b,r4:b
15117 + .text
15118 + .global paddsubh_sh
15119 +paddsubh_sh:
15120 + paddsubh.sh pc,pc:b,pc:b
15121 + paddsubh.sh r12,r12:t,r12:t
15122 + paddsubh.sh r5,r5:t,r5:t
15123 + paddsubh.sh r4,r4:b,r4:b
15124 + paddsubh.sh lr,lr:t,lr:t
15125 + paddsubh.sh r8,r9:t,r9:b
15126 + paddsubh.sh r0,sp:t,r1:t
15127 + paddsubh.sh r3,r1:b,r0:t
15128 + .text
15129 + .global psubaddh_sh
15130 +psubaddh_sh:
15131 + psubaddh.sh pc,pc:b,pc:b
15132 + psubaddh.sh r12,r12:t,r12:t
15133 + psubaddh.sh r5,r5:t,r5:t
15134 + psubaddh.sh r4,r4:b,r4:b
15135 + psubaddh.sh lr,lr:t,lr:t
15136 + psubaddh.sh r7,r3:t,r10:b
15137 + psubaddh.sh r7,r2:t,r1:t
15138 + psubaddh.sh r11,r3:b,r6:b
15139 + .text
15140 + .global padd_b
15141 +padd_b:
15142 + padd.b pc,pc,pc
15143 + padd.b r12,r12,r12
15144 + padd.b r5,r5,r5
15145 + padd.b r4,r4,r4
15146 + padd.b lr,lr,lr
15147 + padd.b r2,r6,pc
15148 + padd.b r8,r9,r12
15149 + padd.b r5,r12,r3
15150 + .text
15151 + .global psub_b
15152 +psub_b:
15153 + psub.b pc,pc,pc
15154 + psub.b r12,r12,r12
15155 + psub.b r5,r5,r5
15156 + psub.b r4,r4,r4
15157 + psub.b lr,lr,lr
15158 + psub.b r0,r12,pc
15159 + psub.b r7,sp,r10
15160 + psub.b r5,sp,r12
15161 + .text
15162 + .global padds_sb
15163 +padds_sb:
15164 + padds.sb pc,pc,pc
15165 + padds.sb r12,r12,r12
15166 + padds.sb r5,r5,r5
15167 + padds.sb r4,r4,r4
15168 + padds.sb lr,lr,lr
15169 + padds.sb sp,r11,r4
15170 + padds.sb r11,r10,r11
15171 + padds.sb r5,r12,r6
15172 + .text
15173 + .global psubs_sb
15174 +psubs_sb:
15175 + psubs.sb pc,pc,pc
15176 + psubs.sb r12,r12,r12
15177 + psubs.sb r5,r5,r5
15178 + psubs.sb r4,r4,r4
15179 + psubs.sb lr,lr,lr
15180 + psubs.sb r7,r6,r8
15181 + psubs.sb r12,r10,r9
15182 + psubs.sb pc,r11,r0
15183 + .text
15184 + .global padds_ub
15185 +padds_ub:
15186 + padds.ub pc,pc,pc
15187 + padds.ub r12,r12,r12
15188 + padds.ub r5,r5,r5
15189 + padds.ub r4,r4,r4
15190 + padds.ub lr,lr,lr
15191 + padds.ub r3,r2,r11
15192 + padds.ub r10,r8,r1
15193 + padds.ub r11,r8,r10
15194 + .text
15195 + .global psubs_ub
15196 +psubs_ub:
15197 + psubs.ub pc,pc,pc
15198 + psubs.ub r12,r12,r12
15199 + psubs.ub r5,r5,r5
15200 + psubs.ub r4,r4,r4
15201 + psubs.ub lr,lr,lr
15202 + psubs.ub r0,r2,r7
15203 + psubs.ub lr,r5,r3
15204 + psubs.ub r6,r7,r9
15205 + .text
15206 + .global paddh_ub
15207 +paddh_ub:
15208 + paddh.ub pc,pc,pc
15209 + paddh.ub r12,r12,r12
15210 + paddh.ub r5,r5,r5
15211 + paddh.ub r4,r4,r4
15212 + paddh.ub lr,lr,lr
15213 + paddh.ub lr,r1,r0
15214 + paddh.ub r2,r7,r7
15215 + paddh.ub r2,r1,r2
15216 + .text
15217 + .global psubh_ub
15218 +psubh_ub:
15219 + psubh.ub pc,pc,pc
15220 + psubh.ub r12,r12,r12
15221 + psubh.ub r5,r5,r5
15222 + psubh.ub r4,r4,r4
15223 + psubh.ub lr,lr,lr
15224 + psubh.ub r0,r1,r6
15225 + psubh.ub r4,lr,r10
15226 + psubh.ub r9,r8,r1
15227 + .text
15228 + .global pmax_ub
15229 +pmax_ub:
15230 + pmax.ub pc,pc,pc
15231 + pmax.ub r12,r12,r12
15232 + pmax.ub r5,r5,r5
15233 + pmax.ub r4,r4,r4
15234 + pmax.ub lr,lr,lr
15235 + pmax.ub pc,r2,r11
15236 + pmax.ub r12,r1,r1
15237 + pmax.ub r5,r2,r0
15238 + .text
15239 + .global pmax_sh
15240 +pmax_sh:
15241 + pmax.sh pc,pc,pc
15242 + pmax.sh r12,r12,r12
15243 + pmax.sh r5,r5,r5
15244 + pmax.sh r4,r4,r4
15245 + pmax.sh lr,lr,lr
15246 + pmax.sh lr,r6,r12
15247 + pmax.sh r2,pc,r5
15248 + pmax.sh pc,r2,r7
15249 + .text
15250 + .global pmin_ub
15251 +pmin_ub:
15252 + pmin.ub pc,pc,pc
15253 + pmin.ub r12,r12,r12
15254 + pmin.ub r5,r5,r5
15255 + pmin.ub r4,r4,r4
15256 + pmin.ub lr,lr,lr
15257 + pmin.ub r8,r1,r5
15258 + pmin.ub r1,r8,r3
15259 + pmin.ub r0,r2,r7
15260 + .text
15261 + .global pmin_sh
15262 +pmin_sh:
15263 + pmin.sh pc,pc,pc
15264 + pmin.sh r12,r12,r12
15265 + pmin.sh r5,r5,r5
15266 + pmin.sh r4,r4,r4
15267 + pmin.sh lr,lr,lr
15268 + pmin.sh r8,r4,r10
15269 + pmin.sh lr,r10,r12
15270 + pmin.sh r2,r6,r2
15271 + .text
15272 + .global pavg_ub
15273 +pavg_ub:
15274 + pavg.ub pc,pc,pc
15275 + pavg.ub r12,r12,r12
15276 + pavg.ub r5,r5,r5
15277 + pavg.ub r4,r4,r4
15278 + pavg.ub lr,lr,lr
15279 + pavg.ub r0,r1,r6
15280 + pavg.ub r8,r3,r6
15281 + pavg.ub pc,r12,r10
15282 + .text
15283 + .global pavg_sh
15284 +pavg_sh:
15285 + pavg.sh pc,pc,pc
15286 + pavg.sh r12,r12,r12
15287 + pavg.sh r5,r5,r5
15288 + pavg.sh r4,r4,r4
15289 + pavg.sh lr,lr,lr
15290 + pavg.sh r9,pc,sp
15291 + pavg.sh pc,sp,r3
15292 + pavg.sh r6,r1,r9
15293 + .text
15294 + .global pabs_sb
15295 +pabs_sb:
15296 + pabs.sb pc,pc
15297 + pabs.sb r12,r12
15298 + pabs.sb r5,r5
15299 + pabs.sb r4,r4
15300 + pabs.sb lr,lr
15301 + pabs.sb r11,r6
15302 + pabs.sb lr,r9
15303 + pabs.sb sp,r7
15304 + .text
15305 + .global pabs_sh
15306 +pabs_sh:
15307 + pabs.sh pc,pc
15308 + pabs.sh r12,r12
15309 + pabs.sh r5,r5
15310 + pabs.sh r4,r4
15311 + pabs.sh lr,lr
15312 + pabs.sh pc,r3
15313 + pabs.sh r5,r7
15314 + pabs.sh r4,r0
15315 + .text
15316 + .global psad
15317 +psad:
15318 + psad pc,pc,pc
15319 + psad r12,r12,r12
15320 + psad r5,r5,r5
15321 + psad r4,r4,r4
15322 + psad lr,lr,lr
15323 + psad r9,r11,r11
15324 + psad lr,r4,sp
15325 + psad lr,r4,r5
15326 + .text
15327 + .global pasr_b
15328 +pasr_b:
15329 + pasr.b pc,pc,0
15330 + pasr.b r12,r12,7
15331 + pasr.b r5,r5,4
15332 + pasr.b r4,r4,3
15333 + pasr.b lr,lr,1
15334 + pasr.b pc,r7,1
15335 + pasr.b sp,lr,6
15336 + pasr.b sp,r3,2
15337 + .text
15338 + .global plsl_b
15339 +plsl_b:
15340 + plsl.b pc,pc,0
15341 + plsl.b r12,r12,7
15342 + plsl.b r5,r5,4
15343 + plsl.b r4,r4,3
15344 + plsl.b lr,lr,1
15345 + plsl.b r2,r11,4
15346 + plsl.b r8,r5,7
15347 + plsl.b pc,r0,2
15348 + .text
15349 + .global plsr_b
15350 +plsr_b:
15351 + plsr.b pc,pc,0
15352 + plsr.b r12,r12,7
15353 + plsr.b r5,r5,4
15354 + plsr.b r4,r4,3
15355 + plsr.b lr,lr,1
15356 + plsr.b r12,r1,2
15357 + plsr.b r6,pc,7
15358 + plsr.b r12,r11,2
15359 + .text
15360 + .global pasr_h
15361 +pasr_h:
15362 + pasr.h pc,pc,0
15363 + pasr.h r12,r12,15
15364 + pasr.h r5,r5,8
15365 + pasr.h r4,r4,7
15366 + pasr.h lr,lr,1
15367 + pasr.h r0,r11,10
15368 + pasr.h r4,r6,8
15369 + pasr.h r6,r2,4
15370 + .text
15371 + .global plsl_h
15372 +plsl_h:
15373 + plsl.h pc,pc,0
15374 + plsl.h r12,r12,15
15375 + plsl.h r5,r5,8
15376 + plsl.h r4,r4,7
15377 + plsl.h lr,lr,1
15378 + plsl.h r5,r10,9
15379 + plsl.h sp,lr,8
15380 + plsl.h r0,lr,7
15381 + .text
15382 + .global plsr_h
15383 +plsr_h:
15384 + plsr.h pc,pc,0
15385 + plsr.h r12,r12,15
15386 + plsr.h r5,r5,8
15387 + plsr.h r4,r4,7
15388 + plsr.h lr,lr,1
15389 + plsr.h r11,r0,15
15390 + plsr.h lr,r3,3
15391 + plsr.h r8,lr,10
15392 + .text
15393 + .global packw_sh
15394 +packw_sh:
15395 + packw.sh pc,pc,pc
15396 + packw.sh r12,r12,r12
15397 + packw.sh r5,r5,r5
15398 + packw.sh r4,r4,r4
15399 + packw.sh lr,lr,lr
15400 + packw.sh sp,r11,r10
15401 + packw.sh r8,r2,r12
15402 + packw.sh r8,r1,r5
15403 + .text
15404 + .global punpckub_h
15405 +punpckub_h:
15406 + punpckub.h pc,pc:b
15407 + punpckub.h r12,r12:t
15408 + punpckub.h r5,r5:t
15409 + punpckub.h r4,r4:b
15410 + punpckub.h lr,lr:t
15411 + punpckub.h r6,r1:t
15412 + punpckub.h lr,r5:b
15413 + punpckub.h lr,r2:t
15414 + .text
15415 + .global punpcksb_h
15416 +punpcksb_h:
15417 + punpcksb.h pc,pc:b
15418 + punpcksb.h r12,r12:t
15419 + punpcksb.h r5,r5:t
15420 + punpcksb.h r4,r4:b
15421 + punpcksb.h lr,lr:t
15422 + punpcksb.h r4,r7:t
15423 + punpcksb.h r6,lr:b
15424 + punpcksb.h r12,r12:t
15425 + .text
15426 + .global packsh_ub
15427 +packsh_ub:
15428 + packsh.ub pc,pc,pc
15429 + packsh.ub r12,r12,r12
15430 + packsh.ub r5,r5,r5
15431 + packsh.ub r4,r4,r4
15432 + packsh.ub lr,lr,lr
15433 + packsh.ub r3,r6,r3
15434 + packsh.ub r8,r0,r3
15435 + packsh.ub r9,r3,lr
15436 + .text
15437 + .global packsh_sb
15438 +packsh_sb:
15439 + packsh.sb pc,pc,pc
15440 + packsh.sb r12,r12,r12
15441 + packsh.sb r5,r5,r5
15442 + packsh.sb r4,r4,r4
15443 + packsh.sb lr,lr,lr
15444 + packsh.sb r6,r8,r1
15445 + packsh.sb lr,r9,r8
15446 + packsh.sb sp,r6,r6
15447 + .text
15448 + .global andl
15449 +andl:
15450 + andl pc,0
15451 + andl r12,65535
15452 + andl r5,32768
15453 + andl r4,32767
15454 + andl lr,1
15455 + andl pc,23128
15456 + andl r8,47262
15457 + andl r7,13719
15458 + .text
15459 + .global andl_coh
15460 +andl_coh:
15461 + andl pc,0,COH
15462 + andl r12,65535,COH
15463 + andl r5,32768,COH
15464 + andl r4,32767,COH
15465 + andl lr,1,COH
15466 + andl r6,22753,COH
15467 + andl r0,40653,COH
15468 + andl r4,48580,COH
15469 + .text
15470 + .global andh
15471 +andh:
15472 + andh pc,0
15473 + andh r12,65535
15474 + andh r5,32768
15475 + andh r4,32767
15476 + andh lr,1
15477 + andh r12,52312
15478 + andh r3,8675
15479 + andh r2,42987
15480 + .text
15481 + .global andh_coh
15482 +andh_coh:
15483 + andh pc,0,COH
15484 + andh r12,65535,COH
15485 + andh r5,32768,COH
15486 + andh r4,32767,COH
15487 + andh lr,1,COH
15488 + andh r11,34317,COH
15489 + andh r8,52982,COH
15490 + andh r10,23683,COH
15491 + .text
15492 + .global orl
15493 +orl:
15494 + orl pc,0
15495 + orl r12,65535
15496 + orl r5,32768
15497 + orl r4,32767
15498 + orl lr,1
15499 + orl sp,16766
15500 + orl r0,21181
15501 + orl pc,44103
15502 + .text
15503 + .global orh
15504 +orh:
15505 + orh pc,0
15506 + orh r12,65535
15507 + orh r5,32768
15508 + orh r4,32767
15509 + orh lr,1
15510 + orh r8,28285
15511 + orh r12,30492
15512 + orh r1,59930
15513 + .text
15514 + .global eorl
15515 +eorl:
15516 + eorl pc,0
15517 + eorl r12,65535
15518 + eorl r5,32768
15519 + eorl r4,32767
15520 + eorl lr,1
15521 + eorl r4,51129
15522 + eorl r6,64477
15523 + eorl r1,20913
15524 + .text
15525 + .global eorh
15526 +eorh:
15527 + eorh pc,0
15528 + eorh r12,65535
15529 + eorh r5,32768
15530 + eorh r4,32767
15531 + eorh lr,1
15532 + eorh r0,11732
15533 + eorh r10,38069
15534 + eorh r9,57130
15535 + .text
15536 + .global mcall
15537 +mcall:
15538 + mcall pc[0]
15539 + mcall r12[-4]
15540 + mcall r5[-131072]
15541 + mcall r4[131068]
15542 + mcall lr[4]
15543 + mcall sp[61180]
15544 + mcall r4[-35000]
15545 + mcall r0[9924]
15546 + .text
15547 + .global pref
15548 +pref:
15549 + pref pc[0]
15550 + pref r12[-1]
15551 + pref r5[-32768]
15552 + pref r4[32767]
15553 + pref lr[1]
15554 + pref r7[7748]
15555 + pref r7[-7699]
15556 + pref r2[-25892]
15557 + .text
15558 + .global cache
15559 +cache:
15560 + cache pc[0],0
15561 + cache r12[-1],31
15562 + cache r5[-1024],16
15563 + cache r4[1023],15
15564 + cache lr[1],1
15565 + cache r3[-964],17
15566 + cache r4[-375],22
15567 + cache r3[-888],17
15568 + .text
15569 + .global sub4
15570 +sub4:
15571 + sub pc,0
15572 + sub r12,-1
15573 + sub r5,-1048576
15574 + sub r4,1048575
15575 + sub lr,1
15576 + sub r2,-619156
15577 + sub lr,461517
15578 + sub r8,-185051
15579 + .text
15580 + .global cp3
15581 +cp3:
15582 + cp pc,0
15583 + cp r12,-1
15584 + cp r5,-1048576
15585 + cp r4,1048575
15586 + cp lr,1
15587 + cp r1,124078
15588 + cp r0,-378909
15589 + cp r4,-243180
15590 + .text
15591 + .global mov2
15592 +mov2:
15593 + mov pc,0
15594 + mov r12,-1
15595 + mov r5,-1048576
15596 + mov r4,1048575
15597 + mov lr,1
15598 + mov r5,-317021
15599 + mov sp,-749164
15600 + mov r5,940179
15601 + .text
15602 + .global brc2
15603 +brc2:
15604 + breq 0
15605 + bral -2
15606 + brls -2097152
15607 + brpl 2097150
15608 + brne 2
15609 + brhi -1796966
15610 + brqs 1321368
15611 + brls -577434
15612 + .text
15613 + .global rcall2
15614 +rcall2:
15615 + rcall 0
15616 + rcall -2
15617 + rcall -2097152
15618 + rcall 2097150
15619 + rcall 2
15620 + rcall 496820
15621 + rcall 1085092
15622 + rcall -1058
15623 + .text
15624 + .global sub5
15625 +sub5:
15626 + sub pc,pc,0
15627 + sub r12,r12,-1
15628 + sub r5,r5,-32768
15629 + sub r4,r4,32767
15630 + sub lr,lr,1
15631 + sub pc,pc,-12744
15632 + sub r7,r7,-27365
15633 + sub r2,r9,-17358
15634 + .text
15635 + .global satsub_w2
15636 +satsub_w2:
15637 + satsub.w pc,pc,0
15638 + satsub.w r12,r12,-1
15639 + satsub.w r5,r5,-32768
15640 + satsub.w r4,r4,32767
15641 + satsub.w lr,lr,1
15642 + satsub.w r2,lr,-2007
15643 + satsub.w r7,r12,-784
15644 + satsub.w r4,r7,23180
15645 + .text
15646 + .global ld_d4
15647 +ld_d4:
15648 + ld.d r0,pc[0]
15649 + ld.d r14,r12[-1]
15650 + ld.d r8,r5[-32768]
15651 + ld.d r6,r4[32767]
15652 + ld.d r2,lr[1]
15653 + ld.d r14,r11[14784]
15654 + ld.d r6,r9[-18905]
15655 + ld.d r2,r3[-6355]
15656 + .text
15657 + .global ld_w4
15658 +ld_w4:
15659 + ld.w pc,pc[0]
15660 + ld.w r12,r12[-1]
15661 + ld.w r5,r5[-32768]
15662 + ld.w r4,r4[32767]
15663 + ld.w lr,lr[1]
15664 + ld.w r0,r12[-22133]
15665 + ld.w sp,pc[-20521]
15666 + /* ld.w r3,r5[29035] */
15667 + nop
15668 + .text
15669 + .global ld_sh4
15670 +ld_sh4:
15671 + ld.sh pc,pc[0]
15672 + ld.sh r12,r12[-1]
15673 + ld.sh r5,r5[-32768]
15674 + ld.sh r4,r4[32767]
15675 + ld.sh lr,lr[1]
15676 + ld.sh r6,r10[30930]
15677 + ld.sh r6,r10[21973]
15678 + /* ld.sh r11,r10[-2058] */
15679 + nop
15680 + .text
15681 + .global ld_uh4
15682 +ld_uh4:
15683 + ld.uh pc,pc[0]
15684 + ld.uh r12,r12[-1]
15685 + ld.uh r5,r5[-32768]
15686 + ld.uh r4,r4[32767]
15687 + ld.uh lr,lr[1]
15688 + ld.uh r1,r9[-13354]
15689 + ld.uh lr,r11[21337]
15690 + /* ld.uh r2,lr[-25370] */
15691 + nop
15692 + .text
15693 + .global ld_sb1
15694 +ld_sb1:
15695 + ld.sb pc,pc[0]
15696 + ld.sb r12,r12[-1]
15697 + ld.sb r5,r5[-32768]
15698 + ld.sb r4,r4[32767]
15699 + ld.sb lr,lr[1]
15700 + ld.sb r7,sp[-28663]
15701 + ld.sb r2,r1[-5879]
15702 + ld.sb r12,r3[18734]
15703 + .text
15704 + .global ld_ub4
15705 +ld_ub4:
15706 + ld.ub pc,pc[0]
15707 + ld.ub r12,r12[-1]
15708 + ld.ub r5,r5[-32768]
15709 + ld.ub r4,r4[32767]
15710 + ld.ub lr,lr[1]
15711 + ld.ub pc,r4[8277]
15712 + ld.ub r5,r12[19172]
15713 + ld.ub r10,lr[26347]
15714 + .text
15715 + .global st_d4
15716 +st_d4:
15717 + st.d pc[0],r0
15718 + st.d r12[-1],r14
15719 + st.d r5[-32768],r8
15720 + st.d r4[32767],r6
15721 + st.d lr[1],r2
15722 + st.d r5[13200],r10
15723 + st.d r5[9352],r10
15724 + st.d r5[32373],r4
15725 + .text
15726 + .global st_w4
15727 +st_w4:
15728 + st.w pc[0],pc
15729 + st.w r12[-1],r12
15730 + st.w r5[-32768],r5
15731 + st.w r4[32767],r4
15732 + st.w lr[1],lr
15733 + st.w sp[6136],r7
15734 + st.w r6[27087],r12
15735 + /* st.w r3[20143],r7 */
15736 + nop
15737 + .text
15738 + .global st_h4
15739 +st_h4:
15740 + st.h pc[0],pc
15741 + st.h r12[-1],r12
15742 + st.h r5[-32768],r5
15743 + st.h r4[32767],r4
15744 + st.h lr[1],lr
15745 + st.h r4[-9962],r7
15746 + st.h r9[-16250],r3
15747 + /* st.h r8[-28810],r7 */
15748 + nop
15749 + .text
15750 + .global st_b4
15751 +st_b4:
15752 + st.b pc[0],pc
15753 + st.b r12[-1],r12
15754 + st.b r5[-32768],r5
15755 + st.b r4[32767],r4
15756 + st.b lr[1],lr
15757 + st.b r12[30102],r6
15758 + st.b r5[28977],r1
15759 + st.b r0[5470],r1
15760 + .text
15761 + .global mfsr
15762 +mfsr:
15763 + mfsr pc,0
15764 + mfsr r12,1020
15765 + mfsr r5,512
15766 + mfsr r4,508
15767 + mfsr lr,4
15768 + mfsr r2,696
15769 + mfsr r4,260
15770 + mfsr r10,1016
15771 + .text
15772 + .global mtsr
15773 +mtsr:
15774 + mtsr 0,pc
15775 + mtsr 1020,r12
15776 + mtsr 512,r5
15777 + mtsr 508,r4
15778 + mtsr 4,lr
15779 + mtsr 224,r10
15780 + mtsr 836,r12
15781 + mtsr 304,r9
15782 + .text
15783 + .global mfdr
15784 +mfdr:
15785 + mfdr pc,0
15786 + mfdr r12,1020
15787 + mfdr r5,512
15788 + mfdr r4,508
15789 + mfdr lr,4
15790 + mfdr r6,932
15791 + mfdr r5,36
15792 + mfdr r9,300
15793 + .text
15794 + .global mtdr
15795 +mtdr:
15796 + mtdr 0,pc
15797 + mtdr 1020,r12
15798 + mtdr 512,r5
15799 + mtdr 508,r4
15800 + mtdr 4,lr
15801 + mtdr 180,r8
15802 + mtdr 720,r10
15803 + mtdr 408,lr
15804 + .text
15805 + .global sleep
15806 +sleep:
15807 + sleep 0
15808 + sleep 255
15809 + sleep 128
15810 + sleep 127
15811 + sleep 1
15812 + sleep 254
15813 + sleep 15
15814 + sleep 43
15815 + .text
15816 + .global sync
15817 +sync:
15818 + sync 0
15819 + sync 255
15820 + sync 128
15821 + sync 127
15822 + sync 1
15823 + sync 166
15824 + sync 230
15825 + sync 180
15826 + .text
15827 + .global bld
15828 +bld:
15829 + bld pc,0
15830 + bld r12,31
15831 + bld r5,16
15832 + bld r4,15
15833 + bld lr,1
15834 + bld r9,15
15835 + bld r0,4
15836 + bld lr,26
15837 + .text
15838 + .global bst
15839 +bst:
15840 + bst pc,0
15841 + bst r12,31
15842 + bst r5,16
15843 + bst r4,15
15844 + bst lr,1
15845 + bst r10,28
15846 + bst r0,3
15847 + bst sp,2
15848 + .text
15849 + .global sats
15850 +sats:
15851 + sats pc>>0,0
15852 + sats r12>>31,31
15853 + sats r5>>16,16
15854 + sats r4>>15,15
15855 + sats lr>>1,1
15856 + sats r10>>3,19
15857 + sats r10>>2,26
15858 + sats r1>>20,1
15859 + .text
15860 + .global satu
15861 +satu:
15862 + satu pc>>0,0
15863 + satu r12>>31,31
15864 + satu r5>>16,16
15865 + satu r4>>15,15
15866 + satu lr>>1,1
15867 + satu pc>>5,7
15868 + satu r7>>5,5
15869 + satu r2>>26,19
15870 + .text
15871 + .global satrnds
15872 +satrnds:
15873 + satrnds pc>>0,0
15874 + satrnds r12>>31,31
15875 + satrnds r5>>16,16
15876 + satrnds r4>>15,15
15877 + satrnds lr>>1,1
15878 + satrnds r0>>21,19
15879 + satrnds sp>>0,2
15880 + satrnds r7>>6,29
15881 + .text
15882 + .global satrndu
15883 +satrndu:
15884 + satrndu pc>>0,0
15885 + satrndu r12>>31,31
15886 + satrndu r5>>16,16
15887 + satrndu r4>>15,15
15888 + satrndu lr>>1,1
15889 + satrndu r12>>0,26
15890 + satrndu r4>>21,3
15891 + satrndu r10>>3,16
15892 + .text
15893 + .global subfc
15894 +subfc:
15895 + subfeq pc,0
15896 + subfal r12,-1
15897 + subfls r5,-128
15898 + subfpl r4,127
15899 + subfne lr,1
15900 + subfls r10,8
15901 + subfvc r11,99
15902 + subfvs r2,73
15903 + .text
15904 + .global subc
15905 +subc:
15906 + subeq pc,0
15907 + subal r12,-1
15908 + subls r5,-128
15909 + subpl r4,127
15910 + subne lr,1
15911 + subls r12,118
15912 + subvc lr,-12
15913 + submi r4,-13
15914 + .text
15915 + .global movc2
15916 +movc2:
15917 + moveq pc,0
15918 + moval r12,-1
15919 + movls r5,-128
15920 + movpl r4,127
15921 + movne lr,1
15922 + movlt r3,-122
15923 + movvc r8,2
15924 + movne r7,-111
15925 + .text
15926 + .global cp_b
15927 +cp_b:
15928 + cp.b pc,r0
15929 + cp.b r0,pc
15930 + cp.b r7,r8
15931 + cp.b r8,r7
15932 + .text
15933 + .global cp_h
15934 +cp_h:
15935 + cp.h pc,r0
15936 + cp.h r0,pc
15937 + cp.h r7,r8
15938 + cp.h r8,r7
15939 + .text
15940 + .global ldm
15941 +ldm:
15942 + ldm pc,r1-r6
15943 + ldm r12,r0-r15
15944 + ldm r5,r15
15945 + ldm r4,r0-r14
15946 + ldm lr,r0
15947 + ldm r9,r1,r5,r14
15948 + ldm r11,r2-r3,r5-r8,r15
15949 + ldm r6,r0,r3,r9,r13,r15
15950 + .text
15951 + .global ldm_pu
15952 +ldm_pu:
15953 + ldm pc++,r6-r9
15954 + ldm r12++,r0-r15
15955 + ldm r5++,r15
15956 + ldm r4++,r0-r14
15957 + ldm lr++,r0
15958 + ldm r12++,r3-r5,r8,r10,r12,r14-r15
15959 + ldm r10++,r2,r4-r6,r14-r15
15960 + ldm r6++,r1,r3-r4,r9-r14
15961 + .text
15962 + .global ldmts
15963 +ldmts:
15964 + ldmts pc,r7-r8
15965 + ldmts r12,r0-r15
15966 + ldmts r5,r15
15967 + ldmts r4,r0-r14
15968 + ldmts lr,r0
15969 + ldmts r0,r1-r2,r11-r12
15970 + ldmts lr,r0-r2,r4,r7-r8,r13-r14
15971 + ldmts r12,r0-r1,r3-r5,r9,r14-r15
15972 + .text
15973 + .global ldmts_pu
15974 +ldmts_pu:
15975 + ldmts pc++,r9
15976 + ldmts r12++,r0-r15
15977 + ldmts r5++,r15
15978 + ldmts r4++,r0-r14
15979 + ldmts lr++,r0
15980 + ldmts sp++,r0,r2-r5,r7,r9,r11
15981 + ldmts r5++,r1-r3,r7,r10-r11
15982 + ldmts r8++,r2-r4,r7-r8,r13,r15
15983 + .text
15984 + .global stm
15985 +stm:
15986 + stm pc,r7
15987 + stm r12,r0-r15
15988 + stm r5,r15
15989 + stm r4,r0-r14
15990 + stm lr,r0
15991 + stm sp,r2-r3,r5,r8,r11,r14
15992 + stm r4,r0-r4,r6,r10-r11,r14
15993 + stm r9,r1,r5,r9,r12-r15
15994 + .text
15995 + .global stm_pu
15996 +stm_pu:
15997 + stm --pc,r4-r6
15998 + stm --r12,r0-r15
15999 + stm --r5,r15
16000 + stm --r4,r0-r14
16001 + stm --lr,r0
16002 + stm --r11,r0,r4-r9,r11-r15
16003 + stm --r11,r0,r3,r9-r10,r12,r14
16004 + stm --r6,r2,r8-r9,r13-r14
16005 + .text
16006 + .global stmts
16007 +stmts:
16008 + stmts pc,r8
16009 + stmts r12,r0-r15
16010 + stmts r5,r15
16011 + stmts r4,r0-r14
16012 + stmts lr,r0
16013 + stmts r1,r0-r1,r3-r4,r6,r9-r10,r14-r15
16014 + stmts r3,r0,r6-r8,r10-r12
16015 + stmts r11,r0,r4,r6-r7,r9-r10,r12,r14-r15
16016 + .text
16017 + .global stmts_pu
16018 +stmts_pu:
16019 + stmts --pc,r6-r8
16020 + stmts --r12,r0-r15
16021 + stmts --r5,r15
16022 + stmts --r4,r0-r14
16023 + stmts --lr,r0
16024 + stmts --r2,r0,r3-r4,r9-r10,r12-r13
16025 + stmts --r3,r0-r1,r14-r15
16026 + stmts --r0,r0,r2-r6,r10,r14
16027 + .text
16028 + .global ldins_h
16029 +ldins_h:
16030 + ldins.h pc:b,pc[0]
16031 + ldins.h r12:t,r12[-2]
16032 + ldins.h r5:t,r5[-4096]
16033 + ldins.h r4:b,r4[4094]
16034 + ldins.h lr:t,lr[2]
16035 + ldins.h r0:t,lr[1930]
16036 + ldins.h r3:b,r7[-534]
16037 + ldins.h r2:b,r12[-2252]
16038 + .text
16039 + .global ldins_b
16040 +ldins_b:
16041 + ldins.b pc:b,pc[0]
16042 + ldins.b r12:t,r12[-1]
16043 + ldins.b r5:u,r5[-2048]
16044 + ldins.b r4:l,r4[2047]
16045 + ldins.b lr:l,lr[1]
16046 + ldins.b r6:t,r4[-662]
16047 + ldins.b r5:b,r1[-151]
16048 + ldins.b r10:t,r11[-1923]
16049 + .text
16050 + .global ldswp_sh
16051 +ldswp_sh:
16052 + ldswp.sh pc,pc[0]
16053 + ldswp.sh r12,r12[-2]
16054 + ldswp.sh r5,r5[-4096]
16055 + ldswp.sh r4,r4[4094]
16056 + ldswp.sh lr,lr[2]
16057 + ldswp.sh r9,r10[3848]
16058 + ldswp.sh r4,r12[-2040]
16059 + ldswp.sh r10,r2[3088]
16060 + .text
16061 + .global ldswp_uh
16062 +ldswp_uh:
16063 + ldswp.uh pc,pc[0]
16064 + ldswp.uh r12,r12[-2]
16065 + ldswp.uh r5,r5[-4096]
16066 + ldswp.uh r4,r4[4094]
16067 + ldswp.uh lr,lr[2]
16068 + ldswp.uh r4,r9[3724]
16069 + ldswp.uh lr,sp[-1672]
16070 + ldswp.uh r8,r12[-3846]
16071 + .text
16072 + .global ldswp_w
16073 +ldswp_w:
16074 + ldswp.w pc,pc[0]
16075 + ldswp.w r12,r12[-4]
16076 + ldswp.w r5,r5[-8192]
16077 + ldswp.w r4,r4[8188]
16078 + ldswp.w lr,lr[4]
16079 + ldswp.w sp,r7[1860]
16080 + ldswp.w pc,r5[-3324]
16081 + ldswp.w r12,r10[-3296]
16082 + .text
16083 + .global stswp_h
16084 +stswp_h:
16085 + stswp.h pc[0],pc
16086 + stswp.h r12[-2],r12
16087 + stswp.h r5[-4096],r5
16088 + stswp.h r4[4094],r4
16089 + stswp.h lr[2],lr
16090 + stswp.h r7[64],r10
16091 + stswp.h r10[3024],r2
16092 + stswp.h r0[-2328],r10
16093 + .text
16094 + .global stswp_w
16095 +stswp_w:
16096 + stswp.w pc[0],pc
16097 + stswp.w r12[-4],r12
16098 + stswp.w r5[-8192],r5
16099 + stswp.w r4[8188],r4
16100 + stswp.w lr[4],lr
16101 + stswp.w pc[1156],r8
16102 + stswp.w sp[7992],r10
16103 + stswp.w r8[-1172],r5
16104 + .text
16105 + .global and2
16106 +and2:
16107 + and pc,pc,pc<<0
16108 + and r12,r12,r12<<31
16109 + and r5,r5,r5<<16
16110 + and r4,r4,r4<<15
16111 + and lr,lr,lr<<1
16112 + and r10,r2,r1<<1
16113 + and r12,r8,r11<<27
16114 + and r10,r7,r0<<3
16115 + .text
16116 + .global and3
16117 +and3:
16118 + and pc,pc,pc>>0
16119 + and r12,r12,r12>>31
16120 + and r5,r5,r5>>16
16121 + and r4,r4,r4>>15
16122 + and lr,lr,lr>>1
16123 + and r12,r8,r7>>17
16124 + and pc,r4,r9>>20
16125 + and r10,r9,r10>>12
16126 + .text
16127 + .global or2
16128 +or2:
16129 + or pc,pc,pc<<0
16130 + or r12,r12,r12<<31
16131 + or r5,r5,r5<<16
16132 + or r4,r4,r4<<15
16133 + or lr,lr,lr<<1
16134 + or r8,sp,r11<<29
16135 + or pc,r9,r2<<28
16136 + or r5,r1,r2<<3
16137 + .text
16138 + .global or3
16139 +or3:
16140 + or pc,pc,pc>>0
16141 + or r12,r12,r12>>31
16142 + or r5,r5,r5>>16
16143 + or r4,r4,r4>>15
16144 + or lr,lr,lr>>1
16145 + or r1,sp,sp>>2
16146 + or r0,r1,r1>>29
16147 + or r4,r12,r8>>8
16148 + .text
16149 + .global eor2
16150 +eor2:
16151 + eor pc,pc,pc<<0
16152 + eor r12,r12,r12<<31
16153 + eor r5,r5,r5<<16
16154 + eor r4,r4,r4<<15
16155 + eor lr,lr,lr<<1
16156 + eor r10,r9,r4<<11
16157 + eor r4,r0,r1<<31
16158 + eor r6,r2,r12<<13
16159 + .text
16160 + .global eor3
16161 +eor3:
16162 + eor pc,pc,pc>>0
16163 + eor r12,r12,r12>>31
16164 + eor r5,r5,r5>>16
16165 + eor r4,r4,r4>>15
16166 + eor lr,lr,lr>>1
16167 + eor r5,r5,r5>>22
16168 + eor r10,r1,lr>>3
16169 + eor r7,lr,sp>>26
16170 + .text
16171 + .global sthh_w2
16172 +sthh_w2:
16173 + sthh.w pc[pc<<0],pc:b,pc:b
16174 + sthh.w r12[r12<<3],r12:t,r12:t
16175 + sthh.w r5[r5<<2],r5:t,r5:t
16176 + sthh.w r4[r4<<1],r4:b,r4:b
16177 + sthh.w lr[lr<<1],lr:t,lr:t
16178 + sthh.w sp[r6<<3],r1:t,r12:t
16179 + sthh.w r6[r6<<0],r9:t,r9:t
16180 + sthh.w r10[r3<<0],r0:b,r11:t
16181 + .text
16182 + .global sthh_w1
16183 +sthh_w1:
16184 + sthh.w pc[0],pc:b,pc:b
16185 + sthh.w r12[1020],r12:t,r12:t
16186 + sthh.w r5[512],r5:t,r5:t
16187 + sthh.w r4[508],r4:b,r4:b
16188 + sthh.w lr[4],lr:t,lr:t
16189 + sthh.w r4[404],r9:t,r0:b
16190 + sthh.w r8[348],r2:t,r10:b
16191 + sthh.w sp[172],r9:b,r2:b
16192 + .text
16193 + .global cop
16194 +cop:
16195 + cop cp0,cr0,cr0,cr0,0
16196 + cop cp7,cr15,cr15,cr15,0x7f
16197 + cop cp3,cr5,cr5,cr5,0x31
16198 + cop cp2,cr4,cr4,cr4,0x30
16199 + cop cp5,cr8,cr3,cr7,0x5a
16200 + .text
16201 + .global ldc_w1
16202 +ldc_w1:
16203 + ldc.w cp0,cr0,r0[0]
16204 + ldc.w cp7,cr15,pc[255<<2]
16205 + ldc.w cp3,cr5,r5[128<<2]
16206 + ldc.w cp2,cr4,r4[127<<2]
16207 + ldc.w cp4,cr9,r13[36<<2]
16208 + .text
16209 + .global ldc_w2
16210 +ldc_w2:
16211 + ldc.w cp0,cr0,--r0
16212 + ldc.w cp7,cr15,--pc
16213 + ldc.w cp3,cr5,--r5
16214 + ldc.w cp2,cr4,--r4
16215 + ldc.w cp4,cr9,--r13
16216 + .text
16217 + .global ldc_w3
16218 +ldc_w3:
16219 + ldc.w cp0,cr0,r0[r0]
16220 + ldc.w cp7,cr15,pc[pc<<3]
16221 + ldc.w cp3,cr5,r5[r4<<2]
16222 + ldc.w cp2,cr4,r4[r3<<1]
16223 + ldc.w cp4,cr9,r13[r12<<0]
16224 + .text
16225 + .global ldc_d1
16226 +ldc_d1:
16227 + ldc.d cp0,cr0,r0[0]
16228 + ldc.d cp7,cr14,pc[255<<2]
16229 + ldc.d cp3,cr6,r5[128<<2]
16230 + ldc.d cp2,cr4,r4[127<<2]
16231 + ldc.d cp4,cr8,r13[36<<2]
16232 + .text
16233 + .global ldc_d2
16234 +ldc_d2:
16235 + ldc.d cp0,cr0,--r0
16236 + ldc.d cp7,cr14,--pc
16237 + ldc.d cp3,cr6,--r5
16238 + ldc.d cp2,cr4,--r4
16239 + ldc.d cp4,cr8,--r13
16240 + .text
16241 + .global ldc_d3
16242 +ldc_d3:
16243 + ldc.d cp0,cr0,r0[r0]
16244 + ldc.d cp7,cr14,pc[pc<<3]
16245 + ldc.d cp3,cr6,r5[r4<<2]
16246 + ldc.d cp2,cr4,r4[r3<<1]
16247 + ldc.d cp4,cr8,r13[r12<<0]
16248 + .text
16249 + .global stc_w1
16250 +stc_w1:
16251 + stc.w cp0,r0[0],cr0
16252 + stc.w cp7,pc[255<<2],cr15
16253 + stc.w cp3,r5[128<<2],cr5
16254 + stc.w cp2,r4[127<<2],cr4
16255 + stc.w cp4,r13[36<<2],cr9
16256 + .text
16257 + .global stc_w2
16258 +stc_w2:
16259 + stc.w cp0,r0++,cr0
16260 + stc.w cp7,pc++,cr15
16261 + stc.w cp3,r5++,cr5
16262 + stc.w cp2,r4++,cr4
16263 + stc.w cp4,r13++,cr9
16264 + .text
16265 + .global stc_w3
16266 +stc_w3:
16267 + stc.w cp0,r0[r0],cr0
16268 + stc.w cp7,pc[pc<<3],cr15
16269 + stc.w cp3,r5[r4<<2],cr5
16270 + stc.w cp2,r4[r3<<1],cr4
16271 + stc.w cp4,r13[r12<<0],cr9
16272 + .text
16273 + .global stc_d1
16274 +stc_d1:
16275 + stc.d cp0,r0[0],cr0
16276 + stc.d cp7,pc[255<<2],cr14
16277 + stc.d cp3,r5[128<<2],cr6
16278 + stc.d cp2,r4[127<<2],cr4
16279 + stc.d cp4,r13[36<<2],cr8
16280 + .text
16281 + .global stc_d2
16282 +stc_d2:
16283 + stc.d cp0,r0++,cr0
16284 + stc.d cp7,pc++,cr14
16285 + stc.d cp3,r5++,cr6
16286 + stc.d cp2,r4++,cr4
16287 + stc.d cp4,r13++,cr8
16288 + .text
16289 + .global stc_d3
16290 +stc_d3:
16291 + stc.d cp0,r0[r0],cr0
16292 + stc.d cp7,pc[pc<<3],cr14
16293 + stc.d cp3,r5[r4<<2],cr6
16294 + stc.d cp2,r4[r3<<1],cr4
16295 + stc.d cp4,r13[r12<<0],cr8
16296 + .text
16297 + .global ldc0_w
16298 +ldc0_w:
16299 + ldc0.w cr0,r0[0]
16300 + ldc0.w cr15,pc[4095<<2]
16301 + ldc0.w cr5,r5[2048<<2]
16302 + ldc0.w cr4,r4[2047<<2]
16303 + ldc0.w cr9,r13[147<<2]
16304 + .text
16305 + .global ldc0_d
16306 +ldc0_d:
16307 + ldc0.d cr0,r0[0]
16308 + ldc0.d cr14,pc[4095<<2]
16309 + ldc0.d cr6,r5[2048<<2]
16310 + ldc0.d cr4,r4[2047<<2]
16311 + ldc0.d cr8,r13[147<<2]
16312 + .text
16313 + .global stc0_w
16314 +stc0_w:
16315 + stc0.w r0[0],cr0
16316 + stc0.w pc[4095<<2],cr15
16317 + stc0.w r5[2048<<2],cr5
16318 + stc0.w r4[2047<<2],cr4
16319 + stc0.w r13[147<<2],cr9
16320 + .text
16321 + .global stc0_d
16322 +stc0_d:
16323 + stc0.d r0[0],cr0
16324 + stc0.d pc[4095<<2],cr14
16325 + stc0.d r5[2048<<2],cr6
16326 + stc0.d r4[2047<<2],cr4
16327 + stc0.d r13[147<<2],cr8
16328 + .text
16329 + .global memc
16330 +memc:
16331 + memc 0, 0
16332 + memc -4, 31
16333 + memc -65536, 16
16334 + memc 65532, 15
16335 + .text
16336 + .global mems
16337 +mems:
16338 + mems 0, 0
16339 + mems -4, 31
16340 + mems -65536, 16
16341 + mems 65532, 15
16342 + .text
16343 + .global memt
16344 +memt:
16345 + memt 0, 0
16346 + memt -4, 31
16347 + memt -65536, 16
16348 + memt 65532, 15
16349 +
16350 + .text
16351 + .global stcond
16352 +stcond:
16353 + stcond r0[0], r0
16354 + stcond pc[-1], pc
16355 + stcond r8[-32768], r7
16356 + stcond r7[32767], r8
16357 + stcond r5[0x1234], r10
16358 +
16359 +ldcm_w:
16360 + ldcm.w cp0,pc,cr0-cr7
16361 + ldcm.w cp7,r0,cr0
16362 + ldcm.w cp4,r4++,cr0-cr6
16363 + ldcm.w cp3,r7,cr7
16364 + ldcm.w cp1,r12++,cr1,cr4-cr6
16365 + ldcm.w cp0,pc,cr8-cr15
16366 + ldcm.w cp7,r0,cr8
16367 + ldcm.w cp4,r4++,cr8-cr14
16368 + ldcm.w cp3,r7,cr15
16369 + ldcm.w cp1,r12++,cr9,cr12-cr14
16370 +
16371 +ldcm_d:
16372 + ldcm.d cp0,pc,cr0-cr15
16373 + ldcm.d cp7,r0,cr0,cr1
16374 + ldcm.d cp4,r4++,cr0-cr13
16375 + ldcm.d cp3,r7,cr14-cr15
16376 + ldcm.d cp2,r12++,cr0-cr3,cr8-cr9,cr14-cr15
16377 +
16378 +stcm_w:
16379 + stcm.w cp0,pc,cr0-cr7
16380 + stcm.w cp7,r0,cr0
16381 + stcm.w cp4,--r4,cr0-cr6
16382 + stcm.w cp3,r7,cr7
16383 + stcm.w cp1,--r12,cr1,cr4-cr6
16384 + stcm.w cp0,pc,cr8-cr15
16385 + stcm.w cp7,r0,cr8
16386 + stcm.w cp4,--r4,cr8-cr14
16387 + stcm.w cp3,r7,cr15
16388 + stcm.w cp1,--r12,cr9,cr12-cr14
16389 +
16390 +stcm_d:
16391 + stcm.d cp0,pc,cr0-cr15
16392 + stcm.d cp7,r0,cr0,cr1
16393 + stcm.d cp4,--r4,cr0-cr13
16394 + stcm.d cp3,r7,cr14-cr15
16395 + stcm.d cp2,--r12,cr0-cr3,cr8-cr9,cr14-cr15
16396 +
16397 +mvcr_w:
16398 + mvcr.w cp7,pc,cr15
16399 + mvcr.w cp0,r0,cr0
16400 + mvcr.w cp0,pc,cr15
16401 + mvcr.w cp7,r0,cr15
16402 + mvcr.w cp7,pc,cr0
16403 + mvcr.w cp4,r7,cr8
16404 + mvcr.w cp3,r8,cr7
16405 +
16406 +mvcr_d:
16407 + mvcr.d cp7,lr,cr14
16408 + mvcr.d cp0,r0,cr0
16409 + mvcr.d cp0,lr,cr14
16410 + mvcr.d cp7,r0,cr14
16411 + mvcr.d cp7,lr,cr0
16412 + mvcr.d cp4,r6,cr8
16413 + mvcr.d cp3,r8,cr6
16414 +
16415 +mvrc_w:
16416 + mvrc.w cp7,cr15,pc
16417 + mvrc.w cp0,cr0,r0
16418 + mvrc.w cp0,cr15,pc
16419 + mvrc.w cp7,cr15,r0
16420 + mvrc.w cp7,cr0,pc
16421 + mvrc.w cp4,cr8,r7
16422 + mvrc.w cp3,cr7,r8
16423 +
16424 +mvrc_d:
16425 + mvrc.d cp7,cr14,lr
16426 + mvrc.d cp0,cr0,r0
16427 + mvrc.d cp0,cr14,lr
16428 + mvrc.d cp7,cr14,r0
16429 + mvrc.d cp7,cr0,lr
16430 + mvrc.d cp4,cr8,r6
16431 + mvrc.d cp3,cr6,r8
16432 +
16433 +bfexts:
16434 + bfexts pc,pc,31,31
16435 + bfexts r0,r0,0,0
16436 + bfexts r0,pc,31,31
16437 + bfexts pc,r0,31,31
16438 + bfexts pc,pc,0,31
16439 + bfexts pc,pc,31,0
16440 + bfexts r7,r8,15,16
16441 + bfexts r8,r7,16,15
16442 +
16443 +bfextu:
16444 + bfextu pc,pc,31,31
16445 + bfextu r0,r0,0,0
16446 + bfextu r0,pc,31,31
16447 + bfextu pc,r0,31,31
16448 + bfextu pc,pc,0,31
16449 + bfextu pc,pc,31,0
16450 + bfextu r7,r8,15,16
16451 + bfextu r8,r7,16,15
16452 +
16453 +bfins:
16454 + bfins pc,pc,31,31
16455 + bfins r0,r0,0,0
16456 + bfins r0,pc,31,31
16457 + bfins pc,r0,31,31
16458 + bfins pc,pc,0,31
16459 + bfins pc,pc,31,0
16460 + bfins r7,r8,15,16
16461 + bfins r8,r7,16,15
16462 +
16463 +rsubc:
16464 + rsubeq pc,0
16465 + rsubal r12,-1
16466 + rsubls r5,-128
16467 + rsubpl r4,127
16468 + rsubne lr,1
16469 + rsubls r12,118
16470 + rsubvc lr,-12
16471 + rsubmi r4,-13
16472 +
16473 +addc:
16474 + addeq pc,pc,pc
16475 + addal r12,r12,r12
16476 + addls r5,r5,r5
16477 + addpl r4,r4,r4
16478 + addne lr,lr,lr
16479 + addls r10,r2,r1
16480 + addvc r12,r8,r11
16481 + addmi r10,r7,r0
16482 +
16483 +subc2:
16484 + subeq pc,pc,pc
16485 + subal r12,r12,r12
16486 + subls r5,r5,r5
16487 + subpl r4,r4,r4
16488 + subne lr,lr,lr
16489 + subls r10,r2,r1
16490 + subvc r12,r8,r11
16491 + submi r10,r7,r0
16492 +
16493 +andc:
16494 + andeq pc,pc,pc
16495 + andal r12,r12,r12
16496 + andls r5,r5,r5
16497 + andpl r4,r4,r4
16498 + andne lr,lr,lr
16499 + andls r10,r2,r1
16500 + andvc r12,r8,r11
16501 + andmi r10,r7,r0
16502 +
16503 +orc:
16504 + oreq pc,pc,pc
16505 + oral r12,r12,r12
16506 + orls r5,r5,r5
16507 + orpl r4,r4,r4
16508 + orne lr,lr,lr
16509 + orls r10,r2,r1
16510 + orvc r12,r8,r11
16511 + ormi r10,r7,r0
16512 +
16513 +eorc:
16514 + eoreq pc,pc,pc
16515 + eoral r12,r12,r12
16516 + eorls r5,r5,r5
16517 + eorpl r4,r4,r4
16518 + eorne lr,lr,lr
16519 + eorls r10,r2,r1
16520 + eorvc r12,r8,r11
16521 + eormi r10,r7,r0
16522 +
16523 +ldcond:
16524 + ld.weq pc,pc[2044]
16525 + ld.shal r12,r12[1022]
16526 + ld.uhls r5,r5[0]
16527 + ld.ubpl r4,r4[511]
16528 + ld.sbne lr,lr[0]
16529 + ld.wls r10,r2[0]
16530 + ld.shvc r12,r8[0x3fe]
16531 + ld.ubmi r10,r7[1]
16532 +
16533 +stcond2:
16534 + st.weq pc[2044],pc
16535 + st.hal r12[1022],r12
16536 + st.hls r5[0],r5
16537 + st.bpl r4[511],r4
16538 + st.bne lr[0],lr
16539 + st.wls r2[0],r10
16540 + st.hvc r8[0x3fe],r12
16541 + st.bmi r7[1],r10
16542 +
16543 +movh:
16544 + movh pc, 65535
16545 + movh r0, 0
16546 + movh r5, 1
16547 + movh r12, 32767
16548 +
16549 +
16550 --- /dev/null
16551 +++ b/gas/testsuite/gas/avr32/avr32.exp
16552 @@ -0,0 +1,23 @@
16553 +# AVR32 assembler testsuite. -*- Tcl -*-
16554 +
16555 +if [istarget avr32-*-*] {
16556 + run_dump_test "hwrd-lwrd"
16557 + run_dump_test "pcrel"
16558 + run_dump_test "aliases"
16559 + run_dump_test "dwarf2"
16560 + run_dump_test "pic_reloc"
16561 + run_dump_test "fpinsn"
16562 + run_dump_test "pico"
16563 + run_dump_test "lda_pic"
16564 + run_dump_test "lda_pic_linkrelax"
16565 + run_dump_test "lda_nopic"
16566 + run_dump_test "lda_nopic_linkrelax"
16567 + run_dump_test "call_pic"
16568 + run_dump_test "call_pic_linkrelax"
16569 + run_dump_test "call_nopic"
16570 + run_dump_test "call_nopic_linkrelax"
16571 + run_dump_test "jmptable"
16572 + run_dump_test "jmptable_linkrelax"
16573 + run_dump_test "symdiff"
16574 + run_dump_test "symdiff_linkrelax"
16575 +}
16576 --- /dev/null
16577 +++ b/gas/testsuite/gas/avr32/call_nopic.d
16578 @@ -0,0 +1,36 @@
16579 +#source: call.s
16580 +#as:
16581 +#objdump: -dr
16582 +#name: call_nopic
16583 +
16584 +.*: +file format .*
16585 +
16586 +Disassembly of section \.text:
16587 +
16588 +00000000 <call_test>:
16589 + 0: d7 03 nop
16590 +
16591 +00000002 <toofar_negative>:
16592 + \.\.\.
16593 + 1ffffe: 00 00 add r0,r0
16594 + 200000: f0 a0 00 00 rcall 0 <call_test>
16595 + 200004: f0 1f 00 0c mcall 200034 <toofar_negative\+0x200032>
16596 + 200008: f0 1f 00 0c mcall 200038 <toofar_negative\+0x200036>
16597 + 20000c: f0 1f 00 0c mcall 20003c <toofar_negative\+0x20003a>
16598 + 200010: f0 1f 00 0c mcall 200040 <toofar_negative\+0x20003e>
16599 + \.\.\.
16600 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16601 + \.\.\.
16602 + 200034: R_AVR32_32_CPENT \.text\+0x2
16603 + 200038: R_AVR32_32_CPENT \.text\.init
16604 + 20003c: R_AVR32_32_CPENT undefined
16605 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16606 +
16607 +0040002c <toofar_positive>:
16608 + 40002c: d7 03 nop
16609 +0040002e <far_positive>:
16610 + 40002e: d7 03 nop
16611 +Disassembly of section \.text\.init:
16612 +
16613 +00000000 <different_section>:
16614 + 0: e2 c0 00 00 sub r0,r1,0
16615 --- /dev/null
16616 +++ b/gas/testsuite/gas/avr32/call_nopic_linkrelax.d
16617 @@ -0,0 +1,43 @@
16618 +#source: call.s
16619 +#as: --linkrelax
16620 +#objdump: -dr
16621 +#name: call_nopic_linkrelax
16622 +
16623 +.*: +file format .*
16624 +
16625 +Disassembly of section \.text:
16626 +
16627 +00000000 <call_test>:
16628 + 0: d7 03 nop
16629 +
16630 +00000002 <toofar_negative>:
16631 + \.\.\.
16632 + 1ffffe: 00 00 add r0,r0
16633 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16634 + 200000: R_AVR32_22H_PCREL \.text
16635 + 200004: f0 1f 00 00 mcall 200004 <toofar_negative\+0x200002>
16636 + 200004: R_AVR32_CPCALL \.text\+0x200034
16637 + 200008: f0 1f 00 00 mcall 200008 <toofar_negative\+0x200006>
16638 + 200008: R_AVR32_CPCALL \.text\+0x200038
16639 + 20000c: f0 1f 00 00 mcall 20000c <toofar_negative\+0x20000a>
16640 + 20000c: R_AVR32_CPCALL \.text\+0x20003c
16641 + 200010: f0 1f 00 00 mcall 200010 <toofar_negative\+0x20000e>
16642 + 200010: R_AVR32_CPCALL \.text\+0x200040
16643 + \.\.\.
16644 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16645 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16646 + \.\.\.
16647 + 200034: R_AVR32_ALIGN \*ABS\*\+0x2
16648 + 200034: R_AVR32_32_CPENT \.text\+0x2
16649 + 200038: R_AVR32_32_CPENT \.text\.init
16650 + 20003c: R_AVR32_32_CPENT undefined
16651 + 200040: R_AVR32_32_CPENT \.text\+0x40002c
16652 +
16653 +0040002c <toofar_positive>:
16654 + 40002c: d7 03 nop
16655 +0040002e <far_positive>:
16656 + 40002e: d7 03 nop
16657 +Disassembly of section \.text\.init:
16658 +
16659 +00000000 <different_section>:
16660 + 0: e2 c0 00 00 sub r0,r1,0
16661 --- /dev/null
16662 +++ b/gas/testsuite/gas/avr32/call_pic.d
16663 @@ -0,0 +1,36 @@
16664 +#source: call.s
16665 +#as: --pic
16666 +#objdump: -dr
16667 +#name: call_pic
16668 +
16669 +.*: +file format .*
16670 +
16671 +Disassembly of section \.text:
16672 +
16673 +00000000 <call_test>:
16674 + 0: d7 03 nop
16675 +
16676 +00000002 <toofar_negative>:
16677 + \.\.\.
16678 + 1ffffe: 00 00 add r0,r0
16679 + 200000: f0 a0 00 00 rcall 0 <call_test>
16680 + 200004: f0 16 00 00 mcall r6\[0\]
16681 + 200004: R_AVR32_GOT18SW toofar_negative
16682 + 200008: f0 16 00 00 mcall r6\[0\]
16683 + 200008: R_AVR32_GOT18SW different_section
16684 + 20000c: f0 16 00 00 mcall r6\[0\]
16685 + 20000c: R_AVR32_GOT18SW undefined
16686 + 200010: f0 16 00 00 mcall r6\[0\]
16687 + 200010: R_AVR32_GOT18SW toofar_positive
16688 + \.\.\.
16689 + 200030: ee b0 ff ff rcall 40002e <far_positive>
16690 + \.\.\.
16691 +
16692 +0040002c <toofar_positive>:
16693 + 40002c: d7 03 nop
16694 +0040002e <far_positive>:
16695 + 40002e: d7 03 nop
16696 +Disassembly of section \.text\.init:
16697 +
16698 +00000000 <different_section>:
16699 + 0: e2 c0 00 00 sub r0,r1,0
16700 --- /dev/null
16701 +++ b/gas/testsuite/gas/avr32/call_pic_linkrelax.d
16702 @@ -0,0 +1,47 @@
16703 +#source: call.s
16704 +#as: --pic --linkrelax
16705 +#objdump: -dr
16706 +#name: call_pic_linkrelax
16707 +
16708 +.*: +file format .*
16709 +
16710 +Disassembly of section \.text:
16711 +
16712 +00000000 <call_test>:
16713 + 0: d7 03 nop
16714 +
16715 +00000002 <toofar_negative>:
16716 + \.\.\.
16717 + 1ffffe: 00 00 add r0,r0
16718 + 200000: e0 a0 00 00 rcall 200000 <toofar_negative\+0x1ffffe>
16719 + 200000: R_AVR32_22H_PCREL \.text
16720 + 200004: e0 6e 00 00 mov lr,0
16721 + 200004: R_AVR32_GOTCALL toofar_negative
16722 + 200008: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16723 + 20000c: 5d 1e icall lr
16724 + 20000e: e0 6e 00 00 mov lr,0
16725 + 20000e: R_AVR32_GOTCALL different_section
16726 + 200012: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16727 + 200016: 5d 1e icall lr
16728 + 200018: e0 6e 00 00 mov lr,0
16729 + 200018: R_AVR32_GOTCALL undefined
16730 + 20001c: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16731 + 200020: 5d 1e icall lr
16732 + 200022: e0 6e 00 00 mov lr,0
16733 + 200022: R_AVR32_GOTCALL toofar_positive
16734 + 200026: ec 0e 03 2e ld\.w lr,r6\[lr<<0x2\]
16735 + 20002a: 5d 1e icall lr
16736 + 20002c: 00 00 add r0,r0
16737 + 20002e: 00 00 add r0,r0
16738 + 200030: e0 a0 00 00 rcall 200030 <toofar_negative\+0x20002e>
16739 + 200030: R_AVR32_22H_PCREL \.text\+0x40002e
16740 + \.\.\.
16741 +
16742 +0040002c <toofar_positive>:
16743 + 40002c: d7 03 nop
16744 +0040002e <far_positive>:
16745 + 40002e: d7 03 nop
16746 +Disassembly of section \.text\.init:
16747 +
16748 +00000000 <different_section>:
16749 + 0: e2 c0 00 00 sub r0,r1,0
16750 --- /dev/null
16751 +++ b/gas/testsuite/gas/avr32/call.s
16752 @@ -0,0 +1,30 @@
16753 +
16754 + .text
16755 + .global call_test
16756 +call_test:
16757 +far_negative:
16758 + nop
16759 +toofar_negative:
16760 +
16761 + .org 0x200000
16762 +
16763 + call far_negative
16764 + call toofar_negative
16765 + call different_section
16766 + call undefined
16767 + call toofar_positive
16768 + .org 0x200030
16769 + call far_positive
16770 +
16771 + .cpool
16772 +
16773 + .org 0x40002c
16774 +
16775 +toofar_positive:
16776 + nop
16777 +far_positive:
16778 + nop
16779 +
16780 + .section .text.init,"ax",@progbits
16781 +different_section:
16782 + sub r0, r1, 0
16783 --- /dev/null
16784 +++ b/gas/testsuite/gas/avr32/dwarf2.d
16785 @@ -0,0 +1,42 @@
16786 +#readelf: -wl
16787 +#name: dwarf2
16788 +#source: dwarf2.s
16789 +
16790 +Dump of debug contents of section \.debug_line:
16791 +
16792 + Length: 53
16793 + DWARF Version: 2
16794 + Prologue Length: 26
16795 + Minimum Instruction Length: 1
16796 + Initial value of 'is_stmt': 1
16797 + Line Base: -5
16798 + Line Range: 14
16799 + Opcode Base: 10
16800 + \(Pointer size: 4\)
16801 +
16802 + Opcodes:
16803 + Opcode 1 has 0 args
16804 + Opcode 2 has 1 args
16805 + Opcode 3 has 1 args
16806 + Opcode 4 has 1 args
16807 + Opcode 5 has 1 args
16808 + Opcode 6 has 0 args
16809 + Opcode 7 has 0 args
16810 + Opcode 8 has 0 args
16811 + Opcode 9 has 1 args
16812 +
16813 + The Directory Table is empty\.
16814 +
16815 + The File Name Table:
16816 + Entry Dir Time Size Name
16817 + 1 0 0 0 main\.c
16818 +
16819 + Line Number Statements:
16820 + Extended opcode 2: set Address to 0x0
16821 + Advance Line by 87 to 88
16822 + Copy
16823 + Advance Line by 23 to 111
16824 + Special opcode .*: advance Address by 4 to 0x4 and Line by 0 to 111
16825 + Special opcode .*: advance Address by 10 to 0xe and Line by 1 to 112
16826 + Advance PC by 530 to 220
16827 + Extended opcode 1: End of Sequence
16828 --- /dev/null
16829 +++ b/gas/testsuite/gas/avr32/dwarf2.s
16830 @@ -0,0 +1,67 @@
16831 +# Source file used to test DWARF2 information for AVR32.
16832 +
16833 + .file "main.c"
16834 +
16835 + .section .debug_abbrev,"",@progbits
16836 +.Ldebug_abbrev0:
16837 + .section .debug_info,"",@progbits
16838 +.Ldebug_info0:
16839 + .section .debug_line,"",@progbits
16840 +.Ldebug_line0:
16841 +
16842 + .text
16843 + .align 1
16844 + .globl main
16845 + .type main, @function
16846 +.Ltext0:
16847 +main:
16848 + .file 1 "main.c"
16849 + .loc 1 88 0
16850 + pushm r0-r7,lr
16851 + sub sp, 4
16852 + .loc 1 111 0
16853 + lddpc r12, .LC1
16854 + lddpc r7, .LC1
16855 + icall r7
16856 + .loc 1 112 0
16857 + lddpc r6, .LC4
16858 +
16859 + .align 2
16860 +.LC4: .int 0
16861 +
16862 + .fill 256, 2, 0
16863 +
16864 + .align 2
16865 +.LC1:
16866 + .int 0
16867 +.LC2:
16868 + .int 0
16869 +.LC3:
16870 + .int 0
16871 + .size main, . - main
16872 +
16873 +.Letext0:
16874 +
16875 + .section .debug_info
16876 + .int .Ledebug_info0 - .Ldebug_info0 // size
16877 + .short 2 // version
16878 + .int .Ldebug_abbrev0 // abbrev offset
16879 + .byte 4 // bytes per addr
16880 +
16881 + .uleb128 1 // abbrev 1
16882 + .int .Ldebug_line0 // DW_AT_stmt_list
16883 + .int .Letext0 // DW_AT_high_pc
16884 + .int .Ltext0 // DW_AT_low_pc
16885 +
16886 +.Ledebug_info0:
16887 +
16888 + .section .debug_abbrev
16889 + .uleb128 0x01
16890 + .uleb128 0x11 // DW_TAG_compile_unit
16891 + .byte 0 // DW_CHILDREN_no
16892 + .uleb128 0x10, 0x6 // DW_AT_stmt_list
16893 + .uleb128 0x12, 0x1 // DW_AT_high_pc
16894 + .uleb128 0x11, 0x1 // DW_AT_low_pc
16895 + .uleb128 0, 0
16896 +
16897 + .byte 0
16898 --- /dev/null
16899 +++ b/gas/testsuite/gas/avr32/fpinsn.d
16900 @@ -0,0 +1,271 @@
16901 +#as:
16902 +#objdump: -dr
16903 +#name: fpinsn
16904 +
16905 +.*: +file format .*
16906 +
16907 +Disassembly of section \.text:
16908 +
16909 +[0-9a-f]* <fadd_s>:
16910 + *[0-9a-f]*: e1 a2 0f ff cop cp0,cr15,cr15,cr15,0x4
16911 + *[0-9a-f]*: e1 a2 00 00 cop cp0,cr0,cr0,cr0,0x4
16912 + *[0-9a-f]*: e1 a2 00 ff cop cp0,cr0,cr15,cr15,0x4
16913 + *[0-9a-f]*: e1 a2 0f 0f cop cp0,cr15,cr0,cr15,0x4
16914 + *[0-9a-f]*: e1 a2 0f f0 cop cp0,cr15,cr15,cr0,0x4
16915 + *[0-9a-f]*: e1 a2 07 88 cop cp0,cr7,cr8,cr8,0x4
16916 + *[0-9a-f]*: e1 a2 08 78 cop cp0,cr8,cr7,cr8,0x4
16917 + *[0-9a-f]*: e1 a2 08 87 cop cp0,cr8,cr8,cr7,0x4
16918 +
16919 +[0-9a-f]* <fsub_s>:
16920 + *[0-9a-f]*: e1 a2 1f ff cop cp0,cr15,cr15,cr15,0x5
16921 + *[0-9a-f]*: e1 a2 10 00 cop cp0,cr0,cr0,cr0,0x5
16922 + *[0-9a-f]*: e1 a2 10 ff cop cp0,cr0,cr15,cr15,0x5
16923 + *[0-9a-f]*: e1 a2 1f 0f cop cp0,cr15,cr0,cr15,0x5
16924 + *[0-9a-f]*: e1 a2 1f f0 cop cp0,cr15,cr15,cr0,0x5
16925 + *[0-9a-f]*: e1 a2 17 88 cop cp0,cr7,cr8,cr8,0x5
16926 + *[0-9a-f]*: e1 a2 18 78 cop cp0,cr8,cr7,cr8,0x5
16927 + *[0-9a-f]*: e1 a2 18 87 cop cp0,cr8,cr8,cr7,0x5
16928 +
16929 +[0-9a-f]* <fmac_s>:
16930 + *[0-9a-f]*: e1 a0 0f ff cop cp0,cr15,cr15,cr15,0x0
16931 + *[0-9a-f]*: e1 a0 00 00 cop cp0,cr0,cr0,cr0,0x0
16932 + *[0-9a-f]*: e1 a0 00 ff cop cp0,cr0,cr15,cr15,0x0
16933 + *[0-9a-f]*: e1 a0 0f 0f cop cp0,cr15,cr0,cr15,0x0
16934 + *[0-9a-f]*: e1 a0 0f f0 cop cp0,cr15,cr15,cr0,0x0
16935 + *[0-9a-f]*: e1 a0 07 88 cop cp0,cr7,cr8,cr8,0x0
16936 + *[0-9a-f]*: e1 a0 08 78 cop cp0,cr8,cr7,cr8,0x0
16937 + *[0-9a-f]*: e1 a0 08 87 cop cp0,cr8,cr8,cr7,0x0
16938 +
16939 +[0-9a-f]* <fnmac_s>:
16940 + *[0-9a-f]*: e1 a0 1f ff cop cp0,cr15,cr15,cr15,0x1
16941 + *[0-9a-f]*: e1 a0 10 00 cop cp0,cr0,cr0,cr0,0x1
16942 + *[0-9a-f]*: e1 a0 10 ff cop cp0,cr0,cr15,cr15,0x1
16943 + *[0-9a-f]*: e1 a0 1f 0f cop cp0,cr15,cr0,cr15,0x1
16944 + *[0-9a-f]*: e1 a0 1f f0 cop cp0,cr15,cr15,cr0,0x1
16945 + *[0-9a-f]*: e1 a0 17 88 cop cp0,cr7,cr8,cr8,0x1
16946 + *[0-9a-f]*: e1 a0 18 78 cop cp0,cr8,cr7,cr8,0x1
16947 + *[0-9a-f]*: e1 a0 18 87 cop cp0,cr8,cr8,cr7,0x1
16948 +
16949 +[0-9a-f]* <fmsc_s>:
16950 + *[0-9a-f]*: e1 a1 0f ff cop cp0,cr15,cr15,cr15,0x2
16951 + *[0-9a-f]*: e1 a1 00 00 cop cp0,cr0,cr0,cr0,0x2
16952 + *[0-9a-f]*: e1 a1 00 ff cop cp0,cr0,cr15,cr15,0x2
16953 + *[0-9a-f]*: e1 a1 0f 0f cop cp0,cr15,cr0,cr15,0x2
16954 + *[0-9a-f]*: e1 a1 0f f0 cop cp0,cr15,cr15,cr0,0x2
16955 + *[0-9a-f]*: e1 a1 07 88 cop cp0,cr7,cr8,cr8,0x2
16956 + *[0-9a-f]*: e1 a1 08 78 cop cp0,cr8,cr7,cr8,0x2
16957 + *[0-9a-f]*: e1 a1 08 87 cop cp0,cr8,cr8,cr7,0x2
16958 +
16959 +[0-9a-f]* <fnmsc_s>:
16960 + *[0-9a-f]*: e1 a1 1f ff cop cp0,cr15,cr15,cr15,0x3
16961 + *[0-9a-f]*: e1 a1 10 00 cop cp0,cr0,cr0,cr0,0x3
16962 + *[0-9a-f]*: e1 a1 10 ff cop cp0,cr0,cr15,cr15,0x3
16963 + *[0-9a-f]*: e1 a1 1f 0f cop cp0,cr15,cr0,cr15,0x3
16964 + *[0-9a-f]*: e1 a1 1f f0 cop cp0,cr15,cr15,cr0,0x3
16965 + *[0-9a-f]*: e1 a1 17 88 cop cp0,cr7,cr8,cr8,0x3
16966 + *[0-9a-f]*: e1 a1 18 78 cop cp0,cr8,cr7,cr8,0x3
16967 + *[0-9a-f]*: e1 a1 18 87 cop cp0,cr8,cr8,cr7,0x3
16968 +
16969 +[0-9a-f]* <fmul_s>:
16970 + *[0-9a-f]*: e1 a3 0f ff cop cp0,cr15,cr15,cr15,0x6
16971 + *[0-9a-f]*: e1 a3 00 00 cop cp0,cr0,cr0,cr0,0x6
16972 + *[0-9a-f]*: e1 a3 00 ff cop cp0,cr0,cr15,cr15,0x6
16973 + *[0-9a-f]*: e1 a3 0f 0f cop cp0,cr15,cr0,cr15,0x6
16974 + *[0-9a-f]*: e1 a3 0f f0 cop cp0,cr15,cr15,cr0,0x6
16975 + *[0-9a-f]*: e1 a3 07 88 cop cp0,cr7,cr8,cr8,0x6
16976 + *[0-9a-f]*: e1 a3 08 78 cop cp0,cr8,cr7,cr8,0x6
16977 + *[0-9a-f]*: e1 a3 08 87 cop cp0,cr8,cr8,cr7,0x6
16978 +
16979 +[0-9a-f]* <fnmul_s>:
16980 + *[0-9a-f]*: e1 a3 1f ff cop cp0,cr15,cr15,cr15,0x7
16981 + *[0-9a-f]*: e1 a3 10 00 cop cp0,cr0,cr0,cr0,0x7
16982 + *[0-9a-f]*: e1 a3 10 ff cop cp0,cr0,cr15,cr15,0x7
16983 + *[0-9a-f]*: e1 a3 1f 0f cop cp0,cr15,cr0,cr15,0x7
16984 + *[0-9a-f]*: e1 a3 1f f0 cop cp0,cr15,cr15,cr0,0x7
16985 + *[0-9a-f]*: e1 a3 17 88 cop cp0,cr7,cr8,cr8,0x7
16986 + *[0-9a-f]*: e1 a3 18 78 cop cp0,cr8,cr7,cr8,0x7
16987 + *[0-9a-f]*: e1 a3 18 87 cop cp0,cr8,cr8,cr7,0x7
16988 +
16989 +[0-9a-f]* <fneg_s>:
16990 + *[0-9a-f]*: e1 a4 0f f0 cop cp0,cr15,cr15,cr0,0x8
16991 + *[0-9a-f]*: e1 a4 00 00 cop cp0,cr0,cr0,cr0,0x8
16992 + *[0-9a-f]*: e1 a4 00 f0 cop cp0,cr0,cr15,cr0,0x8
16993 + *[0-9a-f]*: e1 a4 0f 00 cop cp0,cr15,cr0,cr0,0x8
16994 + *[0-9a-f]*: e1 a4 07 80 cop cp0,cr7,cr8,cr0,0x8
16995 + *[0-9a-f]*: e1 a4 08 70 cop cp0,cr8,cr7,cr0,0x8
16996 +
16997 +[0-9a-f]* <fabs_s>:
16998 + *[0-9a-f]*: e1 a4 1f f0 cop cp0,cr15,cr15,cr0,0x9
16999 + *[0-9a-f]*: e1 a4 10 00 cop cp0,cr0,cr0,cr0,0x9
17000 + *[0-9a-f]*: e1 a4 10 f0 cop cp0,cr0,cr15,cr0,0x9
17001 + *[0-9a-f]*: e1 a4 1f 00 cop cp0,cr15,cr0,cr0,0x9
17002 + *[0-9a-f]*: e1 a4 17 80 cop cp0,cr7,cr8,cr0,0x9
17003 + *[0-9a-f]*: e1 a4 18 70 cop cp0,cr8,cr7,cr0,0x9
17004 +
17005 +[0-9a-f]* <fcmp_s>:
17006 + *[0-9a-f]*: e1 a6 10 ff cop cp0,cr0,cr15,cr15,0xd
17007 + *[0-9a-f]*: e1 a6 10 00 cop cp0,cr0,cr0,cr0,0xd
17008 + *[0-9a-f]*: e1 a6 10 0f cop cp0,cr0,cr0,cr15,0xd
17009 + *[0-9a-f]*: e1 a6 10 f0 cop cp0,cr0,cr15,cr0,0xd
17010 + *[0-9a-f]*: e1 a6 10 78 cop cp0,cr0,cr7,cr8,0xd
17011 + *[0-9a-f]*: e1 a6 10 87 cop cp0,cr0,cr8,cr7,0xd
17012 +
17013 +[0-9a-f]* <fadd_d>:
17014 + *[0-9a-f]*: e5 a2 0e ee cop cp0,cr14,cr14,cr14,0x44
17015 + *[0-9a-f]*: e5 a2 00 00 cop cp0,cr0,cr0,cr0,0x44
17016 + *[0-9a-f]*: e5 a2 00 ee cop cp0,cr0,cr14,cr14,0x44
17017 + *[0-9a-f]*: e5 a2 0e 0e cop cp0,cr14,cr0,cr14,0x44
17018 + *[0-9a-f]*: e5 a2 0e e0 cop cp0,cr14,cr14,cr0,0x44
17019 + *[0-9a-f]*: e5 a2 06 88 cop cp0,cr6,cr8,cr8,0x44
17020 + *[0-9a-f]*: e5 a2 08 68 cop cp0,cr8,cr6,cr8,0x44
17021 + *[0-9a-f]*: e5 a2 08 86 cop cp0,cr8,cr8,cr6,0x44
17022 +
17023 +[0-9a-f]* <fsub_d>:
17024 + *[0-9a-f]*: e5 a2 1e ee cop cp0,cr14,cr14,cr14,0x45
17025 + *[0-9a-f]*: e5 a2 10 00 cop cp0,cr0,cr0,cr0,0x45
17026 + *[0-9a-f]*: e5 a2 10 ee cop cp0,cr0,cr14,cr14,0x45
17027 + *[0-9a-f]*: e5 a2 1e 0e cop cp0,cr14,cr0,cr14,0x45
17028 + *[0-9a-f]*: e5 a2 1e e0 cop cp0,cr14,cr14,cr0,0x45
17029 + *[0-9a-f]*: e5 a2 16 88 cop cp0,cr6,cr8,cr8,0x45
17030 + *[0-9a-f]*: e5 a2 18 68 cop cp0,cr8,cr6,cr8,0x45
17031 + *[0-9a-f]*: e5 a2 18 86 cop cp0,cr8,cr8,cr6,0x45
17032 +
17033 +[0-9a-f]* <fmac_d>:
17034 + *[0-9a-f]*: e5 a0 0e ee cop cp0,cr14,cr14,cr14,0x40
17035 + *[0-9a-f]*: e5 a0 00 00 cop cp0,cr0,cr0,cr0,0x40
17036 + *[0-9a-f]*: e5 a0 00 ee cop cp0,cr0,cr14,cr14,0x40
17037 + *[0-9a-f]*: e5 a0 0e 0e cop cp0,cr14,cr0,cr14,0x40
17038 + *[0-9a-f]*: e5 a0 0e e0 cop cp0,cr14,cr14,cr0,0x40
17039 + *[0-9a-f]*: e5 a0 06 88 cop cp0,cr6,cr8,cr8,0x40
17040 + *[0-9a-f]*: e5 a0 08 68 cop cp0,cr8,cr6,cr8,0x40
17041 + *[0-9a-f]*: e5 a0 08 86 cop cp0,cr8,cr8,cr6,0x40
17042 +
17043 +[0-9a-f]* <fnmac_d>:
17044 + *[0-9a-f]*: e5 a0 1e ee cop cp0,cr14,cr14,cr14,0x41
17045 + *[0-9a-f]*: e5 a0 10 00 cop cp0,cr0,cr0,cr0,0x41
17046 + *[0-9a-f]*: e5 a0 10 ee cop cp0,cr0,cr14,cr14,0x41
17047 + *[0-9a-f]*: e5 a0 1e 0e cop cp0,cr14,cr0,cr14,0x41
17048 + *[0-9a-f]*: e5 a0 1e e0 cop cp0,cr14,cr14,cr0,0x41
17049 + *[0-9a-f]*: e5 a0 16 88 cop cp0,cr6,cr8,cr8,0x41
17050 + *[0-9a-f]*: e5 a0 18 68 cop cp0,cr8,cr6,cr8,0x41
17051 + *[0-9a-f]*: e5 a0 18 86 cop cp0,cr8,cr8,cr6,0x41
17052 +
17053 +[0-9a-f]* <fmsc_d>:
17054 + *[0-9a-f]*: e5 a1 0e ee cop cp0,cr14,cr14,cr14,0x42
17055 + *[0-9a-f]*: e5 a1 00 00 cop cp0,cr0,cr0,cr0,0x42
17056 + *[0-9a-f]*: e5 a1 00 ee cop cp0,cr0,cr14,cr14,0x42
17057 + *[0-9a-f]*: e5 a1 0e 0e cop cp0,cr14,cr0,cr14,0x42
17058 + *[0-9a-f]*: e5 a1 0e e0 cop cp0,cr14,cr14,cr0,0x42
17059 + *[0-9a-f]*: e5 a1 06 88 cop cp0,cr6,cr8,cr8,0x42
17060 + *[0-9a-f]*: e5 a1 08 68 cop cp0,cr8,cr6,cr8,0x42
17061 + *[0-9a-f]*: e5 a1 08 86 cop cp0,cr8,cr8,cr6,0x42
17062 +
17063 +[0-9a-f]* <fnmsc_d>:
17064 + *[0-9a-f]*: e5 a1 1e ee cop cp0,cr14,cr14,cr14,0x43
17065 + *[0-9a-f]*: e5 a1 10 00 cop cp0,cr0,cr0,cr0,0x43
17066 + *[0-9a-f]*: e5 a1 10 ee cop cp0,cr0,cr14,cr14,0x43
17067 + *[0-9a-f]*: e5 a1 1e 0e cop cp0,cr14,cr0,cr14,0x43
17068 + *[0-9a-f]*: e5 a1 1e e0 cop cp0,cr14,cr14,cr0,0x43
17069 + *[0-9a-f]*: e5 a1 16 88 cop cp0,cr6,cr8,cr8,0x43
17070 + *[0-9a-f]*: e5 a1 18 68 cop cp0,cr8,cr6,cr8,0x43
17071 + *[0-9a-f]*: e5 a1 18 86 cop cp0,cr8,cr8,cr6,0x43
17072 +
17073 +[0-9a-f]* <fmul_d>:
17074 + *[0-9a-f]*: e5 a3 0e ee cop cp0,cr14,cr14,cr14,0x46
17075 + *[0-9a-f]*: e5 a3 00 00 cop cp0,cr0,cr0,cr0,0x46
17076 + *[0-9a-f]*: e5 a3 00 ee cop cp0,cr0,cr14,cr14,0x46
17077 + *[0-9a-f]*: e5 a3 0e 0e cop cp0,cr14,cr0,cr14,0x46
17078 + *[0-9a-f]*: e5 a3 0e e0 cop cp0,cr14,cr14,cr0,0x46
17079 + *[0-9a-f]*: e5 a3 06 88 cop cp0,cr6,cr8,cr8,0x46
17080 + *[0-9a-f]*: e5 a3 08 68 cop cp0,cr8,cr6,cr8,0x46
17081 + *[0-9a-f]*: e5 a3 08 86 cop cp0,cr8,cr8,cr6,0x46
17082 +
17083 +[0-9a-f]* <fnmul_d>:
17084 + *[0-9a-f]*: e5 a3 1e ee cop cp0,cr14,cr14,cr14,0x47
17085 + *[0-9a-f]*: e5 a3 10 00 cop cp0,cr0,cr0,cr0,0x47
17086 + *[0-9a-f]*: e5 a3 10 ee cop cp0,cr0,cr14,cr14,0x47
17087 + *[0-9a-f]*: e5 a3 1e 0e cop cp0,cr14,cr0,cr14,0x47
17088 + *[0-9a-f]*: e5 a3 1e e0 cop cp0,cr14,cr14,cr0,0x47
17089 + *[0-9a-f]*: e5 a3 16 88 cop cp0,cr6,cr8,cr8,0x47
17090 + *[0-9a-f]*: e5 a3 18 68 cop cp0,cr8,cr6,cr8,0x47
17091 + *[0-9a-f]*: e5 a3 18 86 cop cp0,cr8,cr8,cr6,0x47
17092 +
17093 +[0-9a-f]* <fneg_d>:
17094 + *[0-9a-f]*: e5 a4 0e e0 cop cp0,cr14,cr14,cr0,0x48
17095 + *[0-9a-f]*: e5 a4 00 00 cop cp0,cr0,cr0,cr0,0x48
17096 + *[0-9a-f]*: e5 a4 00 e0 cop cp0,cr0,cr14,cr0,0x48
17097 + *[0-9a-f]*: e5 a4 0e 00 cop cp0,cr14,cr0,cr0,0x48
17098 + *[0-9a-f]*: e5 a4 06 80 cop cp0,cr6,cr8,cr0,0x48
17099 + *[0-9a-f]*: e5 a4 08 60 cop cp0,cr8,cr6,cr0,0x48
17100 +
17101 +[0-9a-f]* <fabs_d>:
17102 + *[0-9a-f]*: e5 a4 1e e0 cop cp0,cr14,cr14,cr0,0x49
17103 + *[0-9a-f]*: e5 a4 10 00 cop cp0,cr0,cr0,cr0,0x49
17104 + *[0-9a-f]*: e5 a4 10 e0 cop cp0,cr0,cr14,cr0,0x49
17105 + *[0-9a-f]*: e5 a4 1e 00 cop cp0,cr14,cr0,cr0,0x49
17106 + *[0-9a-f]*: e5 a4 16 80 cop cp0,cr6,cr8,cr0,0x49
17107 + *[0-9a-f]*: e5 a4 18 60 cop cp0,cr8,cr6,cr0,0x49
17108 +
17109 +[0-9a-f]* <fcmp_d>:
17110 + *[0-9a-f]*: e5 a6 10 ee cop cp0,cr0,cr14,cr14,0x4d
17111 + *[0-9a-f]*: e5 a6 10 00 cop cp0,cr0,cr0,cr0,0x4d
17112 + *[0-9a-f]*: e5 a6 10 0e cop cp0,cr0,cr0,cr14,0x4d
17113 + *[0-9a-f]*: e5 a6 10 e0 cop cp0,cr0,cr14,cr0,0x4d
17114 + *[0-9a-f]*: e5 a6 10 68 cop cp0,cr0,cr6,cr8,0x4d
17115 + *[0-9a-f]*: e5 a6 10 86 cop cp0,cr0,cr8,cr6,0x4d
17116 +
17117 +[0-9a-f]* <fmov_s>:
17118 + *[0-9a-f]*: e1 a5 0f f0 cop cp0,cr15,cr15,cr0,0xa
17119 + *[0-9a-f]*: e1 a5 00 00 cop cp0,cr0,cr0,cr0,0xa
17120 + *[0-9a-f]*: e1 a5 0f 00 cop cp0,cr15,cr0,cr0,0xa
17121 + *[0-9a-f]*: e1 a5 00 f0 cop cp0,cr0,cr15,cr0,0xa
17122 + *[0-9a-f]*: e1 a5 08 70 cop cp0,cr8,cr7,cr0,0xa
17123 + *[0-9a-f]*: e1 a5 07 80 cop cp0,cr7,cr8,cr0,0xa
17124 + *[0-9a-f]*: ef af 0f 00 mvcr.w cp0,pc,cr15
17125 + *[0-9a-f]*: ef a0 00 00 mvcr.w cp0,r0,cr0
17126 + *[0-9a-f]*: ef af 00 00 mvcr.w cp0,pc,cr0
17127 + *[0-9a-f]*: ef a0 0f 00 mvcr.w cp0,r0,cr15
17128 + *[0-9a-f]*: ef a8 07 00 mvcr.w cp0,r8,cr7
17129 + *[0-9a-f]*: ef a7 08 00 mvcr.w cp0,r7,cr8
17130 + *[0-9a-f]*: ef af 0f 20 mvrc.w cp0,cr15,pc
17131 + *[0-9a-f]*: ef a0 00 20 mvrc.w cp0,cr0,r0
17132 + *[0-9a-f]*: ef a0 0f 20 mvrc.w cp0,cr15,r0
17133 + *[0-9a-f]*: ef af 00 20 mvrc.w cp0,cr0,pc
17134 + *[0-9a-f]*: ef a7 08 20 mvrc.w cp0,cr8,r7
17135 + *[0-9a-f]*: ef a8 07 20 mvrc.w cp0,cr7,r8
17136 +
17137 +[0-9a-f]* <fmov_d>:
17138 + *[0-9a-f]*: e5 a5 0e e0 cop cp0,cr14,cr14,cr0,0x4a
17139 + *[0-9a-f]*: e5 a5 00 00 cop cp0,cr0,cr0,cr0,0x4a
17140 + *[0-9a-f]*: e5 a5 0e 00 cop cp0,cr14,cr0,cr0,0x4a
17141 + *[0-9a-f]*: e5 a5 00 e0 cop cp0,cr0,cr14,cr0,0x4a
17142 + *[0-9a-f]*: e5 a5 08 60 cop cp0,cr8,cr6,cr0,0x4a
17143 + *[0-9a-f]*: e5 a5 06 80 cop cp0,cr6,cr8,cr0,0x4a
17144 + *[0-9a-f]*: ef ae 0e 10 mvcr.d cp0,lr,cr14
17145 + *[0-9a-f]*: ef a0 00 10 mvcr.d cp0,r0,cr0
17146 + *[0-9a-f]*: ef ae 00 10 mvcr.d cp0,lr,cr0
17147 + *[0-9a-f]*: ef a0 0e 10 mvcr.d cp0,r0,cr14
17148 + *[0-9a-f]*: ef a8 06 10 mvcr.d cp0,r8,cr6
17149 + *[0-9a-f]*: ef a6 08 10 mvcr.d cp0,r6,cr8
17150 + *[0-9a-f]*: ef ae 0e 30 mvrc.d cp0,cr14,lr
17151 + *[0-9a-f]*: ef a0 00 30 mvrc.d cp0,cr0,r0
17152 + *[0-9a-f]*: ef a0 0e 30 mvrc.d cp0,cr14,r0
17153 + *[0-9a-f]*: ef ae 00 30 mvrc.d cp0,cr0,lr
17154 + *[0-9a-f]*: ef a6 08 30 mvrc.d cp0,cr8,r6
17155 + *[0-9a-f]*: ef a8 06 30 mvrc.d cp0,cr6,r8
17156 +
17157 +[0-9a-f]* <fcasts_d>:
17158 + *[0-9a-f]*: e1 a7 1f e0 cop cp0,cr15,cr14,cr0,0xf
17159 + *[0-9a-f]*: e1 a7 10 00 cop cp0,cr0,cr0,cr0,0xf
17160 + *[0-9a-f]*: e1 a7 1f 00 cop cp0,cr15,cr0,cr0,0xf
17161 + *[0-9a-f]*: e1 a7 10 e0 cop cp0,cr0,cr14,cr0,0xf
17162 + *[0-9a-f]*: e1 a7 18 60 cop cp0,cr8,cr6,cr0,0xf
17163 + *[0-9a-f]*: e1 a7 17 80 cop cp0,cr7,cr8,cr0,0xf
17164 +
17165 +[0-9a-f]* <fcastd_s>:
17166 + *[0-9a-f]*: e1 a8 0e f0 cop cp0,cr14,cr15,cr0,0x10
17167 + *[0-9a-f]*: e1 a8 00 00 cop cp0,cr0,cr0,cr0,0x10
17168 + *[0-9a-f]*: e1 a8 0e 00 cop cp0,cr14,cr0,cr0,0x10
17169 + *[0-9a-f]*: e1 a8 00 f0 cop cp0,cr0,cr15,cr0,0x10
17170 + *[0-9a-f]*: e1 a8 08 70 cop cp0,cr8,cr7,cr0,0x10
17171 + *[0-9a-f]*: e1 a8 06 80 cop cp0,cr6,cr8,cr0,0x10
17172 --- /dev/null
17173 +++ b/gas/testsuite/gas/avr32/fpinsn.s
17174 @@ -0,0 +1,266 @@
17175 +
17176 + .text
17177 + .global fadd_s
17178 +fadd_s:
17179 + fadd.s fr15, fr15, fr15
17180 + fadd.s fr0, fr0, fr0
17181 + fadd.s fr0, fr15, fr15
17182 + fadd.s fr15, fr0, fr15
17183 + fadd.s fr15, fr15, fr0
17184 + fadd.s fr7, fr8, fr8
17185 + fadd.s fr8, fr7, fr8
17186 + fadd.s fr8, fr8, fr7
17187 + .global fsub_s
17188 +fsub_s:
17189 + fsub.s fr15, fr15, fr15
17190 + fsub.s fr0, fr0, fr0
17191 + fsub.s fr0, fr15, fr15
17192 + fsub.s fr15, fr0, fr15
17193 + fsub.s fr15, fr15, fr0
17194 + fsub.s fr7, fr8, fr8
17195 + fsub.s fr8, fr7, fr8
17196 + fsub.s fr8, fr8, fr7
17197 + .global fmac_s
17198 +fmac_s:
17199 + fmac.s fr15, fr15, fr15
17200 + fmac.s fr0, fr0, fr0
17201 + fmac.s fr0, fr15, fr15
17202 + fmac.s fr15, fr0, fr15
17203 + fmac.s fr15, fr15, fr0
17204 + fmac.s fr7, fr8, fr8
17205 + fmac.s fr8, fr7, fr8
17206 + fmac.s fr8, fr8, fr7
17207 + .global fnmac_s
17208 +fnmac_s:
17209 + fnmac.s fr15, fr15, fr15
17210 + fnmac.s fr0, fr0, fr0
17211 + fnmac.s fr0, fr15, fr15
17212 + fnmac.s fr15, fr0, fr15
17213 + fnmac.s fr15, fr15, fr0
17214 + fnmac.s fr7, fr8, fr8
17215 + fnmac.s fr8, fr7, fr8
17216 + fnmac.s fr8, fr8, fr7
17217 + .global fmsc_s
17218 +fmsc_s:
17219 + fmsc.s fr15, fr15, fr15
17220 + fmsc.s fr0, fr0, fr0
17221 + fmsc.s fr0, fr15, fr15
17222 + fmsc.s fr15, fr0, fr15
17223 + fmsc.s fr15, fr15, fr0
17224 + fmsc.s fr7, fr8, fr8
17225 + fmsc.s fr8, fr7, fr8
17226 + fmsc.s fr8, fr8, fr7
17227 + .global fnmsc_s
17228 +fnmsc_s:
17229 + fnmsc.s fr15, fr15, fr15
17230 + fnmsc.s fr0, fr0, fr0
17231 + fnmsc.s fr0, fr15, fr15
17232 + fnmsc.s fr15, fr0, fr15
17233 + fnmsc.s fr15, fr15, fr0
17234 + fnmsc.s fr7, fr8, fr8
17235 + fnmsc.s fr8, fr7, fr8
17236 + fnmsc.s fr8, fr8, fr7
17237 + .global fmul_s
17238 +fmul_s:
17239 + fmul.s fr15, fr15, fr15
17240 + fmul.s fr0, fr0, fr0
17241 + fmul.s fr0, fr15, fr15
17242 + fmul.s fr15, fr0, fr15
17243 + fmul.s fr15, fr15, fr0
17244 + fmul.s fr7, fr8, fr8
17245 + fmul.s fr8, fr7, fr8
17246 + fmul.s fr8, fr8, fr7
17247 + .global fnmul_s
17248 +fnmul_s:
17249 + fnmul.s fr15, fr15, fr15
17250 + fnmul.s fr0, fr0, fr0
17251 + fnmul.s fr0, fr15, fr15
17252 + fnmul.s fr15, fr0, fr15
17253 + fnmul.s fr15, fr15, fr0
17254 + fnmul.s fr7, fr8, fr8
17255 + fnmul.s fr8, fr7, fr8
17256 + fnmul.s fr8, fr8, fr7
17257 + .global fneg_s
17258 +fneg_s:
17259 + fneg.s fr15, fr15
17260 + fneg.s fr0, fr0
17261 + fneg.s fr0, fr15
17262 + fneg.s fr15, fr0
17263 + fneg.s fr7, fr8
17264 + fneg.s fr8, fr7
17265 + .global fabs_s
17266 +fabs_s:
17267 + fabs.s fr15, fr15
17268 + fabs.s fr0, fr0
17269 + fabs.s fr0, fr15
17270 + fabs.s fr15, fr0
17271 + fabs.s fr7, fr8
17272 + fabs.s fr8, fr7
17273 + .global fcmp_s
17274 +fcmp_s:
17275 + fcmp.s fr15, fr15
17276 + fcmp.s fr0, fr0
17277 + fcmp.s fr0, fr15
17278 + fcmp.s fr15, fr0
17279 + fcmp.s fr7, fr8
17280 + fcmp.s fr8, fr7
17281 + .global fadd_d
17282 +fadd_d:
17283 + fadd.d fr14, fr14, fr14
17284 + fadd.d fr0, fr0, fr0
17285 + fadd.d fr0, fr14, fr14
17286 + fadd.d fr14, fr0, fr14
17287 + fadd.d fr14, fr14, fr0
17288 + fadd.d fr6, fr8, fr8
17289 + fadd.d fr8, fr6, fr8
17290 + fadd.d fr8, fr8, fr6
17291 + .global fsub_d
17292 +fsub_d:
17293 + fsub.d fr14, fr14, fr14
17294 + fsub.d fr0, fr0, fr0
17295 + fsub.d fr0, fr14, fr14
17296 + fsub.d fr14, fr0, fr14
17297 + fsub.d fr14, fr14, fr0
17298 + fsub.d fr6, fr8, fr8
17299 + fsub.d fr8, fr6, fr8
17300 + fsub.d fr8, fr8, fr6
17301 + .global fmac_d
17302 +fmac_d:
17303 + fmac.d fr14, fr14, fr14
17304 + fmac.d fr0, fr0, fr0
17305 + fmac.d fr0, fr14, fr14
17306 + fmac.d fr14, fr0, fr14
17307 + fmac.d fr14, fr14, fr0
17308 + fmac.d fr6, fr8, fr8
17309 + fmac.d fr8, fr6, fr8
17310 + fmac.d fr8, fr8, fr6
17311 + .global fnmac_d
17312 +fnmac_d:
17313 + fnmac.d fr14, fr14, fr14
17314 + fnmac.d fr0, fr0, fr0
17315 + fnmac.d fr0, fr14, fr14
17316 + fnmac.d fr14, fr0, fr14
17317 + fnmac.d fr14, fr14, fr0
17318 + fnmac.d fr6, fr8, fr8
17319 + fnmac.d fr8, fr6, fr8
17320 + fnmac.d fr8, fr8, fr6
17321 + .global fmsc_d
17322 +fmsc_d:
17323 + fmsc.d fr14, fr14, fr14
17324 + fmsc.d fr0, fr0, fr0
17325 + fmsc.d fr0, fr14, fr14
17326 + fmsc.d fr14, fr0, fr14
17327 + fmsc.d fr14, fr14, fr0
17328 + fmsc.d fr6, fr8, fr8
17329 + fmsc.d fr8, fr6, fr8
17330 + fmsc.d fr8, fr8, fr6
17331 + .global fnmsc_d
17332 +fnmsc_d:
17333 + fnmsc.d fr14, fr14, fr14
17334 + fnmsc.d fr0, fr0, fr0
17335 + fnmsc.d fr0, fr14, fr14
17336 + fnmsc.d fr14, fr0, fr14
17337 + fnmsc.d fr14, fr14, fr0
17338 + fnmsc.d fr6, fr8, fr8
17339 + fnmsc.d fr8, fr6, fr8
17340 + fnmsc.d fr8, fr8, fr6
17341 + .global fmul_d
17342 +fmul_d:
17343 + fmul.d fr14, fr14, fr14
17344 + fmul.d fr0, fr0, fr0
17345 + fmul.d fr0, fr14, fr14
17346 + fmul.d fr14, fr0, fr14
17347 + fmul.d fr14, fr14, fr0
17348 + fmul.d fr6, fr8, fr8
17349 + fmul.d fr8, fr6, fr8
17350 + fmul.d fr8, fr8, fr6
17351 + .global fnmul_d
17352 +fnmul_d:
17353 + fnmul.d fr14, fr14, fr14
17354 + fnmul.d fr0, fr0, fr0
17355 + fnmul.d fr0, fr14, fr14
17356 + fnmul.d fr14, fr0, fr14
17357 + fnmul.d fr14, fr14, fr0
17358 + fnmul.d fr6, fr8, fr8
17359 + fnmul.d fr8, fr6, fr8
17360 + fnmul.d fr8, fr8, fr6
17361 + .global fneg_d
17362 +fneg_d:
17363 + fneg.d fr14, fr14
17364 + fneg.d fr0, fr0
17365 + fneg.d fr0, fr14
17366 + fneg.d fr14, fr0
17367 + fneg.d fr6, fr8
17368 + fneg.d fr8, fr6
17369 + .global fabs_d
17370 +fabs_d:
17371 + fabs.d fr14, fr14
17372 + fabs.d fr0, fr0
17373 + fabs.d fr0, fr14
17374 + fabs.d fr14, fr0
17375 + fabs.d fr6, fr8
17376 + fabs.d fr8, fr6
17377 + .global fcmp_d
17378 +fcmp_d:
17379 + fcmp.d fr14, fr14
17380 + fcmp.d fr0, fr0
17381 + fcmp.d fr0, fr14
17382 + fcmp.d fr14, fr0
17383 + fcmp.d fr6, fr8
17384 + fcmp.d fr8, fr6
17385 + .global fmov_s
17386 +fmov_s:
17387 + fmov.s fr15, fr15
17388 + fmov.s fr0, fr0
17389 + fmov.s fr15, fr0
17390 + fmov.s fr0, fr15
17391 + fmov.s fr8, fr7
17392 + fmov.s fr7, fr8
17393 + fmov.s pc, fr15
17394 + fmov.s r0, fr0
17395 + fmov.s pc, fr0
17396 + fmov.s r0, fr15
17397 + fmov.s r8, fr7
17398 + fmov.s r7, fr8
17399 + fmov.s fr15, pc
17400 + fmov.s fr0, r0
17401 + fmov.s fr15, r0
17402 + fmov.s fr0, pc
17403 + fmov.s fr8, r7
17404 + fmov.s fr7, r8
17405 + .global fmov_d
17406 +fmov_d:
17407 + fmov.d fr14, fr14
17408 + fmov.d fr0, fr0
17409 + fmov.d fr14, fr0
17410 + fmov.d fr0, fr14
17411 + fmov.d fr8, fr6
17412 + fmov.d fr6, fr8
17413 + fmov.d lr, fr14
17414 + fmov.d r0, fr0
17415 + fmov.d lr, fr0
17416 + fmov.d r0, fr14
17417 + fmov.d r8, fr6
17418 + fmov.d r6, fr8
17419 + fmov.d fr14, lr
17420 + fmov.d fr0, r0
17421 + fmov.d fr14, r0
17422 + fmov.d fr0, lr
17423 + fmov.d fr8, r6
17424 + fmov.d fr6, r8
17425 + .global fcasts_d
17426 +fcasts_d:
17427 + fcasts.d fr15, fr14
17428 + fcasts.d fr0, fr0
17429 + fcasts.d fr15, fr0
17430 + fcasts.d fr0, fr14
17431 + fcasts.d fr8, fr6
17432 + fcasts.d fr7, fr8
17433 + .global fcastd_s
17434 +fcastd_s:
17435 + fcastd.s fr14, fr15
17436 + fcastd.s fr0, fr0
17437 + fcastd.s fr14, fr0
17438 + fcastd.s fr0, fr15
17439 + fcastd.s fr8, fr7
17440 + fcastd.s fr6, fr8
17441 --- /dev/null
17442 +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.d
17443 @@ -0,0 +1,47 @@
17444 +#as:
17445 +#objdump: -dr
17446 +#name: hwrd-lwrd
17447 +
17448 +.*: +file format .*
17449 +
17450 +Disassembly of section \.text:
17451 +
17452 +00000000 <test_hwrd>:
17453 + 0: e0 60 87 65 mov r0,34661
17454 + 4: e0 60 12 34 mov r0,4660
17455 + 8: e0 60 00 00 mov r0,0
17456 + 8: R_AVR32_HI16 \.text\+0x60
17457 + c: e0 60 00 00 mov r0,0
17458 + c: R_AVR32_HI16 extsym1
17459 + 10: ea 10 87 65 orh r0,0x8765
17460 + 14: ea 10 12 34 orh r0,0x1234
17461 + 18: ea 10 00 00 orh r0,0x0
17462 + 18: R_AVR32_HI16 \.text\+0x60
17463 + 1c: ea 10 00 00 orh r0,0x0
17464 + 1c: R_AVR32_HI16 extsym1
17465 + 20: e4 10 87 65 andh r0,0x8765
17466 + 24: e4 10 12 34 andh r0,0x1234
17467 + 28: e4 10 00 00 andh r0,0x0
17468 + 28: R_AVR32_HI16 \.text\+0x60
17469 + 2c: e4 10 00 00 andh r0,0x0
17470 + 2c: R_AVR32_HI16 extsym1
17471 +
17472 +00000030 <test_lwrd>:
17473 + 30: e0 60 43 21 mov r0,17185
17474 + 34: e0 60 56 78 mov r0,22136
17475 + 38: e0 60 00 00 mov r0,0
17476 + 38: R_AVR32_LO16 \.text\+0x60
17477 + 3c: e0 60 00 00 mov r0,0
17478 + 3c: R_AVR32_LO16 extsym1
17479 + 40: e8 10 43 21 orl r0,0x4321
17480 + 44: e8 10 56 78 orl r0,0x5678
17481 + 48: e8 10 00 00 orl r0,0x0
17482 + 48: R_AVR32_LO16 \.text\+0x60
17483 + 4c: e8 10 00 00 orl r0,0x0
17484 + 4c: R_AVR32_LO16 extsym1
17485 + 50: e0 10 43 21 andl r0,0x4321
17486 + 54: e0 10 56 78 andl r0,0x5678
17487 + 58: e0 10 00 00 andl r0,0x0
17488 + 58: R_AVR32_LO16 \.text\+0x60
17489 + 5c: e0 10 00 00 andl r0,0x0
17490 + 5c: R_AVR32_LO16 extsym1
17491 --- /dev/null
17492 +++ b/gas/testsuite/gas/avr32/hwrd-lwrd.s
17493 @@ -0,0 +1,39 @@
17494 +
17495 + .equ sym1, 0x12345678
17496 +
17497 + .text
17498 + .global test_hwrd
17499 +test_hwrd:
17500 + mov r0, hi(0x87654321)
17501 + mov r0, hi(sym1)
17502 + mov r0, hi(sym2)
17503 + mov r0, hi(extsym1)
17504 +
17505 + orh r0, hi(0x87654321)
17506 + orh r0, hi(sym1)
17507 + orh r0, hi(sym2)
17508 + orh r0, hi(extsym1)
17509 +
17510 + andh r0, hi(0x87654321)
17511 + andh r0, hi(sym1)
17512 + andh r0, hi(sym2)
17513 + andh r0, hi(extsym1)
17514 +
17515 + .global test_lwrd
17516 +test_lwrd:
17517 + mov r0, lo(0x87654321)
17518 + mov r0, lo(sym1)
17519 + mov r0, lo(sym2)
17520 + mov r0, lo(extsym1)
17521 +
17522 + orl r0, lo(0x87654321)
17523 + orl r0, lo(sym1)
17524 + orl r0, lo(sym2)
17525 + orl r0, lo(extsym1)
17526 +
17527 + andl r0, lo(0x87654321)
17528 + andl r0, lo(sym1)
17529 + andl r0, lo(sym2)
17530 + andl r0, lo(extsym1)
17531 +
17532 +sym2:
17533 --- /dev/null
17534 +++ b/gas/testsuite/gas/avr32/jmptable.d
17535 @@ -0,0 +1,20 @@
17536 +#source: jmptable.s
17537 +#as:
17538 +#objdump: -dr
17539 +#name: jmptable
17540 +
17541 +.*: +file format .*
17542 +
17543 +Disassembly of section \.text:
17544 +
17545 +00000000 <jmptable_test>:
17546 + 0: fe c8 ff f4 sub r8,pc,-12
17547 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17548 + 8: d7 03 nop
17549 + a: 00 00 add r0,r0
17550 + c: c0 38 rjmp 12 <jmptable_test\+0x12>
17551 + e: c0 38 rjmp 14 <jmptable_test\+0x14>
17552 + 10: c0 38 rjmp 16 <jmptable_test\+0x16>
17553 + 12: d7 03 nop
17554 + 14: d7 03 nop
17555 + 16: d7 03 nop
17556 --- /dev/null
17557 +++ b/gas/testsuite/gas/avr32/jmptable_linkrelax.d
17558 @@ -0,0 +1,25 @@
17559 +#source: jmptable.s
17560 +#as: --linkrelax
17561 +#objdump: -dr
17562 +#name: jmptable_linkrelax
17563 +
17564 +.*: +file format .*
17565 +
17566 +Disassembly of section \.text:
17567 +
17568 +00000000 <jmptable_test>:
17569 + 0: fe c8 00 00 sub r8,pc,0
17570 + 0: R_AVR32_16N_PCREL \.text\+0xc
17571 + 4: f0 00 00 2f add pc,r8,r0<<0x2
17572 + 8: d7 03 nop
17573 + a: 00 00 add r0,r0
17574 + a: R_AVR32_ALIGN \*ABS\*\+0x2
17575 + c: c0 08 rjmp c <jmptable_test\+0xc>
17576 + c: R_AVR32_11H_PCREL \.text\+0x12
17577 + e: c0 08 rjmp e <jmptable_test\+0xe>
17578 + e: R_AVR32_11H_PCREL \.text\+0x14
17579 + 10: c0 08 rjmp 10 <jmptable_test\+0x10>
17580 + 10: R_AVR32_11H_PCREL \.text\+0x16
17581 + 12: d7 03 nop
17582 + 14: d7 03 nop
17583 + 16: d7 03 nop
17584 --- /dev/null
17585 +++ b/gas/testsuite/gas/avr32/jmptable.s
17586 @@ -0,0 +1,14 @@
17587 +
17588 + .text
17589 + .global jmptable_test
17590 +jmptable_test:
17591 + sub r8, pc, -(.L1 - .)
17592 + add pc, r8, r0 << 2
17593 + nop
17594 + .align 2
17595 +.L1: rjmp 1f
17596 + rjmp 2f
17597 + rjmp 3f
17598 +1: nop
17599 +2: nop
17600 +3: nop
17601 --- /dev/null
17602 +++ b/gas/testsuite/gas/avr32/lda_nopic.d
17603 @@ -0,0 +1,32 @@
17604 +#source: lda.s
17605 +#as:
17606 +#objdump: -dr
17607 +#name: lda_nopic
17608 +
17609 +.*: +file format .*
17610 +
17611 +Disassembly of section \.text:
17612 +
17613 +00000000 <lda_test>:
17614 + 0: f2 c8 00 00 sub r8,r9,0
17615 +
17616 +00000004 <far_negative>:
17617 + 4: f6 ca 00 00 sub r10,r11,0
17618 + ...
17619 + 8000: fe c0 7f fc sub r0,pc,32764
17620 + 8004: 48 31 lddpc r1,8010 <far_negative\+0x800c>
17621 + 8006: 48 42 lddpc r2,8014 <far_negative\+0x8010>
17622 + 8008: 48 43 lddpc r3,8018 <far_negative\+0x8014>
17623 + 800a: 48 54 lddpc r4,801c <far_negative\+0x8018>
17624 + 800c: fe c5 80 04 sub r5,pc,-32764
17625 + ...
17626 + 8010: R_AVR32_32_CPENT \.text
17627 + 8014: R_AVR32_32_CPENT \.data
17628 + 8018: R_AVR32_32_CPENT undefined
17629 + 801c: R_AVR32_32_CPENT \.text\+0x1001c
17630 +
17631 +00010008 <far_positive>:
17632 + 10008: fa cc 00 00 sub r12,sp,0
17633 + ...
17634 +0001001c <toofar_positive>:
17635 + 1001c: fe ce 00 00 sub lr,pc,0
17636 --- /dev/null
17637 +++ b/gas/testsuite/gas/avr32/lda_nopic_linkrelax.d
17638 @@ -0,0 +1,41 @@
17639 +#source: lda.s
17640 +#as: --linkrelax
17641 +#objdump: -dr
17642 +#name: lda_nopic_linkrelax
17643 +
17644 +.*: +file format .*
17645 +
17646 +Disassembly of section \.text:
17647 +
17648 +00000000 <lda_test>:
17649 + 0: f2 c8 00 00 sub r8,r9,0
17650 +
17651 +00000004 <far_negative>:
17652 + 4: f6 ca 00 00 sub r10,r11,0
17653 + \.\.\.
17654 + 8000: 48 00 lddpc r0,8000 <far_negative\+0x7ffc>
17655 + 8000: R_AVR32_9W_CP \.text\+0x800c
17656 + 8002: 48 01 lddpc r1,8000 <far_negative\+0x7ffc>
17657 + 8002: R_AVR32_9W_CP \.text\+0x8010
17658 + 8004: 48 02 lddpc r2,8004 <far_negative\+0x8000>
17659 + 8004: R_AVR32_9W_CP \.text\+0x8014
17660 + 8006: 48 03 lddpc r3,8004 <far_negative\+0x8000>
17661 + 8006: R_AVR32_9W_CP \.text\+0x8018
17662 + 8008: 48 04 lddpc r4,8008 <far_negative\+0x8004>
17663 + 8008: R_AVR32_9W_CP \.text\+0x801c
17664 + 800a: 48 05 lddpc r5,8008 <far_negative\+0x8004>
17665 + 800a: R_AVR32_9W_CP \.text\+0x8020
17666 + \.\.\.
17667 + 800c: R_AVR32_ALIGN \*ABS\*\+0x2
17668 + 800c: R_AVR32_32_CPENT \.text\+0x4
17669 + 8010: R_AVR32_32_CPENT \.text
17670 + 8014: R_AVR32_32_CPENT \.data
17671 + 8018: R_AVR32_32_CPENT undefined
17672 + 801c: R_AVR32_32_CPENT \.text\+0x10020
17673 + 8020: R_AVR32_32_CPENT \.text\+0x1000c
17674 +
17675 +0001000c <far_positive>:
17676 + 1000c: fa cc 00 00 sub r12,sp,0
17677 + \.\.\.
17678 +00010020 <toofar_positive>:
17679 + 10020: fe ce 00 00 sub lr,pc,0
17680 --- /dev/null
17681 +++ b/gas/testsuite/gas/avr32/lda_pic.d
17682 @@ -0,0 +1,32 @@
17683 +#source: lda.s
17684 +#as: --pic
17685 +#objdump: -dr
17686 +#name: lda_pic
17687 +
17688 +.*: +file format .*
17689 +
17690 +Disassembly of section \.text:
17691 +
17692 +00000000 <lda_test>:
17693 + 0: f2 c8 00 00 sub r8,r9,0
17694 +
17695 +00000004 <far_negative>:
17696 + 4: f6 ca 00 00 sub r10,r11,0
17697 + ...
17698 + 8000: fe c0 7f fc sub r0,pc,32764
17699 + 8004: ec f1 00 00 ld.w r1,r6\[0\]
17700 + 8004: R_AVR32_GOT16S toofar_negative
17701 + 8008: ec f2 00 00 ld.w r2,r6\[0\]
17702 + 8008: R_AVR32_GOT16S different_section
17703 + 800c: ec f3 00 00 ld.w r3,r6\[0\]
17704 + 800c: R_AVR32_GOT16S undefined
17705 + 8010: ec f4 00 00 ld.w r4,r6\[0\]
17706 + 8010: R_AVR32_GOT16S toofar_positive
17707 + 8014: fe c5 80 14 sub r5,pc,-32748
17708 + ...
17709 +
17710 +00010000 <far_positive>:
17711 + 10000: fa cc 00 00 sub r12,sp,0
17712 + ...
17713 +00010014 <toofar_positive>:
17714 + 10014: fe ce 00 00 sub lr,pc,0
17715 --- /dev/null
17716 +++ b/gas/testsuite/gas/avr32/lda_pic_linkrelax.d
17717 @@ -0,0 +1,40 @@
17718 +#source: lda.s
17719 +#as: --pic --linkrelax
17720 +#objdump: -dr
17721 +#name: lda_pic_linkrelax
17722 +
17723 +.*: +file format .*
17724 +
17725 +Disassembly of section \.text:
17726 +
17727 +00000000 <lda_test>:
17728 + 0: f2 c8 00 00 sub r8,r9,0
17729 +
17730 +00000004 <far_negative>:
17731 + 4: f6 ca 00 00 sub r10,r11,0
17732 + ...
17733 + 8000: e0 60 00 00 mov r0,0
17734 + 8000: R_AVR32_LDA_GOT far_negative
17735 + 8004: ec 00 03 20 ld\.w r0,r6\[r0<<0x2\]
17736 + 8008: e0 61 00 00 mov r1,0
17737 + 8008: R_AVR32_LDA_GOT toofar_negative
17738 + 800c: ec 01 03 21 ld\.w r1,r6\[r1<<0x2\]
17739 + 8010: e0 62 00 00 mov r2,0
17740 + 8010: R_AVR32_LDA_GOT different_section
17741 + 8014: ec 02 03 22 ld\.w r2,r6\[r2<<0x2\]
17742 + 8018: e0 63 00 00 mov r3,0
17743 + 8018: R_AVR32_LDA_GOT undefined
17744 + 801c: ec 03 03 23 ld\.w r3,r6\[r3<<0x2\]
17745 + 8020: e0 64 00 00 mov r4,0
17746 + 8020: R_AVR32_LDA_GOT toofar_positive
17747 + 8024: ec 04 03 24 ld\.w r4,r6\[r4<<0x2\]
17748 + 8028: e0 65 00 00 mov r5,0
17749 + 8028: R_AVR32_LDA_GOT far_positive
17750 + 802c: ec 05 03 25 ld\.w r5,r6\[r5<<0x2\]
17751 + ...
17752 +
17753 +00010018 <far_positive>:
17754 + 10018: fa cc 00 00 sub r12,sp,0
17755 + ...
17756 +0001002c <toofar_positive>:
17757 + 1002c: fe ce 00 00 sub lr,pc,0
17758 --- /dev/null
17759 +++ b/gas/testsuite/gas/avr32/lda.s
17760 @@ -0,0 +1,30 @@
17761 +
17762 + .text
17763 + .global lda_test
17764 +lda_test:
17765 +toofar_negative:
17766 + sub r8, r9, 0
17767 +far_negative:
17768 + sub r10, r11, 0
17769 +
17770 + .fill 32760, 1, 0x00
17771 +
17772 + lda.w r0, far_negative
17773 + lda.w r1, toofar_negative
17774 + lda.w r2, different_section
17775 + lda.w r3, undefined
17776 + lda.w r4, toofar_positive
17777 + lda.w r5, far_positive
17778 +
17779 + .cpool
17780 +
17781 + .fill 32744, 1, 0x00
17782 +far_positive:
17783 + sub r12, sp, 0
17784 + .fill 16, 1, 0x00
17785 +toofar_positive:
17786 + sub lr, pc, 0
17787 +
17788 + .data
17789 +different_section:
17790 + .long 0x12345678
17791 --- /dev/null
17792 +++ b/gas/testsuite/gas/avr32/pcrel.d
17793 @@ -0,0 +1,64 @@
17794 +#as:
17795 +#objdump: -dr
17796 +#name: pcrel
17797 +
17798 +.*: +file format .*
17799 +
17800 +Disassembly of section \.text:
17801 +
17802 +00000000 <test_rjmp>:
17803 + 0: d7 03 nop
17804 + 2: c0 28 rjmp 6 <test_rjmp\+0x6>
17805 + 4: d7 03 nop
17806 + 6: e0 8f 00 00 bral 6 <test_rjmp\+0x6>
17807 + 6: R_AVR32_22H_PCREL extsym10
17808 +
17809 +0000000a <test_rcall>:
17810 + a: d7 03 nop
17811 +0000000c <test_rcall2>:
17812 + c: c0 2c rcall 10 <test_rcall2\+0x4>
17813 + e: d7 03 nop
17814 + 10: e0 a0 00 00 rcall 10 <test_rcall2\+0x4>
17815 + 10: R_AVR32_22H_PCREL extsym21
17816 +
17817 +00000014 <test_branch>:
17818 + 14: c0 31 brne 1a <test_branch\+0x6>
17819 + 16: e0 8f 00 00 bral 16 <test_branch\+0x2>
17820 + 16: R_AVR32_22H_PCREL test_branch
17821 + 1a: e0 80 00 00 breq 1a <test_branch\+0x6>
17822 + 1a: R_AVR32_22H_PCREL extsym21
17823 +
17824 +0000001e <test_lddpc>:
17825 + 1e: 48 30 lddpc r0,28 <sym1>
17826 + 20: 48 20 lddpc r0,28 <sym1>
17827 + 22: fe f0 00 00 ld.w r0,pc\[0\]
17828 + 22: R_AVR32_16B_PCREL extsym16
17829 + \.\.\.
17830 +
17831 +00000028 <sym1>:
17832 + 28: d7 03 nop
17833 + 2a: d7 03 nop
17834 +
17835 +0000002c <test_local>:
17836 + 2c: 48 20 lddpc r0,34 <test_local\+0x8>
17837 + 2e: 48 30 lddpc r0,38 <test_local\+0xc>
17838 + 30: 48 20 lddpc r0,38 <test_local\+0xc>
17839 + 32: 00 00 add r0,r0
17840 + 34: d7 03 nop
17841 + 36: d7 03 nop
17842 + 38: d7 03 nop
17843 + 3a: d7 03 nop
17844 +
17845 +Disassembly of section \.text\.init:
17846 +
17847 +00000000 <test_inter_section>:
17848 + 0: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17849 + 0: R_AVR32_22H_PCREL test_rcall
17850 + 4: d7 03 nop
17851 + 6: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17852 + 6: R_AVR32_22H_PCREL test_rcall
17853 + a: e0 a0 .. .. rcall [0-9a-z]+ <.*>
17854 + a: R_AVR32_22H_PCREL \.text\+0xc
17855 + e: d7 03 nop
17856 + 10: e0 a0 .. .. rcall [0-9a-f]+ <.*>
17857 + 10: R_AVR32_22H_PCREL \.text\+0xc
17858 --- /dev/null
17859 +++ b/gas/testsuite/gas/avr32/pcrel.s
17860 @@ -0,0 +1,57 @@
17861 +
17862 + .text
17863 + .global test_rjmp
17864 +test_rjmp:
17865 + nop
17866 + rjmp 0f
17867 + nop
17868 +0: rjmp extsym10
17869 +
17870 + .global test_rcall
17871 +test_rcall:
17872 + nop
17873 +test_rcall2:
17874 + rcall 0f
17875 + nop
17876 +0: rcall extsym21
17877 +
17878 + .global test_branch
17879 +test_branch:
17880 + brne 0f
17881 + /* This will generate a reloc since test_branch is global */
17882 + bral test_branch
17883 +0: breq extsym21
17884 +
17885 + .global test_lddpc
17886 +test_lddpc:
17887 + lddpc r0,sym1
17888 + lddpc r0,sym1
17889 + lddpc r0,extsym16
17890 +
17891 + .align 2
17892 +sym1: nop
17893 + nop
17894 +
17895 + .global test_local
17896 +test_local:
17897 + lddpc r0, .LC1
17898 + lddpc r0, .LC2
17899 + lddpc r0, .LC1 + 0x4
17900 +
17901 + .align 2
17902 +.LC1:
17903 + nop
17904 + nop
17905 +.LC2:
17906 + nop
17907 + nop
17908 +
17909 + .section .text.init,"ax"
17910 + .global test_inter_section
17911 +test_inter_section:
17912 + rcall test_rcall
17913 + nop
17914 + rcall test_rcall
17915 + rcall test_rcall2
17916 + nop
17917 + rcall test_rcall2
17918 --- /dev/null
17919 +++ b/gas/testsuite/gas/avr32/pico.d
17920 @@ -0,0 +1,149 @@
17921 +#as:
17922 +#objdump: -dr
17923 +#name: pico
17924 +
17925 +.*: +file format .*
17926 +
17927 +Disassembly of section \.text:
17928 +
17929 +[0-9a-f]* <picosvmac>:
17930 + *[0-9a-f]*: e1 a6 20 00 cop cp1,cr0,cr0,cr0,0xc
17931 + *[0-9a-f]*: e1 a7 2b bb cop cp1,cr11,cr11,cr11,0xe
17932 + *[0-9a-f]*: e1 a6 3a 05 cop cp1,cr10,cr0,cr5,0xd
17933 + *[0-9a-f]*: e1 a7 36 90 cop cp1,cr6,cr9,cr0,0xf
17934 +
17935 +[0-9a-f]* <picosvmul>:
17936 + *[0-9a-f]*: e1 a4 20 00 cop cp1,cr0,cr0,cr0,0x8
17937 + *[0-9a-f]*: e1 a5 2b bb cop cp1,cr11,cr11,cr11,0xa
17938 + *[0-9a-f]*: e1 a4 3a 05 cop cp1,cr10,cr0,cr5,0x9
17939 + *[0-9a-f]*: e1 a5 36 90 cop cp1,cr6,cr9,cr0,0xb
17940 +
17941 +[0-9a-f]* <picovmac>:
17942 + *[0-9a-f]*: e1 a2 20 00 cop cp1,cr0,cr0,cr0,0x4
17943 + *[0-9a-f]*: e1 a3 2b bb cop cp1,cr11,cr11,cr11,0x6
17944 + *[0-9a-f]*: e1 a2 3a 05 cop cp1,cr10,cr0,cr5,0x5
17945 + *[0-9a-f]*: e1 a3 36 90 cop cp1,cr6,cr9,cr0,0x7
17946 +
17947 +[0-9a-f]* <picovmul>:
17948 + *[0-9a-f]*: e1 a0 20 00 cop cp1,cr0,cr0,cr0,0x0
17949 + *[0-9a-f]*: e1 a1 2b bb cop cp1,cr11,cr11,cr11,0x2
17950 + *[0-9a-f]*: e1 a0 3a 05 cop cp1,cr10,cr0,cr5,0x1
17951 + *[0-9a-f]*: e1 a1 36 90 cop cp1,cr6,cr9,cr0,0x3
17952 +
17953 +[0-9a-f]* <picold_d>:
17954 + *[0-9a-f]*: e9 af 3e ff ldc\.d cp1,cr14,pc\[0x3fc\]
17955 + *[0-9a-f]*: e9 a0 30 ff ldc\.d cp1,cr0,r0\[0x3fc\]
17956 + *[0-9a-f]*: e9 a0 30 00 ldc\.d cp1,cr0,r0\[0x0\]
17957 + *[0-9a-f]*: ef a8 26 50 ldc\.d cp1,cr6,--r8
17958 + *[0-9a-f]*: ef a7 28 50 ldc\.d cp1,cr8,--r7
17959 + *[0-9a-f]*: ef aa 32 65 ldc\.d cp1,cr2,r10\[r5<<0x2\]
17960 + *[0-9a-f]*: ef a3 3c 46 ldc\.d cp1,cr12,r3\[r6\]
17961 +
17962 +[0-9a-f]* <picold_w>:
17963 + *[0-9a-f]*: e9 af 2f ff ldc\.w cp1,cr15,pc\[0x3fc\]
17964 + *[0-9a-f]*: e9 a0 20 ff ldc\.w cp1,cr0,r0\[0x3fc\]
17965 + *[0-9a-f]*: e9 a0 20 00 ldc\.w cp1,cr0,r0\[0x0\]
17966 + *[0-9a-f]*: ef a8 27 40 ldc\.w cp1,cr7,--r8
17967 + *[0-9a-f]*: ef a7 28 40 ldc\.w cp1,cr8,--r7
17968 + *[0-9a-f]*: ef aa 31 25 ldc\.w cp1,cr1,r10\[r5<<0x2\]
17969 + *[0-9a-f]*: ef a3 3d 06 ldc\.w cp1,cr13,r3\[r6\]
17970 +
17971 +[0-9a-f]* <picoldm_d>:
17972 + *[0-9a-f]*: ed af 24 ff ldcm\.d cp1,pc,cr0-cr15
17973 + *[0-9a-f]*: ed a0 24 01 ldcm\.d cp1,r0,cr0-cr1
17974 + *[0-9a-f]*: ed a7 24 80 ldcm\.d cp1,r7,cr14-cr15
17975 + *[0-9a-f]*: ed a8 24 7f ldcm\.d cp1,r8,cr0-cr13
17976 +
17977 +[0-9a-f]* <picoldm_d_pu>:
17978 + *[0-9a-f]*: ed af 34 ff ldcm\.d cp1,pc\+\+,cr0-cr15
17979 + *[0-9a-f]*: ed a0 34 01 ldcm\.d cp1,r0\+\+,cr0-cr1
17980 + *[0-9a-f]*: ed a7 34 80 ldcm\.d cp1,r7\+\+,cr14-cr15
17981 + *[0-9a-f]*: ed a8 34 7f ldcm\.d cp1,r8\+\+,cr0-cr13
17982 +
17983 +[0-9a-f]* <picoldm_w>:
17984 + *[0-9a-f]*: ed af 20 ff ldcm\.w cp1,pc,cr0-cr7
17985 + *[0-9a-f]*: ed a0 20 01 ldcm\.w cp1,r0,cr0
17986 + *[0-9a-f]*: ed a7 20 80 ldcm\.w cp1,r7,cr7
17987 + *[0-9a-f]*: ed a8 20 7f ldcm\.w cp1,r8,cr0-cr6
17988 + *[0-9a-f]*: ed af 21 ff ldcm\.w cp1,pc,cr8-cr15
17989 + *[0-9a-f]*: ed a0 21 01 ldcm\.w cp1,r0,cr8
17990 + *[0-9a-f]*: ed a7 21 80 ldcm\.w cp1,r7,cr15
17991 + *[0-9a-f]*: ed a8 21 7f ldcm\.w cp1,r8,cr8-cr14
17992 +
17993 +[0-9a-f]* <picoldm_w_pu>:
17994 + *[0-9a-f]*: ed af 30 ff ldcm\.w cp1,pc\+\+,cr0-cr7
17995 + *[0-9a-f]*: ed a0 30 01 ldcm\.w cp1,r0\+\+,cr0
17996 + *[0-9a-f]*: ed a7 30 80 ldcm\.w cp1,r7\+\+,cr7
17997 + *[0-9a-f]*: ed a8 30 7f ldcm\.w cp1,r8\+\+,cr0-cr6
17998 + *[0-9a-f]*: ed af 31 ff ldcm\.w cp1,pc\+\+,cr8-cr15
17999 + *[0-9a-f]*: ed a0 31 01 ldcm\.w cp1,r0\+\+,cr8
18000 + *[0-9a-f]*: ed a7 31 80 ldcm\.w cp1,r7\+\+,cr15
18001 + *[0-9a-f]*: ed a8 31 7f ldcm\.w cp1,r8\+\+,cr8-cr14
18002 +
18003 +[0-9a-f]* <picomv_d>:
18004 + *[0-9a-f]*: ef ae 2e 30 mvrc\.d cp1,cr14,lr
18005 + *[0-9a-f]*: ef a0 20 30 mvrc\.d cp1,cr0,r0
18006 + *[0-9a-f]*: ef a8 26 30 mvrc\.d cp1,cr6,r8
18007 + *[0-9a-f]*: ef a6 28 30 mvrc\.d cp1,cr8,r6
18008 + *[0-9a-f]*: ef ae 2e 10 mvcr\.d cp1,lr,cr14
18009 + *[0-9a-f]*: ef a0 20 10 mvcr\.d cp1,r0,cr0
18010 + *[0-9a-f]*: ef a8 26 10 mvcr\.d cp1,r8,cr6
18011 + *[0-9a-f]*: ef a6 28 10 mvcr\.d cp1,r6,cr8
18012 +
18013 +[0-9a-f]* <picomv_w>:
18014 + *[0-9a-f]*: ef af 2f 20 mvrc\.w cp1,cr15,pc
18015 + *[0-9a-f]*: ef a0 20 20 mvrc\.w cp1,cr0,r0
18016 + *[0-9a-f]*: ef a8 27 20 mvrc\.w cp1,cr7,r8
18017 + *[0-9a-f]*: ef a7 28 20 mvrc\.w cp1,cr8,r7
18018 + *[0-9a-f]*: ef af 2f 00 mvcr\.w cp1,pc,cr15
18019 + *[0-9a-f]*: ef a0 20 00 mvcr\.w cp1,r0,cr0
18020 + *[0-9a-f]*: ef a8 27 00 mvcr\.w cp1,r8,cr7
18021 + *[0-9a-f]*: ef a7 28 00 mvcr\.w cp1,r7,cr8
18022 +
18023 +[0-9a-f]* <picost_d>:
18024 + *[0-9a-f]*: eb af 3e ff stc\.d cp1,pc\[0x3fc\],cr14
18025 + *[0-9a-f]*: eb a0 30 00 stc\.d cp1,r0\[0x0\],cr0
18026 + *[0-9a-f]*: ef a8 26 70 stc\.d cp1,r8\+\+,cr6
18027 + *[0-9a-f]*: ef a7 28 70 stc\.d cp1,r7\+\+,cr8
18028 + *[0-9a-f]*: ef aa 32 e5 stc\.d cp1,r10\[r5<<0x2\],cr2
18029 + *[0-9a-f]*: ef a3 3c c6 stc\.d cp1,r3\[r6\],cr12
18030 +
18031 +[0-9a-f]* <picost_w>:
18032 + *[0-9a-f]*: eb af 2f ff stc\.w cp1,pc\[0x3fc\],cr15
18033 + *[0-9a-f]*: eb a0 20 00 stc\.w cp1,r0\[0x0\],cr0
18034 + *[0-9a-f]*: ef a8 27 60 stc\.w cp1,r8\+\+,cr7
18035 + *[0-9a-f]*: ef a7 28 60 stc\.w cp1,r7\+\+,cr8
18036 + *[0-9a-f]*: ef aa 31 a5 stc\.w cp1,r10\[r5<<0x2\],cr1
18037 + *[0-9a-f]*: ef a3 3d 86 stc\.w cp1,r3\[r6\],cr13
18038 +
18039 +[0-9a-f]* <picostm_d>:
18040 + *[0-9a-f]*: ed af 25 ff stcm\.d cp1,pc,cr0-cr15
18041 + *[0-9a-f]*: ed a0 25 01 stcm\.d cp1,r0,cr0-cr1
18042 + *[0-9a-f]*: ed a7 25 80 stcm\.d cp1,r7,cr14-cr15
18043 + *[0-9a-f]*: ed a8 25 7f stcm\.d cp1,r8,cr0-cr13
18044 +
18045 +[0-9a-f]* <picostm_d_pu>:
18046 + *[0-9a-f]*: ed af 35 ff stcm\.d cp1,--pc,cr0-cr15
18047 + *[0-9a-f]*: ed a0 35 01 stcm\.d cp1,--r0,cr0-cr1
18048 + *[0-9a-f]*: ed a7 35 80 stcm\.d cp1,--r7,cr14-cr15
18049 + *[0-9a-f]*: ed a8 35 7f stcm\.d cp1,--r8,cr0-cr13
18050 +
18051 +[0-9a-f]* <picostm_w>:
18052 + *[0-9a-f]*: ed af 22 ff stcm\.w cp1,pc,cr0-cr7
18053 + *[0-9a-f]*: ed a0 22 01 stcm\.w cp1,r0,cr0
18054 + *[0-9a-f]*: ed a7 22 80 stcm\.w cp1,r7,cr7
18055 + *[0-9a-f]*: ed a8 22 7f stcm\.w cp1,r8,cr0-cr6
18056 + *[0-9a-f]*: ed af 23 ff stcm\.w cp1,pc,cr8-cr15
18057 + *[0-9a-f]*: ed a0 23 01 stcm\.w cp1,r0,cr8
18058 + *[0-9a-f]*: ed a7 23 80 stcm\.w cp1,r7,cr15
18059 + *[0-9a-f]*: ed a8 23 7f stcm\.w cp1,r8,cr8-cr14
18060 +
18061 +[0-9a-f]* <picostm_w_pu>:
18062 + *[0-9a-f]*: ed af 32 ff stcm\.w cp1,--pc,cr0-cr7
18063 + *[0-9a-f]*: ed a0 32 01 stcm\.w cp1,--r0,cr0
18064 + *[0-9a-f]*: ed a7 32 80 stcm\.w cp1,--r7,cr7
18065 + *[0-9a-f]*: ed a8 32 7f stcm\.w cp1,--r8,cr0-cr6
18066 + *[0-9a-f]*: ed af 33 ff stcm\.w cp1,--pc,cr8-cr15
18067 + *[0-9a-f]*: ed a0 33 01 stcm\.w cp1,--r0,cr8
18068 + *[0-9a-f]*: ed a7 33 80 stcm\.w cp1,--r7,cr15
18069 + *[0-9a-f]*: ed a8 33 7f stcm\.w cp1,--r8,cr8-cr14
18070 --- /dev/null
18071 +++ b/gas/testsuite/gas/avr32/pico.s
18072 @@ -0,0 +1,144 @@
18073 +
18074 + .text
18075 + .global picosvmac
18076 +picosvmac:
18077 + picosvmac out0, in0, in0, in0
18078 + picosvmac out2, in11, in11, in11
18079 + picosvmac out1, in10, in0, in5
18080 + picosvmac out3, in6, in9, in0
18081 + .global picosvmul
18082 +picosvmul:
18083 + picosvmul out0, in0, in0, in0
18084 + picosvmul out2, in11, in11, in11
18085 + picosvmul out1, in10, in0, in5
18086 + picosvmul out3, in6, in9, in0
18087 + .global picovmac
18088 +picovmac:
18089 + picovmac out0, in0, in0, in0
18090 + picovmac out2, in11, in11, in11
18091 + picovmac out1, in10, in0, in5
18092 + picovmac out3, in6, in9, in0
18093 + .global picovmul
18094 +picovmul:
18095 + picovmul out0, in0, in0, in0
18096 + picovmul out2, in11, in11, in11
18097 + picovmul out1, in10, in0, in5
18098 + picovmul out3, in6, in9, in0
18099 + .global picold_d
18100 +picold_d:
18101 + picold.d vmu2_out, pc[1020]
18102 + picold.d inpix2, r0[1020]
18103 + picold.d inpix2, r0[0]
18104 + picold.d coeff0_a, --r8
18105 + picold.d coeff1_a, --r7
18106 + picold.d inpix0, r10[r5 << 2]
18107 + picold.d vmu0_out, r3[r6 << 0]
18108 + .global picold_w
18109 +picold_w:
18110 + picold.w config, pc[1020]
18111 + picold.w inpix2, r0[1020]
18112 + picold.w inpix2, r0[0]
18113 + picold.w coeff0_b, --r8
18114 + picold.w coeff1_a, --r7
18115 + picold.w inpix1, r10[r5 << 2]
18116 + picold.w vmu1_out, r3[r6 << 0]
18117 + .global picoldm_d
18118 +picoldm_d:
18119 + picoldm.d pc, inpix2-config
18120 + picoldm.d r0, inpix2, inpix1
18121 + picoldm.d r7, vmu2_out, config
18122 + picoldm.d r8, inpix2-vmu1_out
18123 + .global picoldm_d_pu
18124 +picoldm_d_pu:
18125 + 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
18126 + picoldm.d r0++, inpix2, inpix1
18127 + picoldm.d r7++, vmu2_out, config
18128 + 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
18129 + .global picoldm_w
18130 +picoldm_w:
18131 + picoldm.w pc, inpix2-coeff0_b
18132 + picoldm.w r0, inpix2
18133 + picoldm.w r7, coeff0_b
18134 + picoldm.w r8, inpix2-coeff0_a
18135 + picoldm.w pc, coeff1_a-config
18136 + picoldm.w r0, coeff1_a
18137 + picoldm.w r7, config
18138 + picoldm.w r8, coeff1_a-vmu2_out
18139 + .global picoldm_w_pu
18140 +picoldm_w_pu:
18141 + picoldm.w pc++, inpix2-coeff0_b
18142 + picoldm.w r0++, inpix2
18143 + picoldm.w r7++, coeff0_b
18144 + picoldm.w r8++, inpix2-coeff0_a
18145 + picoldm.w pc++, coeff1_a-config
18146 + picoldm.w r0++, coeff1_a
18147 + picoldm.w r7++, config
18148 + picoldm.w r8++, coeff1_a-vmu2_out
18149 + .global picomv_d
18150 +picomv_d:
18151 + picomv.d vmu2_out, lr
18152 + picomv.d inpix2, r0
18153 + picomv.d coeff0_a, r8
18154 + picomv.d coeff1_a, r6
18155 + picomv.d pc, vmu2_out
18156 + picomv.d r0, inpix2
18157 + picomv.d r8, coeff0_a
18158 + picomv.d r6, coeff1_a
18159 + .global picomv_w
18160 +picomv_w:
18161 + picomv.w config, pc
18162 + picomv.w inpix2, r0
18163 + picomv.w coeff0_b, r8
18164 + picomv.w coeff1_a, r7
18165 + picomv.w pc, config
18166 + picomv.w r0, inpix2
18167 + picomv.w r8, coeff0_b
18168 + picomv.w r7, coeff1_a
18169 + .global picost_d
18170 +picost_d:
18171 + picost.d pc[1020], vmu2_out
18172 + picost.d r0[0], inpix2
18173 + picost.d r8++, coeff0_a
18174 + picost.d r7++, coeff1_a
18175 + picost.d r10[r5 << 2], inpix0
18176 + picost.d r3[r6 << 0], vmu0_out
18177 + .global picost_w
18178 +picost_w:
18179 + picost.w pc[1020], config
18180 + picost.w r0[0], inpix2
18181 + picost.w r8++, coeff0_b
18182 + picost.w r7++, coeff1_a
18183 + picost.w r10[r5 << 2], inpix1
18184 + picost.w r3[r6 << 0], vmu1_out
18185 + .global picostm_d
18186 +picostm_d:
18187 + picostm.d pc, inpix2-config
18188 + picostm.d r0, inpix2, inpix1
18189 + picostm.d r7, vmu2_out, config
18190 + picostm.d r8, inpix2-vmu1_out
18191 + .global picostm_d_pu
18192 +picostm_d_pu:
18193 + 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
18194 + picostm.d --r0, inpix2, inpix1
18195 + picostm.d --r7, vmu2_out, config
18196 + 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
18197 + .global picostm_w
18198 +picostm_w:
18199 + picostm.w pc, inpix2-coeff0_b
18200 + picostm.w r0, inpix2
18201 + picostm.w r7, coeff0_b
18202 + picostm.w r8, inpix2-coeff0_a
18203 + picostm.w pc, coeff1_a-config
18204 + picostm.w r0, coeff1_a
18205 + picostm.w r7, config
18206 + picostm.w r8, coeff1_a-vmu2_out
18207 + .global picostm_w_pu
18208 +picostm_w_pu:
18209 + picostm.w --pc, inpix2-coeff0_b
18210 + picostm.w --r0, inpix2
18211 + picostm.w --r7, coeff0_b
18212 + picostm.w --r8, inpix2-coeff0_a
18213 + picostm.w --pc, coeff1_a-config
18214 + picostm.w --r0, coeff1_a
18215 + picostm.w --r7, config
18216 + picostm.w --r8, coeff1_a-vmu2_out
18217 --- /dev/null
18218 +++ b/gas/testsuite/gas/avr32/pic_reloc.d
18219 @@ -0,0 +1,27 @@
18220 +#as:
18221 +#objdump: -dr
18222 +#name: pic_reloc
18223 +
18224 +.*: +file format .*
18225 +
18226 +Disassembly of section \.text:
18227 +
18228 +00000000 <mcall_got>:
18229 + 0: f0 16 00 00 mcall r6\[0\]
18230 + 0: R_AVR32_GOT18SW extfunc
18231 + 4: f0 16 00 00 mcall r6\[0\]
18232 + 4: R_AVR32_GOT18SW \.L1
18233 + 8: f0 16 00 00 mcall r6\[0\]
18234 + 8: R_AVR32_GOT18SW \.L2
18235 + c: f0 16 00 00 mcall r6\[0\]
18236 + c: R_AVR32_GOT18SW mcall_got
18237 +
18238 +00000010 <ldw_got>:
18239 + 10: ec f0 00 00 ld.w r0,r6\[0\]
18240 + 10: R_AVR32_GOT16S extvar
18241 + 14: ec f0 00 00 ld.w r0,r6\[0\]
18242 + 14: R_AVR32_GOT16S \.L3
18243 + 18: ec f0 00 00 ld.w r0,r6\[0\]
18244 + 18: R_AVR32_GOT16S \.L4
18245 + 1c: ec f0 00 00 ld.w r0,r6\[0\]
18246 + 1c: R_AVR32_GOT16S ldw_got
18247 --- /dev/null
18248 +++ b/gas/testsuite/gas/avr32/pic_reloc.s
18249 @@ -0,0 +1,18 @@
18250 +
18251 + .text
18252 + .global mcall_got
18253 +mcall_got:
18254 +.L1:
18255 + mcall r6[extfunc@got]
18256 + mcall r6[.L1@got]
18257 + mcall r6[.L2@got]
18258 + mcall r6[mcall_got@got]
18259 +.L2:
18260 +
18261 + .global ldw_got
18262 +ldw_got:
18263 +.L3: ld.w r0,r6[extvar@got]
18264 + ld.w r0,r6[.L3@got]
18265 + ld.w r0,r6[.L4@got]
18266 + ld.w r0,r6[ldw_got@got]
18267 +.L4:
18268 --- /dev/null
18269 +++ b/gas/testsuite/gas/avr32/symdiff.d
18270 @@ -0,0 +1,24 @@
18271 +#source: symdiff.s
18272 +#as:
18273 +#objdump: -dr
18274 +#name: symdiff
18275 +
18276 +.*: +file format .*
18277 +
18278 +Disassembly of section \.text:
18279 +
18280 +00000000 <diff32>:
18281 + 0: 00 00 add r0,r0
18282 + 2: 00 04 add r4,r0
18283 +
18284 +00000004 <diff16>:
18285 + 4: 00 04 add r4,r0
18286 +
18287 +00000006 <diff8>:
18288 + 6: 04 00 add r0,r2
18289 +
18290 +00000008 <symdiff_test>:
18291 + 8: d7 03 nop
18292 + a: d7 03 nop
18293 + c: d7 03 nop
18294 + e: d7 03 nop
18295 --- /dev/null
18296 +++ b/gas/testsuite/gas/avr32/symdiff_linkrelax.d
18297 @@ -0,0 +1,28 @@
18298 +#source: symdiff.s
18299 +#as: --linkrelax
18300 +#objdump: -dr
18301 +#name: symdiff_linkrelax
18302 +
18303 +.*: +file format .*
18304 +
18305 +Disassembly of section \.text:
18306 +
18307 +00000000 <diff32>:
18308 + 0: 00 00 add r0,r0
18309 + 0: R_AVR32_DIFF32 \.text\+0xa
18310 + 2: 00 04 add r4,r0
18311 +
18312 +00000004 <diff16>:
18313 + 4: 00 04 add r4,r0
18314 + 4: R_AVR32_DIFF16 \.text\+0xa
18315 +
18316 +00000006 <diff8>:
18317 + 6: 04 00 add r0,r2
18318 + 6: R_AVR32_DIFF8 \.text\+0xa
18319 + 7: R_AVR32_ALIGN \*ABS\*\+0x1
18320 +
18321 +00000008 <symdiff_test>:
18322 + 8: d7 03 nop
18323 + a: d7 03 nop
18324 + c: d7 03 nop
18325 + e: d7 03 nop
18326 --- /dev/null
18327 +++ b/gas/testsuite/gas/avr32/symdiff.s
18328 @@ -0,0 +1,19 @@
18329 +
18330 + .text
18331 + .global diff32
18332 +diff32:
18333 + .long .L2 - .L1
18334 + .global diff16
18335 +diff16:
18336 + .short .L2 - .L1
18337 + .global diff8
18338 +diff8:
18339 + .byte .L2 - .L1
18340 +
18341 + .global symdiff_test
18342 + .align 1
18343 +symdiff_test:
18344 + nop
18345 +.L1: nop
18346 + nop
18347 +.L2: nop
18348 --- a/gas/write.c
18349 +++ b/gas/write.c
18350 @@ -1955,6 +1955,10 @@ relax_frag (segT segment, fragS *fragP,
18351
18352 #endif /* defined (TC_GENERIC_RELAX_TABLE) */
18353
18354 +#ifdef TC_RELAX_ALIGN
18355 +#define RELAX_ALIGN(SEG, FRAG, ADDR) TC_RELAX_ALIGN(SEG, FRAG, ADDR)
18356 +#else
18357 +#define RELAX_ALIGN(SEG, FRAG, ADDR) relax_align(ADDR, (FRAG)->fr_offset)
18358 /* Relax_align. Advance location counter to next address that has 'alignment'
18359 lowest order bits all 0s, return size of adjustment made. */
18360 static relax_addressT
18361 @@ -1974,6 +1978,7 @@ relax_align (register relax_addressT add
18362 #endif
18363 return (new_address - address);
18364 }
18365 +#endif
18366
18367 /* Now we have a segment, not a crowd of sub-segments, we can make
18368 fr_address values.
18369 @@ -2017,7 +2022,7 @@ relax_segment (struct frag *segment_frag
18370 case rs_align_code:
18371 case rs_align_test:
18372 {
18373 - addressT offset = relax_align (address, (int) fragP->fr_offset);
18374 + addressT offset = RELAX_ALIGN(segment, fragP, address);
18375
18376 if (fragP->fr_subtype != 0 && offset > fragP->fr_subtype)
18377 offset = 0;
18378 @@ -2218,10 +2223,10 @@ relax_segment (struct frag *segment_frag
18379 {
18380 addressT oldoff, newoff;
18381
18382 - oldoff = relax_align (was_address + fragP->fr_fix,
18383 - (int) offset);
18384 - newoff = relax_align (address + fragP->fr_fix,
18385 - (int) offset);
18386 + oldoff = RELAX_ALIGN (segment, fragP,
18387 + was_address + fragP->fr_fix);
18388 + newoff = RELAX_ALIGN (segment, fragP,
18389 + address + fragP->fr_fix);
18390
18391 if (fragP->fr_subtype != 0)
18392 {
18393 --- a/include/dis-asm.h
18394 +++ b/include/dis-asm.h
18395 @@ -204,13 +204,14 @@ typedef struct disassemble_info
18396
18397 } disassemble_info;
18398
18399 -\f
18400 +
18401 /* Standard disassemblers. Disassemble one instruction at the given
18402 target address. Return number of octets processed. */
18403 typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
18404
18405 extern int print_insn_alpha (bfd_vma, disassemble_info *);
18406 extern int print_insn_avr (bfd_vma, disassemble_info *);
18407 +extern int print_insn_avr32 (bfd_vma, disassemble_info *);
18408 extern int print_insn_bfin (bfd_vma, disassemble_info *);
18409 extern int print_insn_big_arm (bfd_vma, disassemble_info *);
18410 extern int print_insn_big_mips (bfd_vma, disassemble_info *);
18411 @@ -242,7 +243,7 @@ extern int print_insn_little_arm (bfd_vm
18412 extern int print_insn_little_mips (bfd_vma, disassemble_info *);
18413 extern int print_insn_little_or32 (bfd_vma, disassemble_info *);
18414 extern int print_insn_little_powerpc (bfd_vma, disassemble_info *);
18415 -extern int print_insn_little_score (bfd_vma, disassemble_info *);
18416 +extern int print_insn_little_score (bfd_vma, disassemble_info *);
18417 extern int print_insn_m32c (bfd_vma, disassemble_info *);
18418 extern int print_insn_m32r (bfd_vma, disassemble_info *);
18419 extern int print_insn_m68hc11 (bfd_vma, disassemble_info *);
18420 @@ -290,7 +291,9 @@ extern void print_i386_disassembler_opti
18421 extern void print_mips_disassembler_options (FILE *);
18422 extern void print_ppc_disassembler_options (FILE *);
18423 extern void print_arm_disassembler_options (FILE *);
18424 +extern void print_avr32_disassembler_options (FILE *);
18425 extern void parse_arm_disassembler_option (char *);
18426 +extern void parse_avr32_disassembler_option (char *);
18427 extern int get_arm_regname_num_options (void);
18428 extern int set_arm_regname_option (int);
18429 extern int get_arm_regnames (int, const char **, const char **, const char *const **);
18430 @@ -306,7 +309,7 @@ extern void disassemble_init_for_target
18431 /* Document any target specific options available from the disassembler. */
18432 extern void disassembler_usage (FILE *);
18433
18434 -\f
18435 +
18436 /* This block of definitions is for particular callers who read instructions
18437 into a buffer before calling the instruction decoder. */
18438
18439 --- /dev/null
18440 +++ b/include/elf/avr32.h
18441 @@ -0,0 +1,98 @@
18442 +/* AVR32 ELF support for BFD.
18443 + Copyright 2003-2006 Atmel Corporation.
18444 +
18445 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
18446 +
18447 + This file is part of BFD, the Binary File Descriptor library.
18448 +
18449 + This program is free software; you can redistribute it and/or
18450 + modify it under the terms of the GNU General Public License as
18451 + published by the Free Software Foundation; either version 2 of the
18452 + License, or (at your option) any later version.
18453 +
18454 + This program is distributed in the hope that it will be useful, but
18455 + WITHOUT ANY WARRANTY; without even the implied warranty of
18456 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18457 + General Public License for more details.
18458 +
18459 + You should have received a copy of the GNU General Public License
18460 + along with this program; if not, write to the Free Software
18461 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18462 + 02111-1307, USA. */
18463 +
18464 +#include "elf/reloc-macros.h"
18465 +
18466 +/* CPU-specific flags for the ELF header e_flags field */
18467 +#define EF_AVR32_LINKRELAX 0x01
18468 +#define EF_AVR32_PIC 0x02
18469 +
18470 +START_RELOC_NUMBERS (elf_avr32_reloc_type)
18471 + RELOC_NUMBER (R_AVR32_NONE, 0)
18472 +
18473 + /* Data Relocations */
18474 + RELOC_NUMBER (R_AVR32_32, 1)
18475 + RELOC_NUMBER (R_AVR32_16, 2)
18476 + RELOC_NUMBER (R_AVR32_8, 3)
18477 + RELOC_NUMBER (R_AVR32_32_PCREL, 4)
18478 + RELOC_NUMBER (R_AVR32_16_PCREL, 5)
18479 + RELOC_NUMBER (R_AVR32_8_PCREL, 6)
18480 + RELOC_NUMBER (R_AVR32_DIFF32, 7)
18481 + RELOC_NUMBER (R_AVR32_DIFF16, 8)
18482 + RELOC_NUMBER (R_AVR32_DIFF8, 9)
18483 + RELOC_NUMBER (R_AVR32_GOT32, 10)
18484 + RELOC_NUMBER (R_AVR32_GOT16, 11)
18485 + RELOC_NUMBER (R_AVR32_GOT8, 12)
18486 +
18487 + /* Normal Code Relocations */
18488 + RELOC_NUMBER (R_AVR32_21S, 13)
18489 + RELOC_NUMBER (R_AVR32_16U, 14)
18490 + RELOC_NUMBER (R_AVR32_16S, 15)
18491 + RELOC_NUMBER (R_AVR32_8S, 16)
18492 + RELOC_NUMBER (R_AVR32_8S_EXT, 17)
18493 +
18494 + /* PC-Relative Code Relocations */
18495 + RELOC_NUMBER (R_AVR32_22H_PCREL, 18)
18496 + RELOC_NUMBER (R_AVR32_18W_PCREL, 19)
18497 + RELOC_NUMBER (R_AVR32_16B_PCREL, 20)
18498 + RELOC_NUMBER (R_AVR32_16N_PCREL, 21)
18499 + RELOC_NUMBER (R_AVR32_14UW_PCREL, 22)
18500 + RELOC_NUMBER (R_AVR32_11H_PCREL, 23)
18501 + RELOC_NUMBER (R_AVR32_10UW_PCREL, 24)
18502 + RELOC_NUMBER (R_AVR32_9H_PCREL, 25)
18503 + RELOC_NUMBER (R_AVR32_9UW_PCREL, 26)
18504 +
18505 + /* Special Code Relocations */
18506 + RELOC_NUMBER (R_AVR32_HI16, 27)
18507 + RELOC_NUMBER (R_AVR32_LO16, 28)
18508 +
18509 + /* PIC Relocations */
18510 + RELOC_NUMBER (R_AVR32_GOTPC, 29)
18511 + RELOC_NUMBER (R_AVR32_GOTCALL, 30)
18512 + RELOC_NUMBER (R_AVR32_LDA_GOT, 31)
18513 + RELOC_NUMBER (R_AVR32_GOT21S, 32)
18514 + RELOC_NUMBER (R_AVR32_GOT18SW, 33)
18515 + RELOC_NUMBER (R_AVR32_GOT16S, 34)
18516 + RELOC_NUMBER (R_AVR32_GOT7UW, 35)
18517 +
18518 + /* Constant Pool Relocations */
18519 + RELOC_NUMBER (R_AVR32_32_CPENT, 36)
18520 + RELOC_NUMBER (R_AVR32_CPCALL, 37)
18521 + RELOC_NUMBER (R_AVR32_16_CP, 38)
18522 + RELOC_NUMBER (R_AVR32_9W_CP, 39)
18523 +
18524 + /* Dynamic Relocations */
18525 + RELOC_NUMBER (R_AVR32_RELATIVE, 40)
18526 + RELOC_NUMBER (R_AVR32_GLOB_DAT, 41)
18527 + RELOC_NUMBER (R_AVR32_JMP_SLOT, 42)
18528 +
18529 + /* Linkrelax Information */
18530 + RELOC_NUMBER (R_AVR32_ALIGN, 43)
18531 +
18532 + RELOC_NUMBER (R_AVR32_15S, 44)
18533 +
18534 +END_RELOC_NUMBERS (R_AVR32_max)
18535 +
18536 +/* Processor specific dynamic array tags. */
18537 +
18538 +/* The total size in bytes of the Global Offset Table */
18539 +#define DT_AVR32_GOTSZ 0x70000001
18540 --- a/include/elf/common.h
18541 +++ b/include/elf/common.h
18542 @@ -259,6 +259,9 @@
18543 /* V850 backend magic number. Written in the absense of an ABI. */
18544 #define EM_CYGNUS_V850 0x9080
18545
18546 +/* AVR32 magic number, picked by IAR Systems. */
18547 +#define EM_AVR32 0x18ad
18548 +
18549 /* old S/390 backend magic number. Written in the absence of an ABI. */
18550 #define EM_S390_OLD 0xa390
18551
18552 --- a/ld/configdoc.texi
18553 +++ b/ld/configdoc.texi
18554 @@ -7,6 +7,7 @@
18555 @set H8300
18556 @set HPPA
18557 @set I960
18558 +@set AVR32
18559 @set M68HC11
18560 @set MMIX
18561 @set MSP430
18562 --- a/ld/configure.tgt
18563 +++ b/ld/configure.tgt
18564 @@ -109,6 +109,9 @@ xscale-*-elf) targ_emul=armelf
18565 avr-*-*) targ_emul=avr2
18566 targ_extra_emuls="avr1 avr3 avr4 avr5 avr6"
18567 ;;
18568 +avr32-*-none) targ_emul=avr32elf_ap7000
18569 + 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" ;;
18570 +avr32-*-linux*) targ_emul=avr32linux ;;
18571 bfin-*-elf) targ_emul=elf32bfin;
18572 targ_extra_emuls="elf32bfinfd"
18573 targ_extra_libpath=$targ_extra_emuls
18574 --- /dev/null
18575 +++ b/ld/emulparams/avr32elf.sh
18576 @@ -0,0 +1,163 @@
18577 +# This script is called from ld/genscript.sh
18578 +# There is a difference on how 'bash' and POSIX handles
18579 +# the '.' (source) command in a script.
18580 +# genscript.sh calls this script with argument ${EMULATION_NAME}
18581 +# but that will fail on POSIX compilant shells like 'sh' or 'dash'
18582 +# therefor I use the variable directly instead of $1
18583 +EMULATION=${EMULATION_NAME}
18584 +SCRIPT_NAME=elf_xip
18585 +TEMPLATE_NAME=elf32
18586 +EXTRA_EM_FILE=avr32elf
18587 +OUTPUT_FORMAT="elf32-avr32"
18588 +ARCH=avr32
18589 +MAXPAGESIZE=4096
18590 +ENTRY=_start
18591 +EMBEDDED=yes
18592 +NO_SMALL_DATA=yes
18593 +NOP=0xd703d703
18594 +
18595 +DATA_SEGMENT_ALIGN=8
18596 +BSS_ALIGNMENT=8
18597 +
18598 +RO_LMA_REGION="FLASH"
18599 +RO_VMA_REGION="FLASH"
18600 +RW_LMA_REGION="FLASH"
18601 +RW_VMA_REGION="CPUSRAM"
18602 +
18603 +STACK_SIZE=0x1000
18604 +STACK_ADDR="ORIGIN(CPUSRAM) + LENGTH(CPUSRAM) - ${STACK_SIZE}"
18605 +
18606 +DATA_SEGMENT_END="__heap_start__ = ALIGN(8);
18607 + . = ${STACK_ADDR};
18608 + __heap_end__ = .;"
18609 +
18610 +case "$EMULATION" in
18611 +avr32elf_ap*)
18612 + MACHINE=ap
18613 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH
18614 + . = . & 0x9fffffff;"
18615 + TEXT_START_ADDR=0xa0000000
18616 + case "$EMULATION" in
18617 + avr32elf_ap700[0-2])
18618 + MEMORY="MEMORY
18619 + {
18620 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18621 + CPUSRAM (rwxa) : ORIGIN = 0x24000000, LENGTH = 32K
18622 + }"
18623 + ;;
18624 + avr32elf_ap7200)
18625 + MEMORY="MEMORY
18626 + {
18627 + FLASH (rxai) : ORIGIN = 0x00000000, LENGTH = 64M
18628 + CPUSRAM (rwxa) : ORIGIN = 0x08000000, LENGTH = 64K
18629 + }"
18630 + ;;
18631 + esac
18632 + ;;
18633 +
18634 +avr32elf_uc3*)
18635 + MACHINE=uc
18636 + INITIAL_READONLY_SECTIONS=".reset : { *(.reset) } >FLASH AT>FLASH"
18637 + TEXT_START_ADDR=0x80000000
18638 + OTHER_SECTIONS=".userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE
18639 + .factorypage : { *(.factorypage .factorypage.*) } >FACTORYPAGE AT>FACTORYPAGE"
18640 +
18641 + case "$EMULATION" in
18642 + avr32elf_uc3a[01]512*)
18643 + MEMORY="MEMORY
18644 + {
18645 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 512K
18646 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18647 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18648 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18649 + }"
18650 + ;;
18651 +
18652 + avr32elf_uc3a[01]256)
18653 + MEMORY="MEMORY
18654 + {
18655 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18656 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18657 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18658 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18659 + }"
18660 + ;;
18661 +
18662 + avr32elf_uc3b[01]256*)
18663 + MEMORY="MEMORY
18664 + {
18665 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18666 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18667 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18668 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18669 + }"
18670 + ;;
18671 +
18672 + avr32elf_uc3[ab][01]128)
18673 + MEMORY="MEMORY
18674 + {
18675 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18676 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 32K
18677 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18678 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18679 + }"
18680 + ;;
18681 +
18682 + avr32elf_uc3b[01]64)
18683 + MEMORY="MEMORY
18684 + {
18685 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18686 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 16K
18687 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18688 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18689 + }"
18690 + ;;
18691 +
18692 + avr32elf_uc3a3256*)
18693 + MEMORY="MEMORY
18694 + {
18695 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 256K
18696 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18697 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18698 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18699 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18700 + }"
18701 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18702 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18703 +"
18704 +
18705 + ;;
18706 +
18707 + avr32elf_uc3a3128*)
18708 + MEMORY="MEMORY
18709 + {
18710 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 128K
18711 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18712 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18713 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18714 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18715 + }"
18716 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18717 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18718 +"
18719 + ;;
18720 +
18721 + avr32elf_uc3a364*)
18722 + MEMORY="MEMORY
18723 + {
18724 + FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 64K
18725 + CPUSRAM (wxa!ri) : ORIGIN = 0x00000000, LENGTH = 64K
18726 + HSBSRAM (wxa!ri) : ORIGIN = 0xFF000000, LENGTH = 64K
18727 + USERPAGE : ORIGIN = 0x80800000, LENGTH = 512
18728 + FACTORYPAGE : ORIGIN = 0x80800200, LENGTH = 512
18729 + }"
18730 + OTHER_SECTIONS ="${OTHER_SECTIONS}
18731 + .hsbsram : { *(.hsbsram .hsbsram.*) } >HSBSRAM AT>FLASH :FLASH
18732 +"
18733 + ;;
18734 +
18735 +
18736 + esac
18737 + ;;
18738 +
18739 +esac
18740 --- /dev/null
18741 +++ b/ld/emulparams/avr32linux.sh
18742 @@ -0,0 +1,14 @@
18743 +ARCH=avr32
18744 +SCRIPT_NAME=elf
18745 +TEMPLATE_NAME=elf32
18746 +EXTRA_EM_FILE=avr32elf
18747 +OUTPUT_FORMAT="elf32-avr32"
18748 +GENERATE_SHLIB_SCRIPT=yes
18749 +MAXPAGESIZE=0x1000
18750 +TEXT_START_ADDR=0x00001000
18751 +NOP=0xd703d703
18752 +
18753 +# This appears to place the GOT before the data section, which is
18754 +# essential for uClinux. We don't use those .s* sections on AVR32
18755 +# anyway, so it shouldn't hurt for regular Linux either...
18756 +NO_SMALL_DATA=yes
18757 --- /dev/null
18758 +++ b/ld/emultempl/avr32elf.em
18759 @@ -0,0 +1,133 @@
18760 +# This shell script emits a C file. -*- C -*-
18761 +# Copyright (C) 2007 Atmel Corporation
18762 +#
18763 +# This file is part of GLD, the Gnu Linker.
18764 +#
18765 +# This program is free software; you can redistribute it and/or modify
18766 +# it under the terms of the GNU General Public License as published by
18767 +# the Free Software Foundation; either version 2 of the License, or
18768 +# (at your option) any later version.
18769 +#
18770 +# This program is distributed in the hope that it will be useful,
18771 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
18772 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18773 +# GNU General Public License for more details.
18774 +#
18775 +# You should have received a copy of the GNU General Public License
18776 +# along with this program; if not, write to the Free Software
18777 +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
18778 +#
18779 +
18780 +# This file is sourced from elf32.em, and defines extra avr32-elf
18781 +# specific routines.
18782 +#
18783 +
18784 +# Generate linker script for writable rodata
18785 +LD_FLAG=rodata-writable
18786 +DATA_ALIGNMENT=${DATA_ALIGNMENT_}
18787 +RELOCATING=" "
18788 +WRITABLE_RODATA=" "
18789 +( echo "/* Linker script for writable rodata */"
18790 + . ${CUSTOMIZER_SCRIPT} ${EMULATION_NAME}
18791 + . ${srcdir}/scripttempl/${SCRIPT_NAME}.sc
18792 +) | sed -e '/^ *$/d;s/[ ]*$//' > ldscripts/${EMULATION_NAME}.xwr
18793 +
18794 +
18795 +cat >> e${EMULATION_NAME}.c <<EOF
18796 +
18797 +#include "libbfd.h"
18798 +#include "elf32-avr32.h"
18799 +
18800 +/* Whether to allow direct references (sub or mov) to SEC_DATA and
18801 + !SEC_CONTENTS sections when optimizing. Not enabled by default
18802 + since it might cause link errors. */
18803 +static int direct_data_refs = 0;
18804 +
18805 +static void avr32_elf_after_open (void)
18806 +{
18807 + bfd_elf32_avr32_set_options (&link_info, direct_data_refs);
18808 + gld${EMULATION_NAME}_after_open ();
18809 +}
18810 +
18811 +static int rodata_writable = 0;
18812 +
18813 +static char * gld${EMULATION_NAME}_get_script (int *isfile);
18814 +
18815 +static char * avr32_elf_get_script (int *isfile)
18816 +{
18817 + if ( rodata_writable )
18818 + {
18819 +EOF
18820 +if test -n "$COMPILE_IN"
18821 +then
18822 +# Scripts compiled in.
18823 +
18824 +# sed commands to quote an ld script as a C string.
18825 +sc="-f stringify.sed"
18826 +
18827 +cat >>e${EMULATION_NAME}.c <<EOF
18828 + *isfile = 0;
18829 + return
18830 +EOF
18831 +sed $sc ldscripts/${EMULATION_NAME}.xwr >> e${EMULATION_NAME}.c
18832 +echo ';' >> e${EMULATION_NAME}.c
18833 +else
18834 +# Scripts read from the filesystem.
18835 +
18836 +cat >>e${EMULATION_NAME}.c <<EOF
18837 + *isfile = 1;
18838 + return "ldscripts/${EMULATION_NAME}.xwr";
18839 +EOF
18840 +fi
18841 +
18842 +cat >>e${EMULATION_NAME}.c <<EOF
18843 + }
18844 + return gld${EMULATION_NAME}_get_script (isfile);
18845 +}
18846 +
18847 +
18848 +EOF
18849 +
18850 +# Define some shell vars to insert bits of code into the standard elf
18851 +# parse_args and list_options functions.
18852 +#
18853 +PARSE_AND_LIST_PROLOGUE='
18854 +#define OPTION_DIRECT_DATA 300
18855 +#define OPTION_NO_DIRECT_DATA 301
18856 +#define OPTION_RODATA_WRITABLE 302
18857 +#define OPTION_NO_RODATA_WRITABLE 303
18858 +'
18859 +
18860 +PARSE_AND_LIST_LONGOPTS='
18861 + { "direct-data", no_argument, NULL, OPTION_DIRECT_DATA },
18862 + { "no-direct-data", no_argument, NULL, OPTION_NO_DIRECT_DATA },
18863 + { "rodata-writable", no_argument, NULL, OPTION_RODATA_WRITABLE },
18864 + { "no-rodata-writable", no_argument, NULL, OPTION_NO_RODATA_WRITABLE },
18865 +'
18866 +
18867 +PARSE_AND_LIST_OPTIONS='
18868 + fprintf (file, _(" --direct-data\t\tAllow direct data references when optimizing\n"));
18869 + fprintf (file, _(" --no-direct-data\tDo not allow direct data references when optimizing\n"));
18870 + fprintf (file, _(" --rodata-writable\tPut read-only data in writable data section\n"));
18871 + fprintf (file, _(" --no-rodata-writable\tDo not put read-only data in writable data section\n"));
18872 +'
18873 +
18874 +PARSE_AND_LIST_ARGS_CASES='
18875 + case OPTION_DIRECT_DATA:
18876 + direct_data_refs = 1;
18877 + break;
18878 + case OPTION_NO_DIRECT_DATA:
18879 + direct_data_refs = 0;
18880 + break;
18881 + case OPTION_RODATA_WRITABLE:
18882 + rodata_writable = 1;
18883 + break;
18884 + case OPTION_NO_RODATA_WRITABLE:
18885 + rodata_writable = 0;
18886 + break;
18887 +'
18888 +
18889 +# Replace some of the standard ELF functions with our own versions.
18890 +#
18891 +LDEMUL_AFTER_OPEN=avr32_elf_after_open
18892 +LDEMUL_GET_SCRIPT=avr32_elf_get_script
18893 --- a/ld/ld.info
18894 +++ b/ld/ld.info
18895 @@ -4347,6 +4347,8 @@ not listed.
18896
18897 * ARM:: `ld' and the ARM family
18898
18899 +* AVR32:: `ld' and AVR32 processors
18900 +
18901 * HPPA ELF32:: `ld' and HPPA 32-bit ELF
18902
18903 * MMIX:: `ld' and MMIX
18904 @@ -4487,7 +4489,7 @@ PIC. This avoids problems on uClinux ta
18905 used to generate relocatable binaries.
18906
18907 \1f
18908 -File: ld.info, Node: ARM, Next: HPPA ELF32, Prev: i960, Up: Machine Dependent
18909 +File: ld.info, Node: ARM, Next: AV32, Prev: i960, Up: Machine Dependent
18910
18911 4.4 `ld' and the ARM family
18912 ===========================
18913 @@ -4588,7 +4590,31 @@ enumeration values fitted into the small
18914 diagnosed.
18915
18916 \1f
18917 -File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: ARM, Up: Machine Dependent
18918 +File: ld.info, Node: AVR32, Next: HPPA ELF32, Prev: ARM, Up: Machine Dependent
18919 +
18920 +4.4 `ld' and AVR32 processors
18921 +=============================
18922 +
18923 +`--direct-data'
18924 +
18925 +`--no-direct-data'
18926 + Taking the address of a symbol can often be done by using a direct
18927 + `mov' or pc-relative `sub' instruction, which is faster than using
18928 + a PC- or GOT-relative load, especially on the uC3 processors.
18929 + However, this does not always work when dealing with symbols in
18930 + the `.data' section so this optimization is disabled by default.
18931 +
18932 + Specifying `--direct-data' will enable this optimization. Note
18933 + that this may cause `relocation truncated to fit' errors for
18934 + certain large programs. If this happens, the optimization can be
18935 + turned off by specifying `--no-direct-data'.
18936 +
18937 + All known issues with direct data optimizations are detected at
18938 + link time, so if the linker doesn't complain, the result should
18939 + run just fine.
18940 +
18941 +\1f
18942 +File: ld.info, Node: HPPA ELF32, Next: MMIX, Prev: AVR32, Up: Machine Dependent
18943
18944 4.5 `ld' and HPPA 32-bit ELF Support
18945 ====================================
18946 @@ -6336,6 +6362,7 @@ LD Index
18947 * --no-check-sections: Options. (line 765)
18948 * --no-define-common: Options. (line 787)
18949 * --no-demangle: Options. (line 816)
18950 +* --no-direct-data: AVR32. (line 6)
18951 * --no-dotsyms: PowerPC64 ELF64. (line 33)
18952 * --no-enum-size-warning: ARM. (line 94)
18953 * --no-gc-sections: Options. (line 848)
18954 @@ -6534,6 +6561,7 @@ LD Index
18955 * AT(LMA): Output Section LMA. (line 6)
18956 * AT>LMA_REGION: Output Section LMA. (line 6)
18957 * automatic data imports: WIN32. (line 170)
18958 +* AVR32 options: AVR32. (line 6)
18959 * back end: BFD. (line 6)
18960 * BASE (MRI): MRI. (line 54)
18961 * BE8: ARM. (line 23)
18962 @@ -7018,6 +7046,7 @@ Node: H8/300\7f183897
18963 Node: i960\7f185522
18964 Node: M68HC11/68HC12\7f187207
18965 Node: ARM\7f188910
18966 +Node: AVR32\7f182578
18967 Node: HPPA ELF32\7f193760
18968 Node: MMIX\7f195383
18969 Node: MSP430\7f196600
18970 --- a/ld/ld.texinfo
18971 +++ b/ld/ld.texinfo
18972 @@ -21,6 +21,7 @@
18973 @set UsesEnvVars
18974 @set GENERIC
18975 @set ARM
18976 +@set AVR32
18977 @set H8300
18978 @set HPPA
18979 @set I960
18980 @@ -139,6 +140,9 @@ section entitled ``GNU Free Documentatio
18981 @ifset ARM
18982 * ARM:: ld and the ARM family
18983 @end ifset
18984 +@ifset AVR32
18985 +* AVR32:: ld and AVR32 processors
18986 +@end ifset
18987 @ifset HPPA
18988 * HPPA ELF32:: ld and HPPA 32-bit ELF
18989 @end ifset
18990 @@ -5248,6 +5252,9 @@ functionality are not listed.
18991 @ifset ARM
18992 * ARM:: @command{ld} and the ARM family
18993 @end ifset
18994 +@ifset AVR32
18995 +* AVR32:: @command{ld} and AVR32 processors
18996 +@end ifset
18997 @ifset HPPA
18998 * HPPA ELF32:: @command{ld} and HPPA 32-bit ELF
18999 @end ifset
19000 @@ -5589,6 +5596,52 @@ not be diagnosed.
19001 @end ifclear
19002 @end ifset
19003
19004 +@ifset AVR32
19005 +@ifclear GENERIC
19006 +@raisesections
19007 +@end ifclear
19008 +
19009 +@node AVR32
19010 +@section @command{ld} and AVR32 processors
19011 +@cindex AVR32 options
19012 +@table @option
19013 +@kindex --direct-data
19014 +@kindex --no-direct-data
19015 +@item --direct-data
19016 +@item --no-direct-data
19017 +Taking the address of a symbol can often be done by using a direct
19018 +@code{mov} or pc-relative @code{sub} instruction, which is faster than
19019 +using a PC- or GOT-relative load, especially on the uC3
19020 +processors. However, this does not always work when dealing with
19021 +symbols in the @code{.data} section so this optimization is disabled
19022 +by default.
19023 +
19024 +Specifying @option{--direct-data} will enable this optimization. Note
19025 +that this may cause @samp{relocation truncated to fit} errors for
19026 +certain large programs. If this happens, the optimization can be
19027 +turned off by specifying @option{--no-direct-data}.
19028 +
19029 +All known issues with direct data optimizations are detected at link
19030 +time, so if the linker doesn't complain, the result should run just
19031 +fine.
19032 +
19033 +@kindex --rodata-writable
19034 +@kindex --no-rodata-writable
19035 +@item --rodata-writable
19036 +@item --no-rodata-writable
19037 +Using the @option{--rodata-writable} options will cause the linker
19038 +to try and use a linker script where read-only data will be placed
19039 +in the same section as writable data. This can give great performance
19040 +gain on cacheless processors where read-only data normally is placed in
19041 +flash, and writable data is placed in internal sram. This will however
19042 +come at the expence of a larger memory footprint.
19043 +@end table
19044 +
19045 +@ifclear GENERIC
19046 +@lowersections
19047 +@end ifclear
19048 +@end ifset
19049 +
19050 @ifset HPPA
19051 @ifclear GENERIC
19052 @raisesections
19053 --- a/ld/Makefile.am
19054 +++ b/ld/Makefile.am
19055 @@ -137,7 +137,34 @@ ALL_EMULATIONS = \
19056 eavr3.o \
19057 eavr4.o \
19058 eavr5.o \
19059 - eavr6.o \
19060 + eavr6.o \
19061 + eavr32elf_ap7000.o \
19062 + eavr32elf_ap7001.o \
19063 + eavr32elf_ap7002.o \
19064 + eavr32elf_ap7200.o \
19065 + eavr32elf_uc3a0128.o \
19066 + eavr32elf_uc3a0256.o \
19067 + eavr32elf_uc3a0512.o \
19068 + eavr32elf_uc3a0512es.o \
19069 + eavr32elf_uc3a1128.o \
19070 + eavr32elf_uc3a1256.o \
19071 + eavr32elf_uc3a1512es.o \
19072 + eavr32elf_uc3a1512.o \
19073 + eavr32elf_uc3a364.o \
19074 + eavr32elf_uc3a364s.o \
19075 + eavr32elf_uc3a3128.o \
19076 + eavr32elf_uc3a3128s.o \
19077 + eavr32elf_uc3a3256.o \
19078 + eavr32elf_uc3a3256s.o \
19079 + eavr32elf_uc3b064.o \
19080 + eavr32elf_uc3b0128.o \
19081 + eavr32elf_uc3b0256es.o \
19082 + eavr32elf_uc3b0256.o \
19083 + eavr32elf_uc3b164.o \
19084 + eavr32elf_uc3b1128.o \
19085 + eavr32elf_uc3b1256es.o \
19086 + eavr32elf_uc3b1256.o \
19087 + eavr32linux.o \
19088 ecoff_i860.o \
19089 ecoff_sparc.o \
19090 eelf32_spu.o \
19091 @@ -622,6 +649,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
19092 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
19093 ${GEN_DEPENDS}
19094 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
19095 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
19096 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19097 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19098 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
19099 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
19100 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19101 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19102 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
19103 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
19104 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19105 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19106 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
19107 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
19108 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19109 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19110 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
19111 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
19112 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19113 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19114 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
19115 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
19116 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19117 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19118 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
19119 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
19120 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19121 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19122 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
19123 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
19124 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19125 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19126 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
19127 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
19128 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19129 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19130 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
19131 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
19132 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19133 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19134 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
19135 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
19136 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19137 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19138 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
19139 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
19140 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19141 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19142 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
19143 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
19144 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19145 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19146 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
19147 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
19148 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19149 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19150 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
19151 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
19152 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19153 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19154 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
19155 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
19156 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19157 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19158 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
19159 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
19160 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19161 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19162 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
19163 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
19164 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19165 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19166 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
19167 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
19168 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19169 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19170 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
19171 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
19172 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19173 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19174 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
19175 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
19176 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19177 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19178 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
19179 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
19180 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19181 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19182 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
19183 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
19184 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19185 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19186 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
19187 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
19188 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19189 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19190 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
19191 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
19192 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19193 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19194 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
19195 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
19196 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19197 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
19198 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
19199 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
19200 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
19201 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
19202 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
19203 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
19204 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
19205 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
19206 @@ -1877,7 +2012,9 @@ install-exec-local: ld-new$(EXEEXT)
19207 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
19208 fi
19209
19210 -install-data-local:
19211 +# We want install to imply install-info as per GNU standards, despite the
19212 +# cygnus option.
19213 +install-data-local: install-info
19214 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
19215 for f in ldscripts/*; do \
19216 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
19217 --- /dev/null
19218 +++ b/ld/scripttempl/elf_xip.sc
19219 @@ -0,0 +1,456 @@
19220 +#
19221 +# Unusual variables checked by this code:
19222 +# NOP - four byte opcode for no-op (defaults to 0)
19223 +# NO_SMALL_DATA - no .sbss/.sbss2/.sdata/.sdata2 sections if not
19224 +# empty.
19225 +# SMALL_DATA_CTOR - .ctors contains small data.
19226 +# SMALL_DATA_DTOR - .dtors contains small data.
19227 +# DATA_ADDR - if end-of-text-plus-one-page isn't right for data start
19228 +# INITIAL_READONLY_SECTIONS - at start of text segment
19229 +# OTHER_READONLY_SECTIONS - other than .text .init .rodata ...
19230 +# (e.g., .PARISC.milli)
19231 +# OTHER_TEXT_SECTIONS - these get put in .text when relocating
19232 +# OTHER_READWRITE_SECTIONS - other than .data .bss .ctors .sdata ...
19233 +# (e.g., .PARISC.global)
19234 +# OTHER_RELRO_SECTIONS - other than .data.rel.ro ...
19235 +# (e.g. PPC32 .fixup, .got[12])
19236 +# OTHER_BSS_SECTIONS - other than .bss .sbss ...
19237 +# OTHER_SECTIONS - at the end
19238 +# EXECUTABLE_SYMBOLS - symbols that must be defined for an
19239 +# executable (e.g., _DYNAMIC_LINK)
19240 +# TEXT_START_ADDR - the first byte of the text segment, after any
19241 +# headers.
19242 +# TEXT_BASE_ADDRESS - the first byte of the text segment.
19243 +# TEXT_START_SYMBOLS - symbols that appear at the start of the
19244 +# .text section.
19245 +# DATA_START_SYMBOLS - symbols that appear at the start of the
19246 +# .data section.
19247 +# OTHER_GOT_SYMBOLS - symbols defined just before .got.
19248 +# OTHER_GOT_SECTIONS - sections just after .got.
19249 +# OTHER_SDATA_SECTIONS - sections just after .sdata.
19250 +# OTHER_BSS_SYMBOLS - symbols that appear at the start of the
19251 +# .bss section besides __bss_start.
19252 +# DATA_PLT - .plt should be in data segment, not text segment.
19253 +# PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement.
19254 +# BSS_PLT - .plt should be in bss segment
19255 +# TEXT_DYNAMIC - .dynamic in text segment, not data segment.
19256 +# EMBEDDED - whether this is for an embedded system.
19257 +# SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set
19258 +# start address of shared library.
19259 +# INPUT_FILES - INPUT command of files to always include
19260 +# WRITABLE_RODATA - if set, the .rodata section should be writable
19261 +# INIT_START, INIT_END - statements just before and just after
19262 +# combination of .init sections.
19263 +# FINI_START, FINI_END - statements just before and just after
19264 +# combination of .fini sections.
19265 +# STACK_ADDR - start of a .stack section.
19266 +# OTHER_END_SYMBOLS - symbols to place right at the end of the script.
19267 +# SEPARATE_GOTPLT - if set, .got.plt should be separate output section,
19268 +# so that .got can be in the RELRO area. It should be set to
19269 +# the number of bytes in the beginning of .got.plt which can be
19270 +# in the RELRO area as well.
19271 +#
19272 +# When adding sections, do note that the names of some sections are used
19273 +# when specifying the start address of the next.
19274 +#
19275 +
19276 +# Many sections come in three flavours. There is the 'real' section,
19277 +# like ".data". Then there are the per-procedure or per-variable
19278 +# sections, generated by -ffunction-sections and -fdata-sections in GCC,
19279 +# and useful for --gc-sections, which for a variable "foo" might be
19280 +# ".data.foo". Then there are the linkonce sections, for which the linker
19281 +# eliminates duplicates, which are named like ".gnu.linkonce.d.foo".
19282 +# The exact correspondences are:
19283 +#
19284 +# Section Linkonce section
19285 +# .text .gnu.linkonce.t.foo
19286 +# .rodata .gnu.linkonce.r.foo
19287 +# .data .gnu.linkonce.d.foo
19288 +# .bss .gnu.linkonce.b.foo
19289 +# .sdata .gnu.linkonce.s.foo
19290 +# .sbss .gnu.linkonce.sb.foo
19291 +# .sdata2 .gnu.linkonce.s2.foo
19292 +# .sbss2 .gnu.linkonce.sb2.foo
19293 +# .debug_info .gnu.linkonce.wi.foo
19294 +# .tdata .gnu.linkonce.td.foo
19295 +# .tbss .gnu.linkonce.tb.foo
19296 +#
19297 +# Each of these can also have corresponding .rel.* and .rela.* sections.
19298 +
19299 +test -z "$ENTRY" && ENTRY=_start
19300 +test -z "${BIG_OUTPUT_FORMAT}" && BIG_OUTPUT_FORMAT=${OUTPUT_FORMAT}
19301 +test -z "${LITTLE_OUTPUT_FORMAT}" && LITTLE_OUTPUT_FORMAT=${OUTPUT_FORMAT}
19302 +if [ -z "$MACHINE" ]; then OUTPUT_ARCH=${ARCH}; else OUTPUT_ARCH=${ARCH}:${MACHINE}; fi
19303 +test -z "${ELFSIZE}" && ELFSIZE=32
19304 +test -z "${ALIGNMENT}" && ALIGNMENT="${ELFSIZE} / 8"
19305 +test "$LD_FLAG" = "N" && DATA_ADDR=.
19306 +test -n "$CREATE_SHLIB$CREATE_PIE" && test -n "$SHLIB_DATA_ADDR" && COMMONPAGESIZE=""
19307 +test -z "$CREATE_SHLIB$CREATE_PIE" && test -n "$DATA_ADDR" && COMMONPAGESIZE=""
19308 +test -n "$RELRO_NOW" && unset SEPARATE_GOTPLT
19309 +if test -n "$RELOCATING"; then
19310 + RO_REGION="${RO_VMA_REGION+ >}${RO_VMA_REGION}${RO_LMA_REGION+ AT>}${RO_LMA_REGION}"
19311 + RW_REGION="${RW_VMA_REGION+ >}${RW_VMA_REGION}${RW_LMA_REGION+ AT>}${RW_LMA_REGION}"
19312 +else
19313 + RO_REGION=""
19314 + RW_REGION=""
19315 +fi
19316 +INTERP=".interp ${RELOCATING-0} : { *(.interp) }${RO_REGION}"
19317 +PLT=".plt ${RELOCATING-0} : { *(.plt) }"
19318 +if test -z "$GOT"; then
19319 + if test -z "$SEPARATE_GOTPLT"; then
19320 + GOT=".got ${RELOCATING-0} : { *(.got.plt) *(.got) }"
19321 + else
19322 + GOT=".got ${RELOCATING-0} : { *(.got) }"
19323 + GOTPLT="${RELOCATING+${DATA_SEGMENT_RELRO_GOTPLT_END}}
19324 + .got.plt ${RELOCATING-0} : { *(.got.plt) }"
19325 + fi
19326 +fi
19327 +DALIGN=".dalign : { . = ALIGN(${DATA_SEGMENT_ALIGN}); PROVIDE(_data_lma = .); }${RO_REGION}"
19328 +BALIGN=".balign : { . = ALIGN(${BSS_ALIGNMENT}); _edata = .; }${RW_REGION}"
19329 +DYNAMIC=".dynamic ${RELOCATING-0} : { *(.dynamic) }"
19330 +RODATA=".rodata ${RELOCATING-0} : { *(.rodata${RELOCATING+ .rodata.* .gnu.linkonce.r.*}) }"
19331 +DATARELRO=".data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) }${RW_REGION}"
19332 +STACKNOTE="/DISCARD/ : { *(.note.GNU-stack) }"
19333 +if test -z "${NO_SMALL_DATA}"; then
19334 + SBSS=".sbss ${RELOCATING-0} :
19335 + {
19336 + ${RELOCATING+PROVIDE (__sbss_start = .);}
19337 + ${RELOCATING+PROVIDE (___sbss_start = .);}
19338 + ${CREATE_SHLIB+*(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)}
19339 + *(.dynsbss)
19340 + *(.sbss${RELOCATING+ .sbss.* .gnu.linkonce.sb.*})
19341 + *(.scommon)
19342 + ${RELOCATING+PROVIDE (__sbss_end = .);}
19343 + ${RELOCATING+PROVIDE (___sbss_end = .);}
19344 + }${RW_REGION}"
19345 + SBSS2=".sbss2 ${RELOCATING-0} : { *(.sbss2${RELOCATING+ .sbss2.* .gnu.linkonce.sb2.*}) }${RW_REGION}"
19346 + SDATA="/* We want the small data sections together, so single-instruction offsets
19347 + can access them all, and initialized data all before uninitialized, so
19348 + we can shorten the on-disk segment size. */
19349 + .sdata ${RELOCATING-0} :
19350 + {
19351 + ${RELOCATING+${SDATA_START_SYMBOLS}}
19352 + ${CREATE_SHLIB+*(.sdata2 .sdata2.* .gnu.linkonce.s2.*)}
19353 + *(.sdata${RELOCATING+ .sdata.* .gnu.linkonce.s.*})
19354 + }${RW_REGION}"
19355 + SDATA2=".sdata2 ${RELOCATING-0} : { *(.sdata2${RELOCATING+ .sdata2.* .gnu.linkonce.s2.*}) }${RW_REGION}"
19356 + REL_SDATA=".rel.sdata ${RELOCATING-0} : { *(.rel.sdata${RELOCATING+ .rel.sdata.* .rel.gnu.linkonce.s.*}) }${RO_REGION}
19357 + .rela.sdata ${RELOCATING-0} : { *(.rela.sdata${RELOCATING+ .rela.sdata.* .rela.gnu.linkonce.s.*}) }"
19358 + REL_SBSS=".rel.sbss ${RELOCATING-0} : { *(.rel.sbss${RELOCATING+ .rel.sbss.* .rel.gnu.linkonce.sb.*}) }${RO_REGION}
19359 + .rela.sbss ${RELOCATING-0} : { *(.rela.sbss${RELOCATING+ .rela.sbss.* .rela.gnu.linkonce.sb.*}) }${RO_REGION}"
19360 + REL_SDATA2=".rel.sdata2 ${RELOCATING-0} : { *(.rel.sdata2${RELOCATING+ .rel.sdata2.* .rel.gnu.linkonce.s2.*}) }${RO_REGION}
19361 + .rela.sdata2 ${RELOCATING-0} : { *(.rela.sdata2${RELOCATING+ .rela.sdata2.* .rela.gnu.linkonce.s2.*}) }${RO_REGION}"
19362 + REL_SBSS2=".rel.sbss2 ${RELOCATING-0} : { *(.rel.sbss2${RELOCATING+ .rel.sbss2.* .rel.gnu.linkonce.sb2.*}) }${RO_REGION}
19363 + .rela.sbss2 ${RELOCATING-0} : { *(.rela.sbss2${RELOCATING+ .rela.sbss2.* .rela.gnu.linkonce.sb2.*}) }${RO_REGION}"
19364 +else
19365 + NO_SMALL_DATA=" "
19366 +fi
19367 +test -n "$SEPARATE_GOTPLT" && SEPARATE_GOTPLT=" "
19368 +CTOR=".ctors ${CONSTRUCTING-0} :
19369 + {
19370 + ${CONSTRUCTING+${CTOR_START}}
19371 + /* gcc uses crtbegin.o to find the start of
19372 + the constructors, so we make sure it is
19373 + first. Because this is a wildcard, it
19374 + doesn't matter if the user does not
19375 + actually link against crtbegin.o; the
19376 + linker won't look for a file to match a
19377 + wildcard. The wildcard also means that it
19378 + doesn't matter which directory crtbegin.o
19379 + is in. */
19380 +
19381 + KEEP (*crtbegin*.o(.ctors))
19382 +
19383 + /* We don't want to include the .ctor section from
19384 + from the crtend.o file until after the sorted ctors.
19385 + The .ctor section from the crtend file contains the
19386 + end of ctors marker and it must be last */
19387 +
19388 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .ctors))
19389 + KEEP (*(SORT(.ctors.*)))
19390 + KEEP (*(.ctors))
19391 + ${CONSTRUCTING+${CTOR_END}}
19392 + }"
19393 +DTOR=".dtors ${CONSTRUCTING-0} :
19394 + {
19395 + ${CONSTRUCTING+${DTOR_START}}
19396 + KEEP (*crtbegin*.o(.dtors))
19397 + KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors))
19398 + KEEP (*(SORT(.dtors.*)))
19399 + KEEP (*(.dtors))
19400 + ${CONSTRUCTING+${DTOR_END}}
19401 + }"
19402 +STACK=".stack ${RELOCATING-0}${RELOCATING+${STACK_ADDR}} :
19403 + {
19404 + ${RELOCATING+_stack = .;}
19405 + *(.stack)
19406 + ${RELOCATING+${STACK_SIZE+. = ${STACK_SIZE};}}
19407 + ${RELOCATING+_estack = .;}
19408 + }${RW_REGION}"
19409 +
19410 +# if this is for an embedded system, don't add SIZEOF_HEADERS.
19411 +if [ -z "$EMBEDDED" ]; then
19412 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR} + SIZEOF_HEADERS"
19413 +else
19414 + test -z "${TEXT_BASE_ADDRESS}" && TEXT_BASE_ADDRESS="${TEXT_START_ADDR}"
19415 +fi
19416 +
19417 +cat <<EOF
19418 +OUTPUT_FORMAT("${OUTPUT_FORMAT}", "${BIG_OUTPUT_FORMAT}",
19419 + "${LITTLE_OUTPUT_FORMAT}")
19420 +OUTPUT_ARCH(${OUTPUT_ARCH})
19421 +ENTRY(${ENTRY})
19422 +
19423 +${RELOCATING+${LIB_SEARCH_DIRS}}
19424 +${RELOCATING+/* Do we need any of these for elf?
19425 + __DYNAMIC = 0; ${STACKZERO+${STACKZERO}} ${SHLIB_PATH+${SHLIB_PATH}} */}
19426 +${RELOCATING+${EXECUTABLE_SYMBOLS}}
19427 +${RELOCATING+${INPUT_FILES}}
19428 +${RELOCATING- /* For some reason, the Solaris linker makes bad executables
19429 + if gld -r is used and the intermediate file has sections starting
19430 + at non-zero addresses. Could be a Solaris ld bug, could be a GNU ld
19431 + bug. But for now assigning the zero vmas works. */}
19432 +
19433 +${RELOCATING+${MEMORY}}
19434 +
19435 +SECTIONS
19436 +{
19437 + /* Read-only sections, merged into text segment: */
19438 + ${CREATE_SHLIB-${CREATE_PIE-${RELOCATING+PROVIDE (__executable_start = ${TEXT_START_ADDR}); . = ${TEXT_BASE_ADDRESS};}}}
19439 + ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19440 + ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}}
19441 + ${CREATE_SHLIB-${INTERP}}
19442 + ${INITIAL_READONLY_SECTIONS}
19443 + ${TEXT_DYNAMIC+${DYNAMIC}${RO_REGION}}
19444 + .hash ${RELOCATING-0} : { *(.hash) }${RO_REGION}
19445 + .dynsym ${RELOCATING-0} : { *(.dynsym) }${RO_REGION}
19446 + .dynstr ${RELOCATING-0} : { *(.dynstr) }${RO_REGION}
19447 + .gnu.version ${RELOCATING-0} : { *(.gnu.version) }${RO_REGION}
19448 + .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) }${RO_REGION}
19449 + .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) }${RO_REGION}
19450 +
19451 +EOF
19452 +if [ "x$COMBRELOC" = x ]; then
19453 + COMBRELOCCAT=cat
19454 +else
19455 + COMBRELOCCAT="cat > $COMBRELOC"
19456 +fi
19457 +eval $COMBRELOCCAT <<EOF
19458 + .rel.init ${RELOCATING-0} : { *(.rel.init) }${RO_REGION}
19459 + .rela.init ${RELOCATING-0} : { *(.rela.init) }${RO_REGION}
19460 + .rel.text ${RELOCATING-0} : { *(.rel.text${RELOCATING+ .rel.text.* .rel.gnu.linkonce.t.*}) }${RO_REGION}
19461 + .rela.text ${RELOCATING-0} : { *(.rela.text${RELOCATING+ .rela.text.* .rela.gnu.linkonce.t.*}) }${RO_REGION}
19462 + .rel.fini ${RELOCATING-0} : { *(.rel.fini) }${RO_REGION}
19463 + .rela.fini ${RELOCATING-0} : { *(.rela.fini) }${RO_REGION}
19464 + .rel.rodata ${RELOCATING-0} : { *(.rel.rodata${RELOCATING+ .rel.rodata.* .rel.gnu.linkonce.r.*}) }${RO_REGION}
19465 + .rela.rodata ${RELOCATING-0} : { *(.rela.rodata${RELOCATING+ .rela.rodata.* .rela.gnu.linkonce.r.*}) }${RO_REGION}
19466 + ${OTHER_READONLY_RELOC_SECTIONS}
19467 + .rel.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19468 + .rela.data.rel.ro ${RELOCATING-0} : { *(.rel.data.rel.ro${RELOCATING+*}) }${RO_REGION}
19469 + .rel.data ${RELOCATING-0} : { *(.rel.data${RELOCATING+ .rel.data.* .rel.gnu.linkonce.d.*}) }${RO_REGION}
19470 + .rela.data ${RELOCATING-0} : { *(.rela.data${RELOCATING+ .rela.data.* .rela.gnu.linkonce.d.*}) }${RO_REGION}
19471 + .rel.tdata ${RELOCATING-0} : { *(.rel.tdata${RELOCATING+ .rel.tdata.* .rel.gnu.linkonce.td.*}) }${RO_REGION}
19472 + .rela.tdata ${RELOCATING-0} : { *(.rela.tdata${RELOCATING+ .rela.tdata.* .rela.gnu.linkonce.td.*}) }${RO_REGION}
19473 + .rel.tbss ${RELOCATING-0} : { *(.rel.tbss${RELOCATING+ .rel.tbss.* .rel.gnu.linkonce.tb.*}) }${RO_REGION}
19474 + .rela.tbss ${RELOCATING-0} : { *(.rela.tbss${RELOCATING+ .rela.tbss.* .rela.gnu.linkonce.tb.*}) }${RO_REGION}
19475 + .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) }${RO_REGION}
19476 + .rela.ctors ${RELOCATING-0} : { *(.rela.ctors) }${RO_REGION}
19477 + .rel.dtors ${RELOCATING-0} : { *(.rel.dtors) }${RO_REGION}
19478 + .rela.dtors ${RELOCATING-0} : { *(.rela.dtors) }${RO_REGION}
19479 + .rel.got ${RELOCATING-0} : { *(.rel.got) }${RO_REGION}
19480 + .rela.got ${RELOCATING-0} : { *(.rela.got) }${RO_REGION}
19481 + ${OTHER_GOT_RELOC_SECTIONS}
19482 + ${REL_SDATA}
19483 + ${REL_SBSS}
19484 + ${REL_SDATA2}
19485 + ${REL_SBSS2}
19486 + .rel.bss ${RELOCATING-0} : { *(.rel.bss${RELOCATING+ .rel.bss.* .rel.gnu.linkonce.b.*}) }${RO_REGION}
19487 + .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) }${RO_REGION}
19488 +EOF
19489 +if [ -n "$COMBRELOC" ]; then
19490 +cat <<EOF
19491 + .rel.dyn ${RELOCATING-0} :
19492 + {
19493 +EOF
19494 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC
19495 +cat <<EOF
19496 + }${RO_REGION}
19497 + .rela.dyn ${RELOCATING-0} :
19498 + {
19499 +EOF
19500 +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC
19501 +cat <<EOF
19502 + }${RO_REGION}
19503 +EOF
19504 +fi
19505 +cat <<EOF
19506 + .rel.plt ${RELOCATING-0} : { *(.rel.plt) }${RO_REGION}
19507 + .rela.plt ${RELOCATING-0} : { *(.rela.plt) }${RO_REGION}
19508 + ${OTHER_PLT_RELOC_SECTIONS}
19509 +
19510 + .init ${RELOCATING-0} :
19511 + {
19512 + ${RELOCATING+${INIT_START}}
19513 + KEEP (*(.init))
19514 + ${RELOCATING+${INIT_END}}
19515 + }${RO_REGION} =${NOP-0}
19516 +
19517 + ${DATA_PLT-${BSS_PLT-${PLT}${RO_REGION}}}
19518 + .text ${RELOCATING-0} :
19519 + {
19520 + ${RELOCATING+${TEXT_START_SYMBOLS}}
19521 + *(.text .stub${RELOCATING+ .text.* .gnu.linkonce.t.*})
19522 + KEEP (*(.text.*personality*))
19523 + /* .gnu.warning sections are handled specially by elf32.em. */
19524 + *(.gnu.warning)
19525 + ${RELOCATING+${OTHER_TEXT_SECTIONS}}
19526 + }${RO_REGION} =${NOP-0}
19527 + .fini ${RELOCATING-0} :
19528 + {
19529 + ${RELOCATING+${FINI_START}}
19530 + KEEP (*(.fini))
19531 + ${RELOCATING+${FINI_END}}
19532 + }${RO_REGION} =${NOP-0}
19533 + ${RELOCATING+PROVIDE (__etext = .);}
19534 + ${RELOCATING+PROVIDE (_etext = .);}
19535 + ${RELOCATING+PROVIDE (etext = .);}
19536 + ${WRITABLE_RODATA-${RODATA}${RO_REGION}}
19537 + .rodata1 ${RELOCATING-0} : { *(.rodata1) }${RO_REGION}
19538 + ${CREATE_SHLIB-${SDATA2}}
19539 + ${CREATE_SHLIB-${SBSS2}}
19540 + ${OTHER_READONLY_SECTIONS}
19541 + .eh_frame_hdr : { *(.eh_frame_hdr) }${RO_REGION}
19542 + .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }${RO_REGION}
19543 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RO_REGION}
19544 +
19545 + ${RELOCATING+${DALIGN}}
19546 + ${RELOCATING+PROVIDE (_data = ORIGIN(${RW_VMA_REGION}));}
19547 + . = ORIGIN(${RW_VMA_REGION});
19548 + /* Exception handling */
19549 + .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }${RW_REGION}
19550 + .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) }${RW_REGION}
19551 +
19552 + /* Thread Local Storage sections */
19553 + .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }${RW_REGION}
19554 + .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }${RW_REGION}
19555 +
19556 + /* Ensure the __preinit_array_start label is properly aligned. We
19557 + could instead move the label definition inside the section, but
19558 + the linker would then create the section even if it turns out to
19559 + be empty, which isn't pretty. */
19560 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_start = ALIGN(${ALIGNMENT}));}}
19561 + .preinit_array ${RELOCATING-0} : { KEEP (*(.preinit_array)) }${RW_REGION}
19562 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__preinit_array_end = .);}}
19563 +
19564 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_start = .);}}
19565 + .init_array ${RELOCATING-0} : { KEEP (*(.init_array)) }${RW_REGION}
19566 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__init_array_end = .);}}
19567 +
19568 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_start = .);}}
19569 + .fini_array ${RELOCATING-0} : { KEEP (*(.fini_array)) }${RW_REGION}
19570 + ${RELOCATING+${CREATE_SHLIB-PROVIDE (__fini_array_end = .);}}
19571 +
19572 + ${SMALL_DATA_CTOR-${RELOCATING+${CTOR}${RW_REGION}}}
19573 + ${SMALL_DATA_DTOR-${RELOCATING+${DTOR}${RW_REGION}}}
19574 + .jcr ${RELOCATING-0} : { KEEP (*(.jcr)) }${RW_REGION}
19575 +
19576 + ${RELOCATING+${DATARELRO}}
19577 + ${OTHER_RELRO_SECTIONS}
19578 + ${TEXT_DYNAMIC-${DYNAMIC}${RW_REGION}}
19579 + ${NO_SMALL_DATA+${RELRO_NOW+${GOT}${RW_REGION}}}
19580 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOT}${RW_REGION}}}}
19581 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT+${GOTPLT}${RW_REGION}}}}
19582 + ${RELOCATING+${DATA_SEGMENT_RELRO_END}}
19583 + ${NO_SMALL_DATA+${RELRO_NOW-${SEPARATE_GOTPLT-${GOT}${RW_REGION}}}}
19584 +
19585 + ${DATA_PLT+${PLT_BEFORE_GOT-${PLT}${RW_REGION}}}
19586 +
19587 + .data ${RELOCATING-0} :
19588 + {
19589 + ${RELOCATING+${DATA_START_SYMBOLS}}
19590 + *(.data${RELOCATING+ .data.* .gnu.linkonce.d.*})
19591 + KEEP (*(.gnu.linkonce.d.*personality*))
19592 + ${CONSTRUCTING+SORT(CONSTRUCTORS)}
19593 + }${RW_REGION}
19594 + .data1 ${RELOCATING-0} : { *(.data1) }${RW_REGION}
19595 + ${WRITABLE_RODATA+${RODATA}${RW_REGION}}
19596 + ${OTHER_READWRITE_SECTIONS}
19597 + ${SMALL_DATA_CTOR+${RELOCATING+${CTOR}${RW_REGION}}}
19598 + ${SMALL_DATA_DTOR+${RELOCATING+${DTOR}${RW_REGION}}}
19599 + ${DATA_PLT+${PLT_BEFORE_GOT+${PLT}${RW_REGION}}}
19600 + ${RELOCATING+${OTHER_GOT_SYMBOLS}}
19601 + ${NO_SMALL_DATA-${GOT}${RW_REGION}}
19602 + ${OTHER_GOT_SECTIONS}
19603 + ${SDATA}
19604 + ${OTHER_SDATA_SECTIONS}
19605 + ${RELOCATING+${BALIGN}}
19606 + ${RELOCATING+_edata = .;}
19607 + ${RELOCATING+PROVIDE (edata = .);}
19608 + ${RELOCATING+__bss_start = .;}
19609 + ${RELOCATING+${OTHER_BSS_SYMBOLS}}
19610 + ${SBSS}
19611 + ${BSS_PLT+${PLT}${RW_REGION}}
19612 + .bss ${RELOCATING-0} :
19613 + {
19614 + *(.dynbss)
19615 + *(.bss${RELOCATING+ .bss.* .gnu.linkonce.b.*})
19616 + *(COMMON)
19617 + /* Align here to ensure that the .bss section occupies space up to
19618 + _end. Align after .bss to ensure correct alignment even if the
19619 + .bss section disappears because there are no input sections. */
19620 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19621 + }${RW_REGION}
19622 + ${OTHER_BSS_SECTIONS}
19623 + ${RELOCATING+. = ALIGN(${BSS_ALIGNMENT});}
19624 + ${RELOCATING+_end = .;}
19625 + ${RELOCATING+${OTHER_BSS_END_SYMBOLS}}
19626 + ${RELOCATING+PROVIDE (end = .);}
19627 + ${RELOCATING+${DATA_SEGMENT_END}}
19628 +
19629 + /* Stabs debugging sections. */
19630 + .stab 0 : { *(.stab) }
19631 + .stabstr 0 : { *(.stabstr) }
19632 + .stab.excl 0 : { *(.stab.excl) }
19633 + .stab.exclstr 0 : { *(.stab.exclstr) }
19634 + .stab.index 0 : { *(.stab.index) }
19635 + .stab.indexstr 0 : { *(.stab.indexstr) }
19636 +
19637 + .comment 0 : { *(.comment) }
19638 +
19639 + /* DWARF debug sections.
19640 + Symbols in the DWARF debugging sections are relative to the beginning
19641 + of the section so we begin them at 0. */
19642 +
19643 + /* DWARF 1 */
19644 + .debug 0 : { *(.debug) }
19645 + .line 0 : { *(.line) }
19646 +
19647 + /* GNU DWARF 1 extensions */
19648 + .debug_srcinfo 0 : { *(.debug_srcinfo) }
19649 + .debug_sfnames 0 : { *(.debug_sfnames) }
19650 +
19651 + /* DWARF 1.1 and DWARF 2 */
19652 + .debug_aranges 0 : { *(.debug_aranges) }
19653 + .debug_pubnames 0 : { *(.debug_pubnames) }
19654 +
19655 + /* DWARF 2 */
19656 + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
19657 + .debug_abbrev 0 : { *(.debug_abbrev) }
19658 + .debug_line 0 : { *(.debug_line) }
19659 + .debug_frame 0 : { *(.debug_frame) }
19660 + .debug_str 0 : { *(.debug_str) }
19661 + .debug_loc 0 : { *(.debug_loc) }
19662 + .debug_macinfo 0 : { *(.debug_macinfo) }
19663 +
19664 + /* SGI/MIPS DWARF 2 extensions */
19665 + .debug_weaknames 0 : { *(.debug_weaknames) }
19666 + .debug_funcnames 0 : { *(.debug_funcnames) }
19667 + .debug_typenames 0 : { *(.debug_typenames) }
19668 + .debug_varnames 0 : { *(.debug_varnames) }
19669 +
19670 + ${STACK_ADDR+${STACK}}
19671 + ${OTHER_SECTIONS}
19672 + ${RELOCATING+${OTHER_END_SYMBOLS}}
19673 + ${RELOCATING+${STACKNOTE}}
19674 +}
19675 +EOF
19676 --- a/ld/testsuite/ld-auto-import/client.c
19677 +++ b/ld/testsuite/ld-auto-import/client.c
19678 @@ -1,55 +1,55 @@
19679 -#include <stdio.h>
19680 -
19681 -extern int var;
19682 -extern void (*func_ptr)(void);
19683 -extern void print_var (void);
19684 -extern void print_foo (void);
19685 -extern int foo;
19686 -extern int var2[2];
19687 -
19688 -typedef struct
19689 -{
19690 - int * var;
19691 - void (* func_ptr)(void);
19692 -}
19693 -TEST;
19694 -
19695 -TEST xyz = { &var, print_var };
19696 -
19697 -int
19698 -main (void)
19699 -{
19700 - print_var ();
19701 -
19702 - printf ("We see var = %d\n", var);
19703 - printf ("Setting var = 456\n");
19704 -
19705 - var = 456;
19706 -
19707 - print_var ();
19708 - printf ("We see var = %d\n\n", var);
19709 -
19710 - var = 90;
19711 - print_var ();
19712 - printf ("We see var = %d\n\n", var);
19713 -
19714 - print_foo ();
19715 - printf ("We see foo = %d\n", foo);
19716 - printf ("Setting foo = 19\n");
19717 - foo = 19;
19718 - print_foo ();
19719 - printf ("We see foo = %d\n\n", foo);
19720 - fflush (stdout);
19721 -
19722 - printf ("Calling dllimported function pointer\n");
19723 - func_ptr ();
19724 -
19725 - printf ("Calling functions using global structure\n");
19726 - xyz.func_ptr ();
19727 - * xyz.var = 40;
19728 - xyz.func_ptr ();
19729 -
19730 - printf ("We see var2[0] = %d\n\n", var2[0]);
19731 -
19732 - return 0;
19733 -}
19734 +#include <stdio.h>
19735 +
19736 +extern int var;
19737 +extern void (*func_ptr)(void);
19738 +extern void print_var (void);
19739 +extern void print_foo (void);
19740 +extern int foo;
19741 +extern int var2[2];
19742 +
19743 +typedef struct
19744 +{
19745 + int * var;
19746 + void (* func_ptr)(void);
19747 +}
19748 +TEST;
19749 +
19750 +TEST xyz = { &var, print_var };
19751 +
19752 +int
19753 +main (void)
19754 +{
19755 + print_var ();
19756 +
19757 + printf ("We see var = %d\n", var);
19758 + printf ("Setting var = 456\n");
19759 +
19760 + var = 456;
19761 +
19762 + print_var ();
19763 + printf ("We see var = %d\n\n", var);
19764 +
19765 + var = 90;
19766 + print_var ();
19767 + printf ("We see var = %d\n\n", var);
19768 +
19769 + print_foo ();
19770 + printf ("We see foo = %d\n", foo);
19771 + printf ("Setting foo = 19\n");
19772 + foo = 19;
19773 + print_foo ();
19774 + printf ("We see foo = %d\n\n", foo);
19775 + fflush (stdout);
19776 +
19777 + printf ("Calling dllimported function pointer\n");
19778 + func_ptr ();
19779 +
19780 + printf ("Calling functions using global structure\n");
19781 + xyz.func_ptr ();
19782 + * xyz.var = 40;
19783 + xyz.func_ptr ();
19784 +
19785 + printf ("We see var2[0] = %d\n\n", var2[0]);
19786 +
19787 + return 0;
19788 +}
19789 --- a/ld/testsuite/ld-auto-import/dll.c
19790 +++ b/ld/testsuite/ld-auto-import/dll.c
19791 @@ -1,20 +1,20 @@
19792 -int var = 123;
19793 -int foo = 121;
19794 -
19795 -int var2[2]= { 123, 456 };
19796 -
19797 -#include <stdio.h>
19798 -
19799 -void
19800 -print_var (void)
19801 -{
19802 - printf ("DLL sees var = %d\n", var);
19803 -}
19804 -
19805 -void
19806 -print_foo (void)
19807 -{
19808 - printf ("DLL sees foo = %d\n", foo);
19809 -}
19810 -
19811 -void (* func_ptr)(void) = print_foo;
19812 +int var = 123;
19813 +int foo = 121;
19814 +
19815 +int var2[2]= { 123, 456 };
19816 +
19817 +#include <stdio.h>
19818 +
19819 +void
19820 +print_var (void)
19821 +{
19822 + printf ("DLL sees var = %d\n", var);
19823 +}
19824 +
19825 +void
19826 +print_foo (void)
19827 +{
19828 + printf ("DLL sees foo = %d\n", foo);
19829 +}
19830 +
19831 +void (* func_ptr)(void) = print_foo;
19832 --- /dev/null
19833 +++ b/ld/testsuite/ld-avr32/avr32.exp
19834 @@ -0,0 +1,25 @@
19835 +# Expect script for AVR32 ELF linker tests.
19836 +# Copyright 2004-2006 Atmel Corporation.
19837 +#
19838 +# This file is free software; you can redistribute it and/or modify
19839 +# it under the terms of the GNU General Public License as published by
19840 +# the Free Software Foundation; either version 2 of the License, or
19841 +# (at your option) any later version.
19842 +#
19843 +# This program is distributed in the hope that it will be useful,
19844 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
19845 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19846 +# GNU General Public License for more details.
19847 +#
19848 +# You should have received a copy of the GNU General Public License
19849 +# along with this program; if not, write to the Free Software
19850 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19851 +#
19852 +# Written by Haavard Skinnemoen (hskinnemoen@atmel.com)
19853 +#
19854 +
19855 +if ![istarget avr32-*-*] {
19856 + return
19857 +}
19858 +
19859 +run_dump_test "pcrel"
19860 --- /dev/null
19861 +++ b/ld/testsuite/ld-avr32/pcrel.d
19862 @@ -0,0 +1,74 @@
19863 +#name: AVR32 ELF PC-relative external relocs
19864 +#source: symbols.s
19865 +#source: ../../../gas/testsuite/gas/avr32/pcrel.s
19866 +#ld: -T $srcdir/$subdir/pcrel.ld
19867 +#objdump: -d
19868 +
19869 +.*: file format elf.*avr32.*
19870 +
19871 +Disassembly of section .text:
19872 +
19873 +a0000000 <_start>:
19874 +a0000000: d7 03 nop
19875 +a0000002: d7 03 nop
19876 +
19877 +a0000004 <test_rjmp>:
19878 +a0000004: d7 03 nop
19879 +a0000006: c0 28 rjmp a000000a <test_rjmp\+0x6>
19880 +a0000008: d7 03 nop
19881 +a000000a: e0 8f 01 fb bral a0000400 <extsym10>
19882 +
19883 +a000000e <test_rcall>:
19884 +a000000e: d7 03 nop
19885 +a0000010 <test_rcall2>:
19886 +a0000010: c0 2c rcall a0000014 <test_rcall2\+0x4>
19887 +a0000012: d7 03 nop
19888 +a0000014: ee b0 ff f6 rcall a0200000 <extsym21>
19889 +
19890 +a0000018 <test_branch>:
19891 +a0000018: c0 31 brne a000001e <test_branch\+0x6>
19892 +a000001a: fe 9f ff ff bral a0000018 <test_branch>
19893 +a000001e: ee 90 ff f1 breq a0200000 <extsym21>
19894 +
19895 +a0000022 <test_lddpc>:
19896 +a0000022: 48 30 lddpc r0,a000002c <sym1>
19897 +a0000024: 48 20 lddpc r0,a000002c <sym1>
19898 +a0000026: fe f0 7f da ld.w r0,pc\[32730\]
19899 + ...
19900 +
19901 +a000002c <sym1>:
19902 +a000002c: d7 03 nop
19903 +a000002e: d7 03 nop
19904 +
19905 +a0000030 <test_local>:
19906 +a0000030: 48 20 lddpc r0,a0000038 <test_local\+0x8>
19907 +a0000032: 48 30 lddpc r0,a000003c <test_local\+0xc>
19908 +a0000034: 48 20 lddpc r0,a000003c <test_local\+0xc>
19909 +a0000036: 00 00 add r0,r0
19910 +a0000038: d7 03 nop
19911 +a000003a: d7 03 nop
19912 +a000003c: d7 03 nop
19913 +a000003e: d7 03 nop
19914 +
19915 +Disassembly of section \.text\.init:
19916 +a0000040 <test_inter_section>:
19917 +a0000040: fe b0 ff e7 rcall a000000e <test_rcall>
19918 +a0000044: d7 03 nop
19919 +a0000046: fe b0 ff e4 rcall a000000e <test_rcall>
19920 +a000004a: fe b0 ff e3 rcall a0000010 <test_rcall2>
19921 +a000004e: d7 03 nop
19922 +a0000050: fe b0 ff e0 rcall a0000010 <test_rcall2>
19923 +
19924 +Disassembly of section \.text\.pcrel10:
19925 +
19926 +a0000400 <extsym10>:
19927 +a0000400: d7 03 nop
19928 +
19929 +Disassembly of section \.text\.pcrel16:
19930 +
19931 +a0008000 <extsym16>:
19932 +a0008000: d7 03 nop
19933 +
19934 +Disassembly of section \.text\.pcrel21:
19935 +a0200000 <extsym21>:
19936 +a0200000: d7 03 nop
19937 --- /dev/null
19938 +++ b/ld/testsuite/ld-avr32/pcrel.ld
19939 @@ -0,0 +1,23 @@
19940 +ENTRY(_start)
19941 +SECTIONS
19942 +{
19943 + .text 0xa0000000:
19944 + {
19945 + *(.text)
19946 + }
19947 +
19948 + .text.pcrel10 0xa0000400:
19949 + {
19950 + *(.text.pcrel10)
19951 + }
19952 +
19953 + .text.pcrel16 0xa0008000:
19954 + {
19955 + *(.text.pcrel16)
19956 + }
19957 +
19958 + .text.pcrel21 0xa0200000:
19959 + {
19960 + *(.text.pcrel21)
19961 + }
19962 +}
19963 --- /dev/null
19964 +++ b/ld/testsuite/ld-avr32/symbols.s
19965 @@ -0,0 +1,20 @@
19966 + .text
19967 + .global _start
19968 +_start:
19969 + nop
19970 + nop
19971 +
19972 + .section .text.pcrel10,"ax"
19973 + .global extsym10
19974 +extsym10:
19975 + nop
19976 +
19977 + .section .text.pcrel16,"ax"
19978 + .global extsym16
19979 +extsym16:
19980 + nop
19981 +
19982 + .section .text.pcrel21,"ax"
19983 + .global extsym21
19984 +extsym21:
19985 + nop
19986 --- /dev/null
19987 +++ b/opcodes/avr32-asm.c
19988 @@ -0,0 +1,264 @@
19989 +/* Assembler interface for AVR32.
19990 + Copyright 2005, 2006 Atmel Corporation.
19991 +
19992 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
19993 +
19994 + This file is part of libopcodes.
19995 +
19996 + This program is free software; you can redistribute it and/or
19997 + modify it under the terms of the GNU General Public License as
19998 + published by the Free Software Foundation; either version 2 of the
19999 + License, or (at your option) any later version.
20000 +
20001 + This program is distributed in the hope that it will be useful, but
20002 + WITHOUT ANY WARRANTY; without even the implied warranty of
20003 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20004 + General Public License for more details.
20005 +
20006 + You should have received a copy of the GNU General Public License
20007 + along with this program; if not, write to the Free Software
20008 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20009 + 02111-1307, USA. */
20010 +
20011 +#include <string.h>
20012 +
20013 +#include "avr32-opc.h"
20014 +#include "avr32-asm.h"
20015 +
20016 +/* Structure for a register hash table entry. */
20017 +struct reg_entry
20018 +{
20019 + const char *name;
20020 + int number;
20021 +};
20022 +
20023 +/* Integer Registers. */
20024 +static const struct reg_entry reg_table[] =
20025 + {
20026 + /* Primary names (used by the disassembler) */
20027 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
20028 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
20029 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
20030 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
20031 + /* Alternatives to sp, lr and pc. */
20032 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
20033 + };
20034 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
20035 +
20036 +/* Coprocessor Registers. */
20037 +static const struct reg_entry cr_table[] =
20038 + {
20039 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
20040 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
20041 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
20042 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
20043 + };
20044 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
20045 +
20046 +/* Floating-point Registers. */
20047 +static const struct reg_entry fr_table[] =
20048 + {
20049 + { "fr0", 0 }, { "fr1", 1 }, { "fr2", 2 }, { "fr3", 3 },
20050 + { "fr4", 4 }, { "fr5", 5 }, { "fr6", 6 }, { "fr7", 7 },
20051 + { "fr8", 8 }, { "fr9", 9 }, { "fr10", 10 }, { "fr11", 11 },
20052 + { "fr12", 12 }, { "fr13", 13 }, { "fr14", 14 }, { "fr15", 15 },
20053 + };
20054 +#define AVR32_NR_FPREGS (sizeof(fr_table)/sizeof(fr_table[0]))
20055 +
20056 +/* PiCo Registers. */
20057 +static const struct reg_entry pico_table[] =
20058 + {
20059 + { "inpix2", 0 }, { "inpix1", 1 }, { "inpix0", 2 },
20060 + { "outpix2", 3 }, { "outpix1", 4 }, { "outpix0", 5 },
20061 + { "coeff0_a", 6 }, { "coeff0_b", 7 }, { "coeff1_a", 8 },
20062 + { "coeff1_b", 9 }, { "coeff2_a", 10 }, { "coeff2_b", 11 },
20063 + { "vmu0_out", 12 }, { "vmu1_out", 13 }, { "vmu2_out", 14 },
20064 + { "config", 15 },
20065 + };
20066 +#define AVR32_NR_PICOREGS (sizeof(pico_table)/sizeof(pico_table[0]))
20067 +
20068 +int
20069 +avr32_parse_intreg(const char *str)
20070 +{
20071 + unsigned int i;
20072 +
20073 + for (i = 0; i < AVR32_NR_INTREGS; i++)
20074 + {
20075 + if (strcasecmp(reg_table[i].name, str) == 0)
20076 + return reg_table[i].number;
20077 + }
20078 +
20079 + return -1;
20080 +}
20081 +
20082 +int
20083 +avr32_parse_cpreg(const char *str)
20084 +{
20085 + unsigned int i;
20086 +
20087 + for (i = 0; i < AVR32_NR_CPREGS; i++)
20088 + {
20089 + if (strcasecmp(cr_table[i].name, str) == 0)
20090 + return cr_table[i].number;
20091 + }
20092 +
20093 + return -1;
20094 +}
20095 +
20096 +int avr32_parse_fpreg(const char *str)
20097 +{
20098 + unsigned int i;
20099 +
20100 + for (i = 0; i < AVR32_NR_FPREGS; i++)
20101 + {
20102 + if (strcasecmp(fr_table[i].name, str) == 0)
20103 + return fr_table[i].number;
20104 + }
20105 +
20106 + return -1;
20107 +}
20108 +
20109 +int avr32_parse_picoreg(const char *str)
20110 +{
20111 + unsigned int i;
20112 +
20113 + for (i = 0; i < AVR32_NR_PICOREGS; i++)
20114 + {
20115 + if (strcasecmp(pico_table[i].name, str) == 0)
20116 + return pico_table[i].number;
20117 + }
20118 +
20119 + return -1;
20120 +}
20121 +
20122 +static unsigned long
20123 +parse_reglist(char *str, char **endptr, int (*parse_reg)(const char *))
20124 +{
20125 + int reg_from, reg_to;
20126 + unsigned long result = 0;
20127 + char *p1, *p2, c;
20128 +
20129 + while (*str)
20130 + {
20131 + for (p1 = str; *p1; p1++)
20132 + if (*p1 == ',' || *p1 == '-')
20133 + break;
20134 +
20135 + c = *p1, *p1 = 0;
20136 + reg_from = parse_reg(str);
20137 + *p1 = c;
20138 +
20139 + if (reg_from < 0)
20140 + break;
20141 +
20142 + if (*p1 == '-')
20143 + {
20144 + for (p2 = ++p1; *p2; p2++)
20145 + if (*p2 == ',')
20146 + break;
20147 +
20148 + c = *p2, *p2 = 0;
20149 + /* printf("going to parse reg_to from `%s'\n", p1); */
20150 + reg_to = parse_reg(p1);
20151 + *p2 = c;
20152 +
20153 + if (reg_to < 0)
20154 + break;
20155 +
20156 + while (reg_from <= reg_to)
20157 + result |= (1 << reg_from++);
20158 + p1 = p2;
20159 + }
20160 + else
20161 + result |= (1 << reg_from);
20162 +
20163 + str = p1;
20164 + if (*str) ++str;
20165 + }
20166 +
20167 + if (endptr)
20168 + *endptr = str;
20169 +
20170 + return result;
20171 +}
20172 +
20173 +unsigned long
20174 +avr32_parse_reglist(char *str, char **endptr)
20175 +{
20176 + return parse_reglist(str, endptr, avr32_parse_intreg);
20177 +}
20178 +
20179 +unsigned long
20180 +avr32_parse_cpreglist(char *str, char **endptr)
20181 +{
20182 + return parse_reglist(str, endptr, avr32_parse_cpreg);
20183 +}
20184 +
20185 +unsigned long
20186 +avr32_parse_pico_reglist(char *str, char **endptr)
20187 +{
20188 + return parse_reglist(str, endptr, avr32_parse_picoreg);
20189 +}
20190 +
20191 +int
20192 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8)
20193 +{
20194 + unsigned long result = 0;
20195 +
20196 + /* printf("convert regmask16 0x%04lx\n", regmask16); */
20197 +
20198 + if (regmask16 & 0xf)
20199 + {
20200 + if ((regmask16 & 0xf) == 0xf)
20201 + result |= 1 << 0;
20202 + else
20203 + return -1;
20204 + }
20205 + if (regmask16 & 0xf0)
20206 + {
20207 + if ((regmask16 & 0xf0) == 0xf0)
20208 + result |= 1 << 1;
20209 + else
20210 + return -1;
20211 + }
20212 + if (regmask16 & 0x300)
20213 + {
20214 + if ((regmask16 & 0x300) == 0x300)
20215 + result |= 1 << 2;
20216 + else
20217 + return -1;
20218 + }
20219 + if (regmask16 & (1 << 13))
20220 + return -1;
20221 +
20222 + if (regmask16 & (1 << 10))
20223 + result |= 1 << 3;
20224 + if (regmask16 & (1 << 11))
20225 + result |= 1 << 4;
20226 + if (regmask16 & (1 << 12))
20227 + result |= 1 << 5;
20228 + if (regmask16 & (1 << 14))
20229 + result |= 1 << 6;
20230 + if (regmask16 & (1 << 15))
20231 + result |= 1 << 7;
20232 +
20233 + *regmask8 = result;
20234 +
20235 + return 0;
20236 +}
20237 +
20238 +#if 0
20239 +struct reg_map
20240 +{
20241 + const struct reg_entry *names;
20242 + int nr_regs;
20243 + struct hash_control *htab;
20244 + const char *errmsg;
20245 +};
20246 +
20247 +struct reg_map all_reg_maps[] =
20248 + {
20249 + { reg_table, AVR32_NR_INTREGS, NULL, N_("integral register expected") },
20250 + { cr_table, AVR32_NR_CPREGS, NULL, N_("coprocessor register expected") },
20251 + };
20252 +#endif
20253 --- /dev/null
20254 +++ b/opcodes/avr32-asm.h
20255 @@ -0,0 +1,42 @@
20256 +/* Assembler interface for AVR32.
20257 + Copyright 2005, 2006 Atmel Corporation.
20258 +
20259 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20260 +
20261 + This file is part of libopcodes.
20262 +
20263 + This program is free software; you can redistribute it and/or
20264 + modify it under the terms of the GNU General Public License as
20265 + published by the Free Software Foundation; either version 2 of the
20266 + License, or (at your option) any later version.
20267 +
20268 + This program is distributed in the hope that it will be useful, but
20269 + WITHOUT ANY WARRANTY; without even the implied warranty of
20270 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20271 + General Public License for more details.
20272 +
20273 + You should have received a copy of the GNU General Public License
20274 + along with this program; if not, write to the Free Software
20275 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20276 + 02111-1307, USA. */
20277 +#ifndef __OPCODES_AVR32_ASM_H
20278 +#define __OPCODES_AVR32_ASM_H
20279 +
20280 +extern int
20281 +avr32_parse_intreg(const char *str);
20282 +extern int
20283 +avr32_parse_cpreg(const char *str);
20284 +extern int
20285 +avr32_parse_fpreg(const char *str);
20286 +extern int
20287 +avr32_parse_picoreg(const char *str);
20288 +extern unsigned long
20289 +avr32_parse_reglist(char *str, char **endptr);
20290 +extern unsigned long
20291 +avr32_parse_cpreglist(char *str, char **endptr);
20292 +extern unsigned long
20293 +avr32_parse_pico_reglist(char *str, char **endptr);
20294 +extern int
20295 +avr32_make_regmask8(unsigned long regmask16, unsigned long *regmask8);
20296 +
20297 +#endif /* __OPCODES_AVR32_ASM_H */
20298 --- /dev/null
20299 +++ b/opcodes/avr32-dis.c
20300 @@ -0,0 +1,891 @@
20301 +/* Print AVR32 instructions for GDB and objdump.
20302 + Copyright 2005, 2006 Atmel Corporation.
20303 +
20304 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
20305 +
20306 + This file is part of libopcodes.
20307 +
20308 + This program is free software; you can redistribute it and/or
20309 + modify it under the terms of the GNU General Public License as
20310 + published by the Free Software Foundation; either version 2 of the
20311 + License, or (at your option) any later version.
20312 +
20313 + This program is distributed in the hope that it will be useful, but
20314 + WITHOUT ANY WARRANTY; without even the implied warranty of
20315 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20316 + General Public License for more details.
20317 +
20318 + You should have received a copy of the GNU General Public License
20319 + along with this program; if not, write to the Free Software
20320 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20321 + 02111-1307, USA. */
20322 +
20323 +#include "sysdep.h"
20324 +#include "dis-asm.h"
20325 +#include "avr32-opc.h"
20326 +#include "opintl.h"
20327 +#include "safe-ctype.h"
20328 +
20329 +/* TODO: Share this with -asm */
20330 +
20331 +/* Structure for a register hash table entry. */
20332 +struct reg_entry
20333 +{
20334 + const char *name;
20335 + int number;
20336 +};
20337 +
20338 +#ifndef strneq
20339 +#define strneq(a,b,n) (strncmp ((a), (b), (n)) == 0)
20340 +#endif
20341 +
20342 +
20343 +static const struct reg_entry reg_table[] =
20344 + {
20345 + /* Primary names (used by the disassembler) */
20346 + { "r0", 0 }, { "r1", 1 }, { "r2", 2 }, { "r3", 3 },
20347 + { "r4", 4 }, { "r5", 5 }, { "r6", 6 }, { "r7", 7 },
20348 + { "r8", 8 }, { "r9", 9 }, { "r10", 10 }, { "r11", 11 },
20349 + { "r12", 12 }, { "sp", 13 }, { "lr", 14 }, { "pc", 15 },
20350 + /* Alternatives to sp, lr and pc. */
20351 + { "r13", 13 }, { "r14", 14 }, { "r15", 15 },
20352 + };
20353 +#define AVR32_NR_INTREGS (sizeof(reg_table)/sizeof(reg_table[0]))
20354 +
20355 +/* Coprocessor Registers. */
20356 +static const struct reg_entry cr_table[] =
20357 + {
20358 + { "cr0", 0 }, { "cr1", 1 }, { "cr2", 2 }, { "cr3", 3 },
20359 + { "cr4", 4 }, { "cr5", 5 }, { "cr6", 6 }, { "cr7", 7 },
20360 + { "cr8", 8 }, { "cr9", 9 }, { "cr10", 10 }, { "cr11", 11 },
20361 + { "cr12", 12 }, { "cr13", 13 }, { "cr14", 14 }, { "cr15", 15 },
20362 + };
20363 +#define AVR32_NR_CPREGS (sizeof(cr_table)/sizeof(cr_table[0]))
20364 +
20365 +static const char bparts[4] = { 'b', 'l', 'u', 't' };
20366 +static bfd_vma current_pc;
20367 +
20368 +struct avr32_field_value
20369 +{
20370 + const struct avr32_ifield *ifield;
20371 + unsigned long value;
20372 +};
20373 +
20374 +struct avr32_operand
20375 +{
20376 + int id;
20377 + int is_pcrel;
20378 + int align_order;
20379 + int (*print)(struct avr32_operand *op, struct disassemble_info *info,
20380 + struct avr32_field_value *ifields);
20381 +};
20382 +
20383 +static signed long
20384 +get_signed_value(const struct avr32_field_value *fv)
20385 +{
20386 + signed long value = fv->value;
20387 +
20388 + if (fv->value & (1 << (fv->ifield->bitsize - 1)))
20389 + value |= (~0UL << fv->ifield->bitsize);
20390 +
20391 + return value;
20392 +}
20393 +
20394 +static void
20395 +print_reglist_range(unsigned int first, unsigned int last,
20396 + const struct reg_entry *reg_names,
20397 + int need_comma,
20398 + struct disassemble_info *info)
20399 +{
20400 + if (need_comma)
20401 + info->fprintf_func(info->stream, ",");
20402 +
20403 + if (first == last)
20404 + info->fprintf_func(info->stream, "%s",
20405 + reg_names[first].name);
20406 + else
20407 + info->fprintf_func(info->stream, "%s-%s",
20408 + reg_names[first].name, reg_names[last].name);
20409 +}
20410 +
20411 +static int
20412 +print_intreg(struct avr32_operand *op,
20413 + struct disassemble_info *info,
20414 + struct avr32_field_value *ifields)
20415 +{
20416 + unsigned long regid = ifields[0].value << op->align_order;
20417 +
20418 + info->fprintf_func(info->stream, "%s",
20419 + reg_table[regid].name);
20420 + return 1;
20421 +}
20422 +
20423 +static int
20424 +print_intreg_predec(struct avr32_operand *op ATTRIBUTE_UNUSED,
20425 + struct disassemble_info *info,
20426 + struct avr32_field_value *ifields)
20427 +{
20428 + info->fprintf_func(info->stream, "--%s",
20429 + reg_table[ifields[0].value].name);
20430 + return 1;
20431 +}
20432 +
20433 +static int
20434 +print_intreg_postinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
20435 + struct disassemble_info *info,
20436 + struct avr32_field_value *ifields)
20437 +{
20438 + info->fprintf_func(info->stream, "%s++",
20439 + reg_table[ifields[0].value].name);
20440 + return 1;
20441 +}
20442 +
20443 +static int
20444 +print_intreg_lsl(struct avr32_operand *op ATTRIBUTE_UNUSED,
20445 + struct disassemble_info *info,
20446 + struct avr32_field_value *ifields)
20447 +{
20448 + const char *rp = reg_table[ifields[0].value].name;
20449 + unsigned long sa = ifields[1].value;
20450 +
20451 + if (sa)
20452 + info->fprintf_func(info->stream, "%s<<0x%lx", rp, sa);
20453 + else
20454 + info->fprintf_func(info->stream, "%s", rp);
20455 +
20456 + return 2;
20457 +}
20458 +
20459 +static int
20460 +print_intreg_lsr(struct avr32_operand *op ATTRIBUTE_UNUSED,
20461 + struct disassemble_info *info,
20462 + struct avr32_field_value *ifields)
20463 +{
20464 + const char *rp = reg_table[ifields[0].value].name;
20465 + unsigned long sa = ifields[1].value;
20466 +
20467 + if (sa)
20468 + info->fprintf_func(info->stream, "%s>>0x%lx", rp, sa);
20469 + else
20470 + info->fprintf_func(info->stream, "%s", rp);
20471 +
20472 + return 2;
20473 +}
20474 +
20475 +static int
20476 +print_intreg_bpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20477 + struct disassemble_info *info,
20478 + struct avr32_field_value *ifields)
20479 +{
20480 + info->fprintf_func(info->stream, "%s:%c",
20481 + reg_table[ifields[0].value].name,
20482 + bparts[ifields[1].value]);
20483 + return 2;
20484 +}
20485 +
20486 +static int
20487 +print_intreg_hpart(struct avr32_operand *op ATTRIBUTE_UNUSED,
20488 + struct disassemble_info *info,
20489 + struct avr32_field_value *ifields)
20490 +{
20491 + info->fprintf_func(info->stream, "%s:%c",
20492 + reg_table[ifields[0].value].name,
20493 + ifields[1].value ? 't' : 'b');
20494 + return 2;
20495 +}
20496 +
20497 +static int
20498 +print_intreg_sdisp(struct avr32_operand *op,
20499 + struct disassemble_info *info,
20500 + struct avr32_field_value *ifields)
20501 +{
20502 + signed long disp;
20503 +
20504 + disp = get_signed_value(&ifields[1]) << op->align_order;
20505 +
20506 + info->fprintf_func(info->stream, "%s[%ld]",
20507 + reg_table[ifields[0].value].name, disp);
20508 + return 2;
20509 +}
20510 +
20511 +static int
20512 +print_intreg_udisp(struct avr32_operand *op,
20513 + struct disassemble_info *info,
20514 + struct avr32_field_value *ifields)
20515 +{
20516 + info->fprintf_func(info->stream, "%s[0x%lx]",
20517 + reg_table[ifields[0].value].name,
20518 + ifields[1].value << op->align_order);
20519 + return 2;
20520 +}
20521 +
20522 +static int
20523 +print_intreg_index(struct avr32_operand *op ATTRIBUTE_UNUSED,
20524 + struct disassemble_info *info,
20525 + struct avr32_field_value *ifields)
20526 +{
20527 + const char *rb, *ri;
20528 + unsigned long sa = ifields[2].value;
20529 +
20530 + rb = reg_table[ifields[0].value].name;
20531 + ri = reg_table[ifields[1].value].name;
20532 +
20533 + if (sa)
20534 + info->fprintf_func(info->stream, "%s[%s<<0x%lx]", rb, ri, sa);
20535 + else
20536 + info->fprintf_func(info->stream, "%s[%s]", rb, ri);
20537 +
20538 + return 3;
20539 +}
20540 +
20541 +static int
20542 +print_intreg_xindex(struct avr32_operand *op ATTRIBUTE_UNUSED,
20543 + struct disassemble_info *info,
20544 + struct avr32_field_value *ifields)
20545 +{
20546 + info->fprintf_func(info->stream, "%s[%s:%c<<2]",
20547 + reg_table[ifields[0].value].name,
20548 + reg_table[ifields[1].value].name,
20549 + bparts[ifields[2].value]);
20550 + return 3;
20551 +}
20552 +
20553 +static int
20554 +print_jmplabel(struct avr32_operand *op,
20555 + struct disassemble_info *info,
20556 + struct avr32_field_value *ifields)
20557 +{
20558 + bfd_vma address, offset;
20559 +
20560 + offset = get_signed_value(ifields) << op->align_order;
20561 + address = (current_pc & (~0UL << op->align_order)) + offset;
20562 +
20563 + info->print_address_func(address, info);
20564 +
20565 + return 1;
20566 +}
20567 +
20568 +static int
20569 +print_pc_disp(struct avr32_operand *op,
20570 + struct disassemble_info *info,
20571 + struct avr32_field_value *ifields)
20572 +{
20573 + bfd_vma address, offset;
20574 +
20575 + offset = ifields[0].value << op->align_order;
20576 + address = (current_pc & (~0UL << op->align_order)) + offset;
20577 +
20578 + info->print_address_func(address, info);
20579 +
20580 + return 1;
20581 +}
20582 +
20583 +static int
20584 +print_sp(struct avr32_operand *op ATTRIBUTE_UNUSED,
20585 + struct disassemble_info *info,
20586 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
20587 +{
20588 + info->fprintf_func(info->stream, "sp");
20589 + return 1;
20590 +}
20591 +
20592 +static int
20593 +print_sp_disp(struct avr32_operand *op,
20594 + struct disassemble_info *info,
20595 + struct avr32_field_value *ifields)
20596 +{
20597 + info->fprintf_func(info->stream, "sp[0x%lx]",
20598 + ifields[0].value << op->align_order);
20599 + return 1;
20600 +}
20601 +
20602 +static int
20603 +print_cpno(struct avr32_operand *op ATTRIBUTE_UNUSED,
20604 + struct disassemble_info *info,
20605 + struct avr32_field_value *ifields)
20606 +{
20607 + info->fprintf_func(info->stream, "cp%lu", ifields[0].value);
20608 + return 1;
20609 +}
20610 +
20611 +static int
20612 +print_cpreg(struct avr32_operand *op,
20613 + struct disassemble_info *info,
20614 + struct avr32_field_value *ifields)
20615 +{
20616 + info->fprintf_func(info->stream, "cr%lu",
20617 + ifields[0].value << op->align_order);
20618 + return 1;
20619 +}
20620 +
20621 +static int
20622 +print_uconst(struct avr32_operand *op,
20623 + struct disassemble_info *info,
20624 + struct avr32_field_value *ifields)
20625 +{
20626 + info->fprintf_func(info->stream, "0x%lx",
20627 + ifields[0].value << op->align_order);
20628 + return 1;
20629 +}
20630 +
20631 +static int
20632 +print_sconst(struct avr32_operand *op,
20633 + struct disassemble_info *info,
20634 + struct avr32_field_value *ifields)
20635 +{
20636 + info->fprintf_func(info->stream, "%ld",
20637 + get_signed_value(ifields) << op->align_order);
20638 + return 1;
20639 +}
20640 +
20641 +static int
20642 +print_reglist8_head(unsigned long regmask, int *commap,
20643 + struct disassemble_info *info)
20644 +{
20645 + int first = -1, last, i = 0;
20646 + int need_comma = 0;
20647 +
20648 + while (i < 12)
20649 + {
20650 + if (first == -1 && (regmask & 1))
20651 + {
20652 + first = i;
20653 + }
20654 + else if (first != -1 && !(regmask & 1))
20655 + {
20656 + last = i - 1;
20657 +
20658 + print_reglist_range(first, last, reg_table, need_comma, info);
20659 + need_comma = 1;
20660 + first = -1;
20661 + }
20662 +
20663 + if (i < 8)
20664 + i += 4;
20665 + else if (i < 10)
20666 + i += 2;
20667 + else
20668 + i++;
20669 + regmask >>= 1;
20670 + }
20671 +
20672 + *commap = need_comma;
20673 + return first;
20674 +}
20675 +
20676 +static void
20677 +print_reglist8_tail(unsigned long regmask, int first, int need_comma,
20678 + struct disassemble_info *info)
20679 +{
20680 + int last = 11;
20681 +
20682 + if (regmask & 0x20)
20683 + {
20684 + if (first == -1)
20685 + first = 12;
20686 + last = 12;
20687 + }
20688 +
20689 + if (first != -1)
20690 + {
20691 + print_reglist_range(first, last, reg_table, need_comma, info);
20692 + need_comma = 1;
20693 + first = -1;
20694 + }
20695 +
20696 + if (regmask & 0x40)
20697 + {
20698 + if (first == -1)
20699 + first = 14;
20700 + last = 14;
20701 + }
20702 +
20703 + if (regmask & 0x80)
20704 + {
20705 + if (first == -1)
20706 + first = 15;
20707 + last = 15;
20708 + }
20709 +
20710 + if (first != -1)
20711 + print_reglist_range(first, last, reg_table, need_comma, info);
20712 +}
20713 +
20714 +static int
20715 +print_reglist8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20716 + struct disassemble_info *info,
20717 + struct avr32_field_value *ifields)
20718 +{
20719 + unsigned long regmask = ifields[0].value;
20720 + int first, need_comma;
20721 +
20722 + first = print_reglist8_head(regmask, &need_comma, info);
20723 + print_reglist8_tail(regmask, first, need_comma, info);
20724 +
20725 + return 1;
20726 +}
20727 +
20728 +static int
20729 +print_reglist9(struct avr32_operand *op ATTRIBUTE_UNUSED,
20730 + struct disassemble_info *info,
20731 + struct avr32_field_value *ifields)
20732 +{
20733 + unsigned long regmask = ifields[0].value >> 1;
20734 + int first, last, need_comma;
20735 +
20736 + first = print_reglist8_head(regmask, &need_comma, info);
20737 +
20738 + if ((ifields[0].value & 0x101) == 0x101)
20739 + {
20740 + if (first != -1)
20741 + {
20742 + last = 11;
20743 +
20744 + print_reglist_range(first, last, reg_table, need_comma, info);
20745 + need_comma = 1;
20746 + first = -1;
20747 + }
20748 +
20749 + print_reglist_range(15, 15, reg_table, need_comma, info);
20750 +
20751 + regmask >>= 5;
20752 +
20753 + if ((regmask & 3) == 0)
20754 + info->fprintf_func(info->stream, ",r12=0");
20755 + else if ((regmask & 3) == 1)
20756 + info->fprintf_func(info->stream, ",r12=1");
20757 + else
20758 + info->fprintf_func(info->stream, ",r12=-1");
20759 + }
20760 + else
20761 + print_reglist8_tail(regmask, first, need_comma, info);
20762 +
20763 + return 1;
20764 +}
20765 +
20766 +static int
20767 +print_reglist16(struct avr32_operand *op ATTRIBUTE_UNUSED,
20768 + struct disassemble_info *info,
20769 + struct avr32_field_value *ifields)
20770 +{
20771 + unsigned long regmask = ifields[0].value;
20772 + unsigned int i = 0, first, last;
20773 + int need_comma = 0;
20774 +
20775 + while (i < 16)
20776 + {
20777 + if (regmask & 1)
20778 + {
20779 + first = i;
20780 + while (i < 16)
20781 + {
20782 + i++;
20783 + regmask >>= 1;
20784 + if (!(regmask & 1))
20785 + break;
20786 + }
20787 + last = i - 1;
20788 + print_reglist_range(first, last, reg_table, need_comma, info);
20789 + need_comma = 1;
20790 + }
20791 + else
20792 + {
20793 + i++;
20794 + regmask >>= 1;
20795 + }
20796 + }
20797 +
20798 + return 1;
20799 +}
20800 +
20801 +static int
20802 +print_reglist_ldm(struct avr32_operand *op,
20803 + struct disassemble_info *info,
20804 + struct avr32_field_value *ifields)
20805 +{
20806 + int rp, w_bit;
20807 + int i, first, last;
20808 + unsigned long regmask;
20809 +
20810 + rp = ifields[0].value;
20811 + w_bit = ifields[1].value;
20812 + regmask = ifields[2].value;
20813 +
20814 + if (regmask & (1 << AVR32_REG_PC) && rp == AVR32_REG_PC)
20815 + {
20816 + if (w_bit)
20817 + info->fprintf_func(info->stream, "sp++");
20818 + else
20819 + info->fprintf_func(info->stream, "sp");
20820 +
20821 + for (i = 0; i < 12; )
20822 + {
20823 + if (regmask & (1 << i))
20824 + {
20825 + first = i;
20826 + while (i < 12)
20827 + {
20828 + i++;
20829 + if (!(regmask & (1 << i)))
20830 + break;
20831 + }
20832 + last = i - 1;
20833 + print_reglist_range(first, last, reg_table, 1, info);
20834 + }
20835 + else
20836 + i++;
20837 + }
20838 +
20839 + info->fprintf_func(info->stream, ",pc");
20840 + if (regmask & (1 << AVR32_REG_LR))
20841 + info->fprintf_func(info->stream, ",r12=-1");
20842 + else if (regmask & (1 << AVR32_REG_R12))
20843 + info->fprintf_func(info->stream, ",r12=1");
20844 + else
20845 + info->fprintf_func(info->stream, ",r12=0");
20846 + }
20847 + else
20848 + {
20849 + if (w_bit)
20850 + info->fprintf_func(info->stream, "%s++,", reg_table[rp].name);
20851 + else
20852 + info->fprintf_func(info->stream, "%s,", reg_table[rp].name);
20853 +
20854 + print_reglist16(op, info, ifields + 2);
20855 + }
20856 +
20857 + return 3;
20858 +}
20859 +
20860 +static int
20861 +print_reglist_cp8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20862 + struct disassemble_info *info,
20863 + struct avr32_field_value *ifields)
20864 +{
20865 + unsigned long regmask = ifields[0].value;
20866 + unsigned int i = 0, first, last, offset = 0;
20867 + int need_comma = 0;
20868 +
20869 + if (ifields[1].value)
20870 + offset = 8;
20871 +
20872 + while (i < 8)
20873 + {
20874 + if (regmask & 1)
20875 + {
20876 + first = i;
20877 + while (i < 8)
20878 + {
20879 + i++;
20880 + regmask >>= 1;
20881 + if (!(regmask & 1))
20882 + break;
20883 + }
20884 + last = i - 1;
20885 + print_reglist_range(offset + first, offset + last,
20886 + cr_table, need_comma, info);
20887 + need_comma = 1;
20888 + }
20889 + else
20890 + {
20891 + i++;
20892 + regmask >>= 1;
20893 + }
20894 + }
20895 +
20896 + return 2;
20897 +}
20898 +
20899 +static int
20900 +print_reglist_cpd8(struct avr32_operand *op ATTRIBUTE_UNUSED,
20901 + struct disassemble_info *info,
20902 + struct avr32_field_value *ifields)
20903 +{
20904 + unsigned long regmask = ifields[0].value;
20905 + unsigned int i = 0, first, last;
20906 + int need_comma = 0;
20907 +
20908 + while (i < 8)
20909 + {
20910 + if (regmask & 1)
20911 + {
20912 + first = 2 * i;
20913 + while (i < 8)
20914 + {
20915 + i++;
20916 + regmask >>= 1;
20917 + if (!(regmask & 1))
20918 + break;
20919 + }
20920 + last = 2 * (i - 1) + 1;
20921 + print_reglist_range(first, last, cr_table, need_comma, info);
20922 + need_comma = 1;
20923 + }
20924 + else
20925 + {
20926 + i++;
20927 + regmask >>= 1;
20928 + }
20929 + }
20930 +
20931 + return 1;
20932 +}
20933 +
20934 +static int
20935 +print_retval(struct avr32_operand *op ATTRIBUTE_UNUSED,
20936 + struct disassemble_info *info,
20937 + struct avr32_field_value *ifields)
20938 +{
20939 + unsigned long regid = ifields[0].value;
20940 + const char *retval;
20941 +
20942 + if (regid < AVR32_REG_SP)
20943 + retval = reg_table[regid].name;
20944 + else if (regid == AVR32_REG_SP)
20945 + retval = "0";
20946 + else if (regid == AVR32_REG_LR)
20947 + retval = "-1";
20948 + else
20949 + retval = "1";
20950 +
20951 + info->fprintf_func(info->stream, "%s", retval);
20952 +
20953 + return 1;
20954 +}
20955 +
20956 +static int
20957 +print_mcall(struct avr32_operand *op,
20958 + struct disassemble_info *info,
20959 + struct avr32_field_value *ifields)
20960 +{
20961 + unsigned long regid = ifields[0].value;
20962 +
20963 + if (regid == AVR32_REG_PC)
20964 + print_jmplabel(op, info, ifields + 1);
20965 + else
20966 + print_intreg_sdisp(op, info, ifields);
20967 +
20968 + return 2;
20969 +}
20970 +
20971 +static int
20972 +print_jospinc(struct avr32_operand *op ATTRIBUTE_UNUSED,
20973 + struct disassemble_info *info,
20974 + struct avr32_field_value *ifields)
20975 +{
20976 + signed long value = ifields[0].value;
20977 +
20978 + if (value >= 4)
20979 + value -= 8;
20980 + else
20981 + value += 1;
20982 +
20983 + info->fprintf_func(info->stream, "%ld", value);
20984 +
20985 + return 1;
20986 +}
20987 +
20988 +static int
20989 +print_coh(struct avr32_operand *op ATTRIBUTE_UNUSED,
20990 + struct disassemble_info *info,
20991 + struct avr32_field_value *ifields ATTRIBUTE_UNUSED)
20992 +{
20993 + info->fprintf_func(info->stream, "COH");
20994 + return 0;
20995 +}
20996 +
20997 +#define OP(name, sgn, pcrel, align, func) \
20998 + { AVR32_OPERAND_##name, pcrel, align, print_##func }
20999 +
21000 +struct avr32_operand operand[AVR32_NR_OPERANDS] =
21001 + {
21002 + OP(INTREG, 0, 0, 0, intreg),
21003 + OP(INTREG_PREDEC, 0, 0, 0, intreg_predec),
21004 + OP(INTREG_POSTINC, 0, 0, 0, intreg_postinc),
21005 + OP(INTREG_LSL, 0, 0, 0, intreg_lsl),
21006 + OP(INTREG_LSR, 0, 0, 0, intreg_lsr),
21007 + OP(INTREG_BSEL, 0, 0, 0, intreg_bpart),
21008 + OP(INTREG_HSEL, 0, 0, 1, intreg_hpart),
21009 + OP(INTREG_SDISP, 1, 0, 0, intreg_sdisp),
21010 + OP(INTREG_SDISP_H, 1, 0, 1, intreg_sdisp),
21011 + OP(INTREG_SDISP_W, 1, 0, 2, intreg_sdisp),
21012 + OP(INTREG_UDISP, 0, 0, 0, intreg_udisp),
21013 + OP(INTREG_UDISP_H, 0, 0, 1, intreg_udisp),
21014 + OP(INTREG_UDISP_W, 0, 0, 2, intreg_udisp),
21015 + OP(INTREG_INDEX, 0, 0, 0, intreg_index),
21016 + OP(INTREG_XINDEX, 0, 0, 0, intreg_xindex),
21017 + OP(DWREG, 0, 0, 1, intreg),
21018 + OP(PC_UDISP_W, 0, 1, 2, pc_disp),
21019 + OP(SP, 0, 0, 0, sp),
21020 + OP(SP_UDISP_W, 0, 0, 2, sp_disp),
21021 + OP(CPNO, 0, 0, 0, cpno),
21022 + OP(CPREG, 0, 0, 0, cpreg),
21023 + OP(CPREG_D, 0, 0, 1, cpreg),
21024 + OP(UNSIGNED_CONST, 0, 0, 0, uconst),
21025 + OP(UNSIGNED_CONST_W, 0, 0, 2, uconst),
21026 + OP(SIGNED_CONST, 1, 0, 0, sconst),
21027 + OP(SIGNED_CONST_W, 1, 0, 2, sconst),
21028 + OP(JMPLABEL, 1, 1, 1, jmplabel),
21029 + OP(UNSIGNED_NUMBER, 0, 0, 0, uconst),
21030 + OP(UNSIGNED_NUMBER_W, 0, 0, 2, uconst),
21031 + OP(REGLIST8, 0, 0, 0, reglist8),
21032 + OP(REGLIST9, 0, 0, 0, reglist9),
21033 + OP(REGLIST16, 0, 0, 0, reglist16),
21034 + OP(REGLIST_LDM, 0, 0, 0, reglist_ldm),
21035 + OP(REGLIST_CP8, 0, 0, 0, reglist_cp8),
21036 + OP(REGLIST_CPD8, 0, 0, 0, reglist_cpd8),
21037 + OP(RETVAL, 0, 0, 0, retval),
21038 + OP(MCALL, 1, 0, 2, mcall),
21039 + OP(JOSPINC, 0, 0, 0, jospinc),
21040 + OP(COH, 0, 0, 0, coh),
21041 + };
21042 +
21043 +static void
21044 +print_opcode(bfd_vma insn_word, const struct avr32_opcode *opc,
21045 + bfd_vma pc, struct disassemble_info *info)
21046 +{
21047 + const struct avr32_syntax *syntax = opc->syntax;
21048 + struct avr32_field_value fields[AVR32_MAX_FIELDS];
21049 + unsigned int i, next_field = 0, nr_operands;
21050 +
21051 + for (i = 0; i < opc->nr_fields; i++)
21052 + {
21053 + opc->fields[i]->extract(opc->fields[i], &insn_word, &fields[i].value);
21054 + fields[i].ifield = opc->fields[i];
21055 + }
21056 +
21057 + current_pc = pc;
21058 + info->fprintf_func(info->stream, "%s", syntax->mnemonic->name);
21059 +
21060 + if (syntax->nr_operands < 0)
21061 + nr_operands = (unsigned int) -syntax->nr_operands;
21062 + else
21063 + nr_operands = (unsigned int) syntax->nr_operands;
21064 +
21065 + for (i = 0; i < nr_operands; i++)
21066 + {
21067 + struct avr32_operand *op = &operand[syntax->operand[i]];
21068 +
21069 + if (i)
21070 + info->fprintf_func(info->stream, ",");
21071 + else
21072 + info->fprintf_func(info->stream, "\t");
21073 + next_field += op->print(op, info, &fields[next_field]);
21074 + }
21075 +}
21076 +
21077 +static const struct avr32_opcode *
21078 +find_opcode(bfd_vma insn_word)
21079 +{
21080 + int i;
21081 +
21082 + for (i = 0; i < AVR32_NR_OPCODES; i++)
21083 + {
21084 + const struct avr32_opcode *opc = &avr32_opc_table[i];
21085 +
21086 + if ((insn_word & opc->mask) == opc->value)
21087 + return opc;
21088 + }
21089 +
21090 + return NULL;
21091 +}
21092 +
21093 +static int
21094 +read_insn_word(bfd_vma pc, bfd_vma *valuep,
21095 + struct disassemble_info *info)
21096 +{
21097 + bfd_byte b[4];
21098 + int status;
21099 +
21100 + status = info->read_memory_func(pc, b, 4, info);
21101 + if (status)
21102 + {
21103 + status = info->read_memory_func(pc, b, 2, info);
21104 + if (status)
21105 + {
21106 + info->memory_error_func(status, pc, info);
21107 + return -1;
21108 + }
21109 + b[3] = b[2] = 0;
21110 + }
21111 +
21112 + *valuep = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3];
21113 + return 0;
21114 +}
21115 +
21116 +/* Parse an individual disassembler option. */
21117 +
21118 +void
21119 +parse_avr32_disassembler_option (option)
21120 + char * option;
21121 +{
21122 + if (option == NULL)
21123 + return;
21124 +
21125 + /* XXX - should break 'option' at following delimiter. */
21126 + fprintf (stderr, _("Unrecognised disassembler option: %s\n"), option);
21127 +
21128 + return;
21129 +}
21130 +
21131 +/* Parse the string of disassembler options, spliting it at whitespaces
21132 + or commas. (Whitespace separators supported for backwards compatibility). */
21133 +
21134 +static void
21135 +parse_disassembler_options (char *options)
21136 +{
21137 + if (options == NULL)
21138 + return;
21139 +
21140 + while (*options)
21141 + {
21142 + parse_avr32_disassembler_option (options);
21143 +
21144 + /* Skip forward to next seperator. */
21145 + while ((*options) && (! ISSPACE (*options)) && (*options != ','))
21146 + ++ options;
21147 + /* Skip forward past seperators. */
21148 + while (ISSPACE (*options) || (*options == ','))
21149 + ++ options;
21150 + }
21151 +}
21152 +
21153 +int
21154 +print_insn_avr32(bfd_vma pc, struct disassemble_info *info)
21155 +{
21156 + bfd_vma insn_word;
21157 + const struct avr32_opcode *opc;
21158 +
21159 + if (info->disassembler_options)
21160 + {
21161 + parse_disassembler_options (info->disassembler_options);
21162 +
21163 + /* To avoid repeated parsing of these options, we remove them here. */
21164 + info->disassembler_options = NULL;
21165 + }
21166 +
21167 + info->bytes_per_chunk = 1;
21168 + info->display_endian = BFD_ENDIAN_BIG;
21169 +
21170 + if (read_insn_word(pc, &insn_word, info))
21171 + return -1;
21172 +
21173 + opc = find_opcode(insn_word);
21174 + if (opc)
21175 + {
21176 + print_opcode(insn_word, opc, pc, info);
21177 + return opc->size;
21178 + }
21179 + else
21180 + {
21181 + info->fprintf_func(info->stream, _("*unknown*"));
21182 + return 2;
21183 + }
21184 +
21185 +}
21186 +
21187 +void
21188 +print_avr32_disassembler_options (FILE *stream ATTRIBUTE_UNUSED)
21189 +{
21190 +
21191 +}
21192 --- /dev/null
21193 +++ b/opcodes/avr32-opc.c
21194 @@ -0,0 +1,6932 @@
21195 +/* Opcode tables for AVR32.
21196 + Copyright 2005, 2006 Atmel Corporation.
21197 +
21198 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
21199 +
21200 + This file is part of libopcodes.
21201 +
21202 + This program is free software; you can redistribute it and/or
21203 + modify it under the terms of the GNU General Public License as
21204 + published by the Free Software Foundation; either version 2 of the
21205 + License, or (at your option) any later version.
21206 +
21207 + This program is distributed in the hope that it will be useful, but
21208 + WITHOUT ANY WARRANTY; without even the implied warranty of
21209 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21210 + General Public License for more details.
21211 +
21212 + You should have received a copy of the GNU General Public License
21213 + along with this program; if not, write to the Free Software
21214 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21215 + 02111-1307, USA. */
21216 +
21217 +#include <stdlib.h>
21218 +#include <assert.h>
21219 +
21220 +#include "avr32-opc.h"
21221 +
21222 +#define PICO_CPNO 1
21223 +
21224 +void
21225 +avr32_insert_simple(const struct avr32_ifield *field,
21226 + void *buf, unsigned long value)
21227 +{
21228 + bfd_vma word;
21229 +
21230 + word = bfd_getb32(buf);
21231 + word &= ~field->mask;
21232 + word |= (value << field->shift) & field->mask;
21233 + bfd_putb32(word, buf);
21234 +}
21235 +
21236 +void
21237 +avr32_insert_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21238 + void *buf, unsigned long value)
21239 +{
21240 + char *opcode = buf;
21241 +
21242 + opcode[0] = (opcode[0] & 0xe1) | (value & 0x1e);
21243 + opcode[1] = (opcode[1] & 0xef) | ((value & 1) << 4);
21244 +}
21245 +
21246 +void
21247 +avr32_insert_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21248 + void *buf, unsigned long value)
21249 +{
21250 + char *opcode = buf;
21251 +
21252 + opcode[0] = (opcode[0] & 0xf0) | ((value & 0xf0) >> 4);
21253 + opcode[1] = ((opcode[1] & 0x0c) | ((value & 0x0f) << 4)
21254 + | ((value & 0x300) >> 8));
21255 +}
21256 +
21257 +
21258 +void
21259 +avr32_insert_k21(const struct avr32_ifield *field,
21260 + void *buf, unsigned long value)
21261 +{
21262 + bfd_vma word;
21263 + bfd_vma k21;
21264 +
21265 + word = bfd_getb32(buf);
21266 + word &= ~field->mask;
21267 + k21 = ((value & 0xffff) | ((value & 0x10000) << 4)
21268 + | ((value & 0x1e0000) << 8));
21269 + assert(!(k21 & ~field->mask));
21270 + word |= k21;
21271 + bfd_putb32(word, buf);
21272 +}
21273 +
21274 +void
21275 +avr32_insert_cpop(const struct avr32_ifield *field,
21276 + void *buf, unsigned long value)
21277 +{
21278 + bfd_vma word;
21279 +
21280 + word = bfd_getb32(buf);
21281 + word &= ~field->mask;
21282 + word |= (((value & 0x1e) << 15) | ((value & 0x60) << 20)
21283 + | ((value & 0x01) << 12));
21284 + bfd_putb32(word, buf);
21285 +}
21286 +
21287 +void
21288 +avr32_insert_k12cp(const struct avr32_ifield *field,
21289 + void *buf, unsigned long value)
21290 +{
21291 + bfd_vma word;
21292 +
21293 + word = bfd_getb32(buf);
21294 + word &= ~field->mask;
21295 + word |= ((value & 0xf00) << 4) | (value & 0xff);
21296 + bfd_putb32(word, buf);
21297 +}
21298 +
21299 +void avr32_extract_simple(const struct avr32_ifield *field,
21300 + void *buf, unsigned long *value)
21301 +{
21302 + /* XXX: The disassembler has done any necessary byteswapping already */
21303 + bfd_vma word = *(bfd_vma *)buf;
21304 +
21305 + *value = (word & field->mask) >> field->shift;
21306 +}
21307 +
21308 +void avr32_extract_bit5c(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21309 + void *buf, unsigned long *value)
21310 +{
21311 + bfd_vma word = *(bfd_vma *)buf;
21312 +
21313 + *value = ((word >> 20) & 1) | ((word >> 24) & 0x1e);
21314 +}
21315 +
21316 +void avr32_extract_k10(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21317 + void *buf, unsigned long *value)
21318 +{
21319 + bfd_vma word = *(bfd_vma *)buf;
21320 +
21321 + *value = ((word >> 8) & 0x300) | ((word >> 20) & 0xff);
21322 +}
21323 +
21324 +void avr32_extract_k21(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21325 + void *buf, unsigned long *value)
21326 +{
21327 + bfd_vma word = *(bfd_vma *)buf;
21328 +
21329 + *value = ((word & 0xffff) | ((word >> 4) & 0x10000)
21330 + | ((word >> 8) & 0x1e0000));
21331 +}
21332 +
21333 +void avr32_extract_cpop(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21334 + void *buf, unsigned long *value)
21335 +{
21336 + bfd_vma word = *(bfd_vma *)buf;
21337 +
21338 + *value = (((word >> 12) & 1) | ((word >> 15) & 0x1e)
21339 + | ((word >> 20) & 0x60));
21340 +}
21341 +
21342 +void avr32_extract_k12cp(const struct avr32_ifield *field ATTRIBUTE_UNUSED,
21343 + void *buf, unsigned long *value)
21344 +{
21345 + bfd_vma word = *(bfd_vma *)buf;
21346 +
21347 + *value = ((word >> 4) & 0xf00) | (word & 0xff);
21348 +}
21349 +
21350 +
21351 +#define IFLD(id, bitsz, shift, mask, func) \
21352 + { AVR32_IFIELD_##id, bitsz, shift, mask, \
21353 + avr32_insert_##func, avr32_extract_##func }
21354 +
21355 +const struct avr32_ifield avr32_ifield_table[] =
21356 + {
21357 + IFLD(RX, 4, 25, 0x1e000000, simple),
21358 + IFLD(RY, 4, 16, 0x000f0000, simple),
21359 + IFLD(COND4C, 4, 20, 0x00f00000, simple),
21360 + IFLD(K8C, 8, 20, 0x0ff00000, simple),
21361 + IFLD(K7C, 7, 20, 0x07f00000, simple),
21362 + IFLD(K5C, 5, 20, 0x01f00000, simple),
21363 + IFLD(K3, 3, 20, 0x00700000, simple),
21364 + IFLD(RY_DW, 3, 17, 0x000e0000, simple),
21365 + IFLD(COND4E, 4, 8, 0x00000f00, simple),
21366 + IFLD(K8E, 8, 0, 0x000000ff, simple),
21367 + IFLD(BIT5C, 5, 20, 0x1e100000, bit5c),
21368 + IFLD(COND3, 3, 16, 0x00070000, simple),
21369 + IFLD(K10, 10, 16, 0x0ff30000, k10),
21370 + IFLD(POPM, 9, 19, 0x0ff80000, simple),
21371 + IFLD(K2, 2, 4, 0x00000030, simple),
21372 + IFLD(RD_E, 4, 0, 0x0000000f, simple),
21373 + IFLD(RD_DW, 3, 1, 0x0000000e, simple),
21374 + IFLD(X, 1, 5, 0x00000020, simple),
21375 + IFLD(Y, 1, 4, 0x00000010, simple),
21376 + IFLD(X2, 1, 13, 0x00002000, simple),
21377 + IFLD(Y2, 1, 12, 0x00001000, simple),
21378 + IFLD(K5E, 5, 0, 0x0000001f, simple),
21379 + IFLD(PART2, 2, 0, 0x00000003, simple),
21380 + IFLD(PART1, 1, 0, 0x00000001, simple),
21381 + IFLD(K16, 16, 0, 0x0000ffff, simple),
21382 + IFLD(CACHEOP, 5, 11, 0x0000f800, simple),
21383 + IFLD(K11, 11, 0, 0x000007ff, simple),
21384 + IFLD(K21, 21, 0, 0x1e10ffff, k21),
21385 + IFLD(CPOP, 7, 12, 0x060f1000, cpop),
21386 + IFLD(CPNO, 3, 13, 0x0000e000, simple),
21387 + IFLD(CRD_RI, 4, 8, 0x00000f00, simple),
21388 + IFLD(CRX, 4, 4, 0x000000f0, simple),
21389 + IFLD(CRY, 4, 0, 0x0000000f, simple),
21390 + IFLD(K7E, 7, 0, 0x0000007f, simple),
21391 + IFLD(CRD_DW, 3, 9, 0x00000e00, simple),
21392 + IFLD(PART1_K12, 1, 12, 0x00001000, simple),
21393 + IFLD(PART2_K12, 2, 12, 0x00003000, simple),
21394 + IFLD(K12, 12, 0, 0x00000fff, simple),
21395 + IFLD(S5, 5, 5, 0x000003e0, simple),
21396 + IFLD(K5E2, 5, 4, 0x000001f0, simple),
21397 + IFLD(K4, 4, 20, 0x00f00000, simple),
21398 + IFLD(COND4E2, 4, 4, 0x000000f0, simple),
21399 + IFLD(K8E2, 8, 4, 0x00000ff0, simple),
21400 + IFLD(K6, 6, 20, 0x03f00000, simple),
21401 + IFLD(MEM15, 15, 0, 0x00007fff, simple),
21402 + IFLD(MEMB5, 5, 15, 0x000f8000, simple),
21403 + IFLD(W, 1, 25, 0x02000000, simple),
21404 + /* Coprocessor Multiple High/Low */
21405 + IFLD(CM_HL, 1, 8, 0x00000100, simple),
21406 + IFLD(K12CP, 12 ,0, 0x0000f0ff, k12cp),
21407 + IFLD(K9E, 9 ,0, 0x000001ff, simple),
21408 + };
21409 +#undef IFLD
21410 +
21411 +
21412 +struct avr32_opcode avr32_opc_table[] =
21413 + {
21414 + {
21415 + AVR32_OPC_ABS, 2, 0x5c400000, 0xfff00000,
21416 + &avr32_syntax_table[AVR32_SYNTAX_ABS],
21417 + BFD_RELOC_UNUSED, 1, -1,
21418 + {
21419 + &avr32_ifield_table[AVR32_IFIELD_RY],
21420 + }
21421 + },
21422 + {
21423 + AVR32_OPC_ACALL, 2, 0xd0000000, 0xf00f0000,
21424 + &avr32_syntax_table[AVR32_SYNTAX_ACALL],
21425 + BFD_RELOC_UNUSED, 1, -1,
21426 + {
21427 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21428 + },
21429 + },
21430 + {
21431 + AVR32_OPC_ACR, 2, 0x5c000000, 0xfff00000,
21432 + &avr32_syntax_table[AVR32_SYNTAX_ACR],
21433 + BFD_RELOC_UNUSED, 1, -1,
21434 + {
21435 + &avr32_ifield_table[AVR32_IFIELD_RY],
21436 + },
21437 + },
21438 + {
21439 + AVR32_OPC_ADC, 4, 0xe0000040, 0xe1f0fff0,
21440 + &avr32_syntax_table[AVR32_SYNTAX_ADC],
21441 + BFD_RELOC_UNUSED, 3, -1,
21442 + {
21443 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21444 + &avr32_ifield_table[AVR32_IFIELD_RX],
21445 + &avr32_ifield_table[AVR32_IFIELD_RY],
21446 + },
21447 + },
21448 + {
21449 + AVR32_OPC_ADD1, 2, 0x00000000, 0xe1f00000,
21450 + &avr32_syntax_table[AVR32_SYNTAX_ADD1],
21451 + BFD_RELOC_UNUSED, 2, -1,
21452 + {
21453 + &avr32_ifield_table[AVR32_IFIELD_RY],
21454 + &avr32_ifield_table[AVR32_IFIELD_RX],
21455 + },
21456 + },
21457 + {
21458 + AVR32_OPC_ADD2, 4, 0xe0000000, 0xe1f0ffc0,
21459 + &avr32_syntax_table[AVR32_SYNTAX_ADD2],
21460 + BFD_RELOC_UNUSED, 4, -1,
21461 + {
21462 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21463 + &avr32_ifield_table[AVR32_IFIELD_RX],
21464 + &avr32_ifield_table[AVR32_IFIELD_RY],
21465 + &avr32_ifield_table[AVR32_IFIELD_K2],
21466 + },
21467 + },
21468 + {
21469 + AVR32_OPC_ADDABS, 4, 0xe0000e40, 0xe1f0fff0,
21470 + &avr32_syntax_table[AVR32_SYNTAX_ADDABS],
21471 + BFD_RELOC_UNUSED, 3, -1,
21472 + {
21473 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21474 + &avr32_ifield_table[AVR32_IFIELD_RX],
21475 + &avr32_ifield_table[AVR32_IFIELD_RY],
21476 + },
21477 + },
21478 + {
21479 + AVR32_OPC_ADDHH_W, 4, 0xe0000e00, 0xe1f0ffc0,
21480 + &avr32_syntax_table[AVR32_SYNTAX_ADDHH_W],
21481 + BFD_RELOC_UNUSED, 5, -1,
21482 + {
21483 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21484 + &avr32_ifield_table[AVR32_IFIELD_RX],
21485 + &avr32_ifield_table[AVR32_IFIELD_X],
21486 + &avr32_ifield_table[AVR32_IFIELD_RY],
21487 + &avr32_ifield_table[AVR32_IFIELD_Y],
21488 + },
21489 + },
21490 + {
21491 + AVR32_OPC_AND1, 2, 0x00600000, 0xe1f00000,
21492 + &avr32_syntax_table[AVR32_SYNTAX_AND1],
21493 + BFD_RELOC_UNUSED, 2, -1,
21494 + {
21495 + &avr32_ifield_table[AVR32_IFIELD_RY],
21496 + &avr32_ifield_table[AVR32_IFIELD_RX],
21497 + },
21498 + },
21499 + {
21500 + AVR32_OPC_AND2, 4, 0xe1e00000, 0xe1f0fe00,
21501 + &avr32_syntax_table[AVR32_SYNTAX_AND2],
21502 + BFD_RELOC_UNUSED, 4, -1,
21503 + {
21504 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21505 + &avr32_ifield_table[AVR32_IFIELD_RX],
21506 + &avr32_ifield_table[AVR32_IFIELD_RY],
21507 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21508 + },
21509 + },
21510 + {
21511 + AVR32_OPC_AND3, 4, 0xe1e00200, 0xe1f0fe00,
21512 + &avr32_syntax_table[AVR32_SYNTAX_AND3],
21513 + BFD_RELOC_UNUSED, 4, -1,
21514 + {
21515 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21516 + &avr32_ifield_table[AVR32_IFIELD_RX],
21517 + &avr32_ifield_table[AVR32_IFIELD_RY],
21518 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
21519 + },
21520 + },
21521 + {
21522 + AVR32_OPC_ANDH, 4, 0xe4100000, 0xfff00000,
21523 + &avr32_syntax_table[AVR32_SYNTAX_ANDH],
21524 + BFD_RELOC_AVR32_16U, 2, 1,
21525 + {
21526 + &avr32_ifield_table[AVR32_IFIELD_RY],
21527 + &avr32_ifield_table[AVR32_IFIELD_K16],
21528 + },
21529 + },
21530 + {
21531 + AVR32_OPC_ANDH_COH, 4, 0xe6100000, 0xfff00000,
21532 + &avr32_syntax_table[AVR32_SYNTAX_ANDH_COH],
21533 + BFD_RELOC_AVR32_16U, 2, 1,
21534 + {
21535 + &avr32_ifield_table[AVR32_IFIELD_RY],
21536 + &avr32_ifield_table[AVR32_IFIELD_K16],
21537 + },
21538 + },
21539 + {
21540 + AVR32_OPC_ANDL, 4, 0xe0100000, 0xfff00000,
21541 + &avr32_syntax_table[AVR32_SYNTAX_ANDL],
21542 + BFD_RELOC_AVR32_16U, 2, 1,
21543 + {
21544 + &avr32_ifield_table[AVR32_IFIELD_RY],
21545 + &avr32_ifield_table[AVR32_IFIELD_K16],
21546 + },
21547 + },
21548 + {
21549 + AVR32_OPC_ANDL_COH, 4, 0xe2100000, 0xfff00000,
21550 + &avr32_syntax_table[AVR32_SYNTAX_ANDL_COH],
21551 + BFD_RELOC_AVR32_16U, 2, 1,
21552 + {
21553 + &avr32_ifield_table[AVR32_IFIELD_RY],
21554 + &avr32_ifield_table[AVR32_IFIELD_K16],
21555 + },
21556 + },
21557 + {
21558 + AVR32_OPC_ANDN, 2, 0x00800000, 0xe1f00000,
21559 + &avr32_syntax_table[AVR32_SYNTAX_ANDN],
21560 + BFD_RELOC_UNUSED, 2, -1,
21561 + {
21562 + &avr32_ifield_table[AVR32_IFIELD_RY],
21563 + &avr32_ifield_table[AVR32_IFIELD_RX],
21564 + },
21565 + },
21566 + {
21567 + AVR32_OPC_ASR1, 4, 0xe0000840, 0xe1f0fff0,
21568 + &avr32_syntax_table[AVR32_SYNTAX_ASR1],
21569 + BFD_RELOC_UNUSED, 3, -1,
21570 + {
21571 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21572 + &avr32_ifield_table[AVR32_IFIELD_RX],
21573 + &avr32_ifield_table[AVR32_IFIELD_RY],
21574 + },
21575 + },
21576 + {
21577 + AVR32_OPC_ASR3, 4, 0xe0001400, 0xe1f0ffe0,
21578 + &avr32_syntax_table[AVR32_SYNTAX_ASR3],
21579 + BFD_RELOC_UNUSED, 3, -1,
21580 + {
21581 + &avr32_ifield_table[AVR32_IFIELD_RY],
21582 + &avr32_ifield_table[AVR32_IFIELD_RX],
21583 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21584 + },
21585 + },
21586 + {
21587 + AVR32_OPC_ASR2, 2, 0xa1400000, 0xe1e00000,
21588 + &avr32_syntax_table[AVR32_SYNTAX_ASR2],
21589 + BFD_RELOC_UNUSED, 2, -1,
21590 + {
21591 + &avr32_ifield_table[AVR32_IFIELD_RY],
21592 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
21593 + },
21594 + },
21595 + {
21596 + AVR32_OPC_BLD, 4, 0xedb00000, 0xfff0ffe0,
21597 + &avr32_syntax_table[AVR32_SYNTAX_BLD],
21598 + BFD_RELOC_UNUSED, 2, -1,
21599 + {
21600 + &avr32_ifield_table[AVR32_IFIELD_RY],
21601 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21602 + },
21603 + },
21604 + {
21605 + AVR32_OPC_BREQ1, 2, 0xc0000000, 0xf00f0000,
21606 + &avr32_syntax_table[AVR32_SYNTAX_BREQ1],
21607 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21608 + {
21609 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21610 + },
21611 + },
21612 + {
21613 + AVR32_OPC_BRNE1, 2, 0xc0010000, 0xf00f0000,
21614 + &avr32_syntax_table[AVR32_SYNTAX_BRNE1],
21615 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21616 + {
21617 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21618 + },
21619 + },
21620 + {
21621 + AVR32_OPC_BRCC1, 2, 0xc0020000, 0xf00f0000,
21622 + &avr32_syntax_table[AVR32_SYNTAX_BRCC1],
21623 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21624 + {
21625 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21626 + },
21627 + },
21628 + {
21629 + AVR32_OPC_BRCS1, 2, 0xc0030000, 0xf00f0000,
21630 + &avr32_syntax_table[AVR32_SYNTAX_BRCS1],
21631 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21632 + {
21633 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21634 + },
21635 + },
21636 + {
21637 + AVR32_OPC_BRGE1, 2, 0xc0040000, 0xf00f0000,
21638 + &avr32_syntax_table[AVR32_SYNTAX_BRGE1],
21639 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21640 + {
21641 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21642 + },
21643 + },
21644 + {
21645 + AVR32_OPC_BRLT1, 2, 0xc0050000, 0xf00f0000,
21646 + &avr32_syntax_table[AVR32_SYNTAX_BRLT1],
21647 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21648 + {
21649 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21650 + },
21651 + },
21652 + {
21653 + AVR32_OPC_BRMI1, 2, 0xc0060000, 0xf00f0000,
21654 + &avr32_syntax_table[AVR32_SYNTAX_BRMI1],
21655 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21656 + {
21657 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21658 + },
21659 + },
21660 + {
21661 + AVR32_OPC_BRPL1, 2, 0xc0070000, 0xf00f0000,
21662 + &avr32_syntax_table[AVR32_SYNTAX_BRPL1],
21663 + BFD_RELOC_AVR32_9H_PCREL, 1, 0,
21664 + {
21665 + &avr32_ifield_table[AVR32_IFIELD_K8C],
21666 + },
21667 + },
21668 + {
21669 + AVR32_OPC_BREQ2, 4, 0xe0800000, 0xe1ef0000,
21670 + &avr32_syntax_table[AVR32_SYNTAX_BREQ2],
21671 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21672 + {
21673 + &avr32_ifield_table[AVR32_IFIELD_K21],
21674 + },
21675 + },
21676 + {
21677 + AVR32_OPC_BRNE2, 4, 0xe0810000, 0xe1ef0000,
21678 + &avr32_syntax_table[AVR32_SYNTAX_BRNE2],
21679 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21680 + {
21681 + &avr32_ifield_table[AVR32_IFIELD_K21],
21682 + },
21683 + },
21684 + {
21685 + AVR32_OPC_BRCC2, 4, 0xe0820000, 0xe1ef0000,
21686 + &avr32_syntax_table[AVR32_SYNTAX_BRHS2],
21687 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21688 + {
21689 + &avr32_ifield_table[AVR32_IFIELD_K21],
21690 + },
21691 + },
21692 + {
21693 + AVR32_OPC_BRCS2, 4, 0xe0830000, 0xe1ef0000,
21694 + &avr32_syntax_table[AVR32_SYNTAX_BRLO2],
21695 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21696 + {
21697 + &avr32_ifield_table[AVR32_IFIELD_K21],
21698 + },
21699 + },
21700 + {
21701 + AVR32_OPC_BRGE2, 4, 0xe0840000, 0xe1ef0000,
21702 + &avr32_syntax_table[AVR32_SYNTAX_BRGE2],
21703 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21704 + {
21705 + &avr32_ifield_table[AVR32_IFIELD_K21],
21706 + },
21707 + },
21708 + {
21709 + AVR32_OPC_BRLT2, 4, 0xe0850000, 0xe1ef0000,
21710 + &avr32_syntax_table[AVR32_SYNTAX_BRLT2],
21711 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21712 + {
21713 + &avr32_ifield_table[AVR32_IFIELD_K21],
21714 + },
21715 + },
21716 + {
21717 + AVR32_OPC_BRMI2, 4, 0xe0860000, 0xe1ef0000,
21718 + &avr32_syntax_table[AVR32_SYNTAX_BRMI2],
21719 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21720 + {
21721 + &avr32_ifield_table[AVR32_IFIELD_K21],
21722 + },
21723 + },
21724 + {
21725 + AVR32_OPC_BRPL2, 4, 0xe0870000, 0xe1ef0000,
21726 + &avr32_syntax_table[AVR32_SYNTAX_BRPL2],
21727 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21728 + {
21729 + &avr32_ifield_table[AVR32_IFIELD_K21],
21730 + },
21731 + },
21732 + {
21733 + AVR32_OPC_BRLS, 4, 0xe0880000, 0xe1ef0000,
21734 + &avr32_syntax_table[AVR32_SYNTAX_BRLS],
21735 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21736 + {
21737 + &avr32_ifield_table[AVR32_IFIELD_K21],
21738 + },
21739 + },
21740 + {
21741 + AVR32_OPC_BRGT, 4, 0xe0890000, 0xe1ef0000,
21742 + &avr32_syntax_table[AVR32_SYNTAX_BRGT],
21743 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21744 + {
21745 + &avr32_ifield_table[AVR32_IFIELD_K21],
21746 + },
21747 + },
21748 + {
21749 + AVR32_OPC_BRLE, 4, 0xe08a0000, 0xe1ef0000,
21750 + &avr32_syntax_table[AVR32_SYNTAX_BRLE],
21751 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21752 + {
21753 + &avr32_ifield_table[AVR32_IFIELD_K21],
21754 + },
21755 + },
21756 + {
21757 + AVR32_OPC_BRHI, 4, 0xe08b0000, 0xe1ef0000,
21758 + &avr32_syntax_table[AVR32_SYNTAX_BRHI],
21759 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21760 + {
21761 + &avr32_ifield_table[AVR32_IFIELD_K21],
21762 + },
21763 + },
21764 + {
21765 + AVR32_OPC_BRVS, 4, 0xe08c0000, 0xe1ef0000,
21766 + &avr32_syntax_table[AVR32_SYNTAX_BRVS],
21767 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21768 + {
21769 + &avr32_ifield_table[AVR32_IFIELD_K21],
21770 + },
21771 + },
21772 + {
21773 + AVR32_OPC_BRVC, 4, 0xe08d0000, 0xe1ef0000,
21774 + &avr32_syntax_table[AVR32_SYNTAX_BRVC],
21775 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21776 + {
21777 + &avr32_ifield_table[AVR32_IFIELD_K21],
21778 + },
21779 + },
21780 + {
21781 + AVR32_OPC_BRQS, 4, 0xe08e0000, 0xe1ef0000,
21782 + &avr32_syntax_table[AVR32_SYNTAX_BRQS],
21783 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21784 + {
21785 + &avr32_ifield_table[AVR32_IFIELD_K21],
21786 + },
21787 + },
21788 + {
21789 + AVR32_OPC_BRAL, 4, 0xe08f0000, 0xe1ef0000,
21790 + &avr32_syntax_table[AVR32_SYNTAX_BRAL],
21791 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
21792 + {
21793 + &avr32_ifield_table[AVR32_IFIELD_K21],
21794 + },
21795 + },
21796 + {
21797 + AVR32_OPC_BREAKPOINT, 2, 0xd6730000, 0xffff0000,
21798 + &avr32_syntax_table[AVR32_SYNTAX_BREAKPOINT],
21799 + BFD_RELOC_UNUSED, 0, -1, { NULL },
21800 + },
21801 + {
21802 + AVR32_OPC_BREV, 2, 0x5c900000, 0xfff00000,
21803 + &avr32_syntax_table[AVR32_SYNTAX_BREV],
21804 + BFD_RELOC_UNUSED, 1, -1,
21805 + {
21806 + &avr32_ifield_table[AVR32_IFIELD_RY],
21807 + },
21808 + },
21809 + {
21810 + AVR32_OPC_BST, 4, 0xefb00000, 0xfff0ffe0,
21811 + &avr32_syntax_table[AVR32_SYNTAX_BST],
21812 + BFD_RELOC_UNUSED, 2, -1,
21813 + {
21814 + &avr32_ifield_table[AVR32_IFIELD_RY],
21815 + &avr32_ifield_table[AVR32_IFIELD_K5E],
21816 + },
21817 + },
21818 + {
21819 + AVR32_OPC_CACHE, 4, 0xf4100000, 0xfff00000,
21820 + &avr32_syntax_table[AVR32_SYNTAX_CACHE],
21821 + BFD_RELOC_UNUSED, 3, -1,
21822 + {
21823 + &avr32_ifield_table[AVR32_IFIELD_RY],
21824 + &avr32_ifield_table[AVR32_IFIELD_K11],
21825 + &avr32_ifield_table[AVR32_IFIELD_CACHEOP],
21826 + },
21827 + },
21828 + {
21829 + AVR32_OPC_CASTS_B, 2, 0x5c600000, 0xfff00000,
21830 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_B],
21831 + BFD_RELOC_UNUSED, 1, -1,
21832 + {
21833 + &avr32_ifield_table[AVR32_IFIELD_RY],
21834 + },
21835 + },
21836 + {
21837 + AVR32_OPC_CASTS_H, 2, 0x5c800000, 0xfff00000,
21838 + &avr32_syntax_table[AVR32_SYNTAX_CASTS_H],
21839 + BFD_RELOC_UNUSED, 1, -1,
21840 + {
21841 + &avr32_ifield_table[AVR32_IFIELD_RY],
21842 + },
21843 + },
21844 + {
21845 + AVR32_OPC_CASTU_B, 2, 0x5c500000, 0xfff00000,
21846 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_B],
21847 + BFD_RELOC_UNUSED, 1, -1,
21848 + {
21849 + &avr32_ifield_table[AVR32_IFIELD_RY],
21850 + },
21851 + },
21852 + {
21853 + AVR32_OPC_CASTU_H, 2, 0x5c700000, 0xfff00000,
21854 + &avr32_syntax_table[AVR32_SYNTAX_CASTU_H],
21855 + BFD_RELOC_UNUSED, 1, -1,
21856 + {
21857 + &avr32_ifield_table[AVR32_IFIELD_RY],
21858 + },
21859 + },
21860 + {
21861 + AVR32_OPC_CBR, 2, 0xa1c00000, 0xe1e00000,
21862 + &avr32_syntax_table[AVR32_SYNTAX_CBR],
21863 + BFD_RELOC_UNUSED, 2, -1,
21864 + {
21865 + &avr32_ifield_table[AVR32_IFIELD_RY],
21866 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
21867 + },
21868 + },
21869 + {
21870 + AVR32_OPC_CLZ, 4, 0xe0001200, 0xe1f0ffff,
21871 + &avr32_syntax_table[AVR32_SYNTAX_CLZ],
21872 + BFD_RELOC_UNUSED, 2, -1,
21873 + {
21874 + &avr32_ifield_table[AVR32_IFIELD_RY],
21875 + &avr32_ifield_table[AVR32_IFIELD_RX],
21876 + },
21877 + },
21878 + {
21879 + AVR32_OPC_COM, 2, 0x5cd00000, 0xfff00000,
21880 + &avr32_syntax_table[AVR32_SYNTAX_COM],
21881 + BFD_RELOC_UNUSED, 1, -1,
21882 + {
21883 + &avr32_ifield_table[AVR32_IFIELD_RY],
21884 + },
21885 + },
21886 + {
21887 + AVR32_OPC_COP, 4, 0xe1a00000, 0xf9f00000,
21888 + &avr32_syntax_table[AVR32_SYNTAX_COP],
21889 + BFD_RELOC_UNUSED, 5, -1,
21890 + {
21891 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
21892 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
21893 + &avr32_ifield_table[AVR32_IFIELD_CRX],
21894 + &avr32_ifield_table[AVR32_IFIELD_CRY],
21895 + &avr32_ifield_table[AVR32_IFIELD_CPOP],
21896 + },
21897 + },
21898 + {
21899 + AVR32_OPC_CP_B, 4, 0xe0001800, 0xe1f0ffff,
21900 + &avr32_syntax_table[AVR32_SYNTAX_CP_B],
21901 + BFD_RELOC_UNUSED, 2, -1,
21902 + {
21903 + &avr32_ifield_table[AVR32_IFIELD_RY],
21904 + &avr32_ifield_table[AVR32_IFIELD_RX],
21905 + },
21906 + },
21907 + {
21908 + AVR32_OPC_CP_H, 4, 0xe0001900, 0xe1f0ffff,
21909 + &avr32_syntax_table[AVR32_SYNTAX_CP_H],
21910 + BFD_RELOC_UNUSED, 2, -1,
21911 + {
21912 + &avr32_ifield_table[AVR32_IFIELD_RY],
21913 + &avr32_ifield_table[AVR32_IFIELD_RX],
21914 + },
21915 + },
21916 + {
21917 + AVR32_OPC_CP_W1, 2, 0x00300000, 0xe1f00000,
21918 + &avr32_syntax_table[AVR32_SYNTAX_CP_W1],
21919 + BFD_RELOC_UNUSED, 2, -1,
21920 + {
21921 + &avr32_ifield_table[AVR32_IFIELD_RY],
21922 + &avr32_ifield_table[AVR32_IFIELD_RX],
21923 + },
21924 + },
21925 + {
21926 + AVR32_OPC_CP_W2, 2, 0x58000000, 0xfc000000,
21927 + &avr32_syntax_table[AVR32_SYNTAX_CP_W2],
21928 + BFD_RELOC_AVR32_6S, 2, 1,
21929 + {
21930 + &avr32_ifield_table[AVR32_IFIELD_RY],
21931 + &avr32_ifield_table[AVR32_IFIELD_K6],
21932 + },
21933 + },
21934 + {
21935 + AVR32_OPC_CP_W3, 4, 0xe0400000, 0xe1e00000,
21936 + &avr32_syntax_table[AVR32_SYNTAX_CP_W3],
21937 + BFD_RELOC_AVR32_21S, 2, 1,
21938 + {
21939 + &avr32_ifield_table[AVR32_IFIELD_RY],
21940 + &avr32_ifield_table[AVR32_IFIELD_K21],
21941 + },
21942 + },
21943 + {
21944 + AVR32_OPC_CPC1, 4, 0xe0001300, 0xe1f0ffff,
21945 + &avr32_syntax_table[AVR32_SYNTAX_CPC1],
21946 + BFD_RELOC_UNUSED, 2, -1,
21947 + {
21948 + &avr32_ifield_table[AVR32_IFIELD_RY],
21949 + &avr32_ifield_table[AVR32_IFIELD_RX],
21950 + },
21951 + },
21952 + {
21953 + AVR32_OPC_CPC2, 2, 0x5c200000, 0xfff00000,
21954 + &avr32_syntax_table[AVR32_SYNTAX_CPC2],
21955 + BFD_RELOC_UNUSED, 1, -1,
21956 + {
21957 + &avr32_ifield_table[AVR32_IFIELD_RY],
21958 + },
21959 + },
21960 + {
21961 + AVR32_OPC_CSRF, 2, 0xd4030000, 0xfe0f0000,
21962 + &avr32_syntax_table[AVR32_SYNTAX_CSRF],
21963 + BFD_RELOC_UNUSED, 1, -1,
21964 + {
21965 + &avr32_ifield_table[AVR32_IFIELD_K5C],
21966 + },
21967 + },
21968 + {
21969 + AVR32_OPC_CSRFCZ, 2, 0xd0030000, 0xfe0f0000,
21970 + &avr32_syntax_table[AVR32_SYNTAX_CSRFCZ],
21971 + BFD_RELOC_UNUSED, 1, -1,
21972 + {
21973 + &avr32_ifield_table[AVR32_IFIELD_K5C],
21974 + },
21975 + },
21976 + {
21977 + AVR32_OPC_DIVS, 4, 0xe0000c00, 0xe1f0ffc0,
21978 + &avr32_syntax_table[AVR32_SYNTAX_DIVS],
21979 + BFD_RELOC_UNUSED, 3, -1,
21980 + {
21981 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21982 + &avr32_ifield_table[AVR32_IFIELD_RX],
21983 + &avr32_ifield_table[AVR32_IFIELD_RY],
21984 + },
21985 + },
21986 + {
21987 + AVR32_OPC_DIVU, 4, 0xe0000d00, 0xe1f0ffc0,
21988 + &avr32_syntax_table[AVR32_SYNTAX_DIVU],
21989 + BFD_RELOC_UNUSED, 3, -1,
21990 + {
21991 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
21992 + &avr32_ifield_table[AVR32_IFIELD_RX],
21993 + &avr32_ifield_table[AVR32_IFIELD_RY],
21994 + },
21995 + },
21996 + {
21997 + AVR32_OPC_EOR1, 2, 0x00500000, 0xe1f00000,
21998 + &avr32_syntax_table[AVR32_SYNTAX_EOR1],
21999 + BFD_RELOC_UNUSED, 2, -1,
22000 + {
22001 + &avr32_ifield_table[AVR32_IFIELD_RY],
22002 + &avr32_ifield_table[AVR32_IFIELD_RX],
22003 + },
22004 + },
22005 + {
22006 + AVR32_OPC_EOR2, 4, 0xe1e02000, 0xe1f0fe00,
22007 + &avr32_syntax_table[AVR32_SYNTAX_EOR2],
22008 + BFD_RELOC_UNUSED, 4, -1,
22009 + {
22010 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22011 + &avr32_ifield_table[AVR32_IFIELD_RX],
22012 + &avr32_ifield_table[AVR32_IFIELD_RY],
22013 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22014 + }
22015 + },
22016 + {
22017 + AVR32_OPC_EOR3, 4, 0xe1e02200, 0xe1f0fe00,
22018 + &avr32_syntax_table[AVR32_SYNTAX_EOR3],
22019 + BFD_RELOC_UNUSED, 4, -1,
22020 + {
22021 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22022 + &avr32_ifield_table[AVR32_IFIELD_RX],
22023 + &avr32_ifield_table[AVR32_IFIELD_RY],
22024 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
22025 + }
22026 + },
22027 + {
22028 + AVR32_OPC_EORL, 4, 0xec100000, 0xfff00000,
22029 + &avr32_syntax_table[AVR32_SYNTAX_EORL],
22030 + BFD_RELOC_AVR32_16U, 2, 1,
22031 + {
22032 + &avr32_ifield_table[AVR32_IFIELD_RY],
22033 + &avr32_ifield_table[AVR32_IFIELD_K16],
22034 + },
22035 + },
22036 + {
22037 + AVR32_OPC_EORH, 4, 0xee100000, 0xfff00000,
22038 + &avr32_syntax_table[AVR32_SYNTAX_EORH],
22039 + BFD_RELOC_AVR32_16U, 2, 1,
22040 + {
22041 + &avr32_ifield_table[AVR32_IFIELD_RY],
22042 + &avr32_ifield_table[AVR32_IFIELD_K16],
22043 + },
22044 + },
22045 + {
22046 + AVR32_OPC_FRS, 2, 0xd7430000, 0xffff0000,
22047 + &avr32_syntax_table[AVR32_SYNTAX_FRS],
22048 + BFD_RELOC_UNUSED, 0, -1, { NULL },
22049 + },
22050 + {
22051 + AVR32_OPC_ICALL, 2, 0x5d100000, 0xfff00000,
22052 + &avr32_syntax_table[AVR32_SYNTAX_ICALL],
22053 + BFD_RELOC_UNUSED, 1, -1,
22054 + {
22055 + &avr32_ifield_table[AVR32_IFIELD_RY],
22056 + },
22057 + },
22058 + {
22059 + AVR32_OPC_INCJOSP, 2, 0xd6830000, 0xff8f0000,
22060 + &avr32_syntax_table[AVR32_SYNTAX_INCJOSP],
22061 + BFD_RELOC_UNUSED, 1, -1,
22062 + {
22063 + &avr32_ifield_table[AVR32_IFIELD_K3],
22064 + },
22065 + },
22066 + {
22067 + AVR32_OPC_LD_D1, 2, 0xa1010000, 0xe1f10000,
22068 + &avr32_syntax_table[AVR32_SYNTAX_LD_D1],
22069 + BFD_RELOC_UNUSED, 2, -1,
22070 + {
22071 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22072 + &avr32_ifield_table[AVR32_IFIELD_RX],
22073 + },
22074 + },
22075 + {
22076 + AVR32_OPC_LD_D2, 2, 0xa1100000, 0xe1f10000,
22077 + &avr32_syntax_table[AVR32_SYNTAX_LD_D2],
22078 + BFD_RELOC_UNUSED, 2, -1,
22079 + {
22080 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22081 + &avr32_ifield_table[AVR32_IFIELD_RX],
22082 + },
22083 + },
22084 + {
22085 + AVR32_OPC_LD_D3, 2, 0xa1000000, 0xe1f10000,
22086 + &avr32_syntax_table[AVR32_SYNTAX_LD_D3],
22087 + BFD_RELOC_UNUSED, 2, -1,
22088 + {
22089 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22090 + &avr32_ifield_table[AVR32_IFIELD_RX],
22091 + },
22092 + },
22093 + {
22094 + AVR32_OPC_LD_D5, 4, 0xe0000200, 0xe1f0ffc1,
22095 + &avr32_syntax_table[AVR32_SYNTAX_LD_D5],
22096 + BFD_RELOC_UNUSED, 4, -1,
22097 + {
22098 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
22099 + &avr32_ifield_table[AVR32_IFIELD_RX],
22100 + &avr32_ifield_table[AVR32_IFIELD_RY],
22101 + &avr32_ifield_table[AVR32_IFIELD_K2],
22102 + },
22103 + },
22104 + {
22105 + AVR32_OPC_LD_D4, 4, 0xe0e00000, 0xe1f10000,
22106 + &avr32_syntax_table[AVR32_SYNTAX_LD_D4],
22107 + BFD_RELOC_AVR32_16S, 3, 2,
22108 + {
22109 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
22110 + &avr32_ifield_table[AVR32_IFIELD_RX],
22111 + &avr32_ifield_table[AVR32_IFIELD_K16],
22112 + },
22113 + },
22114 + {
22115 + AVR32_OPC_LD_SB2, 4, 0xe0000600, 0xe1f0ffc0,
22116 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB2],
22117 + BFD_RELOC_UNUSED, 4, -1,
22118 + {
22119 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22120 + &avr32_ifield_table[AVR32_IFIELD_RX],
22121 + &avr32_ifield_table[AVR32_IFIELD_RY],
22122 + &avr32_ifield_table[AVR32_IFIELD_K2],
22123 + },
22124 + },
22125 + {
22126 + AVR32_OPC_LD_SB1, 4, 0xe1200000, 0xe1f00000,
22127 + &avr32_syntax_table[AVR32_SYNTAX_LD_SB1],
22128 + BFD_RELOC_AVR32_16S, 3, -1,
22129 + {
22130 + &avr32_ifield_table[AVR32_IFIELD_RY],
22131 + &avr32_ifield_table[AVR32_IFIELD_RX],
22132 + &avr32_ifield_table[AVR32_IFIELD_K16],
22133 + },
22134 + },
22135 + {
22136 + AVR32_OPC_LD_UB1, 2, 0x01300000, 0xe1f00000,
22137 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB1],
22138 + BFD_RELOC_UNUSED, 2, -1,
22139 + {
22140 + &avr32_ifield_table[AVR32_IFIELD_RY],
22141 + &avr32_ifield_table[AVR32_IFIELD_RX],
22142 + },
22143 + },
22144 + {
22145 + AVR32_OPC_LD_UB2, 2, 0x01700000, 0xe1f00000,
22146 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB2],
22147 + BFD_RELOC_UNUSED, 2, -1,
22148 + {
22149 + &avr32_ifield_table[AVR32_IFIELD_RY],
22150 + &avr32_ifield_table[AVR32_IFIELD_RX],
22151 + },
22152 + },
22153 + {
22154 + AVR32_OPC_LD_UB5, 4, 0xe0000700, 0xe1f0ffc0,
22155 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB5],
22156 + BFD_RELOC_UNUSED, 4, -1,
22157 + {
22158 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22159 + &avr32_ifield_table[AVR32_IFIELD_RX],
22160 + &avr32_ifield_table[AVR32_IFIELD_RY],
22161 + &avr32_ifield_table[AVR32_IFIELD_K2],
22162 + },
22163 + },
22164 + {
22165 + AVR32_OPC_LD_UB3, 2, 0x01800000, 0xe1800000,
22166 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB3],
22167 + BFD_RELOC_AVR32_3U, 3, 2,
22168 + {
22169 + &avr32_ifield_table[AVR32_IFIELD_RY],
22170 + &avr32_ifield_table[AVR32_IFIELD_RX],
22171 + &avr32_ifield_table[AVR32_IFIELD_K3],
22172 + },
22173 + },
22174 + {
22175 + AVR32_OPC_LD_UB4, 4, 0xe1300000, 0xe1f00000,
22176 + &avr32_syntax_table[AVR32_SYNTAX_LD_UB4],
22177 + BFD_RELOC_AVR32_16S, 3, 2,
22178 + {
22179 + &avr32_ifield_table[AVR32_IFIELD_RY],
22180 + &avr32_ifield_table[AVR32_IFIELD_RX],
22181 + &avr32_ifield_table[AVR32_IFIELD_K16],
22182 + },
22183 + },
22184 + {
22185 + AVR32_OPC_LD_SH1, 2, 0x01100000, 0xe1f00000,
22186 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH1],
22187 + BFD_RELOC_UNUSED, 2, -1,
22188 + {
22189 + &avr32_ifield_table[AVR32_IFIELD_RY],
22190 + &avr32_ifield_table[AVR32_IFIELD_RX],
22191 + },
22192 + },
22193 + {
22194 + AVR32_OPC_LD_SH2, 2, 0x01500000, 0xe1f00000,
22195 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH2],
22196 + BFD_RELOC_UNUSED, 2, -1,
22197 + {
22198 + &avr32_ifield_table[AVR32_IFIELD_RY],
22199 + &avr32_ifield_table[AVR32_IFIELD_RX],
22200 + },
22201 + },
22202 + {
22203 + AVR32_OPC_LD_SH5, 4, 0xe0000400, 0xe1f0ffc0,
22204 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH5],
22205 + BFD_RELOC_UNUSED, 4, -1,
22206 + {
22207 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22208 + &avr32_ifield_table[AVR32_IFIELD_RX],
22209 + &avr32_ifield_table[AVR32_IFIELD_RY],
22210 + &avr32_ifield_table[AVR32_IFIELD_K2],
22211 + },
22212 + },
22213 + {
22214 + AVR32_OPC_LD_SH3, 2, 0x80000000, 0xe1800000,
22215 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH3],
22216 + BFD_RELOC_AVR32_4UH, 3, 2,
22217 + {
22218 + &avr32_ifield_table[AVR32_IFIELD_RY],
22219 + &avr32_ifield_table[AVR32_IFIELD_RX],
22220 + &avr32_ifield_table[AVR32_IFIELD_K3],
22221 + },
22222 + },
22223 + {
22224 + AVR32_OPC_LD_SH4, 4, 0xe1000000, 0xe1f00000,
22225 + &avr32_syntax_table[AVR32_SYNTAX_LD_SH4],
22226 + BFD_RELOC_AVR32_16S, 3, 2,
22227 + {
22228 + &avr32_ifield_table[AVR32_IFIELD_RY],
22229 + &avr32_ifield_table[AVR32_IFIELD_RX],
22230 + &avr32_ifield_table[AVR32_IFIELD_K16],
22231 + },
22232 + },
22233 + {
22234 + AVR32_OPC_LD_UH1, 2, 0x01200000, 0xe1f00000,
22235 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH1],
22236 + BFD_RELOC_UNUSED, 2, -1,
22237 + {
22238 + &avr32_ifield_table[AVR32_IFIELD_RY],
22239 + &avr32_ifield_table[AVR32_IFIELD_RX],
22240 + },
22241 + },
22242 + {
22243 + AVR32_OPC_LD_UH2, 2, 0x01600000, 0xe1f00000,
22244 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH2],
22245 + BFD_RELOC_UNUSED, 2, -1,
22246 + {
22247 + &avr32_ifield_table[AVR32_IFIELD_RY],
22248 + &avr32_ifield_table[AVR32_IFIELD_RX],
22249 + },
22250 + },
22251 + {
22252 + AVR32_OPC_LD_UH5, 4, 0xe0000500, 0xe1f0ffc0,
22253 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH5],
22254 + BFD_RELOC_UNUSED, 4, -1,
22255 + {
22256 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22257 + &avr32_ifield_table[AVR32_IFIELD_RX],
22258 + &avr32_ifield_table[AVR32_IFIELD_RY],
22259 + &avr32_ifield_table[AVR32_IFIELD_K2],
22260 + },
22261 + },
22262 + {
22263 + AVR32_OPC_LD_UH3, 2, 0x80800000, 0xe1800000,
22264 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH3],
22265 + BFD_RELOC_AVR32_4UH, 3, 2,
22266 + {
22267 + &avr32_ifield_table[AVR32_IFIELD_RY],
22268 + &avr32_ifield_table[AVR32_IFIELD_RX],
22269 + &avr32_ifield_table[AVR32_IFIELD_K3],
22270 + },
22271 + },
22272 + {
22273 + AVR32_OPC_LD_UH4, 4, 0xe1100000, 0xe1f00000,
22274 + &avr32_syntax_table[AVR32_SYNTAX_LD_UH4],
22275 + BFD_RELOC_AVR32_16S, 3, 2,
22276 + {
22277 + &avr32_ifield_table[AVR32_IFIELD_RY],
22278 + &avr32_ifield_table[AVR32_IFIELD_RX],
22279 + &avr32_ifield_table[AVR32_IFIELD_K16],
22280 + },
22281 + },
22282 + {
22283 + AVR32_OPC_LD_W1, 2, 0x01000000, 0xe1f00000,
22284 + &avr32_syntax_table[AVR32_SYNTAX_LD_W1],
22285 + BFD_RELOC_UNUSED, 2, -1,
22286 + {
22287 + &avr32_ifield_table[AVR32_IFIELD_RY],
22288 + &avr32_ifield_table[AVR32_IFIELD_RX],
22289 + },
22290 + },
22291 + {
22292 + AVR32_OPC_LD_W2, 2, 0x01400000, 0xe1f00000,
22293 + &avr32_syntax_table[AVR32_SYNTAX_LD_W2],
22294 + BFD_RELOC_UNUSED, 2, -1,
22295 + {
22296 + &avr32_ifield_table[AVR32_IFIELD_RY],
22297 + &avr32_ifield_table[AVR32_IFIELD_RX],
22298 + },
22299 + },
22300 + {
22301 + AVR32_OPC_LD_W5, 4, 0xe0000300, 0xe1f0ffc0,
22302 + &avr32_syntax_table[AVR32_SYNTAX_LD_W5],
22303 + BFD_RELOC_UNUSED, 4, -1,
22304 + {
22305 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22306 + &avr32_ifield_table[AVR32_IFIELD_RX],
22307 + &avr32_ifield_table[AVR32_IFIELD_RY],
22308 + &avr32_ifield_table[AVR32_IFIELD_K2],
22309 + },
22310 + },
22311 + {
22312 + AVR32_OPC_LD_W6, 4, 0xe0000f80, 0xe1f0ffc0,
22313 + &avr32_syntax_table[AVR32_SYNTAX_LD_W6],
22314 + BFD_RELOC_UNUSED, 4, -1,
22315 + {
22316 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22317 + &avr32_ifield_table[AVR32_IFIELD_RX],
22318 + &avr32_ifield_table[AVR32_IFIELD_RY],
22319 + &avr32_ifield_table[AVR32_IFIELD_K2],
22320 + },
22321 + },
22322 + {
22323 + AVR32_OPC_LD_W3, 2, 0x60000000, 0xe0000000,
22324 + &avr32_syntax_table[AVR32_SYNTAX_LD_W3],
22325 + BFD_RELOC_AVR32_7UW, 3, 2,
22326 + {
22327 + &avr32_ifield_table[AVR32_IFIELD_RY],
22328 + &avr32_ifield_table[AVR32_IFIELD_RX],
22329 + &avr32_ifield_table[AVR32_IFIELD_K5C],
22330 + },
22331 + },
22332 + {
22333 + AVR32_OPC_LD_W4, 4, 0xe0f00000, 0xe1f00000,
22334 + &avr32_syntax_table[AVR32_SYNTAX_LD_W4],
22335 + BFD_RELOC_AVR32_16S, 3, 2,
22336 + {
22337 + &avr32_ifield_table[AVR32_IFIELD_RY],
22338 + &avr32_ifield_table[AVR32_IFIELD_RX],
22339 + &avr32_ifield_table[AVR32_IFIELD_K16],
22340 + },
22341 + },
22342 + {
22343 + AVR32_OPC_LDC_D1, 4, 0xe9a01000, 0xfff01100,
22344 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D1],
22345 + BFD_RELOC_AVR32_10UW, 4, 3,
22346 + {
22347 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22348 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22349 + &avr32_ifield_table[AVR32_IFIELD_RY],
22350 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22351 + },
22352 + },
22353 + {
22354 + AVR32_OPC_LDC_D2, 4, 0xefa00050, 0xfff011ff,
22355 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D2],
22356 + BFD_RELOC_UNUSED, 3, -1,
22357 + {
22358 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22359 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22360 + &avr32_ifield_table[AVR32_IFIELD_RY],
22361 + },
22362 + },
22363 + {
22364 + AVR32_OPC_LDC_D3, 4, 0xefa01040, 0xfff011c0,
22365 + &avr32_syntax_table[AVR32_SYNTAX_LDC_D3],
22366 + BFD_RELOC_UNUSED, 5, -1,
22367 + {
22368 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22369 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22370 + &avr32_ifield_table[AVR32_IFIELD_RY],
22371 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22372 + &avr32_ifield_table[AVR32_IFIELD_K2],
22373 + },
22374 + },
22375 + {
22376 + AVR32_OPC_LDC_W1, 4, 0xe9a00000, 0xfff01000,
22377 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W1],
22378 + BFD_RELOC_AVR32_10UW, 4, 3,
22379 + {
22380 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22381 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22382 + &avr32_ifield_table[AVR32_IFIELD_RY],
22383 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22384 + },
22385 + },
22386 + {
22387 + AVR32_OPC_LDC_W2, 4, 0xefa00040, 0xfff010ff,
22388 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W2],
22389 + BFD_RELOC_UNUSED, 3, -1,
22390 + {
22391 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22392 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22393 + &avr32_ifield_table[AVR32_IFIELD_RY],
22394 + },
22395 + },
22396 + {
22397 + AVR32_OPC_LDC_W3, 4, 0xefa01000, 0xfff010c0,
22398 + &avr32_syntax_table[AVR32_SYNTAX_LDC_W3],
22399 + BFD_RELOC_UNUSED, 5, -1,
22400 + {
22401 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22402 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22403 + &avr32_ifield_table[AVR32_IFIELD_RY],
22404 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22405 + &avr32_ifield_table[AVR32_IFIELD_K2],
22406 + },
22407 + },
22408 + {
22409 + AVR32_OPC_LDC0_D, 4, 0xf3a00000, 0xfff00100,
22410 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_D],
22411 + BFD_RELOC_AVR32_14UW, 3, 2,
22412 + {
22413 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
22414 + &avr32_ifield_table[AVR32_IFIELD_RY],
22415 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
22416 + },
22417 + },
22418 + {
22419 + AVR32_OPC_LDC0_W, 4, 0xf1a00000, 0xfff00000,
22420 + &avr32_syntax_table[AVR32_SYNTAX_LDC0_W],
22421 + BFD_RELOC_AVR32_14UW, 3, 2,
22422 + {
22423 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
22424 + &avr32_ifield_table[AVR32_IFIELD_RY],
22425 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
22426 + },
22427 + },
22428 + {
22429 + AVR32_OPC_LDCM_D, 4, 0xeda00400, 0xfff01f00,
22430 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D],
22431 + BFD_RELOC_UNUSED, 3, -1,
22432 + {
22433 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22434 + &avr32_ifield_table[AVR32_IFIELD_RY],
22435 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22436 + },
22437 + },
22438 + {
22439 + AVR32_OPC_LDCM_D_PU, 4, 0xeda01400, 0xfff01f00,
22440 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_D_PU],
22441 + BFD_RELOC_UNUSED, 3, -1,
22442 + {
22443 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22444 + &avr32_ifield_table[AVR32_IFIELD_RY],
22445 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22446 + },
22447 + },
22448 + {
22449 + AVR32_OPC_LDCM_W, 4, 0xeda00000, 0xfff01e00,
22450 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W],
22451 + BFD_RELOC_UNUSED, 4, -1,
22452 + {
22453 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22454 + &avr32_ifield_table[AVR32_IFIELD_RY],
22455 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22456 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
22457 + },
22458 + },
22459 + {
22460 + AVR32_OPC_LDCM_W_PU, 4, 0xeda01000, 0xfff01e00,
22461 + &avr32_syntax_table[AVR32_SYNTAX_LDCM_W_PU],
22462 + BFD_RELOC_UNUSED, 4, -1,
22463 + {
22464 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
22465 + &avr32_ifield_table[AVR32_IFIELD_RY],
22466 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22467 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
22468 + },
22469 + },
22470 + {
22471 + AVR32_OPC_LDDPC, 2, 0x48000000, 0xf8000000,
22472 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC],
22473 + BFD_RELOC_AVR32_9UW_PCREL, 2, 1,
22474 + {
22475 + &avr32_ifield_table[AVR32_IFIELD_RY],
22476 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22477 + },
22478 + },
22479 + {
22480 + AVR32_OPC_LDDPC_EXT, 4, 0xfef00000, 0xfff00000,
22481 + &avr32_syntax_table[AVR32_SYNTAX_LDDPC_EXT],
22482 + BFD_RELOC_AVR32_16B_PCREL, 2, 1,
22483 + {
22484 + &avr32_ifield_table[AVR32_IFIELD_RY],
22485 + &avr32_ifield_table[AVR32_IFIELD_K16],
22486 + },
22487 + },
22488 + {
22489 + AVR32_OPC_LDDSP, 2, 0x40000000, 0xf8000000,
22490 + &avr32_syntax_table[AVR32_SYNTAX_LDDSP],
22491 + BFD_RELOC_UNUSED, 2, -1,
22492 + {
22493 + &avr32_ifield_table[AVR32_IFIELD_RY],
22494 + &avr32_ifield_table[AVR32_IFIELD_K7C],
22495 + },
22496 + },
22497 + {
22498 + AVR32_OPC_LDINS_B, 4, 0xe1d04000, 0xe1f0c000,
22499 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_B],
22500 + BFD_RELOC_UNUSED, 4, -1,
22501 + {
22502 + &avr32_ifield_table[AVR32_IFIELD_RY],
22503 + &avr32_ifield_table[AVR32_IFIELD_PART2_K12],
22504 + &avr32_ifield_table[AVR32_IFIELD_RX],
22505 + &avr32_ifield_table[AVR32_IFIELD_K12],
22506 + },
22507 + },
22508 + {
22509 + AVR32_OPC_LDINS_H, 4, 0xe1d00000, 0xe1f0e000,
22510 + &avr32_syntax_table[AVR32_SYNTAX_LDINS_H],
22511 + BFD_RELOC_UNUSED, 4, -1,
22512 + {
22513 + &avr32_ifield_table[AVR32_IFIELD_RY],
22514 + &avr32_ifield_table[AVR32_IFIELD_PART1_K12],
22515 + &avr32_ifield_table[AVR32_IFIELD_RX],
22516 + &avr32_ifield_table[AVR32_IFIELD_K12],
22517 + },
22518 + },
22519 + {
22520 + AVR32_OPC_LDM, 4, 0xe1c00000, 0xfdf00000,
22521 + &avr32_syntax_table[AVR32_SYNTAX_LDM],
22522 + BFD_RELOC_UNUSED, 3, -1,
22523 + {
22524 + &avr32_ifield_table[AVR32_IFIELD_RY],
22525 + &avr32_ifield_table[AVR32_IFIELD_W],
22526 + &avr32_ifield_table[AVR32_IFIELD_K16],
22527 + },
22528 + },
22529 + {
22530 + AVR32_OPC_LDMTS, 4, 0xe5c00000, 0xfff00000,
22531 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS],
22532 + BFD_RELOC_UNUSED, 2, -1,
22533 + {
22534 + &avr32_ifield_table[AVR32_IFIELD_RY],
22535 + &avr32_ifield_table[AVR32_IFIELD_K16],
22536 + },
22537 + },
22538 + {
22539 + AVR32_OPC_LDMTS_PU, 4, 0xe7c00000, 0xfff00000,
22540 + &avr32_syntax_table[AVR32_SYNTAX_LDMTS_PU],
22541 + BFD_RELOC_UNUSED, 2, -1,
22542 + {
22543 + &avr32_ifield_table[AVR32_IFIELD_RY],
22544 + &avr32_ifield_table[AVR32_IFIELD_K16],
22545 + },
22546 + },
22547 + {
22548 + AVR32_OPC_LDSWP_SH, 4, 0xe1d02000, 0xe1f0f000,
22549 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_SH],
22550 + BFD_RELOC_UNUSED, 3, -1,
22551 + {
22552 + &avr32_ifield_table[AVR32_IFIELD_RY],
22553 + &avr32_ifield_table[AVR32_IFIELD_RX],
22554 + &avr32_ifield_table[AVR32_IFIELD_K12],
22555 + },
22556 + },
22557 + {
22558 + AVR32_OPC_LDSWP_UH, 4, 0xe1d03000, 0xe1f0f000,
22559 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_UH],
22560 + BFD_RELOC_UNUSED, 3, -1,
22561 + {
22562 + &avr32_ifield_table[AVR32_IFIELD_RY],
22563 + &avr32_ifield_table[AVR32_IFIELD_RX],
22564 + &avr32_ifield_table[AVR32_IFIELD_K12],
22565 + },
22566 + },
22567 + {
22568 + AVR32_OPC_LDSWP_W, 4, 0xe1d08000, 0xe1f0f000,
22569 + &avr32_syntax_table[AVR32_SYNTAX_LDSWP_W],
22570 + BFD_RELOC_UNUSED, 3, -1,
22571 + {
22572 + &avr32_ifield_table[AVR32_IFIELD_RY],
22573 + &avr32_ifield_table[AVR32_IFIELD_RX],
22574 + &avr32_ifield_table[AVR32_IFIELD_K12],
22575 + },
22576 + },
22577 + {
22578 + AVR32_OPC_LSL1, 4, 0xe0000940, 0xe1f0fff0,
22579 + &avr32_syntax_table[AVR32_SYNTAX_LSL1],
22580 + BFD_RELOC_UNUSED, 3, -1,
22581 + {
22582 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22583 + &avr32_ifield_table[AVR32_IFIELD_RX],
22584 + &avr32_ifield_table[AVR32_IFIELD_RY],
22585 + },
22586 + },
22587 + {
22588 + AVR32_OPC_LSL3, 4, 0xe0001500, 0xe1f0ffe0,
22589 + &avr32_syntax_table[AVR32_SYNTAX_LSL3],
22590 + BFD_RELOC_UNUSED, 3, -1,
22591 + {
22592 + &avr32_ifield_table[AVR32_IFIELD_RY],
22593 + &avr32_ifield_table[AVR32_IFIELD_RX],
22594 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22595 + },
22596 + },
22597 + {
22598 + AVR32_OPC_LSL2, 2, 0xa1600000, 0xe1e00000,
22599 + &avr32_syntax_table[AVR32_SYNTAX_LSL2],
22600 + BFD_RELOC_UNUSED, 2, -1,
22601 + {
22602 + &avr32_ifield_table[AVR32_IFIELD_RY],
22603 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22604 + },
22605 + },
22606 + {
22607 + AVR32_OPC_LSR1, 4, 0xe0000a40, 0xe1f0fff0,
22608 + &avr32_syntax_table[AVR32_SYNTAX_LSR1],
22609 + BFD_RELOC_UNUSED, 3, -1,
22610 + {
22611 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22612 + &avr32_ifield_table[AVR32_IFIELD_RX],
22613 + &avr32_ifield_table[AVR32_IFIELD_RY],
22614 + },
22615 + },
22616 + {
22617 + AVR32_OPC_LSR3, 4, 0xe0001600, 0xe1f0ffe0,
22618 + &avr32_syntax_table[AVR32_SYNTAX_LSR3],
22619 + BFD_RELOC_UNUSED, 3, -1,
22620 + {
22621 + &avr32_ifield_table[AVR32_IFIELD_RY],
22622 + &avr32_ifield_table[AVR32_IFIELD_RX],
22623 + &avr32_ifield_table[AVR32_IFIELD_K5E],
22624 + },
22625 + },
22626 + {
22627 + AVR32_OPC_LSR2, 2, 0xa1800000, 0xe1e00000,
22628 + &avr32_syntax_table[AVR32_SYNTAX_LSR2],
22629 + BFD_RELOC_UNUSED, 2, -1,
22630 + {
22631 + &avr32_ifield_table[AVR32_IFIELD_RY],
22632 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
22633 + },
22634 + },
22635 + {
22636 + AVR32_OPC_MAC, 4, 0xe0000340, 0xe1f0fff0,
22637 + &avr32_syntax_table[AVR32_SYNTAX_MAC],
22638 + BFD_RELOC_UNUSED, 3, -1,
22639 + {
22640 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22641 + &avr32_ifield_table[AVR32_IFIELD_RX],
22642 + &avr32_ifield_table[AVR32_IFIELD_RY],
22643 + },
22644 + },
22645 + {
22646 + AVR32_OPC_MACHH_D, 4, 0xe0000580, 0xe1f0ffc1,
22647 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_D],
22648 + BFD_RELOC_UNUSED, 5, -1,
22649 + {
22650 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22651 + &avr32_ifield_table[AVR32_IFIELD_RX],
22652 + &avr32_ifield_table[AVR32_IFIELD_X],
22653 + &avr32_ifield_table[AVR32_IFIELD_RY],
22654 + &avr32_ifield_table[AVR32_IFIELD_Y],
22655 + },
22656 + },
22657 + {
22658 + AVR32_OPC_MACHH_W, 4, 0xe0000480, 0xe1f0ffc0,
22659 + &avr32_syntax_table[AVR32_SYNTAX_MACHH_W],
22660 + BFD_RELOC_UNUSED, 5, -1,
22661 + {
22662 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22663 + &avr32_ifield_table[AVR32_IFIELD_RX],
22664 + &avr32_ifield_table[AVR32_IFIELD_X],
22665 + &avr32_ifield_table[AVR32_IFIELD_RY],
22666 + &avr32_ifield_table[AVR32_IFIELD_Y],
22667 + },
22668 + },
22669 + {
22670 + AVR32_OPC_MACS_D, 4, 0xe0000540, 0xe1f0fff1,
22671 + &avr32_syntax_table[AVR32_SYNTAX_MACS_D],
22672 + BFD_RELOC_UNUSED, 3, -1,
22673 + {
22674 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22675 + &avr32_ifield_table[AVR32_IFIELD_RX],
22676 + &avr32_ifield_table[AVR32_IFIELD_RY],
22677 + },
22678 + },
22679 + {
22680 + AVR32_OPC_MACSATHH_W, 4, 0xe0000680, 0xe1f0ffc0,
22681 + &avr32_syntax_table[AVR32_SYNTAX_MACSATHH_W],
22682 + BFD_RELOC_UNUSED, 5, -1,
22683 + {
22684 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22685 + &avr32_ifield_table[AVR32_IFIELD_RX],
22686 + &avr32_ifield_table[AVR32_IFIELD_X],
22687 + &avr32_ifield_table[AVR32_IFIELD_RY],
22688 + &avr32_ifield_table[AVR32_IFIELD_Y],
22689 + },
22690 + },
22691 + {
22692 + AVR32_OPC_MACUD, 4, 0xe0000740, 0xe1f0fff1,
22693 + &avr32_syntax_table[AVR32_SYNTAX_MACUD],
22694 + BFD_RELOC_UNUSED, 3, -1,
22695 + {
22696 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22697 + &avr32_ifield_table[AVR32_IFIELD_RX],
22698 + &avr32_ifield_table[AVR32_IFIELD_RY],
22699 + },
22700 + },
22701 + {
22702 + AVR32_OPC_MACWH_D, 4, 0xe0000c80, 0xe1f0ffe1,
22703 + &avr32_syntax_table[AVR32_SYNTAX_MACWH_D],
22704 + BFD_RELOC_UNUSED, 4, -1,
22705 + {
22706 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22707 + &avr32_ifield_table[AVR32_IFIELD_RX],
22708 + &avr32_ifield_table[AVR32_IFIELD_RY],
22709 + &avr32_ifield_table[AVR32_IFIELD_Y],
22710 + },
22711 + },
22712 + {
22713 + AVR32_OPC_MAX, 4, 0xe0000c40, 0xe1f0fff0,
22714 + &avr32_syntax_table[AVR32_SYNTAX_MAX],
22715 + BFD_RELOC_UNUSED, 3, -1,
22716 + {
22717 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22718 + &avr32_ifield_table[AVR32_IFIELD_RX],
22719 + &avr32_ifield_table[AVR32_IFIELD_RY],
22720 + },
22721 + },
22722 + {
22723 + AVR32_OPC_MCALL, 4, 0xf0100000, 0xfff00000,
22724 + &avr32_syntax_table[AVR32_SYNTAX_MCALL],
22725 + BFD_RELOC_AVR32_18W_PCREL, 2, 1,
22726 + {
22727 + &avr32_ifield_table[AVR32_IFIELD_RY],
22728 + &avr32_ifield_table[AVR32_IFIELD_K16],
22729 + },
22730 + },
22731 + {
22732 + AVR32_OPC_MFDR, 4, 0xe5b00000, 0xfff0ff00,
22733 + &avr32_syntax_table[AVR32_SYNTAX_MFDR],
22734 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22735 + {
22736 + &avr32_ifield_table[AVR32_IFIELD_RY],
22737 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22738 + },
22739 + },
22740 + {
22741 + AVR32_OPC_MFSR, 4, 0xe1b00000, 0xfff0ff00,
22742 + &avr32_syntax_table[AVR32_SYNTAX_MFSR],
22743 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22744 + {
22745 + &avr32_ifield_table[AVR32_IFIELD_RY],
22746 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22747 + },
22748 + },
22749 + {
22750 + AVR32_OPC_MIN, 4, 0xe0000d40, 0xe1f0fff0,
22751 + &avr32_syntax_table[AVR32_SYNTAX_MIN],
22752 + BFD_RELOC_UNUSED, 3, -1,
22753 + {
22754 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
22755 + &avr32_ifield_table[AVR32_IFIELD_RX],
22756 + &avr32_ifield_table[AVR32_IFIELD_RY],
22757 + },
22758 + },
22759 + {
22760 + AVR32_OPC_MOV3, 2, 0x00900000, 0xe1f00000,
22761 + &avr32_syntax_table[AVR32_SYNTAX_MOV3],
22762 + BFD_RELOC_NONE, 2, -1,
22763 + {
22764 + &avr32_ifield_table[AVR32_IFIELD_RY],
22765 + &avr32_ifield_table[AVR32_IFIELD_RX],
22766 + },
22767 + },
22768 + {
22769 + AVR32_OPC_MOV1, 2, 0x30000000, 0xf0000000,
22770 + &avr32_syntax_table[AVR32_SYNTAX_MOV1],
22771 + BFD_RELOC_AVR32_8S, 2, 1,
22772 + {
22773 + &avr32_ifield_table[AVR32_IFIELD_RY],
22774 + &avr32_ifield_table[AVR32_IFIELD_K8C],
22775 + },
22776 + },
22777 + {
22778 + AVR32_OPC_MOV2, 4, 0xe0600000, 0xe1e00000,
22779 + &avr32_syntax_table[AVR32_SYNTAX_MOV2],
22780 + BFD_RELOC_AVR32_21S, 2, 1,
22781 + {
22782 + &avr32_ifield_table[AVR32_IFIELD_RY],
22783 + &avr32_ifield_table[AVR32_IFIELD_K21],
22784 + },
22785 + },
22786 + {
22787 + AVR32_OPC_MOVEQ1, 4, 0xe0001700, 0xe1f0ffff,
22788 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ1],
22789 + BFD_RELOC_UNUSED, 2, -1,
22790 + {
22791 + &avr32_ifield_table[AVR32_IFIELD_RY],
22792 + &avr32_ifield_table[AVR32_IFIELD_RX],
22793 + },
22794 + },
22795 + {
22796 + AVR32_OPC_MOVNE1, 4, 0xe0001710, 0xe1f0ffff,
22797 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE1],
22798 + BFD_RELOC_UNUSED, 2, -1,
22799 + {
22800 + &avr32_ifield_table[AVR32_IFIELD_RY],
22801 + &avr32_ifield_table[AVR32_IFIELD_RX],
22802 + },
22803 + },
22804 + {
22805 + AVR32_OPC_MOVCC1, 4, 0xe0001720, 0xe1f0ffff,
22806 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS1],
22807 + BFD_RELOC_UNUSED, 2, -1,
22808 + {
22809 + &avr32_ifield_table[AVR32_IFIELD_RY],
22810 + &avr32_ifield_table[AVR32_IFIELD_RX],
22811 + },
22812 + },
22813 + {
22814 + AVR32_OPC_MOVCS1, 4, 0xe0001730, 0xe1f0ffff,
22815 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO1],
22816 + BFD_RELOC_UNUSED, 2, -1,
22817 + {
22818 + &avr32_ifield_table[AVR32_IFIELD_RY],
22819 + &avr32_ifield_table[AVR32_IFIELD_RX],
22820 + },
22821 + },
22822 + {
22823 + AVR32_OPC_MOVGE1, 4, 0xe0001740, 0xe1f0ffff,
22824 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE1],
22825 + BFD_RELOC_UNUSED, 2, -1,
22826 + {
22827 + &avr32_ifield_table[AVR32_IFIELD_RY],
22828 + &avr32_ifield_table[AVR32_IFIELD_RX],
22829 + },
22830 + },
22831 + {
22832 + AVR32_OPC_MOVLT1, 4, 0xe0001750, 0xe1f0ffff,
22833 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT1],
22834 + BFD_RELOC_UNUSED, 2, -1,
22835 + {
22836 + &avr32_ifield_table[AVR32_IFIELD_RY],
22837 + &avr32_ifield_table[AVR32_IFIELD_RX],
22838 + },
22839 + },
22840 + {
22841 + AVR32_OPC_MOVMI1, 4, 0xe0001760, 0xe1f0ffff,
22842 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI1],
22843 + BFD_RELOC_UNUSED, 2, -1,
22844 + {
22845 + &avr32_ifield_table[AVR32_IFIELD_RY],
22846 + &avr32_ifield_table[AVR32_IFIELD_RX],
22847 + },
22848 + },
22849 + {
22850 + AVR32_OPC_MOVPL1, 4, 0xe0001770, 0xe1f0ffff,
22851 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL1],
22852 + BFD_RELOC_UNUSED, 2, -1,
22853 + {
22854 + &avr32_ifield_table[AVR32_IFIELD_RY],
22855 + &avr32_ifield_table[AVR32_IFIELD_RX],
22856 + },
22857 + },
22858 + {
22859 + AVR32_OPC_MOVLS1, 4, 0xe0001780, 0xe1f0ffff,
22860 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS1],
22861 + BFD_RELOC_UNUSED, 2, -1,
22862 + {
22863 + &avr32_ifield_table[AVR32_IFIELD_RY],
22864 + &avr32_ifield_table[AVR32_IFIELD_RX],
22865 + },
22866 + },
22867 + {
22868 + AVR32_OPC_MOVGT1, 4, 0xe0001790, 0xe1f0ffff,
22869 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT1],
22870 + BFD_RELOC_UNUSED, 2, -1,
22871 + {
22872 + &avr32_ifield_table[AVR32_IFIELD_RY],
22873 + &avr32_ifield_table[AVR32_IFIELD_RX],
22874 + },
22875 + },
22876 + {
22877 + AVR32_OPC_MOVLE1, 4, 0xe00017a0, 0xe1f0ffff,
22878 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE1],
22879 + BFD_RELOC_UNUSED, 2, -1,
22880 + {
22881 + &avr32_ifield_table[AVR32_IFIELD_RY],
22882 + &avr32_ifield_table[AVR32_IFIELD_RX],
22883 + },
22884 + },
22885 + {
22886 + AVR32_OPC_MOVHI1, 4, 0xe00017b0, 0xe1f0ffff,
22887 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI1],
22888 + BFD_RELOC_UNUSED, 2, -1,
22889 + {
22890 + &avr32_ifield_table[AVR32_IFIELD_RY],
22891 + &avr32_ifield_table[AVR32_IFIELD_RX],
22892 + },
22893 + },
22894 + {
22895 + AVR32_OPC_MOVVS1, 4, 0xe00017c0, 0xe1f0ffff,
22896 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS1],
22897 + BFD_RELOC_UNUSED, 2, -1,
22898 + {
22899 + &avr32_ifield_table[AVR32_IFIELD_RY],
22900 + &avr32_ifield_table[AVR32_IFIELD_RX],
22901 + },
22902 + },
22903 + {
22904 + AVR32_OPC_MOVVC1, 4, 0xe00017d0, 0xe1f0ffff,
22905 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC1],
22906 + BFD_RELOC_UNUSED, 2, -1,
22907 + {
22908 + &avr32_ifield_table[AVR32_IFIELD_RY],
22909 + &avr32_ifield_table[AVR32_IFIELD_RX],
22910 + },
22911 + },
22912 + {
22913 + AVR32_OPC_MOVQS1, 4, 0xe00017e0, 0xe1f0ffff,
22914 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS1],
22915 + BFD_RELOC_UNUSED, 2, -1,
22916 + {
22917 + &avr32_ifield_table[AVR32_IFIELD_RY],
22918 + &avr32_ifield_table[AVR32_IFIELD_RX],
22919 + },
22920 + },
22921 + {
22922 + AVR32_OPC_MOVAL1, 4, 0xe00017f0, 0xe1f0ffff,
22923 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL1],
22924 + BFD_RELOC_UNUSED, 2, -1,
22925 + {
22926 + &avr32_ifield_table[AVR32_IFIELD_RY],
22927 + &avr32_ifield_table[AVR32_IFIELD_RX],
22928 + },
22929 + },
22930 + {
22931 + AVR32_OPC_MOVEQ2, 4, 0xf9b00000, 0xfff0ff00,
22932 + &avr32_syntax_table[AVR32_SYNTAX_MOVEQ2],
22933 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22934 + {
22935 + &avr32_ifield_table[AVR32_IFIELD_RY],
22936 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22937 + },
22938 + },
22939 + {
22940 + AVR32_OPC_MOVNE2, 4, 0xf9b00100, 0xfff0ff00,
22941 + &avr32_syntax_table[AVR32_SYNTAX_MOVNE2],
22942 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22943 + {
22944 + &avr32_ifield_table[AVR32_IFIELD_RY],
22945 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22946 + },
22947 + },
22948 + {
22949 + AVR32_OPC_MOVCC2, 4, 0xf9b00200, 0xfff0ff00,
22950 + &avr32_syntax_table[AVR32_SYNTAX_MOVHS2],
22951 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22952 + {
22953 + &avr32_ifield_table[AVR32_IFIELD_RY],
22954 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22955 + },
22956 + },
22957 + {
22958 + AVR32_OPC_MOVCS2, 4, 0xf9b00300, 0xfff0ff00,
22959 + &avr32_syntax_table[AVR32_SYNTAX_MOVLO2],
22960 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22961 + {
22962 + &avr32_ifield_table[AVR32_IFIELD_RY],
22963 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22964 + },
22965 + },
22966 + {
22967 + AVR32_OPC_MOVGE2, 4, 0xf9b00400, 0xfff0ff00,
22968 + &avr32_syntax_table[AVR32_SYNTAX_MOVGE2],
22969 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22970 + {
22971 + &avr32_ifield_table[AVR32_IFIELD_RY],
22972 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22973 + },
22974 + },
22975 + {
22976 + AVR32_OPC_MOVLT2, 4, 0xf9b00500, 0xfff0ff00,
22977 + &avr32_syntax_table[AVR32_SYNTAX_MOVLT2],
22978 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22979 + {
22980 + &avr32_ifield_table[AVR32_IFIELD_RY],
22981 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22982 + },
22983 + },
22984 + {
22985 + AVR32_OPC_MOVMI2, 4, 0xf9b00600, 0xfff0ff00,
22986 + &avr32_syntax_table[AVR32_SYNTAX_MOVMI2],
22987 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22988 + {
22989 + &avr32_ifield_table[AVR32_IFIELD_RY],
22990 + &avr32_ifield_table[AVR32_IFIELD_K8E],
22991 + },
22992 + },
22993 + {
22994 + AVR32_OPC_MOVPL2, 4, 0xf9b00700, 0xfff0ff00,
22995 + &avr32_syntax_table[AVR32_SYNTAX_MOVPL2],
22996 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
22997 + {
22998 + &avr32_ifield_table[AVR32_IFIELD_RY],
22999 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23000 + },
23001 + },
23002 + {
23003 + AVR32_OPC_MOVLS2, 4, 0xf9b00800, 0xfff0ff00,
23004 + &avr32_syntax_table[AVR32_SYNTAX_MOVLS2],
23005 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23006 + {
23007 + &avr32_ifield_table[AVR32_IFIELD_RY],
23008 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23009 + },
23010 + },
23011 + {
23012 + AVR32_OPC_MOVGT2, 4, 0xf9b00900, 0xfff0ff00,
23013 + &avr32_syntax_table[AVR32_SYNTAX_MOVGT2],
23014 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23015 + {
23016 + &avr32_ifield_table[AVR32_IFIELD_RY],
23017 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23018 + },
23019 + },
23020 + {
23021 + AVR32_OPC_MOVLE2, 4, 0xf9b00a00, 0xfff0ff00,
23022 + &avr32_syntax_table[AVR32_SYNTAX_MOVLE2],
23023 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23024 + {
23025 + &avr32_ifield_table[AVR32_IFIELD_RY],
23026 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23027 + },
23028 + },
23029 + {
23030 + AVR32_OPC_MOVHI2, 4, 0xf9b00b00, 0xfff0ff00,
23031 + &avr32_syntax_table[AVR32_SYNTAX_MOVHI2],
23032 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23033 + {
23034 + &avr32_ifield_table[AVR32_IFIELD_RY],
23035 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23036 + },
23037 + },
23038 + {
23039 + AVR32_OPC_MOVVS2, 4, 0xf9b00c00, 0xfff0ff00,
23040 + &avr32_syntax_table[AVR32_SYNTAX_MOVVS2],
23041 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23042 + {
23043 + &avr32_ifield_table[AVR32_IFIELD_RY],
23044 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23045 + },
23046 + },
23047 + {
23048 + AVR32_OPC_MOVVC2, 4, 0xf9b00d00, 0xfff0ff00,
23049 + &avr32_syntax_table[AVR32_SYNTAX_MOVVC2],
23050 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23051 + {
23052 + &avr32_ifield_table[AVR32_IFIELD_RY],
23053 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23054 + },
23055 + },
23056 + {
23057 + AVR32_OPC_MOVQS2, 4, 0xf9b00e00, 0xfff0ff00,
23058 + &avr32_syntax_table[AVR32_SYNTAX_MOVQS2],
23059 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23060 + {
23061 + &avr32_ifield_table[AVR32_IFIELD_RY],
23062 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23063 + },
23064 + },
23065 + {
23066 + AVR32_OPC_MOVAL2, 4, 0xf9b00f00, 0xfff0ff00,
23067 + &avr32_syntax_table[AVR32_SYNTAX_MOVAL2],
23068 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
23069 + {
23070 + &avr32_ifield_table[AVR32_IFIELD_RY],
23071 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23072 + },
23073 + },
23074 + {
23075 + AVR32_OPC_MTDR, 4, 0xe7b00000, 0xfff0ff00,
23076 + &avr32_syntax_table[AVR32_SYNTAX_MTDR],
23077 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
23078 + {
23079 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23080 + &avr32_ifield_table[AVR32_IFIELD_RY],
23081 + },
23082 + },
23083 + {
23084 + AVR32_OPC_MTSR, 4, 0xe3b00000, 0xfff0ff00,
23085 + &avr32_syntax_table[AVR32_SYNTAX_MTSR],
23086 + BFD_RELOC_AVR32_8S_EXT, 2, 0,
23087 + {
23088 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23089 + &avr32_ifield_table[AVR32_IFIELD_RY],
23090 + },
23091 + },
23092 + {
23093 + AVR32_OPC_MUL1, 2, 0xa1300000, 0xe1f00000,
23094 + &avr32_syntax_table[AVR32_SYNTAX_MUL1],
23095 + BFD_RELOC_UNUSED, 2, -1,
23096 + {
23097 + &avr32_ifield_table[AVR32_IFIELD_RY],
23098 + &avr32_ifield_table[AVR32_IFIELD_RX],
23099 + },
23100 + },
23101 + {
23102 + AVR32_OPC_MUL2, 4, 0xe0000240, 0xe1f0fff0,
23103 + &avr32_syntax_table[AVR32_SYNTAX_MUL2],
23104 + BFD_RELOC_UNUSED, 3, -1,
23105 + {
23106 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23107 + &avr32_ifield_table[AVR32_IFIELD_RX],
23108 + &avr32_ifield_table[AVR32_IFIELD_RY],
23109 + },
23110 + },
23111 + {
23112 + AVR32_OPC_MUL3, 4, 0xe0001000, 0xe1f0ff00,
23113 + &avr32_syntax_table[AVR32_SYNTAX_MUL3],
23114 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
23115 + {
23116 + &avr32_ifield_table[AVR32_IFIELD_RY],
23117 + &avr32_ifield_table[AVR32_IFIELD_RX],
23118 + &avr32_ifield_table[AVR32_IFIELD_K8E],
23119 + },
23120 + },
23121 + {
23122 + AVR32_OPC_MULHH_W, 4, 0xe0000780, 0xe1f0ffc0,
23123 + &avr32_syntax_table[AVR32_SYNTAX_MULHH_W],
23124 + BFD_RELOC_UNUSED, 5, -1,
23125 + {
23126 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23127 + &avr32_ifield_table[AVR32_IFIELD_RX],
23128 + &avr32_ifield_table[AVR32_IFIELD_X],
23129 + &avr32_ifield_table[AVR32_IFIELD_RY],
23130 + &avr32_ifield_table[AVR32_IFIELD_Y],
23131 + },
23132 + },
23133 + {
23134 + AVR32_OPC_MULNHH_W, 4, 0xe0000180, 0xe1f0ffc0,
23135 + &avr32_syntax_table[AVR32_SYNTAX_MULNHH_W],
23136 + BFD_RELOC_UNUSED, 5, -1,
23137 + {
23138 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23139 + &avr32_ifield_table[AVR32_IFIELD_RX],
23140 + &avr32_ifield_table[AVR32_IFIELD_X],
23141 + &avr32_ifield_table[AVR32_IFIELD_RY],
23142 + &avr32_ifield_table[AVR32_IFIELD_Y],
23143 + },
23144 + },
23145 + {
23146 + AVR32_OPC_MULNWH_D, 4, 0xe0000280, 0xe1f0ffe1,
23147 + &avr32_syntax_table[AVR32_SYNTAX_MULNWH_D],
23148 + BFD_RELOC_UNUSED, 4, -1,
23149 + {
23150 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23151 + &avr32_ifield_table[AVR32_IFIELD_RX],
23152 + &avr32_ifield_table[AVR32_IFIELD_RY],
23153 + &avr32_ifield_table[AVR32_IFIELD_Y],
23154 + },
23155 + },
23156 + {
23157 + AVR32_OPC_MULSD, 4, 0xe0000440, 0xe1f0fff0,
23158 + &avr32_syntax_table[AVR32_SYNTAX_MULSD],
23159 + BFD_RELOC_UNUSED, 3, -1,
23160 + {
23161 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23162 + &avr32_ifield_table[AVR32_IFIELD_RX],
23163 + &avr32_ifield_table[AVR32_IFIELD_RY],
23164 + },
23165 + },
23166 + {
23167 + AVR32_OPC_MULSATHH_H, 4, 0xe0000880, 0xe1f0ffc0,
23168 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_H],
23169 + BFD_RELOC_UNUSED, 5, -1,
23170 + {
23171 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23172 + &avr32_ifield_table[AVR32_IFIELD_RX],
23173 + &avr32_ifield_table[AVR32_IFIELD_X],
23174 + &avr32_ifield_table[AVR32_IFIELD_RY],
23175 + &avr32_ifield_table[AVR32_IFIELD_Y],
23176 + },
23177 + },
23178 + {
23179 + AVR32_OPC_MULSATHH_W, 4, 0xe0000980, 0xe1f0ffc0,
23180 + &avr32_syntax_table[AVR32_SYNTAX_MULSATHH_W],
23181 + BFD_RELOC_UNUSED, 5, -1,
23182 + {
23183 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23184 + &avr32_ifield_table[AVR32_IFIELD_RX],
23185 + &avr32_ifield_table[AVR32_IFIELD_X],
23186 + &avr32_ifield_table[AVR32_IFIELD_RY],
23187 + &avr32_ifield_table[AVR32_IFIELD_Y],
23188 + },
23189 + },
23190 + {
23191 + AVR32_OPC_MULSATRNDHH_H, 4, 0xe0000a80, 0xe1f0ffc0,
23192 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDHH_H],
23193 + BFD_RELOC_UNUSED, 5, -1,
23194 + {
23195 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23196 + &avr32_ifield_table[AVR32_IFIELD_RX],
23197 + &avr32_ifield_table[AVR32_IFIELD_X],
23198 + &avr32_ifield_table[AVR32_IFIELD_RY],
23199 + &avr32_ifield_table[AVR32_IFIELD_Y],
23200 + },
23201 + },
23202 + {
23203 + AVR32_OPC_MULSATRNDWH_W, 4, 0xe0000b80, 0xe1f0ffe0,
23204 + &avr32_syntax_table[AVR32_SYNTAX_MULSATRNDWH_W],
23205 + BFD_RELOC_UNUSED, 4, -1,
23206 + {
23207 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23208 + &avr32_ifield_table[AVR32_IFIELD_RX],
23209 + &avr32_ifield_table[AVR32_IFIELD_RY],
23210 + &avr32_ifield_table[AVR32_IFIELD_Y],
23211 + },
23212 + },
23213 + {
23214 + AVR32_OPC_MULSATWH_W, 4, 0xe0000e80, 0xe1f0ffe0,
23215 + &avr32_syntax_table[AVR32_SYNTAX_MULSATWH_W],
23216 + BFD_RELOC_UNUSED, 4, -1,
23217 + {
23218 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23219 + &avr32_ifield_table[AVR32_IFIELD_RX],
23220 + &avr32_ifield_table[AVR32_IFIELD_RY],
23221 + &avr32_ifield_table[AVR32_IFIELD_Y],
23222 + },
23223 + },
23224 + {
23225 + AVR32_OPC_MULU_D, 4, 0xe0000640, 0xe1f0fff1,
23226 + &avr32_syntax_table[AVR32_SYNTAX_MULU_D],
23227 + BFD_RELOC_UNUSED, 3, -1,
23228 + {
23229 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23230 + &avr32_ifield_table[AVR32_IFIELD_RX],
23231 + &avr32_ifield_table[AVR32_IFIELD_RY],
23232 + },
23233 + },
23234 + {
23235 + AVR32_OPC_MULWH_D, 4, 0xe0000d80, 0xe1f0ffe1,
23236 + &avr32_syntax_table[AVR32_SYNTAX_MULWH_D],
23237 + BFD_RELOC_UNUSED, 4, -1,
23238 + {
23239 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23240 + &avr32_ifield_table[AVR32_IFIELD_RX],
23241 + &avr32_ifield_table[AVR32_IFIELD_RY],
23242 + &avr32_ifield_table[AVR32_IFIELD_Y],
23243 + },
23244 + },
23245 + {
23246 + AVR32_OPC_MUSFR, 2, 0x5d300000, 0xfff00000,
23247 + &avr32_syntax_table[AVR32_SYNTAX_MUSFR],
23248 + BFD_RELOC_UNUSED, 1, -1,
23249 + {
23250 + &avr32_ifield_table[AVR32_IFIELD_RY],
23251 + }
23252 + },
23253 + {
23254 + AVR32_OPC_MUSTR, 2, 0x5d200000, 0xfff00000,
23255 + &avr32_syntax_table[AVR32_SYNTAX_MUSTR],
23256 + BFD_RELOC_UNUSED, 1, -1,
23257 + {
23258 + &avr32_ifield_table[AVR32_IFIELD_RY],
23259 + }
23260 + },
23261 + {
23262 + AVR32_OPC_MVCR_D, 4, 0xefa00010, 0xfff111ff,
23263 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_D],
23264 + BFD_RELOC_UNUSED, 3, -1,
23265 + {
23266 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23267 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
23268 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
23269 + },
23270 + },
23271 + {
23272 + AVR32_OPC_MVCR_W, 4, 0xefa00000, 0xfff010ff,
23273 + &avr32_syntax_table[AVR32_SYNTAX_MVCR_W],
23274 + BFD_RELOC_UNUSED, 3, -1,
23275 + {
23276 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23277 + &avr32_ifield_table[AVR32_IFIELD_RY],
23278 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
23279 + },
23280 + },
23281 + {
23282 + AVR32_OPC_MVRC_D, 4, 0xefa00030, 0xfff111ff,
23283 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_D],
23284 + BFD_RELOC_UNUSED, 3, -1,
23285 + {
23286 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23287 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
23288 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
23289 + },
23290 + },
23291 + {
23292 + AVR32_OPC_MVRC_W, 4, 0xefa00020, 0xfff010ff,
23293 + &avr32_syntax_table[AVR32_SYNTAX_MVRC_W],
23294 + BFD_RELOC_UNUSED, 3, -1,
23295 + {
23296 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
23297 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
23298 + &avr32_ifield_table[AVR32_IFIELD_RY],
23299 + },
23300 + },
23301 + {
23302 + AVR32_OPC_NEG, 2, 0x5c300000, 0xfff00000,
23303 + &avr32_syntax_table[AVR32_SYNTAX_NEG],
23304 + BFD_RELOC_UNUSED, 1, -1,
23305 + {
23306 + &avr32_ifield_table[AVR32_IFIELD_RY],
23307 + }
23308 + },
23309 + {
23310 + AVR32_OPC_NOP, 2, 0xd7030000, 0xffff0000,
23311 + &avr32_syntax_table[AVR32_SYNTAX_NOP],
23312 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23313 + },
23314 + {
23315 + AVR32_OPC_OR1, 2, 0x00400000, 0xe1f00000,
23316 + &avr32_syntax_table[AVR32_SYNTAX_OR1],
23317 + BFD_RELOC_UNUSED, 2, -1,
23318 + {
23319 + &avr32_ifield_table[AVR32_IFIELD_RY],
23320 + &avr32_ifield_table[AVR32_IFIELD_RX],
23321 + },
23322 + },
23323 + {
23324 + AVR32_OPC_OR2, 4, 0xe1e01000, 0xe1f0fe00,
23325 + &avr32_syntax_table[AVR32_SYNTAX_OR2],
23326 + BFD_RELOC_UNUSED, 4, -1,
23327 + {
23328 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23329 + &avr32_ifield_table[AVR32_IFIELD_RX],
23330 + &avr32_ifield_table[AVR32_IFIELD_RY],
23331 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
23332 + },
23333 + },
23334 + {
23335 + AVR32_OPC_OR3, 4, 0xe1e01200, 0xe1f0fe00,
23336 + &avr32_syntax_table[AVR32_SYNTAX_OR3],
23337 + BFD_RELOC_UNUSED, 4, -1,
23338 + {
23339 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23340 + &avr32_ifield_table[AVR32_IFIELD_RX],
23341 + &avr32_ifield_table[AVR32_IFIELD_RY],
23342 + &avr32_ifield_table[AVR32_IFIELD_K5E2],
23343 + },
23344 + },
23345 + {
23346 + AVR32_OPC_ORH, 4, 0xea100000, 0xfff00000,
23347 + &avr32_syntax_table[AVR32_SYNTAX_ORH],
23348 + BFD_RELOC_AVR32_16U, 2, 1,
23349 + {
23350 + &avr32_ifield_table[AVR32_IFIELD_RY],
23351 + &avr32_ifield_table[AVR32_IFIELD_K16],
23352 + },
23353 + },
23354 + {
23355 + AVR32_OPC_ORL, 4, 0xe8100000, 0xfff00000,
23356 + &avr32_syntax_table[AVR32_SYNTAX_ORL],
23357 + BFD_RELOC_AVR32_16U, 2, 1,
23358 + {
23359 + &avr32_ifield_table[AVR32_IFIELD_RY],
23360 + &avr32_ifield_table[AVR32_IFIELD_K16],
23361 + },
23362 + },
23363 + {
23364 + AVR32_OPC_PABS_SB, 4, 0xe00023e0, 0xfff0fff0,
23365 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SB],
23366 + BFD_RELOC_UNUSED, 2, -1,
23367 + {
23368 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23369 + &avr32_ifield_table[AVR32_IFIELD_RY],
23370 + },
23371 + },
23372 + {
23373 + AVR32_OPC_PABS_SH, 4, 0xe00023f0, 0xfff0fff0,
23374 + &avr32_syntax_table[AVR32_SYNTAX_PABS_SH],
23375 + BFD_RELOC_UNUSED, 2, -1,
23376 + {
23377 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23378 + &avr32_ifield_table[AVR32_IFIELD_RY],
23379 + },
23380 + },
23381 + {
23382 + AVR32_OPC_PACKSH_SB, 4, 0xe00024d0, 0xe1f0fff0,
23383 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_SB],
23384 + BFD_RELOC_UNUSED, 3, -1,
23385 + {
23386 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23387 + &avr32_ifield_table[AVR32_IFIELD_RX],
23388 + &avr32_ifield_table[AVR32_IFIELD_RY],
23389 + },
23390 + },
23391 + {
23392 + AVR32_OPC_PACKSH_UB, 4, 0xe00024c0, 0xe1f0fff0,
23393 + &avr32_syntax_table[AVR32_SYNTAX_PACKSH_UB],
23394 + BFD_RELOC_UNUSED, 3, -1,
23395 + {
23396 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23397 + &avr32_ifield_table[AVR32_IFIELD_RX],
23398 + &avr32_ifield_table[AVR32_IFIELD_RY],
23399 + },
23400 + },
23401 + {
23402 + AVR32_OPC_PACKW_SH, 4, 0xe0002470, 0xe1f0fff0,
23403 + &avr32_syntax_table[AVR32_SYNTAX_PACKW_SH],
23404 + BFD_RELOC_UNUSED, 3, -1,
23405 + {
23406 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23407 + &avr32_ifield_table[AVR32_IFIELD_RX],
23408 + &avr32_ifield_table[AVR32_IFIELD_RY],
23409 + },
23410 + },
23411 + {
23412 + AVR32_OPC_PADD_B, 4, 0xe0002300, 0xe1f0fff0,
23413 + &avr32_syntax_table[AVR32_SYNTAX_PADD_B],
23414 + BFD_RELOC_UNUSED, 3, -1,
23415 + {
23416 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23417 + &avr32_ifield_table[AVR32_IFIELD_RX],
23418 + &avr32_ifield_table[AVR32_IFIELD_RY],
23419 + },
23420 + },
23421 + {
23422 + AVR32_OPC_PADD_H, 4, 0xe0002000, 0xe1f0fff0,
23423 + &avr32_syntax_table[AVR32_SYNTAX_PADD_H],
23424 + BFD_RELOC_UNUSED, 3, -1,
23425 + {
23426 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23427 + &avr32_ifield_table[AVR32_IFIELD_RX],
23428 + &avr32_ifield_table[AVR32_IFIELD_RY],
23429 + },
23430 + },
23431 + {
23432 + AVR32_OPC_PADDH_SH, 4, 0xe00020c0, 0xe1f0fff0,
23433 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_SH],
23434 + BFD_RELOC_UNUSED, 3, -1,
23435 + {
23436 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23437 + &avr32_ifield_table[AVR32_IFIELD_RX],
23438 + &avr32_ifield_table[AVR32_IFIELD_RY],
23439 + },
23440 + },
23441 + {
23442 + AVR32_OPC_PADDH_UB, 4, 0xe0002360, 0xe1f0fff0,
23443 + &avr32_syntax_table[AVR32_SYNTAX_PADDH_UB],
23444 + BFD_RELOC_UNUSED, 3, -1,
23445 + {
23446 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23447 + &avr32_ifield_table[AVR32_IFIELD_RX],
23448 + &avr32_ifield_table[AVR32_IFIELD_RY],
23449 + },
23450 + },
23451 + {
23452 + AVR32_OPC_PADDS_SB, 4, 0xe0002320, 0xe1f0fff0,
23453 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SB],
23454 + BFD_RELOC_UNUSED, 3, -1,
23455 + {
23456 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23457 + &avr32_ifield_table[AVR32_IFIELD_RX],
23458 + &avr32_ifield_table[AVR32_IFIELD_RY],
23459 + },
23460 + },
23461 + {
23462 + AVR32_OPC_PADDS_SH, 4, 0xe0002040, 0xe1f0fff0,
23463 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_SH],
23464 + BFD_RELOC_UNUSED, 3, -1,
23465 + {
23466 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23467 + &avr32_ifield_table[AVR32_IFIELD_RX],
23468 + &avr32_ifield_table[AVR32_IFIELD_RY],
23469 + },
23470 + },
23471 + {
23472 + AVR32_OPC_PADDS_UB, 4, 0xe0002340, 0xe1f0fff0,
23473 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UB],
23474 + BFD_RELOC_UNUSED, 3, -1,
23475 + {
23476 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23477 + &avr32_ifield_table[AVR32_IFIELD_RX],
23478 + &avr32_ifield_table[AVR32_IFIELD_RY],
23479 + },
23480 + },
23481 + {
23482 + AVR32_OPC_PADDS_UH, 4, 0xe0002080, 0xe1f0fff0,
23483 + &avr32_syntax_table[AVR32_SYNTAX_PADDS_UH],
23484 + BFD_RELOC_UNUSED, 3, -1,
23485 + {
23486 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23487 + &avr32_ifield_table[AVR32_IFIELD_RX],
23488 + &avr32_ifield_table[AVR32_IFIELD_RY],
23489 + },
23490 + },
23491 + {
23492 + AVR32_OPC_PADDSUB_H, 4, 0xe0002100, 0xe1f0ffc0,
23493 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUB_H],
23494 + BFD_RELOC_UNUSED, 5, -1,
23495 + {
23496 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23497 + &avr32_ifield_table[AVR32_IFIELD_RX],
23498 + &avr32_ifield_table[AVR32_IFIELD_X],
23499 + &avr32_ifield_table[AVR32_IFIELD_RY],
23500 + &avr32_ifield_table[AVR32_IFIELD_Y],
23501 + },
23502 + },
23503 + {
23504 + AVR32_OPC_PADDSUBH_SH, 4, 0xe0002280, 0xe1f0ffc0,
23505 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBH_SH],
23506 + BFD_RELOC_UNUSED, 5, -1,
23507 + {
23508 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23509 + &avr32_ifield_table[AVR32_IFIELD_RX],
23510 + &avr32_ifield_table[AVR32_IFIELD_X],
23511 + &avr32_ifield_table[AVR32_IFIELD_RY],
23512 + &avr32_ifield_table[AVR32_IFIELD_Y],
23513 + },
23514 + },
23515 + {
23516 + AVR32_OPC_PADDSUBS_SH, 4, 0xe0002180, 0xe1f0ffc0,
23517 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_SH],
23518 + BFD_RELOC_UNUSED, 5, -1,
23519 + {
23520 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23521 + &avr32_ifield_table[AVR32_IFIELD_RX],
23522 + &avr32_ifield_table[AVR32_IFIELD_X],
23523 + &avr32_ifield_table[AVR32_IFIELD_RY],
23524 + &avr32_ifield_table[AVR32_IFIELD_Y],
23525 + },
23526 + },
23527 + {
23528 + AVR32_OPC_PADDSUBS_UH, 4, 0xe0002200, 0xe1f0ffc0,
23529 + &avr32_syntax_table[AVR32_SYNTAX_PADDSUBS_UH],
23530 + BFD_RELOC_UNUSED, 5, -1,
23531 + {
23532 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23533 + &avr32_ifield_table[AVR32_IFIELD_RX],
23534 + &avr32_ifield_table[AVR32_IFIELD_X],
23535 + &avr32_ifield_table[AVR32_IFIELD_RY],
23536 + &avr32_ifield_table[AVR32_IFIELD_Y],
23537 + },
23538 + },
23539 + {
23540 + AVR32_OPC_PADDX_H, 4, 0xe0002020, 0xe1f0fff0,
23541 + &avr32_syntax_table[AVR32_SYNTAX_PADDX_H],
23542 + BFD_RELOC_UNUSED, 3, -1,
23543 + {
23544 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23545 + &avr32_ifield_table[AVR32_IFIELD_RX],
23546 + &avr32_ifield_table[AVR32_IFIELD_RY],
23547 + },
23548 + },
23549 + {
23550 + AVR32_OPC_PADDXH_SH, 4, 0xe00020e0, 0xe1f0fff0,
23551 + &avr32_syntax_table[AVR32_SYNTAX_PADDXH_SH],
23552 + BFD_RELOC_UNUSED, 3, -1,
23553 + {
23554 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23555 + &avr32_ifield_table[AVR32_IFIELD_RX],
23556 + &avr32_ifield_table[AVR32_IFIELD_RY],
23557 + },
23558 + },
23559 + {
23560 + AVR32_OPC_PADDXS_SH, 4, 0xe0002060, 0xe1f0fff0,
23561 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_SH],
23562 + BFD_RELOC_UNUSED, 3, -1,
23563 + {
23564 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23565 + &avr32_ifield_table[AVR32_IFIELD_RX],
23566 + &avr32_ifield_table[AVR32_IFIELD_RY],
23567 + },
23568 + },
23569 + {
23570 + AVR32_OPC_PADDXS_UH, 4, 0xe00020a0, 0xe1f0fff0,
23571 + &avr32_syntax_table[AVR32_SYNTAX_PADDXS_UH],
23572 + BFD_RELOC_UNUSED, 3, -1,
23573 + {
23574 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23575 + &avr32_ifield_table[AVR32_IFIELD_RX],
23576 + &avr32_ifield_table[AVR32_IFIELD_RY],
23577 + },
23578 + },
23579 + {
23580 + AVR32_OPC_PASR_B, 4, 0xe0002410, 0xe1f8fff0,
23581 + &avr32_syntax_table[AVR32_SYNTAX_PASR_B],
23582 + BFD_RELOC_UNUSED, 3, -1,
23583 + {
23584 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23585 + &avr32_ifield_table[AVR32_IFIELD_RX],
23586 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23587 + },
23588 + },
23589 + {
23590 + AVR32_OPC_PASR_H, 4, 0xe0002440, 0xe1f0fff0,
23591 + &avr32_syntax_table[AVR32_SYNTAX_PASR_H],
23592 + BFD_RELOC_UNUSED, 3, -1,
23593 + {
23594 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23595 + &avr32_ifield_table[AVR32_IFIELD_RX],
23596 + &avr32_ifield_table[AVR32_IFIELD_RY],
23597 + },
23598 + },
23599 + {
23600 + AVR32_OPC_PAVG_SH, 4, 0xe00023d0, 0xe1f0fff0,
23601 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_SH],
23602 + BFD_RELOC_UNUSED, 3, -1,
23603 + {
23604 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23605 + &avr32_ifield_table[AVR32_IFIELD_RX],
23606 + &avr32_ifield_table[AVR32_IFIELD_RY],
23607 + },
23608 + },
23609 + {
23610 + AVR32_OPC_PAVG_UB, 4, 0xe00023c0, 0xe1f0fff0,
23611 + &avr32_syntax_table[AVR32_SYNTAX_PAVG_UB],
23612 + BFD_RELOC_UNUSED, 3, -1,
23613 + {
23614 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23615 + &avr32_ifield_table[AVR32_IFIELD_RX],
23616 + &avr32_ifield_table[AVR32_IFIELD_RY],
23617 + },
23618 + },
23619 + {
23620 + AVR32_OPC_PLSL_B, 4, 0xe0002420, 0xe1f8fff0,
23621 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_B],
23622 + BFD_RELOC_UNUSED, 3, -1,
23623 + {
23624 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23625 + &avr32_ifield_table[AVR32_IFIELD_RX],
23626 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23627 + },
23628 + },
23629 + {
23630 + AVR32_OPC_PLSL_H, 4, 0xe0002450, 0xe1f0fff0,
23631 + &avr32_syntax_table[AVR32_SYNTAX_PLSL_H],
23632 + BFD_RELOC_UNUSED, 3, -1,
23633 + {
23634 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23635 + &avr32_ifield_table[AVR32_IFIELD_RX],
23636 + &avr32_ifield_table[AVR32_IFIELD_RY],
23637 + },
23638 + },
23639 + {
23640 + AVR32_OPC_PLSR_B, 4, 0xe0002430, 0xe1f8fff0,
23641 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_B],
23642 + BFD_RELOC_UNUSED, 3, -1,
23643 + {
23644 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23645 + &avr32_ifield_table[AVR32_IFIELD_RX],
23646 + &avr32_ifield_table[AVR32_IFIELD_COND3],
23647 + },
23648 + },
23649 + {
23650 + AVR32_OPC_PLSR_H, 4, 0xe0002460, 0xe1f0fff0,
23651 + &avr32_syntax_table[AVR32_SYNTAX_PLSR_H],
23652 + BFD_RELOC_UNUSED, 3, -1,
23653 + {
23654 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23655 + &avr32_ifield_table[AVR32_IFIELD_RX],
23656 + &avr32_ifield_table[AVR32_IFIELD_RY],
23657 + },
23658 + },
23659 + {
23660 + AVR32_OPC_PMAX_SH, 4, 0xe0002390, 0xe1f0fff0,
23661 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_SH],
23662 + BFD_RELOC_UNUSED, 3, -1,
23663 + {
23664 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23665 + &avr32_ifield_table[AVR32_IFIELD_RX],
23666 + &avr32_ifield_table[AVR32_IFIELD_RY],
23667 + },
23668 + },
23669 + {
23670 + AVR32_OPC_PMAX_UB, 4, 0xe0002380, 0xe1f0fff0,
23671 + &avr32_syntax_table[AVR32_SYNTAX_PMAX_UB],
23672 + BFD_RELOC_UNUSED, 3, -1,
23673 + {
23674 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23675 + &avr32_ifield_table[AVR32_IFIELD_RX],
23676 + &avr32_ifield_table[AVR32_IFIELD_RY],
23677 + },
23678 + },
23679 + {
23680 + AVR32_OPC_PMIN_SH, 4, 0xe00023b0, 0xe1f0fff0,
23681 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_SH],
23682 + BFD_RELOC_UNUSED, 3, -1,
23683 + {
23684 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23685 + &avr32_ifield_table[AVR32_IFIELD_RX],
23686 + &avr32_ifield_table[AVR32_IFIELD_RY],
23687 + },
23688 + },
23689 + {
23690 + AVR32_OPC_PMIN_UB, 4, 0xe00023a0, 0xe1f0fff0,
23691 + &avr32_syntax_table[AVR32_SYNTAX_PMIN_UB],
23692 + BFD_RELOC_UNUSED, 3, -1,
23693 + {
23694 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23695 + &avr32_ifield_table[AVR32_IFIELD_RX],
23696 + &avr32_ifield_table[AVR32_IFIELD_RY],
23697 + },
23698 + },
23699 + {
23700 + AVR32_OPC_POPJC, 2, 0xd7130000, 0xffff0000,
23701 + &avr32_syntax_table[AVR32_SYNTAX_POPJC],
23702 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23703 + },
23704 + {
23705 + AVR32_OPC_POPM, 2, 0xd0020000, 0xf0070000,
23706 + &avr32_syntax_table[AVR32_SYNTAX_POPM],
23707 + BFD_RELOC_UNUSED, 1, -1,
23708 + {
23709 + &avr32_ifield_table[AVR32_IFIELD_POPM],
23710 + },
23711 + },
23712 + {
23713 + AVR32_OPC_POPM_E, 4, 0xe3cd0000, 0xffff0000,
23714 + &avr32_syntax_table[AVR32_SYNTAX_POPM_E],
23715 + BFD_RELOC_UNUSED, 1, -1,
23716 + {
23717 + &avr32_ifield_table[AVR32_IFIELD_K16],
23718 + },
23719 + },
23720 + {
23721 + AVR32_OPC_PREF, 4, 0xf2100000, 0xfff00000,
23722 + &avr32_syntax_table[AVR32_SYNTAX_PREF],
23723 + BFD_RELOC_AVR32_16S, 2, -1,
23724 + {
23725 + &avr32_ifield_table[AVR32_IFIELD_RY],
23726 + &avr32_ifield_table[AVR32_IFIELD_K16],
23727 + },
23728 + },
23729 + {
23730 + AVR32_OPC_PSAD, 4, 0xe0002400, 0xe1f0fff0,
23731 + &avr32_syntax_table[AVR32_SYNTAX_PSAD],
23732 + BFD_RELOC_UNUSED, 3, -1,
23733 + {
23734 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23735 + &avr32_ifield_table[AVR32_IFIELD_RX],
23736 + &avr32_ifield_table[AVR32_IFIELD_RY],
23737 + },
23738 + },
23739 + {
23740 + AVR32_OPC_PSUB_B, 4, 0xe0002310, 0xe1f0fff0,
23741 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_B],
23742 + BFD_RELOC_UNUSED, 3, -1,
23743 + {
23744 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23745 + &avr32_ifield_table[AVR32_IFIELD_RX],
23746 + &avr32_ifield_table[AVR32_IFIELD_RY],
23747 + },
23748 + },
23749 + {
23750 + AVR32_OPC_PSUB_H, 4, 0xe0002010, 0xe1f0fff0,
23751 + &avr32_syntax_table[AVR32_SYNTAX_PSUB_H],
23752 + BFD_RELOC_UNUSED, 3, -1,
23753 + {
23754 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23755 + &avr32_ifield_table[AVR32_IFIELD_RX],
23756 + &avr32_ifield_table[AVR32_IFIELD_RY],
23757 + },
23758 + },
23759 + {
23760 + AVR32_OPC_PSUBADD_H, 4, 0xe0002140, 0xe1f0ffc0,
23761 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADD_H],
23762 + BFD_RELOC_UNUSED, 5, -1,
23763 + {
23764 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23765 + &avr32_ifield_table[AVR32_IFIELD_RX],
23766 + &avr32_ifield_table[AVR32_IFIELD_X],
23767 + &avr32_ifield_table[AVR32_IFIELD_RY],
23768 + &avr32_ifield_table[AVR32_IFIELD_Y],
23769 + },
23770 + },
23771 + {
23772 + AVR32_OPC_PSUBADDH_SH, 4, 0xe00022c0, 0xe1f0ffc0,
23773 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDH_SH],
23774 + BFD_RELOC_UNUSED, 5, -1,
23775 + {
23776 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23777 + &avr32_ifield_table[AVR32_IFIELD_RX],
23778 + &avr32_ifield_table[AVR32_IFIELD_X],
23779 + &avr32_ifield_table[AVR32_IFIELD_RY],
23780 + &avr32_ifield_table[AVR32_IFIELD_Y],
23781 + },
23782 + },
23783 + {
23784 + AVR32_OPC_PSUBADDS_SH, 4, 0xe00021c0, 0xe1f0ffc0,
23785 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_SH],
23786 + BFD_RELOC_UNUSED, 5, -1,
23787 + {
23788 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23789 + &avr32_ifield_table[AVR32_IFIELD_RX],
23790 + &avr32_ifield_table[AVR32_IFIELD_X],
23791 + &avr32_ifield_table[AVR32_IFIELD_RY],
23792 + &avr32_ifield_table[AVR32_IFIELD_Y],
23793 + },
23794 + },
23795 + {
23796 + AVR32_OPC_PSUBADDS_UH, 4, 0xe0002240, 0xe1f0ffc0,
23797 + &avr32_syntax_table[AVR32_SYNTAX_PSUBADDS_UH],
23798 + BFD_RELOC_UNUSED, 5, -1,
23799 + {
23800 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23801 + &avr32_ifield_table[AVR32_IFIELD_RX],
23802 + &avr32_ifield_table[AVR32_IFIELD_X],
23803 + &avr32_ifield_table[AVR32_IFIELD_RY],
23804 + &avr32_ifield_table[AVR32_IFIELD_Y],
23805 + },
23806 + },
23807 + {
23808 + AVR32_OPC_PSUBH_SH, 4, 0xe00020d0, 0xe1f0fff0,
23809 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_SH],
23810 + BFD_RELOC_UNUSED, 3, -1,
23811 + {
23812 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23813 + &avr32_ifield_table[AVR32_IFIELD_RX],
23814 + &avr32_ifield_table[AVR32_IFIELD_RY],
23815 + },
23816 + },
23817 + {
23818 + AVR32_OPC_PSUBH_UB, 4, 0xe0002370, 0xe1f0fff0,
23819 + &avr32_syntax_table[AVR32_SYNTAX_PSUBH_UB],
23820 + BFD_RELOC_UNUSED, 3, -1,
23821 + {
23822 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23823 + &avr32_ifield_table[AVR32_IFIELD_RX],
23824 + &avr32_ifield_table[AVR32_IFIELD_RY],
23825 + },
23826 + },
23827 + {
23828 + AVR32_OPC_PSUBS_SB, 4, 0xe0002330, 0xe1f0fff0,
23829 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SB],
23830 + BFD_RELOC_UNUSED, 3, -1,
23831 + {
23832 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23833 + &avr32_ifield_table[AVR32_IFIELD_RX],
23834 + &avr32_ifield_table[AVR32_IFIELD_RY],
23835 + },
23836 + },
23837 + {
23838 + AVR32_OPC_PSUBS_SH, 4, 0xe0002050, 0xe1f0fff0,
23839 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_SH],
23840 + BFD_RELOC_UNUSED, 3, -1,
23841 + {
23842 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23843 + &avr32_ifield_table[AVR32_IFIELD_RX],
23844 + &avr32_ifield_table[AVR32_IFIELD_RY],
23845 + },
23846 + },
23847 + {
23848 + AVR32_OPC_PSUBS_UB, 4, 0xe0002350, 0xe1f0fff0,
23849 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UB],
23850 + BFD_RELOC_UNUSED, 3, -1,
23851 + {
23852 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23853 + &avr32_ifield_table[AVR32_IFIELD_RX],
23854 + &avr32_ifield_table[AVR32_IFIELD_RY],
23855 + },
23856 + },
23857 + {
23858 + AVR32_OPC_PSUBS_UH, 4, 0xe0002090, 0xe1f0fff0,
23859 + &avr32_syntax_table[AVR32_SYNTAX_PSUBS_UH],
23860 + BFD_RELOC_UNUSED, 3, -1,
23861 + {
23862 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23863 + &avr32_ifield_table[AVR32_IFIELD_RX],
23864 + &avr32_ifield_table[AVR32_IFIELD_RY],
23865 + },
23866 + },
23867 + {
23868 + AVR32_OPC_PSUBX_H, 4, 0xe0002030, 0xe1f0fff0,
23869 + &avr32_syntax_table[AVR32_SYNTAX_PSUBX_H],
23870 + BFD_RELOC_UNUSED, 3, -1,
23871 + {
23872 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23873 + &avr32_ifield_table[AVR32_IFIELD_RX],
23874 + &avr32_ifield_table[AVR32_IFIELD_RY],
23875 + },
23876 + },
23877 + {
23878 + AVR32_OPC_PSUBXH_SH, 4, 0xe00020f0, 0xe1f0fff0,
23879 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXH_SH],
23880 + BFD_RELOC_UNUSED, 3, -1,
23881 + {
23882 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23883 + &avr32_ifield_table[AVR32_IFIELD_RX],
23884 + &avr32_ifield_table[AVR32_IFIELD_RY],
23885 + },
23886 + },
23887 + {
23888 + AVR32_OPC_PSUBXS_SH, 4, 0xe0002070, 0xe1f0fff0,
23889 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_SH],
23890 + BFD_RELOC_UNUSED, 3, -1,
23891 + {
23892 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23893 + &avr32_ifield_table[AVR32_IFIELD_RX],
23894 + &avr32_ifield_table[AVR32_IFIELD_RY],
23895 + },
23896 + },
23897 + {
23898 + AVR32_OPC_PSUBXS_UH, 4, 0xe00020b0, 0xe1f0fff0,
23899 + &avr32_syntax_table[AVR32_SYNTAX_PSUBXS_UH],
23900 + BFD_RELOC_UNUSED, 3, -1,
23901 + {
23902 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23903 + &avr32_ifield_table[AVR32_IFIELD_RX],
23904 + &avr32_ifield_table[AVR32_IFIELD_RY],
23905 + },
23906 + },
23907 + {
23908 + AVR32_OPC_PUNPCKSB_H, 4, 0xe00024a0, 0xe1ffffe0,
23909 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKSB_H],
23910 + BFD_RELOC_UNUSED, 3, -1,
23911 + {
23912 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23913 + &avr32_ifield_table[AVR32_IFIELD_RX],
23914 + &avr32_ifield_table[AVR32_IFIELD_Y],
23915 + },
23916 + },
23917 + {
23918 + AVR32_OPC_PUNPCKUB_H, 4, 0xe0002480, 0xe1ffffe0,
23919 + &avr32_syntax_table[AVR32_SYNTAX_PUNPCKUB_H],
23920 + BFD_RELOC_UNUSED, 3, -1,
23921 + {
23922 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
23923 + &avr32_ifield_table[AVR32_IFIELD_RX],
23924 + &avr32_ifield_table[AVR32_IFIELD_Y],
23925 + },
23926 + },
23927 + {
23928 + AVR32_OPC_PUSHJC, 2, 0xd7230000, 0xffff0000,
23929 + &avr32_syntax_table[AVR32_SYNTAX_PUSHJC],
23930 + BFD_RELOC_UNUSED, 0, -1, { NULL },
23931 + },
23932 + {
23933 + AVR32_OPC_PUSHM, 2, 0xd0010000, 0xf00f0000,
23934 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM],
23935 + BFD_RELOC_UNUSED, 1, -1,
23936 + {
23937 + &avr32_ifield_table[AVR32_IFIELD_K8C],
23938 + },
23939 + },
23940 + {
23941 + AVR32_OPC_PUSHM_E, 4, 0xebcd0000, 0xffff0000,
23942 + &avr32_syntax_table[AVR32_SYNTAX_PUSHM_E],
23943 + BFD_RELOC_UNUSED, 1, -1,
23944 + {
23945 + &avr32_ifield_table[AVR32_IFIELD_K16],
23946 + },
23947 + },
23948 + {
23949 + AVR32_OPC_RCALL1, 2, 0xc00c0000, 0xf00c0000,
23950 + &avr32_syntax_table[AVR32_SYNTAX_RCALL1],
23951 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
23952 + {
23953 + &avr32_ifield_table[AVR32_IFIELD_K10],
23954 + },
23955 + },
23956 + {
23957 + AVR32_OPC_RCALL2, 4, 0xe0a00000, 0xe1ef0000,
23958 + &avr32_syntax_table[AVR32_SYNTAX_RCALL2],
23959 + BFD_RELOC_AVR32_22H_PCREL, 1, 0,
23960 + {
23961 + &avr32_ifield_table[AVR32_IFIELD_K21],
23962 + },
23963 + },
23964 + {
23965 + AVR32_OPC_RETEQ, 2, 0x5e000000, 0xfff00000,
23966 + &avr32_syntax_table[AVR32_SYNTAX_RETEQ],
23967 + BFD_RELOC_NONE, 1, -1,
23968 + {
23969 + &avr32_ifield_table[AVR32_IFIELD_RY],
23970 + },
23971 + },
23972 + {
23973 + AVR32_OPC_RETNE, 2, 0x5e100000, 0xfff00000,
23974 + &avr32_syntax_table[AVR32_SYNTAX_RETNE],
23975 + BFD_RELOC_NONE, 1, -1,
23976 + {
23977 + &avr32_ifield_table[AVR32_IFIELD_RY],
23978 + },
23979 + },
23980 + {
23981 + AVR32_OPC_RETCC, 2, 0x5e200000, 0xfff00000,
23982 + &avr32_syntax_table[AVR32_SYNTAX_RETHS],
23983 + BFD_RELOC_NONE, 1, -1,
23984 + {
23985 + &avr32_ifield_table[AVR32_IFIELD_RY],
23986 + },
23987 + },
23988 + {
23989 + AVR32_OPC_RETCS, 2, 0x5e300000, 0xfff00000,
23990 + &avr32_syntax_table[AVR32_SYNTAX_RETLO],
23991 + BFD_RELOC_NONE, 1, -1,
23992 + {
23993 + &avr32_ifield_table[AVR32_IFIELD_RY],
23994 + },
23995 + },
23996 + {
23997 + AVR32_OPC_RETGE, 2, 0x5e400000, 0xfff00000,
23998 + &avr32_syntax_table[AVR32_SYNTAX_RETGE],
23999 + BFD_RELOC_NONE, 1, -1,
24000 + {
24001 + &avr32_ifield_table[AVR32_IFIELD_RY],
24002 + },
24003 + },
24004 + {
24005 + AVR32_OPC_RETLT, 2, 0x5e500000, 0xfff00000,
24006 + &avr32_syntax_table[AVR32_SYNTAX_RETLT],
24007 + BFD_RELOC_NONE, 1, -1,
24008 + {
24009 + &avr32_ifield_table[AVR32_IFIELD_RY],
24010 + },
24011 + },
24012 + {
24013 + AVR32_OPC_RETMI, 2, 0x5e600000, 0xfff00000,
24014 + &avr32_syntax_table[AVR32_SYNTAX_RETMI],
24015 + BFD_RELOC_NONE, 1, -1,
24016 + {
24017 + &avr32_ifield_table[AVR32_IFIELD_RY],
24018 + },
24019 + },
24020 + {
24021 + AVR32_OPC_RETPL, 2, 0x5e700000, 0xfff00000,
24022 + &avr32_syntax_table[AVR32_SYNTAX_RETPL],
24023 + BFD_RELOC_NONE, 1, -1,
24024 + {
24025 + &avr32_ifield_table[AVR32_IFIELD_RY],
24026 + },
24027 + },
24028 + {
24029 + AVR32_OPC_RETLS, 2, 0x5e800000, 0xfff00000,
24030 + &avr32_syntax_table[AVR32_SYNTAX_RETLS],
24031 + BFD_RELOC_NONE, 1, -1,
24032 + {
24033 + &avr32_ifield_table[AVR32_IFIELD_RY],
24034 + },
24035 + },
24036 + {
24037 + AVR32_OPC_RETGT, 2, 0x5e900000, 0xfff00000,
24038 + &avr32_syntax_table[AVR32_SYNTAX_RETGT],
24039 + BFD_RELOC_NONE, 1, -1,
24040 + {
24041 + &avr32_ifield_table[AVR32_IFIELD_RY],
24042 + },
24043 + },
24044 + {
24045 + AVR32_OPC_RETLE, 2, 0x5ea00000, 0xfff00000,
24046 + &avr32_syntax_table[AVR32_SYNTAX_RETLE],
24047 + BFD_RELOC_NONE, 1, -1,
24048 + {
24049 + &avr32_ifield_table[AVR32_IFIELD_RY],
24050 + },
24051 + },
24052 + {
24053 + AVR32_OPC_RETHI, 2, 0x5eb00000, 0xfff00000,
24054 + &avr32_syntax_table[AVR32_SYNTAX_RETHI],
24055 + BFD_RELOC_NONE, 1, -1,
24056 + {
24057 + &avr32_ifield_table[AVR32_IFIELD_RY],
24058 + },
24059 + },
24060 + {
24061 + AVR32_OPC_RETVS, 2, 0x5ec00000, 0xfff00000,
24062 + &avr32_syntax_table[AVR32_SYNTAX_RETVS],
24063 + BFD_RELOC_NONE, 1, -1,
24064 + {
24065 + &avr32_ifield_table[AVR32_IFIELD_RY],
24066 + },
24067 + },
24068 + {
24069 + AVR32_OPC_RETVC, 2, 0x5ed00000, 0xfff00000,
24070 + &avr32_syntax_table[AVR32_SYNTAX_RETVC],
24071 + BFD_RELOC_NONE, 1, -1,
24072 + {
24073 + &avr32_ifield_table[AVR32_IFIELD_RY],
24074 + },
24075 + },
24076 + {
24077 + AVR32_OPC_RETQS, 2, 0x5ee00000, 0xfff00000,
24078 + &avr32_syntax_table[AVR32_SYNTAX_RETQS],
24079 + BFD_RELOC_NONE, 1, -1,
24080 + {
24081 + &avr32_ifield_table[AVR32_IFIELD_RY],
24082 + },
24083 + },
24084 + {
24085 + AVR32_OPC_RETAL, 2, 0x5ef00000, 0xfff00000,
24086 + &avr32_syntax_table[AVR32_SYNTAX_RETAL],
24087 + BFD_RELOC_NONE, 1, -1,
24088 + {
24089 + &avr32_ifield_table[AVR32_IFIELD_RY],
24090 + },
24091 + },
24092 + {
24093 + AVR32_OPC_RETD, 2, 0xd6230000, 0xffff0000,
24094 + &avr32_syntax_table[AVR32_SYNTAX_RETD],
24095 + BFD_RELOC_NONE, 0, -1, { NULL },
24096 + },
24097 + {
24098 + AVR32_OPC_RETE, 2, 0xd6030000, 0xffff0000,
24099 + &avr32_syntax_table[AVR32_SYNTAX_RETE],
24100 + BFD_RELOC_NONE, 0, -1, { NULL },
24101 + },
24102 + {
24103 + AVR32_OPC_RETJ, 2, 0xd6330000, 0xffff0000,
24104 + &avr32_syntax_table[AVR32_SYNTAX_RETJ],
24105 + BFD_RELOC_NONE, 0, -1, { NULL },
24106 + },
24107 + {
24108 + AVR32_OPC_RETS, 2, 0xd6130000, 0xffff0000,
24109 + &avr32_syntax_table[AVR32_SYNTAX_RETS],
24110 + BFD_RELOC_NONE, 0, -1, { NULL },
24111 + },
24112 + {
24113 + AVR32_OPC_RJMP, 2, 0xc0080000, 0xf00c0000,
24114 + &avr32_syntax_table[AVR32_SYNTAX_RJMP],
24115 + BFD_RELOC_AVR32_11H_PCREL, 1, 0,
24116 + {
24117 + &avr32_ifield_table[AVR32_IFIELD_K10],
24118 + },
24119 + },
24120 + {
24121 + AVR32_OPC_ROL, 2, 0x5cf00000, 0xfff00000,
24122 + &avr32_syntax_table[AVR32_SYNTAX_ROL],
24123 + BFD_RELOC_UNUSED, 1, -1,
24124 + {
24125 + &avr32_ifield_table[AVR32_IFIELD_RY],
24126 + }
24127 + },
24128 + {
24129 + AVR32_OPC_ROR, 2, 0x5d000000, 0xfff00000,
24130 + &avr32_syntax_table[AVR32_SYNTAX_ROR],
24131 + BFD_RELOC_UNUSED, 1, -1,
24132 + {
24133 + &avr32_ifield_table[AVR32_IFIELD_RY],
24134 + }
24135 + },
24136 + {
24137 + AVR32_OPC_RSUB1, 2, 0x00200000, 0xe1f00000,
24138 + &avr32_syntax_table[AVR32_SYNTAX_RSUB1],
24139 + BFD_RELOC_UNUSED, 2, -1,
24140 + {
24141 + &avr32_ifield_table[AVR32_IFIELD_RY],
24142 + &avr32_ifield_table[AVR32_IFIELD_RX],
24143 + },
24144 + },
24145 + {
24146 + AVR32_OPC_RSUB2, 4, 0xe0001100, 0xe1f0ff00,
24147 + &avr32_syntax_table[AVR32_SYNTAX_RSUB2],
24148 + BFD_RELOC_AVR32_8S_EXT, 3, 2,
24149 + {
24150 + &avr32_ifield_table[AVR32_IFIELD_RY],
24151 + &avr32_ifield_table[AVR32_IFIELD_RX],
24152 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24153 + },
24154 + },
24155 + {
24156 + AVR32_OPC_SATADD_H, 4, 0xe00002c0, 0xe1f0fff0,
24157 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_H],
24158 + BFD_RELOC_UNUSED, 3, -1,
24159 + {
24160 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24161 + &avr32_ifield_table[AVR32_IFIELD_RX],
24162 + &avr32_ifield_table[AVR32_IFIELD_RY],
24163 + },
24164 + },
24165 + {
24166 + AVR32_OPC_SATADD_W, 4, 0xe00000c0, 0xe1f0fff0,
24167 + &avr32_syntax_table[AVR32_SYNTAX_SATADD_W],
24168 + BFD_RELOC_UNUSED, 3, -1,
24169 + {
24170 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24171 + &avr32_ifield_table[AVR32_IFIELD_RX],
24172 + &avr32_ifield_table[AVR32_IFIELD_RY],
24173 + },
24174 + },
24175 + {
24176 + AVR32_OPC_SATRNDS, 4, 0xf3b00000, 0xfff0fc00,
24177 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDS],
24178 + BFD_RELOC_UNUSED, 3, -1,
24179 + {
24180 + &avr32_ifield_table[AVR32_IFIELD_RY],
24181 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24182 + &avr32_ifield_table[AVR32_IFIELD_S5],
24183 + },
24184 + },
24185 + {
24186 + AVR32_OPC_SATRNDU, 4, 0xf3b00400, 0xfff0fc00,
24187 + &avr32_syntax_table[AVR32_SYNTAX_SATRNDU],
24188 + BFD_RELOC_UNUSED, 3, -1,
24189 + {
24190 + &avr32_ifield_table[AVR32_IFIELD_RY],
24191 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24192 + &avr32_ifield_table[AVR32_IFIELD_S5],
24193 + },
24194 + },
24195 + {
24196 + AVR32_OPC_SATS, 4, 0xf1b00000, 0xfff0fc00,
24197 + &avr32_syntax_table[AVR32_SYNTAX_SATS],
24198 + BFD_RELOC_UNUSED, 3, -1,
24199 + {
24200 + &avr32_ifield_table[AVR32_IFIELD_RY],
24201 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24202 + &avr32_ifield_table[AVR32_IFIELD_S5],
24203 + },
24204 + },
24205 + {
24206 + AVR32_OPC_SATSUB_H, 4, 0xe00003c0, 0xe1f0fff0,
24207 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_H],
24208 + BFD_RELOC_UNUSED, 3, -1,
24209 + {
24210 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24211 + &avr32_ifield_table[AVR32_IFIELD_RX],
24212 + &avr32_ifield_table[AVR32_IFIELD_RY],
24213 + },
24214 + },
24215 + {
24216 + AVR32_OPC_SATSUB_W1, 4, 0xe00001c0, 0xe1f0fff0,
24217 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W1],
24218 + BFD_RELOC_UNUSED, 3, -1,
24219 + {
24220 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24221 + &avr32_ifield_table[AVR32_IFIELD_RX],
24222 + &avr32_ifield_table[AVR32_IFIELD_RY],
24223 + },
24224 + },
24225 + {
24226 + AVR32_OPC_SATSUB_W2, 4, 0xe0d00000, 0xe1f00000,
24227 + &avr32_syntax_table[AVR32_SYNTAX_SATSUB_W2],
24228 + BFD_RELOC_UNUSED, 3, -1,
24229 + {
24230 + &avr32_ifield_table[AVR32_IFIELD_RY],
24231 + &avr32_ifield_table[AVR32_IFIELD_RX],
24232 + &avr32_ifield_table[AVR32_IFIELD_K16],
24233 + },
24234 + },
24235 + {
24236 + AVR32_OPC_SATU, 4, 0xf1b00400, 0xfff0fc00,
24237 + &avr32_syntax_table[AVR32_SYNTAX_SATU],
24238 + BFD_RELOC_UNUSED, 3, -1,
24239 + {
24240 + &avr32_ifield_table[AVR32_IFIELD_RY],
24241 + &avr32_ifield_table[AVR32_IFIELD_K5E],
24242 + &avr32_ifield_table[AVR32_IFIELD_S5],
24243 + },
24244 + },
24245 + {
24246 + AVR32_OPC_SBC, 4, 0xe0000140, 0xe1f0fff0,
24247 + &avr32_syntax_table[AVR32_SYNTAX_SBC],
24248 + BFD_RELOC_UNUSED, 3, -1,
24249 + {
24250 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24251 + &avr32_ifield_table[AVR32_IFIELD_RX],
24252 + &avr32_ifield_table[AVR32_IFIELD_RY],
24253 + },
24254 + },
24255 + {
24256 + AVR32_OPC_SBR, 2, 0xa1a00000, 0xe1e00000,
24257 + &avr32_syntax_table[AVR32_SYNTAX_SBR],
24258 + BFD_RELOC_UNUSED, 2, -1,
24259 + {
24260 + &avr32_ifield_table[AVR32_IFIELD_RY],
24261 + &avr32_ifield_table[AVR32_IFIELD_BIT5C],
24262 + },
24263 + },
24264 + {
24265 + AVR32_OPC_SCALL, 2, 0xd7330000, 0xffff0000,
24266 + &avr32_syntax_table[AVR32_SYNTAX_SCALL],
24267 + BFD_RELOC_UNUSED, 0, -1, { NULL },
24268 + },
24269 + {
24270 + AVR32_OPC_SCR, 2, 0x5c100000, 0xfff00000,
24271 + &avr32_syntax_table[AVR32_SYNTAX_SCR],
24272 + BFD_RELOC_UNUSED, 1, -1,
24273 + {
24274 + &avr32_ifield_table[AVR32_IFIELD_RY],
24275 + },
24276 + },
24277 + {
24278 + AVR32_OPC_SLEEP, 4, 0xe9b00000, 0xffffff00,
24279 + &avr32_syntax_table[AVR32_SYNTAX_SLEEP],
24280 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
24281 + {
24282 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24283 + },
24284 + },
24285 + {
24286 + AVR32_OPC_SREQ, 2, 0x5f000000, 0xfff00000,
24287 + &avr32_syntax_table[AVR32_SYNTAX_SREQ],
24288 + BFD_RELOC_UNUSED, 1, -1,
24289 + {
24290 + &avr32_ifield_table[AVR32_IFIELD_RY],
24291 + },
24292 + },
24293 + {
24294 + AVR32_OPC_SRNE, 2, 0x5f100000, 0xfff00000,
24295 + &avr32_syntax_table[AVR32_SYNTAX_SRNE],
24296 + BFD_RELOC_UNUSED, 1, -1,
24297 + {
24298 + &avr32_ifield_table[AVR32_IFIELD_RY],
24299 + },
24300 + },
24301 + {
24302 + AVR32_OPC_SRCC, 2, 0x5f200000, 0xfff00000,
24303 + &avr32_syntax_table[AVR32_SYNTAX_SRHS],
24304 + BFD_RELOC_UNUSED, 1, -1,
24305 + {
24306 + &avr32_ifield_table[AVR32_IFIELD_RY],
24307 + },
24308 + },
24309 + {
24310 + AVR32_OPC_SRCS, 2, 0x5f300000, 0xfff00000,
24311 + &avr32_syntax_table[AVR32_SYNTAX_SRLO],
24312 + BFD_RELOC_UNUSED, 1, -1,
24313 + {
24314 + &avr32_ifield_table[AVR32_IFIELD_RY],
24315 + },
24316 + },
24317 + {
24318 + AVR32_OPC_SRGE, 2, 0x5f400000, 0xfff00000,
24319 + &avr32_syntax_table[AVR32_SYNTAX_SRGE],
24320 + BFD_RELOC_UNUSED, 1, -1,
24321 + {
24322 + &avr32_ifield_table[AVR32_IFIELD_RY],
24323 + },
24324 + },
24325 + {
24326 + AVR32_OPC_SRLT, 2, 0x5f500000, 0xfff00000,
24327 + &avr32_syntax_table[AVR32_SYNTAX_SRLT],
24328 + BFD_RELOC_UNUSED, 1, -1,
24329 + {
24330 + &avr32_ifield_table[AVR32_IFIELD_RY],
24331 + },
24332 + },
24333 + {
24334 + AVR32_OPC_SRMI, 2, 0x5f600000, 0xfff00000,
24335 + &avr32_syntax_table[AVR32_SYNTAX_SRMI],
24336 + BFD_RELOC_UNUSED, 1, -1,
24337 + {
24338 + &avr32_ifield_table[AVR32_IFIELD_RY],
24339 + },
24340 + },
24341 + {
24342 + AVR32_OPC_SRPL, 2, 0x5f700000, 0xfff00000,
24343 + &avr32_syntax_table[AVR32_SYNTAX_SRPL],
24344 + BFD_RELOC_UNUSED, 1, -1,
24345 + {
24346 + &avr32_ifield_table[AVR32_IFIELD_RY],
24347 + },
24348 + },
24349 + {
24350 + AVR32_OPC_SRLS, 2, 0x5f800000, 0xfff00000,
24351 + &avr32_syntax_table[AVR32_SYNTAX_SRLS],
24352 + BFD_RELOC_UNUSED, 1, -1,
24353 + {
24354 + &avr32_ifield_table[AVR32_IFIELD_RY],
24355 + },
24356 + },
24357 + {
24358 + AVR32_OPC_SRGT, 2, 0x5f900000, 0xfff00000,
24359 + &avr32_syntax_table[AVR32_SYNTAX_SRGT],
24360 + BFD_RELOC_UNUSED, 1, -1,
24361 + {
24362 + &avr32_ifield_table[AVR32_IFIELD_RY],
24363 + },
24364 + },
24365 + {
24366 + AVR32_OPC_SRLE, 2, 0x5fa00000, 0xfff00000,
24367 + &avr32_syntax_table[AVR32_SYNTAX_SRLE],
24368 + BFD_RELOC_UNUSED, 1, -1,
24369 + {
24370 + &avr32_ifield_table[AVR32_IFIELD_RY],
24371 + },
24372 + },
24373 + {
24374 + AVR32_OPC_SRHI, 2, 0x5fb00000, 0xfff00000,
24375 + &avr32_syntax_table[AVR32_SYNTAX_SRHI],
24376 + BFD_RELOC_UNUSED, 1, -1,
24377 + {
24378 + &avr32_ifield_table[AVR32_IFIELD_RY],
24379 + },
24380 + },
24381 + {
24382 + AVR32_OPC_SRVS, 2, 0x5fc00000, 0xfff00000,
24383 + &avr32_syntax_table[AVR32_SYNTAX_SRVS],
24384 + BFD_RELOC_UNUSED, 1, -1,
24385 + {
24386 + &avr32_ifield_table[AVR32_IFIELD_RY],
24387 + },
24388 + },
24389 + {
24390 + AVR32_OPC_SRVC, 2, 0x5fd00000, 0xfff00000,
24391 + &avr32_syntax_table[AVR32_SYNTAX_SRVC],
24392 + BFD_RELOC_UNUSED, 1, -1,
24393 + {
24394 + &avr32_ifield_table[AVR32_IFIELD_RY],
24395 + },
24396 + },
24397 + {
24398 + AVR32_OPC_SRQS, 2, 0x5fe00000, 0xfff00000,
24399 + &avr32_syntax_table[AVR32_SYNTAX_SRQS],
24400 + BFD_RELOC_UNUSED, 1, -1,
24401 + {
24402 + &avr32_ifield_table[AVR32_IFIELD_RY],
24403 + },
24404 + },
24405 + {
24406 + AVR32_OPC_SRAL, 2, 0x5ff00000, 0xfff00000,
24407 + &avr32_syntax_table[AVR32_SYNTAX_SRAL],
24408 + BFD_RELOC_UNUSED, 1, -1,
24409 + {
24410 + &avr32_ifield_table[AVR32_IFIELD_RY],
24411 + },
24412 + },
24413 + {
24414 + AVR32_OPC_SSRF, 2, 0xd2030000, 0xfe0f0000,
24415 + &avr32_syntax_table[AVR32_SYNTAX_SSRF],
24416 + BFD_RELOC_UNUSED, 1, -1,
24417 + {
24418 + &avr32_ifield_table[AVR32_IFIELD_K5C],
24419 + },
24420 + },
24421 + {
24422 + AVR32_OPC_ST_B1, 2, 0x00c00000, 0xe1f00000,
24423 + &avr32_syntax_table[AVR32_SYNTAX_ST_B1],
24424 + BFD_RELOC_UNUSED, 2, -1,
24425 + {
24426 + &avr32_ifield_table[AVR32_IFIELD_RX],
24427 + &avr32_ifield_table[AVR32_IFIELD_RY],
24428 + },
24429 + },
24430 + {
24431 + AVR32_OPC_ST_B2, 2, 0x00f00000, 0xe1f00000,
24432 + &avr32_syntax_table[AVR32_SYNTAX_ST_B2],
24433 + BFD_RELOC_UNUSED, 2, -1,
24434 + {
24435 + &avr32_ifield_table[AVR32_IFIELD_RX],
24436 + &avr32_ifield_table[AVR32_IFIELD_RY],
24437 + },
24438 + },
24439 + {
24440 + AVR32_OPC_ST_B5, 4, 0xe0000b00, 0xe1f0ffc0,
24441 + &avr32_syntax_table[AVR32_SYNTAX_ST_B5],
24442 + BFD_RELOC_UNUSED, 4, -1,
24443 + {
24444 + &avr32_ifield_table[AVR32_IFIELD_RX],
24445 + &avr32_ifield_table[AVR32_IFIELD_RY],
24446 + &avr32_ifield_table[AVR32_IFIELD_K2],
24447 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24448 + },
24449 + },
24450 + {
24451 + AVR32_OPC_ST_B3, 2, 0xa0800000, 0xe1800000,
24452 + &avr32_syntax_table[AVR32_SYNTAX_ST_B3],
24453 + BFD_RELOC_AVR32_3U, 3, 1,
24454 + {
24455 + &avr32_ifield_table[AVR32_IFIELD_RX],
24456 + &avr32_ifield_table[AVR32_IFIELD_K3],
24457 + &avr32_ifield_table[AVR32_IFIELD_RY],
24458 + },
24459 + },
24460 + {
24461 + AVR32_OPC_ST_B4, 4, 0xe1600000, 0xe1f00000,
24462 + &avr32_syntax_table[AVR32_SYNTAX_ST_B4],
24463 + BFD_RELOC_AVR32_16S, 3, 1,
24464 + {
24465 + &avr32_ifield_table[AVR32_IFIELD_RX],
24466 + &avr32_ifield_table[AVR32_IFIELD_K16],
24467 + &avr32_ifield_table[AVR32_IFIELD_RY],
24468 + },
24469 + },
24470 + {
24471 + AVR32_OPC_ST_D1, 2, 0xa1200000, 0xe1f10000,
24472 + &avr32_syntax_table[AVR32_SYNTAX_ST_D1],
24473 + BFD_RELOC_UNUSED, 2, -1,
24474 + {
24475 + &avr32_ifield_table[AVR32_IFIELD_RX],
24476 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24477 + },
24478 + },
24479 + {
24480 + AVR32_OPC_ST_D2, 2, 0xa1210000, 0xe1f10000,
24481 + &avr32_syntax_table[AVR32_SYNTAX_ST_D2],
24482 + BFD_RELOC_UNUSED, 2, -1,
24483 + {
24484 + &avr32_ifield_table[AVR32_IFIELD_RX],
24485 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24486 + },
24487 + },
24488 + {
24489 + AVR32_OPC_ST_D3, 2, 0xa1110000, 0xe1f10000,
24490 + &avr32_syntax_table[AVR32_SYNTAX_ST_D3],
24491 + BFD_RELOC_UNUSED, 2, -1,
24492 + {
24493 + &avr32_ifield_table[AVR32_IFIELD_RX],
24494 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24495 + },
24496 + },
24497 + {
24498 + AVR32_OPC_ST_D5, 4, 0xe0000800, 0xe1f0ffc1,
24499 + &avr32_syntax_table[AVR32_SYNTAX_ST_D5],
24500 + BFD_RELOC_UNUSED, 4, -1,
24501 + {
24502 + &avr32_ifield_table[AVR32_IFIELD_RX],
24503 + &avr32_ifield_table[AVR32_IFIELD_RY],
24504 + &avr32_ifield_table[AVR32_IFIELD_K2],
24505 + &avr32_ifield_table[AVR32_IFIELD_RD_DW],
24506 + },
24507 + },
24508 + {
24509 + AVR32_OPC_ST_D4, 4, 0xe0e10000, 0xe1f10000,
24510 + &avr32_syntax_table[AVR32_SYNTAX_ST_D4],
24511 + BFD_RELOC_AVR32_16S, 3, 1,
24512 + {
24513 + &avr32_ifield_table[AVR32_IFIELD_RX],
24514 + &avr32_ifield_table[AVR32_IFIELD_K16],
24515 + &avr32_ifield_table[AVR32_IFIELD_RY_DW],
24516 + },
24517 + },
24518 + {
24519 + AVR32_OPC_ST_H1, 2, 0x00b00000, 0xe1f00000,
24520 + &avr32_syntax_table[AVR32_SYNTAX_ST_H1],
24521 + BFD_RELOC_UNUSED, 2, -1,
24522 + {
24523 + &avr32_ifield_table[AVR32_IFIELD_RX],
24524 + &avr32_ifield_table[AVR32_IFIELD_RY],
24525 + },
24526 + },
24527 + {
24528 + AVR32_OPC_ST_H2, 2, 0x00e00000, 0xe1f00000,
24529 + &avr32_syntax_table[AVR32_SYNTAX_ST_H2],
24530 + BFD_RELOC_UNUSED, 2, -1,
24531 + {
24532 + &avr32_ifield_table[AVR32_IFIELD_RX],
24533 + &avr32_ifield_table[AVR32_IFIELD_RY],
24534 + },
24535 + },
24536 + {
24537 + AVR32_OPC_ST_H5, 4, 0xe0000a00, 0xe1f0ffc0,
24538 + &avr32_syntax_table[AVR32_SYNTAX_ST_H5],
24539 + BFD_RELOC_UNUSED, 4, -1,
24540 + {
24541 + &avr32_ifield_table[AVR32_IFIELD_RX],
24542 + &avr32_ifield_table[AVR32_IFIELD_RY],
24543 + &avr32_ifield_table[AVR32_IFIELD_K2],
24544 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24545 + },
24546 + },
24547 + {
24548 + AVR32_OPC_ST_H3, 2, 0xa0000000, 0xe1800000,
24549 + &avr32_syntax_table[AVR32_SYNTAX_ST_H3],
24550 + BFD_RELOC_AVR32_4UH, 3, 1,
24551 + {
24552 + &avr32_ifield_table[AVR32_IFIELD_RX],
24553 + &avr32_ifield_table[AVR32_IFIELD_K3],
24554 + &avr32_ifield_table[AVR32_IFIELD_RY],
24555 + },
24556 + },
24557 + {
24558 + AVR32_OPC_ST_H4, 4, 0xe1500000, 0xe1f00000,
24559 + &avr32_syntax_table[AVR32_SYNTAX_ST_H4],
24560 + BFD_RELOC_AVR32_16S, 3, 1,
24561 + {
24562 + &avr32_ifield_table[AVR32_IFIELD_RX],
24563 + &avr32_ifield_table[AVR32_IFIELD_K16],
24564 + &avr32_ifield_table[AVR32_IFIELD_RY],
24565 + },
24566 + },
24567 + {
24568 + AVR32_OPC_ST_W1, 2, 0x00a00000, 0xe1f00000,
24569 + &avr32_syntax_table[AVR32_SYNTAX_ST_W1],
24570 + BFD_RELOC_UNUSED, 2, -1,
24571 + {
24572 + &avr32_ifield_table[AVR32_IFIELD_RX],
24573 + &avr32_ifield_table[AVR32_IFIELD_RY],
24574 + },
24575 + },
24576 + {
24577 + AVR32_OPC_ST_W2, 2, 0x00d00000, 0xe1f00000,
24578 + &avr32_syntax_table[AVR32_SYNTAX_ST_W2],
24579 + BFD_RELOC_UNUSED, 2, -1,
24580 + {
24581 + &avr32_ifield_table[AVR32_IFIELD_RX],
24582 + &avr32_ifield_table[AVR32_IFIELD_RY],
24583 + },
24584 + },
24585 + {
24586 + AVR32_OPC_ST_W5, 4, 0xe0000900, 0xe1f0ffc0,
24587 + &avr32_syntax_table[AVR32_SYNTAX_ST_W5],
24588 + BFD_RELOC_UNUSED, 4, -1,
24589 + {
24590 + &avr32_ifield_table[AVR32_IFIELD_RX],
24591 + &avr32_ifield_table[AVR32_IFIELD_RY],
24592 + &avr32_ifield_table[AVR32_IFIELD_K2],
24593 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24594 + },
24595 + },
24596 + {
24597 + AVR32_OPC_ST_W3, 2, 0x81000000, 0xe1000000,
24598 + &avr32_syntax_table[AVR32_SYNTAX_ST_W3],
24599 + BFD_RELOC_AVR32_6UW, 3, 1,
24600 + {
24601 + &avr32_ifield_table[AVR32_IFIELD_RX],
24602 + &avr32_ifield_table[AVR32_IFIELD_K4],
24603 + &avr32_ifield_table[AVR32_IFIELD_RY],
24604 + },
24605 + },
24606 + {
24607 + AVR32_OPC_ST_W4, 4, 0xe1400000, 0xe1f00000,
24608 + &avr32_syntax_table[AVR32_SYNTAX_ST_W4],
24609 + BFD_RELOC_AVR32_16S, 3, 1,
24610 + {
24611 + &avr32_ifield_table[AVR32_IFIELD_RX],
24612 + &avr32_ifield_table[AVR32_IFIELD_K16],
24613 + &avr32_ifield_table[AVR32_IFIELD_RY],
24614 + },
24615 + },
24616 + {
24617 + AVR32_OPC_STC_D1, 4, 0xeba01000, 0xfff01100,
24618 + &avr32_syntax_table[AVR32_SYNTAX_STC_D1],
24619 + BFD_RELOC_AVR32_10UW, 4, 2,
24620 + {
24621 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24622 + &avr32_ifield_table[AVR32_IFIELD_RY],
24623 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24624 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24625 + },
24626 + },
24627 + {
24628 + AVR32_OPC_STC_D2, 4, 0xefa00070, 0xfff011f0,
24629 + &avr32_syntax_table[AVR32_SYNTAX_STC_D2],
24630 + BFD_RELOC_UNUSED, 3, -1,
24631 + {
24632 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24633 + &avr32_ifield_table[AVR32_IFIELD_RY],
24634 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24635 + },
24636 + },
24637 + {
24638 + AVR32_OPC_STC_D3, 4, 0xefa010c0, 0xfff011c0,
24639 + &avr32_syntax_table[AVR32_SYNTAX_STC_D3],
24640 + BFD_RELOC_UNUSED, 5, -1,
24641 + {
24642 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24643 + &avr32_ifield_table[AVR32_IFIELD_RY],
24644 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24645 + &avr32_ifield_table[AVR32_IFIELD_K2],
24646 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24647 + },
24648 + },
24649 + {
24650 + AVR32_OPC_STC_W1, 4, 0xeba00000, 0xfff01000,
24651 + &avr32_syntax_table[AVR32_SYNTAX_STC_W1],
24652 + BFD_RELOC_AVR32_10UW, 4, 2,
24653 + {
24654 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24655 + &avr32_ifield_table[AVR32_IFIELD_RY],
24656 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24657 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24658 + },
24659 + },
24660 + {
24661 + AVR32_OPC_STC_W2, 4, 0xefa00060, 0xfff010ff,
24662 + &avr32_syntax_table[AVR32_SYNTAX_STC_W2],
24663 + BFD_RELOC_UNUSED, 3, -1,
24664 + {
24665 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24666 + &avr32_ifield_table[AVR32_IFIELD_RY],
24667 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24668 + },
24669 + },
24670 + {
24671 + AVR32_OPC_STC_W3, 4, 0xefa01080, 0xfff010c0,
24672 + &avr32_syntax_table[AVR32_SYNTAX_STC_W3],
24673 + BFD_RELOC_UNUSED, 5, -1,
24674 + {
24675 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24676 + &avr32_ifield_table[AVR32_IFIELD_RY],
24677 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24678 + &avr32_ifield_table[AVR32_IFIELD_K2],
24679 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24680 + },
24681 + },
24682 + {
24683 + AVR32_OPC_STC0_D, 4, 0xf7a00000, 0xfff00100,
24684 + &avr32_syntax_table[AVR32_SYNTAX_STC0_D],
24685 + BFD_RELOC_AVR32_14UW, 3, 1,
24686 + {
24687 + &avr32_ifield_table[AVR32_IFIELD_RY],
24688 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24689 + &avr32_ifield_table[AVR32_IFIELD_CRD_DW],
24690 + },
24691 + },
24692 + {
24693 + AVR32_OPC_STC0_W, 4, 0xf5a00000, 0xfff00000,
24694 + &avr32_syntax_table[AVR32_SYNTAX_STC0_W],
24695 + BFD_RELOC_AVR32_14UW, 3, 1,
24696 + {
24697 + &avr32_ifield_table[AVR32_IFIELD_RY],
24698 + &avr32_ifield_table[AVR32_IFIELD_K12CP],
24699 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24700 + },
24701 + },
24702 + {
24703 + AVR32_OPC_STCM_D, 4, 0xeda00500, 0xfff01f00,
24704 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D],
24705 + BFD_RELOC_UNUSED, 3, -1,
24706 + {
24707 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24708 + &avr32_ifield_table[AVR32_IFIELD_RY],
24709 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24710 + },
24711 + },
24712 + {
24713 + AVR32_OPC_STCM_D_PU, 4, 0xeda01500, 0xfff01f00,
24714 + &avr32_syntax_table[AVR32_SYNTAX_STCM_D_PU],
24715 + BFD_RELOC_UNUSED, 3, -1,
24716 + {
24717 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24718 + &avr32_ifield_table[AVR32_IFIELD_RY],
24719 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24720 + },
24721 + },
24722 + {
24723 + AVR32_OPC_STCM_W, 4, 0xeda00200, 0xfff01e00,
24724 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W],
24725 + BFD_RELOC_UNUSED, 4, -1,
24726 + {
24727 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24728 + &avr32_ifield_table[AVR32_IFIELD_RY],
24729 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24730 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24731 + },
24732 + },
24733 + {
24734 + AVR32_OPC_STCM_W_PU, 4, 0xeda01200, 0xfff01e00,
24735 + &avr32_syntax_table[AVR32_SYNTAX_STCM_W_PU],
24736 + BFD_RELOC_UNUSED, 4, -1,
24737 + {
24738 + &avr32_ifield_table[AVR32_IFIELD_CPNO],
24739 + &avr32_ifield_table[AVR32_IFIELD_RY],
24740 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24741 + &avr32_ifield_table[AVR32_IFIELD_CM_HL],
24742 + },
24743 + },
24744 + {
24745 + AVR32_OPC_STCOND, 4, 0xe1700000, 0xe1f00000,
24746 + &avr32_syntax_table[AVR32_SYNTAX_STCOND],
24747 + BFD_RELOC_UNUSED, 3, -1,
24748 + {
24749 + &avr32_ifield_table[AVR32_IFIELD_RX],
24750 + &avr32_ifield_table[AVR32_IFIELD_K16],
24751 + &avr32_ifield_table[AVR32_IFIELD_RY],
24752 + },
24753 + },
24754 + {
24755 + AVR32_OPC_STDSP, 2, 0x50000000, 0xf8000000,
24756 + &avr32_syntax_table[AVR32_SYNTAX_STDSP],
24757 + BFD_RELOC_UNUSED, 2, -1,
24758 + {
24759 + &avr32_ifield_table[AVR32_IFIELD_K7C],
24760 + &avr32_ifield_table[AVR32_IFIELD_RY],
24761 + },
24762 + },
24763 + {
24764 + AVR32_OPC_STHH_W2, 4, 0xe1e08000, 0xe1f0c0c0,
24765 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W2],
24766 + BFD_RELOC_UNUSED, 7, -1,
24767 + {
24768 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24769 + &avr32_ifield_table[AVR32_IFIELD_CRD_RI],
24770 + &avr32_ifield_table[AVR32_IFIELD_K2],
24771 + &avr32_ifield_table[AVR32_IFIELD_RX],
24772 + &avr32_ifield_table[AVR32_IFIELD_X2],
24773 + &avr32_ifield_table[AVR32_IFIELD_RY],
24774 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24775 + },
24776 + },
24777 + {
24778 + AVR32_OPC_STHH_W1, 4, 0xe1e0c000, 0xe1f0c000,
24779 + &avr32_syntax_table[AVR32_SYNTAX_STHH_W1],
24780 + BFD_RELOC_AVR32_STHH_W, 6, 1,
24781 + {
24782 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24783 + &avr32_ifield_table[AVR32_IFIELD_K8E2],
24784 + &avr32_ifield_table[AVR32_IFIELD_RX],
24785 + &avr32_ifield_table[AVR32_IFIELD_X2],
24786 + &avr32_ifield_table[AVR32_IFIELD_RY],
24787 + &avr32_ifield_table[AVR32_IFIELD_Y2],
24788 + },
24789 + },
24790 + {
24791 + AVR32_OPC_STM, 4, 0xe9c00000, 0xfff00000,
24792 + &avr32_syntax_table[AVR32_SYNTAX_STM],
24793 + BFD_RELOC_UNUSED, 2, -1,
24794 + {
24795 + &avr32_ifield_table[AVR32_IFIELD_RY],
24796 + &avr32_ifield_table[AVR32_IFIELD_K16],
24797 + },
24798 + },
24799 + {
24800 + AVR32_OPC_STM_PU, 4, 0xebc00000, 0xfff00000,
24801 + &avr32_syntax_table[AVR32_SYNTAX_STM_PU],
24802 + BFD_RELOC_UNUSED, 2, -1,
24803 + {
24804 + &avr32_ifield_table[AVR32_IFIELD_RY],
24805 + &avr32_ifield_table[AVR32_IFIELD_K16],
24806 + },
24807 + },
24808 + {
24809 + AVR32_OPC_STMTS, 4, 0xedc00000, 0xfff00000,
24810 + &avr32_syntax_table[AVR32_SYNTAX_STMTS],
24811 + BFD_RELOC_UNUSED, 2, -1,
24812 + {
24813 + &avr32_ifield_table[AVR32_IFIELD_RY],
24814 + &avr32_ifield_table[AVR32_IFIELD_K16],
24815 + },
24816 + },
24817 + {
24818 + AVR32_OPC_STMTS_PU, 4, 0xefc00000, 0xfff00000,
24819 + &avr32_syntax_table[AVR32_SYNTAX_STMTS_PU],
24820 + BFD_RELOC_UNUSED, 2, -1,
24821 + {
24822 + &avr32_ifield_table[AVR32_IFIELD_RY],
24823 + &avr32_ifield_table[AVR32_IFIELD_K16],
24824 + },
24825 + },
24826 + {
24827 + AVR32_OPC_STSWP_H, 4, 0xe1d09000, 0xe1f0f000,
24828 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_H],
24829 + BFD_RELOC_UNUSED, 3, -1,
24830 + {
24831 + &avr32_ifield_table[AVR32_IFIELD_RX],
24832 + &avr32_ifield_table[AVR32_IFIELD_K12],
24833 + &avr32_ifield_table[AVR32_IFIELD_RY],
24834 + },
24835 + },
24836 + {
24837 + AVR32_OPC_STSWP_W, 4, 0xe1d0a000, 0xe1f0f000,
24838 + &avr32_syntax_table[AVR32_SYNTAX_STSWP_W],
24839 + BFD_RELOC_UNUSED, 3, -1,
24840 + {
24841 + &avr32_ifield_table[AVR32_IFIELD_RX],
24842 + &avr32_ifield_table[AVR32_IFIELD_K12],
24843 + &avr32_ifield_table[AVR32_IFIELD_RY],
24844 + },
24845 + },
24846 + {
24847 + AVR32_OPC_SUB1, 2, 0x00100000, 0xe1f00000,
24848 + &avr32_syntax_table[AVR32_SYNTAX_SUB1],
24849 + BFD_RELOC_UNUSED, 2, -1,
24850 + {
24851 + &avr32_ifield_table[AVR32_IFIELD_RY],
24852 + &avr32_ifield_table[AVR32_IFIELD_RX],
24853 + },
24854 + },
24855 + {
24856 + AVR32_OPC_SUB2, 4, 0xe0000100, 0xe1f0ffc0,
24857 + &avr32_syntax_table[AVR32_SYNTAX_SUB2],
24858 + BFD_RELOC_UNUSED, 4, -1,
24859 + {
24860 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
24861 + &avr32_ifield_table[AVR32_IFIELD_RX],
24862 + &avr32_ifield_table[AVR32_IFIELD_RY],
24863 + &avr32_ifield_table[AVR32_IFIELD_K2],
24864 + },
24865 + },
24866 + {
24867 + AVR32_OPC_SUB5, 4, 0xe0c00000, 0xe1f00000,
24868 + &avr32_syntax_table[AVR32_SYNTAX_SUB5],
24869 + BFD_RELOC_AVR32_SUB5, 3, 2,
24870 + {
24871 + &avr32_ifield_table[AVR32_IFIELD_RY],
24872 + &avr32_ifield_table[AVR32_IFIELD_RX],
24873 + &avr32_ifield_table[AVR32_IFIELD_K16],
24874 + },
24875 + },
24876 + {
24877 + AVR32_OPC_SUB3_SP, 2, 0x200d0000, 0xf00f0000,
24878 + &avr32_syntax_table[AVR32_SYNTAX_SUB3_SP],
24879 + BFD_RELOC_AVR32_10SW, 2, 1,
24880 + {
24881 + &avr32_ifield_table[AVR32_IFIELD_RY],
24882 + &avr32_ifield_table[AVR32_IFIELD_K8C],
24883 + },
24884 + },
24885 + {
24886 + AVR32_OPC_SUB3, 2, 0x20000000, 0xf0000000,
24887 + &avr32_syntax_table[AVR32_SYNTAX_SUB3],
24888 + BFD_RELOC_AVR32_8S, 2, 1,
24889 + {
24890 + &avr32_ifield_table[AVR32_IFIELD_RY],
24891 + &avr32_ifield_table[AVR32_IFIELD_K8C],
24892 + },
24893 + },
24894 + {
24895 + AVR32_OPC_SUB4, 4, 0xe0200000, 0xe1e00000,
24896 + &avr32_syntax_table[AVR32_SYNTAX_SUB4],
24897 + BFD_RELOC_AVR32_21S, 2, 1,
24898 + {
24899 + &avr32_ifield_table[AVR32_IFIELD_RY],
24900 + &avr32_ifield_table[AVR32_IFIELD_K21],
24901 + },
24902 + },
24903 + {
24904 + AVR32_OPC_SUBEQ, 4, 0xf7b00000, 0xfff0ff00,
24905 + &avr32_syntax_table[AVR32_SYNTAX_SUBEQ],
24906 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24907 + {
24908 + &avr32_ifield_table[AVR32_IFIELD_RY],
24909 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24910 + },
24911 + },
24912 + {
24913 + AVR32_OPC_SUBNE, 4, 0xf7b00100, 0xfff0ff00,
24914 + &avr32_syntax_table[AVR32_SYNTAX_SUBNE],
24915 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24916 + {
24917 + &avr32_ifield_table[AVR32_IFIELD_RY],
24918 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24919 + },
24920 + },
24921 + {
24922 + AVR32_OPC_SUBCC, 4, 0xf7b00200, 0xfff0ff00,
24923 + &avr32_syntax_table[AVR32_SYNTAX_SUBHS],
24924 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24925 + {
24926 + &avr32_ifield_table[AVR32_IFIELD_RY],
24927 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24928 + },
24929 + },
24930 + {
24931 + AVR32_OPC_SUBCS, 4, 0xf7b00300, 0xfff0ff00,
24932 + &avr32_syntax_table[AVR32_SYNTAX_SUBLO],
24933 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24934 + {
24935 + &avr32_ifield_table[AVR32_IFIELD_RY],
24936 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24937 + },
24938 + },
24939 + {
24940 + AVR32_OPC_SUBGE, 4, 0xf7b00400, 0xfff0ff00,
24941 + &avr32_syntax_table[AVR32_SYNTAX_SUBGE],
24942 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24943 + {
24944 + &avr32_ifield_table[AVR32_IFIELD_RY],
24945 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24946 + },
24947 + },
24948 + {
24949 + AVR32_OPC_SUBLT, 4, 0xf7b00500, 0xfff0ff00,
24950 + &avr32_syntax_table[AVR32_SYNTAX_SUBLT],
24951 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24952 + {
24953 + &avr32_ifield_table[AVR32_IFIELD_RY],
24954 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24955 + },
24956 + },
24957 + {
24958 + AVR32_OPC_SUBMI, 4, 0xf7b00600, 0xfff0ff00,
24959 + &avr32_syntax_table[AVR32_SYNTAX_SUBMI],
24960 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24961 + {
24962 + &avr32_ifield_table[AVR32_IFIELD_RY],
24963 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24964 + },
24965 + },
24966 + {
24967 + AVR32_OPC_SUBPL, 4, 0xf7b00700, 0xfff0ff00,
24968 + &avr32_syntax_table[AVR32_SYNTAX_SUBPL],
24969 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24970 + {
24971 + &avr32_ifield_table[AVR32_IFIELD_RY],
24972 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24973 + },
24974 + },
24975 + {
24976 + AVR32_OPC_SUBLS, 4, 0xf7b00800, 0xfff0ff00,
24977 + &avr32_syntax_table[AVR32_SYNTAX_SUBLS],
24978 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24979 + {
24980 + &avr32_ifield_table[AVR32_IFIELD_RY],
24981 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24982 + },
24983 + },
24984 + {
24985 + AVR32_OPC_SUBGT, 4, 0xf7b00900, 0xfff0ff00,
24986 + &avr32_syntax_table[AVR32_SYNTAX_SUBGT],
24987 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24988 + {
24989 + &avr32_ifield_table[AVR32_IFIELD_RY],
24990 + &avr32_ifield_table[AVR32_IFIELD_K8E],
24991 + },
24992 + },
24993 + {
24994 + AVR32_OPC_SUBLE, 4, 0xf7b00a00, 0xfff0ff00,
24995 + &avr32_syntax_table[AVR32_SYNTAX_SUBLE],
24996 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
24997 + {
24998 + &avr32_ifield_table[AVR32_IFIELD_RY],
24999 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25000 + },
25001 + },
25002 + {
25003 + AVR32_OPC_SUBHI, 4, 0xf7b00b00, 0xfff0ff00,
25004 + &avr32_syntax_table[AVR32_SYNTAX_SUBHI],
25005 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25006 + {
25007 + &avr32_ifield_table[AVR32_IFIELD_RY],
25008 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25009 + },
25010 + },
25011 + {
25012 + AVR32_OPC_SUBVS, 4, 0xf7b00c00, 0xfff0ff00,
25013 + &avr32_syntax_table[AVR32_SYNTAX_SUBVS],
25014 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25015 + {
25016 + &avr32_ifield_table[AVR32_IFIELD_RY],
25017 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25018 + },
25019 + },
25020 + {
25021 + AVR32_OPC_SUBVC, 4, 0xf7b00d00, 0xfff0ff00,
25022 + &avr32_syntax_table[AVR32_SYNTAX_SUBVC],
25023 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25024 + {
25025 + &avr32_ifield_table[AVR32_IFIELD_RY],
25026 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25027 + },
25028 + },
25029 + {
25030 + AVR32_OPC_SUBQS, 4, 0xf7b00e00, 0xfff0ff00,
25031 + &avr32_syntax_table[AVR32_SYNTAX_SUBQS],
25032 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25033 + {
25034 + &avr32_ifield_table[AVR32_IFIELD_RY],
25035 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25036 + },
25037 + },
25038 + {
25039 + AVR32_OPC_SUBAL, 4, 0xf7b00f00, 0xfff0ff00,
25040 + &avr32_syntax_table[AVR32_SYNTAX_SUBAL],
25041 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25042 + {
25043 + &avr32_ifield_table[AVR32_IFIELD_RY],
25044 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25045 + },
25046 + },
25047 + {
25048 + AVR32_OPC_SUBFEQ, 4, 0xf5b00000, 0xfff0ff00,
25049 + &avr32_syntax_table[AVR32_SYNTAX_SUBFEQ],
25050 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25051 + {
25052 + &avr32_ifield_table[AVR32_IFIELD_RY],
25053 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25054 + },
25055 + },
25056 + {
25057 + AVR32_OPC_SUBFNE, 4, 0xf5b00100, 0xfff0ff00,
25058 + &avr32_syntax_table[AVR32_SYNTAX_SUBFNE],
25059 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25060 + {
25061 + &avr32_ifield_table[AVR32_IFIELD_RY],
25062 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25063 + },
25064 + },
25065 + {
25066 + AVR32_OPC_SUBFCC, 4, 0xf5b00200, 0xfff0ff00,
25067 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHS],
25068 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25069 + {
25070 + &avr32_ifield_table[AVR32_IFIELD_RY],
25071 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25072 + },
25073 + },
25074 + {
25075 + AVR32_OPC_SUBFCS, 4, 0xf5b00300, 0xfff0ff00,
25076 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLO],
25077 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25078 + {
25079 + &avr32_ifield_table[AVR32_IFIELD_RY],
25080 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25081 + },
25082 + },
25083 + {
25084 + AVR32_OPC_SUBFGE, 4, 0xf5b00400, 0xfff0ff00,
25085 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGE],
25086 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25087 + {
25088 + &avr32_ifield_table[AVR32_IFIELD_RY],
25089 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25090 + },
25091 + },
25092 + {
25093 + AVR32_OPC_SUBFLT, 4, 0xf5b00500, 0xfff0ff00,
25094 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLT],
25095 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25096 + {
25097 + &avr32_ifield_table[AVR32_IFIELD_RY],
25098 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25099 + },
25100 + },
25101 + {
25102 + AVR32_OPC_SUBFMI, 4, 0xf5b00600, 0xfff0ff00,
25103 + &avr32_syntax_table[AVR32_SYNTAX_SUBFMI],
25104 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25105 + {
25106 + &avr32_ifield_table[AVR32_IFIELD_RY],
25107 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25108 + },
25109 + },
25110 + {
25111 + AVR32_OPC_SUBFPL, 4, 0xf5b00700, 0xfff0ff00,
25112 + &avr32_syntax_table[AVR32_SYNTAX_SUBFPL],
25113 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25114 + {
25115 + &avr32_ifield_table[AVR32_IFIELD_RY],
25116 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25117 + },
25118 + },
25119 + {
25120 + AVR32_OPC_SUBFLS, 4, 0xf5b00800, 0xfff0ff00,
25121 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLS],
25122 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25123 + {
25124 + &avr32_ifield_table[AVR32_IFIELD_RY],
25125 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25126 + },
25127 + },
25128 + {
25129 + AVR32_OPC_SUBFGT, 4, 0xf5b00900, 0xfff0ff00,
25130 + &avr32_syntax_table[AVR32_SYNTAX_SUBFGT],
25131 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25132 + {
25133 + &avr32_ifield_table[AVR32_IFIELD_RY],
25134 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25135 + },
25136 + },
25137 + {
25138 + AVR32_OPC_SUBFLE, 4, 0xf5b00a00, 0xfff0ff00,
25139 + &avr32_syntax_table[AVR32_SYNTAX_SUBFLE],
25140 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25141 + {
25142 + &avr32_ifield_table[AVR32_IFIELD_RY],
25143 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25144 + },
25145 + },
25146 + {
25147 + AVR32_OPC_SUBFHI, 4, 0xf5b00b00, 0xfff0ff00,
25148 + &avr32_syntax_table[AVR32_SYNTAX_SUBFHI],
25149 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25150 + {
25151 + &avr32_ifield_table[AVR32_IFIELD_RY],
25152 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25153 + },
25154 + },
25155 + {
25156 + AVR32_OPC_SUBFVS, 4, 0xf5b00c00, 0xfff0ff00,
25157 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVS],
25158 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25159 + {
25160 + &avr32_ifield_table[AVR32_IFIELD_RY],
25161 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25162 + },
25163 + },
25164 + {
25165 + AVR32_OPC_SUBFVC, 4, 0xf5b00d00, 0xfff0ff00,
25166 + &avr32_syntax_table[AVR32_SYNTAX_SUBFVC],
25167 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25168 + {
25169 + &avr32_ifield_table[AVR32_IFIELD_RY],
25170 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25171 + },
25172 + },
25173 + {
25174 + AVR32_OPC_SUBFQS, 4, 0xf5b00e00, 0xfff0ff00,
25175 + &avr32_syntax_table[AVR32_SYNTAX_SUBFQS],
25176 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25177 + {
25178 + &avr32_ifield_table[AVR32_IFIELD_RY],
25179 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25180 + },
25181 + },
25182 + {
25183 + AVR32_OPC_SUBFAL, 4, 0xf5b00f00, 0xfff0ff00,
25184 + &avr32_syntax_table[AVR32_SYNTAX_SUBFAL],
25185 + BFD_RELOC_AVR32_8S_EXT, 2, 1,
25186 + {
25187 + &avr32_ifield_table[AVR32_IFIELD_RY],
25188 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25189 + },
25190 + },
25191 + {
25192 + AVR32_OPC_SUBHH_W, 4, 0xe0000f00, 0xe1f0ffc0,
25193 + &avr32_syntax_table[AVR32_SYNTAX_SUBHH_W],
25194 + BFD_RELOC_UNUSED, 5, -1,
25195 + {
25196 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
25197 + &avr32_ifield_table[AVR32_IFIELD_RX],
25198 + &avr32_ifield_table[AVR32_IFIELD_X],
25199 + &avr32_ifield_table[AVR32_IFIELD_RY],
25200 + &avr32_ifield_table[AVR32_IFIELD_Y],
25201 + },
25202 + },
25203 + {
25204 + AVR32_OPC_SWAP_B, 2, 0x5cb00000, 0xfff00000,
25205 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_B],
25206 + BFD_RELOC_UNUSED, 1, -1,
25207 + {
25208 + &avr32_ifield_table[AVR32_IFIELD_RY],
25209 + }
25210 + },
25211 + {
25212 + AVR32_OPC_SWAP_BH, 2, 0x5cc00000, 0xfff00000,
25213 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_BH],
25214 + BFD_RELOC_UNUSED, 1, -1,
25215 + {
25216 + &avr32_ifield_table[AVR32_IFIELD_RY],
25217 + }
25218 + },
25219 + {
25220 + AVR32_OPC_SWAP_H, 2, 0x5ca00000, 0xfff00000,
25221 + &avr32_syntax_table[AVR32_SYNTAX_SWAP_H],
25222 + BFD_RELOC_UNUSED, 1, -1,
25223 + {
25224 + &avr32_ifield_table[AVR32_IFIELD_RY],
25225 + }
25226 + },
25227 + {
25228 + AVR32_OPC_SYNC, 4, 0xebb00000, 0xffffff00,
25229 + &avr32_syntax_table[AVR32_SYNTAX_SYNC],
25230 + BFD_RELOC_AVR32_8S_EXT, 1, 0,
25231 + {
25232 + &avr32_ifield_table[AVR32_IFIELD_K8E],
25233 + }
25234 + },
25235 + {
25236 + AVR32_OPC_TLBR, 2, 0xd6430000, 0xffff0000,
25237 + &avr32_syntax_table[AVR32_SYNTAX_TLBR],
25238 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25239 + },
25240 + {
25241 + AVR32_OPC_TLBS, 2, 0xd6530000, 0xffff0000,
25242 + &avr32_syntax_table[AVR32_SYNTAX_TLBS],
25243 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25244 + },
25245 + {
25246 + AVR32_OPC_TLBW, 2, 0xd6630000, 0xffff0000,
25247 + &avr32_syntax_table[AVR32_SYNTAX_TLBW],
25248 + BFD_RELOC_UNUSED, 0, -1, { NULL },
25249 + },
25250 + {
25251 + AVR32_OPC_TNBZ, 2, 0x5ce00000, 0xfff00000,
25252 + &avr32_syntax_table[AVR32_SYNTAX_TNBZ],
25253 + BFD_RELOC_UNUSED, 1, -1,
25254 + {
25255 + &avr32_ifield_table[AVR32_IFIELD_RY],
25256 + }
25257 + },
25258 + {
25259 + AVR32_OPC_TST, 2, 0x00700000, 0xe1f00000,
25260 + &avr32_syntax_table[AVR32_SYNTAX_TST],
25261 + BFD_RELOC_UNUSED, 2, -1,
25262 + {
25263 + &avr32_ifield_table[AVR32_IFIELD_RY],
25264 + &avr32_ifield_table[AVR32_IFIELD_RX],
25265 + },
25266 + },
25267 + {
25268 + AVR32_OPC_XCHG, 4, 0xe0000b40, 0xe1f0fff0,
25269 + &avr32_syntax_table[AVR32_SYNTAX_XCHG],
25270 + BFD_RELOC_UNUSED, 3, -1,
25271 + {
25272 + &avr32_ifield_table[AVR32_IFIELD_RD_E],
25273 + &avr32_ifield_table[AVR32_IFIELD_RX],
25274 + &avr32_ifield_table[AVR32_IFIELD_RY],
25275 + },
25276 + },
25277 + {
25278 + AVR32_OPC_MEMC, 4, 0xf6100000, 0xfff00000,
25279 + &avr32_syntax_table[AVR32_SYNTAX_MEMC],
25280 + BFD_RELOC_AVR32_15S, 2, 0,
25281 + {
25282 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25283 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25284 + },
25285 + },
25286 + {
25287 + AVR32_OPC_MEMS, 4, 0xf8100000, 0xfff00000,
25288 + &avr32_syntax_table[AVR32_SYNTAX_MEMS],
25289 + BFD_RELOC_AVR32_15S, 2, 0,
25290 + {
25291 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25292 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25293 + },
25294 + },
25295 + {
25296 + AVR32_OPC_MEMT, 4, 0xfa100000, 0xfff00000,
25297 + &avr32_syntax_table[AVR32_SYNTAX_MEMT],
25298 + BFD_RELOC_AVR32_15S, 2, 0,
25299 + {
25300 + &avr32_ifield_table[AVR32_IFIELD_MEM15],
25301 + &avr32_ifield_table[AVR32_IFIELD_MEMB5],
25302 + },
25303 + },
25304 + {
25305 + AVR32_OPC_BFEXTS, 4, 0xe1d0b000, 0xe1f0fc00,
25306 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTS],
25307 + BFD_RELOC_UNUSED, 4, -1,
25308 + {
25309 + &avr32_ifield_table[AVR32_IFIELD_RX],
25310 + &avr32_ifield_table[AVR32_IFIELD_RY],
25311 + &avr32_ifield_table[AVR32_IFIELD_S5],
25312 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25313 + },
25314 + },
25315 + {
25316 + AVR32_OPC_BFEXTU, 4, 0xe1d0c000, 0xe1f0fc00,
25317 + &avr32_syntax_table[AVR32_SYNTAX_BFEXTU],
25318 + BFD_RELOC_UNUSED, 4, -1,
25319 + {
25320 + &avr32_ifield_table[AVR32_IFIELD_RX],
25321 + &avr32_ifield_table[AVR32_IFIELD_RY],
25322 + &avr32_ifield_table[AVR32_IFIELD_S5],
25323 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25324 + },
25325 + },
25326 + {
25327 + AVR32_OPC_BFINS, 4, 0xe1d0d000, 0xe1f0fc00,
25328 + &avr32_syntax_table[AVR32_SYNTAX_BFINS],
25329 + BFD_RELOC_UNUSED, 4, -1,
25330 + {
25331 + &avr32_ifield_table[AVR32_IFIELD_RX],
25332 + &avr32_ifield_table[AVR32_IFIELD_RY],
25333 + &avr32_ifield_table[AVR32_IFIELD_S5],
25334 + &avr32_ifield_table[AVR32_IFIELD_K5E],
25335 + },
25336 + },
25337 +#define AVR32_OPCODE_RSUBCOND(cond_name, cond_field) \
25338 + { \
25339 + AVR32_OPC_RSUB ## cond_name , 4, \
25340 + 0xfbb00000 | (cond_field << 8), 0xfff0ff00, \
25341 + &avr32_syntax_table[AVR32_SYNTAX_RSUB ## cond_name ], \
25342 + BFD_RELOC_AVR32_8S_EXT, 2, 1, \
25343 + { \
25344 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25345 + &avr32_ifield_table[AVR32_IFIELD_K8E], \
25346 + }, \
25347 + },
25348 +
25349 + AVR32_OPCODE_RSUBCOND (EQ, 0)
25350 + AVR32_OPCODE_RSUBCOND (NE, 1)
25351 + AVR32_OPCODE_RSUBCOND (CC, 2)
25352 + AVR32_OPCODE_RSUBCOND (CS, 3)
25353 + AVR32_OPCODE_RSUBCOND (GE, 4)
25354 + AVR32_OPCODE_RSUBCOND (LT, 5)
25355 + AVR32_OPCODE_RSUBCOND (MI, 6)
25356 + AVR32_OPCODE_RSUBCOND (PL, 7)
25357 + AVR32_OPCODE_RSUBCOND (LS, 8)
25358 + AVR32_OPCODE_RSUBCOND (GT, 9)
25359 + AVR32_OPCODE_RSUBCOND (LE, 10)
25360 + AVR32_OPCODE_RSUBCOND (HI, 11)
25361 + AVR32_OPCODE_RSUBCOND (VS, 12)
25362 + AVR32_OPCODE_RSUBCOND (VC, 13)
25363 + AVR32_OPCODE_RSUBCOND (QS, 14)
25364 + AVR32_OPCODE_RSUBCOND (AL, 15)
25365 +
25366 +#define AVR32_OPCODE_OP3_COND(op_name, op_field, cond_name, cond_field) \
25367 + { \
25368 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25369 + 0xe1d0e000 | (cond_field << 8) | (op_field << 4), 0xe1f0fff0, \
25370 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25371 + BFD_RELOC_UNUSED, 3, -1, \
25372 + { \
25373 + &avr32_ifield_table[AVR32_IFIELD_RD_E], \
25374 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25375 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25376 + }, \
25377 + },
25378 +
25379 + AVR32_OPCODE_OP3_COND (ADD, 0, EQ, 0)
25380 + AVR32_OPCODE_OP3_COND (ADD, 0, NE, 1)
25381 + AVR32_OPCODE_OP3_COND (ADD, 0, CC, 2)
25382 + AVR32_OPCODE_OP3_COND (ADD, 0, CS, 3)
25383 + AVR32_OPCODE_OP3_COND (ADD, 0, GE, 4)
25384 + AVR32_OPCODE_OP3_COND (ADD, 0, LT, 5)
25385 + AVR32_OPCODE_OP3_COND (ADD, 0, MI, 6)
25386 + AVR32_OPCODE_OP3_COND (ADD, 0, PL, 7)
25387 + AVR32_OPCODE_OP3_COND (ADD, 0, LS, 8)
25388 + AVR32_OPCODE_OP3_COND (ADD, 0, GT, 9)
25389 + AVR32_OPCODE_OP3_COND (ADD, 0, LE, 10)
25390 + AVR32_OPCODE_OP3_COND (ADD, 0, HI, 11)
25391 + AVR32_OPCODE_OP3_COND (ADD, 0, VS, 12)
25392 + AVR32_OPCODE_OP3_COND (ADD, 0, VC, 13)
25393 + AVR32_OPCODE_OP3_COND (ADD, 0, QS, 14)
25394 + AVR32_OPCODE_OP3_COND (ADD, 0, AL, 15)
25395 +
25396 + AVR32_OPCODE_OP3_COND (SUB2, 1, EQ, 0)
25397 + AVR32_OPCODE_OP3_COND (SUB2, 1, NE, 1)
25398 + AVR32_OPCODE_OP3_COND (SUB2, 1, CC, 2)
25399 + AVR32_OPCODE_OP3_COND (SUB2, 1, CS, 3)
25400 + AVR32_OPCODE_OP3_COND (SUB2, 1, GE, 4)
25401 + AVR32_OPCODE_OP3_COND (SUB2, 1, LT, 5)
25402 + AVR32_OPCODE_OP3_COND (SUB2, 1, MI, 6)
25403 + AVR32_OPCODE_OP3_COND (SUB2, 1, PL, 7)
25404 + AVR32_OPCODE_OP3_COND (SUB2, 1, LS, 8)
25405 + AVR32_OPCODE_OP3_COND (SUB2, 1, GT, 9)
25406 + AVR32_OPCODE_OP3_COND (SUB2, 1, LE, 10)
25407 + AVR32_OPCODE_OP3_COND (SUB2, 1, HI, 11)
25408 + AVR32_OPCODE_OP3_COND (SUB2, 1, VS, 12)
25409 + AVR32_OPCODE_OP3_COND (SUB2, 1, VC, 13)
25410 + AVR32_OPCODE_OP3_COND (SUB2, 1, QS, 14)
25411 + AVR32_OPCODE_OP3_COND (SUB2, 1, AL, 15)
25412 +
25413 + AVR32_OPCODE_OP3_COND (AND, 2, EQ, 0)
25414 + AVR32_OPCODE_OP3_COND (AND, 2, NE, 1)
25415 + AVR32_OPCODE_OP3_COND (AND, 2, CC, 2)
25416 + AVR32_OPCODE_OP3_COND (AND, 2, CS, 3)
25417 + AVR32_OPCODE_OP3_COND (AND, 2, GE, 4)
25418 + AVR32_OPCODE_OP3_COND (AND, 2, LT, 5)
25419 + AVR32_OPCODE_OP3_COND (AND, 2, MI, 6)
25420 + AVR32_OPCODE_OP3_COND (AND, 2, PL, 7)
25421 + AVR32_OPCODE_OP3_COND (AND, 2, LS, 8)
25422 + AVR32_OPCODE_OP3_COND (AND, 2, GT, 9)
25423 + AVR32_OPCODE_OP3_COND (AND, 2, LE, 10)
25424 + AVR32_OPCODE_OP3_COND (AND, 2, HI, 11)
25425 + AVR32_OPCODE_OP3_COND (AND, 2, VS, 12)
25426 + AVR32_OPCODE_OP3_COND (AND, 2, VC, 13)
25427 + AVR32_OPCODE_OP3_COND (AND, 2, QS, 14)
25428 + AVR32_OPCODE_OP3_COND (AND, 2, AL, 15)
25429 +
25430 + AVR32_OPCODE_OP3_COND (OR, 3, EQ, 0)
25431 + AVR32_OPCODE_OP3_COND (OR, 3, NE, 1)
25432 + AVR32_OPCODE_OP3_COND (OR, 3, CC, 2)
25433 + AVR32_OPCODE_OP3_COND (OR, 3, CS, 3)
25434 + AVR32_OPCODE_OP3_COND (OR, 3, GE, 4)
25435 + AVR32_OPCODE_OP3_COND (OR, 3, LT, 5)
25436 + AVR32_OPCODE_OP3_COND (OR, 3, MI, 6)
25437 + AVR32_OPCODE_OP3_COND (OR, 3, PL, 7)
25438 + AVR32_OPCODE_OP3_COND (OR, 3, LS, 8)
25439 + AVR32_OPCODE_OP3_COND (OR, 3, GT, 9)
25440 + AVR32_OPCODE_OP3_COND (OR, 3, LE, 10)
25441 + AVR32_OPCODE_OP3_COND (OR, 3, HI, 11)
25442 + AVR32_OPCODE_OP3_COND (OR, 3, VS, 12)
25443 + AVR32_OPCODE_OP3_COND (OR, 3, VC, 13)
25444 + AVR32_OPCODE_OP3_COND (OR, 3, QS, 14)
25445 + AVR32_OPCODE_OP3_COND (OR, 3, AL, 15)
25446 +
25447 + AVR32_OPCODE_OP3_COND (EOR, 4, EQ, 0)
25448 + AVR32_OPCODE_OP3_COND (EOR, 4, NE, 1)
25449 + AVR32_OPCODE_OP3_COND (EOR, 4, CC, 2)
25450 + AVR32_OPCODE_OP3_COND (EOR, 4, CS, 3)
25451 + AVR32_OPCODE_OP3_COND (EOR, 4, GE, 4)
25452 + AVR32_OPCODE_OP3_COND (EOR, 4, LT, 5)
25453 + AVR32_OPCODE_OP3_COND (EOR, 4, MI, 6)
25454 + AVR32_OPCODE_OP3_COND (EOR, 4, PL, 7)
25455 + AVR32_OPCODE_OP3_COND (EOR, 4, LS, 8)
25456 + AVR32_OPCODE_OP3_COND (EOR, 4, GT, 9)
25457 + AVR32_OPCODE_OP3_COND (EOR, 4, LE, 10)
25458 + AVR32_OPCODE_OP3_COND (EOR, 4, HI, 11)
25459 + AVR32_OPCODE_OP3_COND (EOR, 4, VS, 12)
25460 + AVR32_OPCODE_OP3_COND (EOR, 4, VC, 13)
25461 + AVR32_OPCODE_OP3_COND (EOR, 4, QS, 14)
25462 + AVR32_OPCODE_OP3_COND (EOR, 4, AL, 15)
25463 +
25464 +#define AVR32_OPCODE_LD_COND(op_name, op_field, cond_name, cond_field) \
25465 + { \
25466 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25467 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25468 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25469 + BFD_RELOC_UNUSED, 3, -1, \
25470 + { \
25471 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25472 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25473 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25474 + }, \
25475 + },
25476 +
25477 +#define AVR32_OPCODE_ST_COND(op_name, op_field, cond_name, cond_field) \
25478 + { \
25479 + AVR32_OPC_ ## op_name ## cond_name , 4, \
25480 + 0xe1f00000 | (cond_field << 12) | (op_field << 9), 0xe1f0fe00, \
25481 + &avr32_syntax_table[AVR32_SYNTAX_ ## op_name ## cond_name ], \
25482 + BFD_RELOC_UNUSED, 3, -1, \
25483 + { \
25484 + &avr32_ifield_table[AVR32_IFIELD_RX], \
25485 + &avr32_ifield_table[AVR32_IFIELD_K9E], \
25486 + &avr32_ifield_table[AVR32_IFIELD_RY], \
25487 + }, \
25488 + },
25489 +
25490 + AVR32_OPCODE_LD_COND (LD_W, 0, EQ, 0)
25491 + AVR32_OPCODE_LD_COND (LD_W, 0, NE, 1)
25492 + AVR32_OPCODE_LD_COND (LD_W, 0, CC, 2)
25493 + AVR32_OPCODE_LD_COND (LD_W, 0, CS, 3)
25494 + AVR32_OPCODE_LD_COND (LD_W, 0, GE, 4)
25495 + AVR32_OPCODE_LD_COND (LD_W, 0, LT, 5)
25496 + AVR32_OPCODE_LD_COND (LD_W, 0, MI, 6)
25497 + AVR32_OPCODE_LD_COND (LD_W, 0, PL, 7)
25498 + AVR32_OPCODE_LD_COND (LD_W, 0, LS, 8)
25499 + AVR32_OPCODE_LD_COND (LD_W, 0, GT, 9)
25500 + AVR32_OPCODE_LD_COND (LD_W, 0, LE, 10)
25501 + AVR32_OPCODE_LD_COND (LD_W, 0, HI, 11)
25502 + AVR32_OPCODE_LD_COND (LD_W, 0, VS, 12)
25503 + AVR32_OPCODE_LD_COND (LD_W, 0, VC, 13)
25504 + AVR32_OPCODE_LD_COND (LD_W, 0, QS, 14)
25505 + AVR32_OPCODE_LD_COND (LD_W, 0, AL, 15)
25506 +
25507 + AVR32_OPCODE_LD_COND (LD_SH, 1, EQ, 0)
25508 + AVR32_OPCODE_LD_COND (LD_SH, 1, NE, 1)
25509 + AVR32_OPCODE_LD_COND (LD_SH, 1, CC, 2)
25510 + AVR32_OPCODE_LD_COND (LD_SH, 1, CS, 3)
25511 + AVR32_OPCODE_LD_COND (LD_SH, 1, GE, 4)
25512 + AVR32_OPCODE_LD_COND (LD_SH, 1, LT, 5)
25513 + AVR32_OPCODE_LD_COND (LD_SH, 1, MI, 6)
25514 + AVR32_OPCODE_LD_COND (LD_SH, 1, PL, 7)
25515 + AVR32_OPCODE_LD_COND (LD_SH, 1, LS, 8)
25516 + AVR32_OPCODE_LD_COND (LD_SH, 1, GT, 9)
25517 + AVR32_OPCODE_LD_COND (LD_SH, 1, LE, 10)
25518 + AVR32_OPCODE_LD_COND (LD_SH, 1, HI, 11)
25519 + AVR32_OPCODE_LD_COND (LD_SH, 1, VS, 12)
25520 + AVR32_OPCODE_LD_COND (LD_SH, 1, VC, 13)
25521 + AVR32_OPCODE_LD_COND (LD_SH, 1, QS, 14)
25522 + AVR32_OPCODE_LD_COND (LD_SH, 1, AL, 15)
25523 +
25524 + AVR32_OPCODE_LD_COND (LD_UH, 2, EQ, 0)
25525 + AVR32_OPCODE_LD_COND (LD_UH, 2, NE, 1)
25526 + AVR32_OPCODE_LD_COND (LD_UH, 2, CC, 2)
25527 + AVR32_OPCODE_LD_COND (LD_UH, 2, CS, 3)
25528 + AVR32_OPCODE_LD_COND (LD_UH, 2, GE, 4)
25529 + AVR32_OPCODE_LD_COND (LD_UH, 2, LT, 5)
25530 + AVR32_OPCODE_LD_COND (LD_UH, 2, MI, 6)
25531 + AVR32_OPCODE_LD_COND (LD_UH, 2, PL, 7)
25532 + AVR32_OPCODE_LD_COND (LD_SH, 2, LS, 8)
25533 + AVR32_OPCODE_LD_COND (LD_SH, 2, GT, 9)
25534 + AVR32_OPCODE_LD_COND (LD_SH, 2, LE, 10)
25535 + AVR32_OPCODE_LD_COND (LD_SH, 2, HI, 11)
25536 + AVR32_OPCODE_LD_COND (LD_SH, 2, VS, 12)
25537 + AVR32_OPCODE_LD_COND (LD_SH, 2, VC, 13)
25538 + AVR32_OPCODE_LD_COND (LD_SH, 2, QS, 14)
25539 + AVR32_OPCODE_LD_COND (LD_SH, 2, AL, 15)
25540 +
25541 + AVR32_OPCODE_LD_COND (LD_SB, 3, EQ, 0)
25542 + AVR32_OPCODE_LD_COND (LD_SB, 3, NE, 1)
25543 + AVR32_OPCODE_LD_COND (LD_SB, 3, CC, 2)
25544 + AVR32_OPCODE_LD_COND (LD_SB, 3, CS, 3)
25545 + AVR32_OPCODE_LD_COND (LD_SB, 3, GE, 4)
25546 + AVR32_OPCODE_LD_COND (LD_SB, 3, LT, 5)
25547 + AVR32_OPCODE_LD_COND (LD_SB, 3, MI, 6)
25548 + AVR32_OPCODE_LD_COND (LD_SB, 3, PL, 7)
25549 + AVR32_OPCODE_LD_COND (LD_SB, 3, LS, 8)
25550 + AVR32_OPCODE_LD_COND (LD_SB, 3, GT, 9)
25551 + AVR32_OPCODE_LD_COND (LD_SB, 3, LE, 10)
25552 + AVR32_OPCODE_LD_COND (LD_SB, 3, HI, 11)
25553 + AVR32_OPCODE_LD_COND (LD_SB, 3, VS, 12)
25554 + AVR32_OPCODE_LD_COND (LD_SB, 3, VC, 13)
25555 + AVR32_OPCODE_LD_COND (LD_SB, 3, QS, 14)
25556 + AVR32_OPCODE_LD_COND (LD_SB, 3, AL, 15)
25557 +
25558 + AVR32_OPCODE_LD_COND (LD_UB, 4, EQ, 0)
25559 + AVR32_OPCODE_LD_COND (LD_UB, 4, NE, 1)
25560 + AVR32_OPCODE_LD_COND (LD_UB, 4, CC, 2)
25561 + AVR32_OPCODE_LD_COND (LD_UB, 4, CS, 3)
25562 + AVR32_OPCODE_LD_COND (LD_UB, 4, GE, 4)
25563 + AVR32_OPCODE_LD_COND (LD_UB, 4, LT, 5)
25564 + AVR32_OPCODE_LD_COND (LD_UB, 4, MI, 6)
25565 + AVR32_OPCODE_LD_COND (LD_UB, 4, PL, 7)
25566 + AVR32_OPCODE_LD_COND (LD_UB, 4, LS, 8)
25567 + AVR32_OPCODE_LD_COND (LD_UB, 4, GT, 9)
25568 + AVR32_OPCODE_LD_COND (LD_UB, 4, LE, 10)
25569 + AVR32_OPCODE_LD_COND (LD_UB, 4, HI, 11)
25570 + AVR32_OPCODE_LD_COND (LD_UB, 4, VS, 12)
25571 + AVR32_OPCODE_LD_COND (LD_UB, 4, VC, 13)
25572 + AVR32_OPCODE_LD_COND (LD_UB, 4, QS, 14)
25573 + AVR32_OPCODE_LD_COND (LD_UB, 4, AL, 15)
25574 +
25575 + AVR32_OPCODE_ST_COND (ST_W, 5, EQ, 0)
25576 + AVR32_OPCODE_ST_COND (ST_W, 5, NE, 1)
25577 + AVR32_OPCODE_ST_COND (ST_W, 5, CC, 2)
25578 + AVR32_OPCODE_ST_COND (ST_W, 5, CS, 3)
25579 + AVR32_OPCODE_ST_COND (ST_W, 5, GE, 4)
25580 + AVR32_OPCODE_ST_COND (ST_W, 5, LT, 5)
25581 + AVR32_OPCODE_ST_COND (ST_W, 5, MI, 6)
25582 + AVR32_OPCODE_ST_COND (ST_W, 5, PL, 7)
25583 + AVR32_OPCODE_ST_COND (ST_W, 5, LS, 8)
25584 + AVR32_OPCODE_ST_COND (ST_W, 5, GT, 9)
25585 + AVR32_OPCODE_ST_COND (ST_W, 5, LE, 10)
25586 + AVR32_OPCODE_ST_COND (ST_W, 5, HI, 11)
25587 + AVR32_OPCODE_ST_COND (ST_W, 5, VS, 12)
25588 + AVR32_OPCODE_ST_COND (ST_W, 5, VC, 13)
25589 + AVR32_OPCODE_ST_COND (ST_W, 5, QS, 14)
25590 + AVR32_OPCODE_ST_COND (ST_W, 5, AL, 15)
25591 +
25592 + AVR32_OPCODE_ST_COND (ST_H, 6, EQ, 0)
25593 + AVR32_OPCODE_ST_COND (ST_H, 6, NE, 1)
25594 + AVR32_OPCODE_ST_COND (ST_H, 6, CC, 2)
25595 + AVR32_OPCODE_ST_COND (ST_H, 6, CS, 3)
25596 + AVR32_OPCODE_ST_COND (ST_H, 6, GE, 4)
25597 + AVR32_OPCODE_ST_COND (ST_H, 6, LT, 5)
25598 + AVR32_OPCODE_ST_COND (ST_H, 6, MI, 6)
25599 + AVR32_OPCODE_ST_COND (ST_H, 6, PL, 7)
25600 + AVR32_OPCODE_ST_COND (ST_H, 6, LS, 8)
25601 + AVR32_OPCODE_ST_COND (ST_H, 6, GT, 9)
25602 + AVR32_OPCODE_ST_COND (ST_H, 6, LE, 10)
25603 + AVR32_OPCODE_ST_COND (ST_H, 6, HI, 11)
25604 + AVR32_OPCODE_ST_COND (ST_H, 6, VS, 12)
25605 + AVR32_OPCODE_ST_COND (ST_H, 6, VC, 13)
25606 + AVR32_OPCODE_ST_COND (ST_H, 6, QS, 14)
25607 + AVR32_OPCODE_ST_COND (ST_H, 6, AL, 15)
25608 +
25609 + AVR32_OPCODE_ST_COND (ST_B, 7, EQ, 0)
25610 + AVR32_OPCODE_ST_COND (ST_B, 7, NE, 1)
25611 + AVR32_OPCODE_ST_COND (ST_B, 7, CC, 2)
25612 + AVR32_OPCODE_ST_COND (ST_B, 7, CS, 3)
25613 + AVR32_OPCODE_ST_COND (ST_B, 7, GE, 4)
25614 + AVR32_OPCODE_ST_COND (ST_B, 7, LT, 5)
25615 + AVR32_OPCODE_ST_COND (ST_B, 7, MI, 6)
25616 + AVR32_OPCODE_ST_COND (ST_B, 7, PL, 7)
25617 + AVR32_OPCODE_ST_COND (ST_B, 7, LS, 8)
25618 + AVR32_OPCODE_ST_COND (ST_B, 7, GT, 9)
25619 + AVR32_OPCODE_ST_COND (ST_B, 7, LE, 10)
25620 + AVR32_OPCODE_ST_COND (ST_B, 7, HI, 11)
25621 + AVR32_OPCODE_ST_COND (ST_B, 7, VS, 12)
25622 + AVR32_OPCODE_ST_COND (ST_B, 7, VC, 13)
25623 + AVR32_OPCODE_ST_COND (ST_B, 7, QS, 14)
25624 + AVR32_OPCODE_ST_COND (ST_B, 7, AL, 15)
25625 +
25626 + {
25627 + AVR32_OPC_MOVH, 4, 0xfc100000, 0xfff00000,
25628 + &avr32_syntax_table[AVR32_SYNTAX_MOVH],
25629 + BFD_RELOC_AVR32_16U, 2, 1,
25630 + {
25631 + &avr32_ifield_table[AVR32_IFIELD_RY],
25632 + &avr32_ifield_table[AVR32_IFIELD_K16],
25633 + },
25634 + },
25635 +
25636 + };
25637 +
25638 +#define FPALIAS_DXY(name, opcode) \
25639 + { \
25640 + AVR32_ALIAS_##name##_S, \
25641 + &avr32_opc_table[AVR32_OPC_COP], \
25642 + { \
25643 + { 0, 0 }, \
25644 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25645 + { 0, opcode }, \
25646 + }, \
25647 + }, { \
25648 + AVR32_ALIAS_##name##_D, \
25649 + &avr32_opc_table[AVR32_OPC_COP], \
25650 + { \
25651 + { 0, 0 }, \
25652 + { 1, 0 }, { 1, 1 }, { 1, 2 }, \
25653 + { 0, (opcode) | 0x40 }, \
25654 + }, \
25655 + }
25656 +#define FPALIAS_DX(name, opcode) \
25657 + { \
25658 + AVR32_ALIAS_##name##_S, \
25659 + &avr32_opc_table[AVR32_OPC_COP], \
25660 + { \
25661 + { 0, 0 }, \
25662 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25663 + { 0, opcode }, \
25664 + }, \
25665 + }, { \
25666 + AVR32_ALIAS_##name##_D, \
25667 + &avr32_opc_table[AVR32_OPC_COP], \
25668 + { \
25669 + { 0, 0 }, \
25670 + { 1, 0 }, { 1, 1 }, { 0, 0 }, \
25671 + { 0, (opcode) | 0x40 }, \
25672 + }, \
25673 + }
25674 +#define FPALIAS_XY(name, opcode) \
25675 + { \
25676 + AVR32_ALIAS_##name##_S, \
25677 + &avr32_opc_table[AVR32_OPC_COP], \
25678 + { \
25679 + { 0, 0 }, \
25680 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25681 + { 0, opcode }, \
25682 + }, \
25683 + }, { \
25684 + AVR32_ALIAS_##name##_D, \
25685 + &avr32_opc_table[AVR32_OPC_COP], \
25686 + { \
25687 + { 0, 0 }, \
25688 + { 0, 0 }, { 1, 0 }, { 1, 1 }, \
25689 + { 0, (opcode) | 0x40 }, \
25690 + }, \
25691 + }
25692 +
25693 +const struct avr32_alias avr32_alias_table[] =
25694 + {
25695 + FPALIAS_DXY(FMAC, 0x00),
25696 + FPALIAS_DXY(FNMAC, 0x01),
25697 + FPALIAS_DXY(FMSC, 0x02),
25698 + FPALIAS_DXY(FNMSC, 0x03),
25699 + FPALIAS_DXY(FADD, 0x04),
25700 + FPALIAS_DXY(FSUB, 0x05),
25701 + FPALIAS_DXY(FMUL, 0x06),
25702 + FPALIAS_DXY(FNMUL, 0x07),
25703 + FPALIAS_DX(FNEG, 0x08),
25704 + FPALIAS_DX(FABS, 0x09),
25705 + FPALIAS_XY(FCMP, 0x0d),
25706 + FPALIAS_DX(FMOV1, 0x0a),
25707 + {
25708 + AVR32_ALIAS_FMOV2_S,
25709 + &avr32_opc_table[AVR32_OPC_MVCR_W],
25710 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25711 + },
25712 + {
25713 + AVR32_ALIAS_FMOV2_D,
25714 + &avr32_opc_table[AVR32_OPC_MVCR_D],
25715 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25716 + },
25717 + {
25718 + AVR32_ALIAS_FMOV3_S,
25719 + &avr32_opc_table[AVR32_OPC_MVRC_W],
25720 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25721 + },
25722 + {
25723 + AVR32_ALIAS_FMOV3_D,
25724 + &avr32_opc_table[AVR32_OPC_MVRC_D],
25725 + { { 0, 0 }, { 1, 0 }, { 1, 1 }, },
25726 + },
25727 + {
25728 + AVR32_ALIAS_FCASTS_D,
25729 + &avr32_opc_table[AVR32_OPC_COP],
25730 + {
25731 + { 0, 0 },
25732 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25733 + { 0, 0x0f },
25734 + },
25735 + },
25736 + {
25737 + AVR32_ALIAS_FCASTD_S,
25738 + &avr32_opc_table[AVR32_OPC_COP],
25739 + {
25740 + { 0, 0 },
25741 + { 1, 0 }, { 1, 1 }, { 0, 0 },
25742 + { 0, 0x10 },
25743 + },
25744 + },
25745 + {
25746 + AVR32_ALIAS_PICOSVMAC0,
25747 + &avr32_opc_table[AVR32_OPC_COP],
25748 + {
25749 + { 0, PICO_CPNO },
25750 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25751 + { 0, 0x0c },
25752 + },
25753 + },
25754 + {
25755 + AVR32_ALIAS_PICOSVMAC1,
25756 + &avr32_opc_table[AVR32_OPC_COP],
25757 + {
25758 + { 0, PICO_CPNO },
25759 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25760 + { 0, 0x0d },
25761 + },
25762 + },
25763 + {
25764 + AVR32_ALIAS_PICOSVMAC2,
25765 + &avr32_opc_table[AVR32_OPC_COP],
25766 + {
25767 + { 0, PICO_CPNO },
25768 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25769 + { 0, 0x0e },
25770 + },
25771 + },
25772 + {
25773 + AVR32_ALIAS_PICOSVMAC3,
25774 + &avr32_opc_table[AVR32_OPC_COP],
25775 + {
25776 + { 0, PICO_CPNO },
25777 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25778 + { 0, 0x0f },
25779 + },
25780 + },
25781 + {
25782 + AVR32_ALIAS_PICOSVMUL0,
25783 + &avr32_opc_table[AVR32_OPC_COP],
25784 + {
25785 + { 0, PICO_CPNO },
25786 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25787 + { 0, 0x08 },
25788 + },
25789 + },
25790 + {
25791 + AVR32_ALIAS_PICOSVMUL1,
25792 + &avr32_opc_table[AVR32_OPC_COP],
25793 + {
25794 + { 0, PICO_CPNO },
25795 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25796 + { 0, 0x09 },
25797 + },
25798 + },
25799 + {
25800 + AVR32_ALIAS_PICOSVMUL2,
25801 + &avr32_opc_table[AVR32_OPC_COP],
25802 + {
25803 + { 0, PICO_CPNO },
25804 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25805 + { 0, 0x0a },
25806 + },
25807 + },
25808 + {
25809 + AVR32_ALIAS_PICOSVMUL3,
25810 + &avr32_opc_table[AVR32_OPC_COP],
25811 + {
25812 + { 0, PICO_CPNO },
25813 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25814 + { 0, 0x0b },
25815 + },
25816 + },
25817 + {
25818 + AVR32_ALIAS_PICOVMAC0,
25819 + &avr32_opc_table[AVR32_OPC_COP],
25820 + {
25821 + { 0, PICO_CPNO },
25822 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25823 + { 0, 0x04 },
25824 + },
25825 + },
25826 + {
25827 + AVR32_ALIAS_PICOVMAC1,
25828 + &avr32_opc_table[AVR32_OPC_COP],
25829 + {
25830 + { 0, PICO_CPNO },
25831 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25832 + { 0, 0x05 },
25833 + },
25834 + },
25835 + {
25836 + AVR32_ALIAS_PICOVMAC2,
25837 + &avr32_opc_table[AVR32_OPC_COP],
25838 + {
25839 + { 0, PICO_CPNO },
25840 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25841 + { 0, 0x06 },
25842 + },
25843 + },
25844 + {
25845 + AVR32_ALIAS_PICOVMAC3,
25846 + &avr32_opc_table[AVR32_OPC_COP],
25847 + {
25848 + { 0, PICO_CPNO },
25849 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25850 + { 0, 0x07 },
25851 + },
25852 + },
25853 + {
25854 + AVR32_ALIAS_PICOVMUL0,
25855 + &avr32_opc_table[AVR32_OPC_COP],
25856 + {
25857 + { 0, PICO_CPNO },
25858 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25859 + { 0, 0x00 },
25860 + },
25861 + },
25862 + {
25863 + AVR32_ALIAS_PICOVMUL1,
25864 + &avr32_opc_table[AVR32_OPC_COP],
25865 + {
25866 + { 0, PICO_CPNO },
25867 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25868 + { 0, 0x01 },
25869 + },
25870 + },
25871 + {
25872 + AVR32_ALIAS_PICOVMUL2,
25873 + &avr32_opc_table[AVR32_OPC_COP],
25874 + {
25875 + { 0, PICO_CPNO },
25876 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25877 + { 0, 0x02 },
25878 + },
25879 + },
25880 + {
25881 + AVR32_ALIAS_PICOVMUL3,
25882 + &avr32_opc_table[AVR32_OPC_COP],
25883 + {
25884 + { 0, PICO_CPNO },
25885 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25886 + { 0, 0x03 },
25887 + },
25888 + },
25889 + {
25890 + AVR32_ALIAS_PICOLD_D1,
25891 + &avr32_opc_table[AVR32_OPC_LDC_D1],
25892 + {
25893 + { 0, PICO_CPNO },
25894 + { 1, 0 }, { 1, 1 },
25895 + },
25896 + },
25897 + {
25898 + AVR32_ALIAS_PICOLD_D2,
25899 + &avr32_opc_table[AVR32_OPC_LDC_D2],
25900 + {
25901 + { 0, PICO_CPNO },
25902 + { 1, 0 }, { 1, 1 },
25903 + },
25904 + },
25905 + {
25906 + AVR32_ALIAS_PICOLD_D3,
25907 + &avr32_opc_table[AVR32_OPC_LDC_D3],
25908 + {
25909 + { 0, PICO_CPNO },
25910 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25911 + },
25912 + },
25913 + {
25914 + AVR32_ALIAS_PICOLD_W1,
25915 + &avr32_opc_table[AVR32_OPC_LDC_W1],
25916 + {
25917 + { 0, PICO_CPNO },
25918 + { 1, 0 }, { 1, 1 },
25919 + },
25920 + },
25921 + {
25922 + AVR32_ALIAS_PICOLD_W2,
25923 + &avr32_opc_table[AVR32_OPC_LDC_W2],
25924 + {
25925 + { 0, PICO_CPNO },
25926 + { 1, 0 }, { 1, 1 },
25927 + },
25928 + },
25929 + {
25930 + AVR32_ALIAS_PICOLD_W3,
25931 + &avr32_opc_table[AVR32_OPC_LDC_W3],
25932 + {
25933 + { 0, PICO_CPNO },
25934 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
25935 + },
25936 + },
25937 + {
25938 + AVR32_ALIAS_PICOLDM_D,
25939 + &avr32_opc_table[AVR32_OPC_LDCM_D],
25940 + {
25941 + { 0, PICO_CPNO },
25942 + { 1, 0 }, { 1, 1 },
25943 + },
25944 + },
25945 + {
25946 + AVR32_ALIAS_PICOLDM_D_PU,
25947 + &avr32_opc_table[AVR32_OPC_LDCM_D_PU],
25948 + {
25949 + { 0, PICO_CPNO },
25950 + { 1, 0 }, { 1, 1 },
25951 + },
25952 + },
25953 + {
25954 + AVR32_ALIAS_PICOLDM_W,
25955 + &avr32_opc_table[AVR32_OPC_LDCM_W],
25956 + {
25957 + { 0, PICO_CPNO },
25958 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25959 + },
25960 + },
25961 + {
25962 + AVR32_ALIAS_PICOLDM_W_PU,
25963 + &avr32_opc_table[AVR32_OPC_LDCM_W_PU],
25964 + {
25965 + { 0, PICO_CPNO },
25966 + { 1, 0 }, { 1, 1 }, { 1, 2 },
25967 + },
25968 + },
25969 + {
25970 + AVR32_ALIAS_PICOMV_D1,
25971 + &avr32_opc_table[AVR32_OPC_MVCR_D],
25972 + {
25973 + { 0, PICO_CPNO },
25974 + { 1, 0 }, { 1, 1 },
25975 + },
25976 + },
25977 + {
25978 + AVR32_ALIAS_PICOMV_D2,
25979 + &avr32_opc_table[AVR32_OPC_MVRC_D],
25980 + {
25981 + { 0, PICO_CPNO },
25982 + { 1, 0 }, { 1, 1 },
25983 + },
25984 + },
25985 + {
25986 + AVR32_ALIAS_PICOMV_W1,
25987 + &avr32_opc_table[AVR32_OPC_MVCR_W],
25988 + {
25989 + { 0, PICO_CPNO },
25990 + { 1, 0 }, { 1, 1 },
25991 + },
25992 + },
25993 + {
25994 + AVR32_ALIAS_PICOMV_W2,
25995 + &avr32_opc_table[AVR32_OPC_MVRC_W],
25996 + {
25997 + { 0, PICO_CPNO },
25998 + { 1, 0 }, { 1, 1 },
25999 + },
26000 + },
26001 + {
26002 + AVR32_ALIAS_PICOST_D1,
26003 + &avr32_opc_table[AVR32_OPC_STC_D1],
26004 + {
26005 + { 0, PICO_CPNO },
26006 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26007 + },
26008 + },
26009 + {
26010 + AVR32_ALIAS_PICOST_D2,
26011 + &avr32_opc_table[AVR32_OPC_STC_D2],
26012 + {
26013 + { 0, PICO_CPNO },
26014 + { 1, 0 }, { 1, 1 },
26015 + },
26016 + },
26017 + {
26018 + AVR32_ALIAS_PICOST_D3,
26019 + &avr32_opc_table[AVR32_OPC_STC_D3],
26020 + {
26021 + { 0, PICO_CPNO },
26022 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26023 + },
26024 + },
26025 + {
26026 + AVR32_ALIAS_PICOST_W1,
26027 + &avr32_opc_table[AVR32_OPC_STC_W1],
26028 + {
26029 + { 0, PICO_CPNO },
26030 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26031 + },
26032 + },
26033 + {
26034 + AVR32_ALIAS_PICOST_W2,
26035 + &avr32_opc_table[AVR32_OPC_STC_W2],
26036 + {
26037 + { 0, PICO_CPNO },
26038 + { 1, 0 }, { 1, 1 },
26039 + },
26040 + },
26041 + {
26042 + AVR32_ALIAS_PICOST_W3,
26043 + &avr32_opc_table[AVR32_OPC_STC_W3],
26044 + {
26045 + { 0, PICO_CPNO },
26046 + { 1, 0 }, { 1, 1 }, { 1, 2 }, { 1, 3 },
26047 + },
26048 + },
26049 + {
26050 + AVR32_ALIAS_PICOSTM_D,
26051 + &avr32_opc_table[AVR32_OPC_STCM_D],
26052 + {
26053 + { 0, PICO_CPNO },
26054 + { 1, 0 }, { 1, 1 },
26055 + },
26056 + },
26057 + {
26058 + AVR32_ALIAS_PICOSTM_D_PU,
26059 + &avr32_opc_table[AVR32_OPC_STCM_D_PU],
26060 + {
26061 + { 0, PICO_CPNO },
26062 + { 1, 0 }, { 1, 1 },
26063 + },
26064 + },
26065 + {
26066 + AVR32_ALIAS_PICOSTM_W,
26067 + &avr32_opc_table[AVR32_OPC_STCM_W],
26068 + {
26069 + { 0, PICO_CPNO },
26070 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26071 + },
26072 + },
26073 + {
26074 + AVR32_ALIAS_PICOSTM_W_PU,
26075 + &avr32_opc_table[AVR32_OPC_STCM_W_PU],
26076 + {
26077 + { 0, PICO_CPNO },
26078 + { 1, 0 }, { 1, 1 }, { 1, 2 },
26079 + },
26080 + },
26081 + };
26082 +
26083 +
26084 +#define SYNTAX_NORMAL0(id, mne, opc, arch) \
26085 + { \
26086 + AVR32_SYNTAX_##id, arch, \
26087 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26088 + AVR32_PARSER_NORMAL, \
26089 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26090 + NULL, 0, { } \
26091 + }
26092 +#define SYNTAX_NORMAL1(id, mne, opc, op0, arch) \
26093 + { \
26094 + AVR32_SYNTAX_##id, arch, \
26095 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26096 + AVR32_PARSER_NORMAL, \
26097 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26098 + NULL, 1, \
26099 + { \
26100 + AVR32_OPERAND_##op0, \
26101 + } \
26102 + }
26103 +#define SYNTAX_NORMALM1(id, mne, opc, op0, arch) \
26104 + { \
26105 + AVR32_SYNTAX_##id, arch, \
26106 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26107 + AVR32_PARSER_NORMAL, \
26108 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26109 + NULL, -1, \
26110 + { \
26111 + AVR32_OPERAND_##op0, \
26112 + } \
26113 + }
26114 +#define SYNTAX_NORMAL2(id, mne, opc, op0, op1, arch) \
26115 + { \
26116 + AVR32_SYNTAX_##id, arch, \
26117 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26118 + AVR32_PARSER_NORMAL, \
26119 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26120 + NULL, 2, \
26121 + { \
26122 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26123 + } \
26124 + }
26125 +#define SYNTAX_NORMALM2(id, mne, opc, op0, op1, arch) \
26126 + { \
26127 + AVR32_SYNTAX_##id, arch, \
26128 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26129 + AVR32_PARSER_NORMAL, \
26130 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26131 + NULL, -2, \
26132 + { \
26133 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26134 + } \
26135 + }
26136 +#define SYNTAX_NORMAL3(id, mne, opc, op0, op1, op2, arch) \
26137 + { \
26138 + AVR32_SYNTAX_##id, arch, \
26139 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26140 + AVR32_PARSER_NORMAL, \
26141 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26142 + NULL, 3, \
26143 + { \
26144 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26145 + AVR32_OPERAND_##op2, \
26146 + } \
26147 + }
26148 +#define SYNTAX_NORMALM3(id, mne, opc, op0, op1, op2, arch) \
26149 + { \
26150 + AVR32_SYNTAX_##id, arch, \
26151 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26152 + AVR32_PARSER_NORMAL, \
26153 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26154 + NULL, -3, \
26155 + { \
26156 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26157 + AVR32_OPERAND_##op2, \
26158 + } \
26159 + }
26160 +#define SYNTAX_NORMAL4(id, mne, opc, op0, op1, op2, op3, arch)\
26161 + { \
26162 + AVR32_SYNTAX_##id, arch, \
26163 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26164 + AVR32_PARSER_NORMAL, \
26165 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26166 + NULL, 4, \
26167 + { \
26168 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26169 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
26170 + } \
26171 + }
26172 +#define SYNTAX_NORMAL5(id, mne, opc, op0, op1, op2, op3, op4, arch) \
26173 + { \
26174 + AVR32_SYNTAX_##id, arch, \
26175 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26176 + AVR32_PARSER_NORMAL, \
26177 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26178 + NULL, 5, \
26179 + { \
26180 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26181 + AVR32_OPERAND_##op2, AVR32_OPERAND_##op3, \
26182 + AVR32_OPERAND_##op4, \
26183 + } \
26184 + }
26185 +
26186 +#define SYNTAX_NORMAL_C1(id, mne, opc, nxt, op0, arch) \
26187 + { \
26188 + AVR32_SYNTAX_##id, arch, \
26189 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26190 + AVR32_PARSER_NORMAL, \
26191 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26192 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 1, \
26193 + { \
26194 + AVR32_OPERAND_##op0, \
26195 + } \
26196 + }
26197 +#define SYNTAX_NORMAL_CM1(id, mne, opc, nxt, op0, arch) \
26198 + { \
26199 + AVR32_SYNTAX_##id, arch, \
26200 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26201 + AVR32_PARSER_NORMAL, \
26202 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26203 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -1, \
26204 + { \
26205 + AVR32_OPERAND_##op0, \
26206 + } \
26207 + }
26208 +#define SYNTAX_NORMAL_C2(id, mne, opc, nxt, op0, op1, arch) \
26209 + { \
26210 + AVR32_SYNTAX_##id, arch, \
26211 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26212 + AVR32_PARSER_NORMAL, \
26213 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26214 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 2, \
26215 + { \
26216 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26217 + } \
26218 + }
26219 +#define SYNTAX_NORMAL_CM2(id, mne, opc, nxt, op0, op1, arch) \
26220 + { \
26221 + AVR32_SYNTAX_##id, arch, \
26222 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26223 + AVR32_PARSER_NORMAL, \
26224 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26225 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -2, \
26226 + { \
26227 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26228 + } \
26229 + }
26230 +#define SYNTAX_NORMAL_C3(id, mne, opc, nxt, op0, op1, op2, arch) \
26231 + { \
26232 + AVR32_SYNTAX_##id, arch, \
26233 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26234 + AVR32_PARSER_NORMAL, \
26235 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26236 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], 3, \
26237 + { \
26238 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26239 + AVR32_OPERAND_##op2, \
26240 + } \
26241 + }
26242 +#define SYNTAX_NORMAL_CM3(id, mne, opc, nxt, op0, op1, op2, arch) \
26243 + { \
26244 + AVR32_SYNTAX_##id, arch, \
26245 + &avr32_mnemonic_table[AVR32_MNEMONIC_##mne], \
26246 + AVR32_PARSER_NORMAL, \
26247 + { &avr32_opc_table[AVR32_OPC_##opc], }, \
26248 + &avr32_syntax_table[AVR32_SYNTAX_##nxt], -3, \
26249 + { \
26250 + AVR32_OPERAND_##op0, AVR32_OPERAND_##op1, \
26251 + AVR32_OPERAND_##op2, \
26252 + } \
26253 + }
26254 +
26255 +#define SYNTAX_FP(name, nr_ops) \
26256 + { \
26257 + AVR32_SYNTAX_##name##_S, \
26258 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
26259 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_S] }, \
26260 + NULL, nr_ops, \
26261 + { \
26262 + AVR32_OPERAND_FPREG_S, \
26263 + AVR32_OPERAND_FPREG_S, \
26264 + AVR32_OPERAND_FPREG_S, \
26265 + }, \
26266 + }, \
26267 + { \
26268 + AVR32_SYNTAX_##name##_D, \
26269 + AVR32_FP, NULL, AVR32_PARSER_ALIAS, \
26270 + { .alias = &avr32_alias_table[AVR32_ALIAS_##name##_D] }, \
26271 + NULL, nr_ops, \
26272 + { \
26273 + AVR32_OPERAND_FPREG_D, \
26274 + AVR32_OPERAND_FPREG_D, \
26275 + AVR32_OPERAND_FPREG_D, \
26276 + }, \
26277 + }
26278 +
26279 +const struct avr32_syntax avr32_syntax_table[] =
26280 + {
26281 + SYNTAX_NORMAL1(ABS, ABS, ABS, INTREG, AVR32_V1),
26282 + SYNTAX_NORMAL1(ACALL, ACALL, ACALL, UNSIGNED_CONST_W, AVR32_V1),
26283 + SYNTAX_NORMAL1(ACR, ACR, ACR, INTREG,AVR32_V1),
26284 + SYNTAX_NORMAL3(ADC, ADC, ADC, INTREG, INTREG, INTREG, AVR32_V1),
26285 + SYNTAX_NORMAL_C2(ADD1, ADD, ADD1, ADD2, INTREG, INTREG, AVR32_V1),
26286 + SYNTAX_NORMAL3(ADD2, ADD, ADD2, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26287 + SYNTAX_NORMAL3(ADDABS, ADDABS, ADDABS, INTREG, INTREG, INTREG, AVR32_V1),
26288 + SYNTAX_NORMAL3(ADDHH_W, ADDHH_W, ADDHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26289 + SYNTAX_NORMAL_C2(AND1, AND, AND1, AND2, INTREG, INTREG, AVR32_V1),
26290 + SYNTAX_NORMAL_C3(AND2, AND, AND2, AND3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26291 + SYNTAX_NORMAL3(AND3, AND, AND3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26292 + SYNTAX_NORMAL_C2(ANDH, ANDH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
26293 + SYNTAX_NORMAL3(ANDH_COH, ANDH, ANDH_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
26294 + SYNTAX_NORMAL_C2(ANDL, ANDL, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, AVR32_V1),
26295 + SYNTAX_NORMAL3(ANDL_COH, ANDL, ANDL_COH, INTREG, UNSIGNED_CONST, COH, AVR32_V1),
26296 + SYNTAX_NORMAL2(ANDN, ANDN, ANDN, INTREG, INTREG, AVR32_V1),
26297 + SYNTAX_NORMAL_C3(ASR1, ASR, ASR1, ASR3, INTREG, INTREG, INTREG, AVR32_V1),
26298 + SYNTAX_NORMAL_C3(ASR3, ASR, ASR3, ASR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26299 + SYNTAX_NORMAL2(ASR2, ASR, ASR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26300 + SYNTAX_NORMAL4(BFEXTS, BFEXTS, BFEXTS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26301 + SYNTAX_NORMAL4(BFEXTU, BFEXTU, BFEXTU, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26302 + SYNTAX_NORMAL4(BFINS, BFINS, BFINS, INTREG, INTREG, UNSIGNED_NUMBER, UNSIGNED_NUMBER, AVR32_V1),
26303 + SYNTAX_NORMAL2(BLD, BLD, BLD, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26304 + SYNTAX_NORMAL_C1(BREQ1, BREQ, BREQ1, BREQ2, JMPLABEL, AVR32_V1),
26305 + SYNTAX_NORMAL_C1(BRNE1, BRNE, BRNE1, BRNE2, JMPLABEL, AVR32_V1),
26306 + SYNTAX_NORMAL_C1(BRCC1, BRCC, BRCC1, BRCC2, JMPLABEL, AVR32_V1),
26307 + SYNTAX_NORMAL_C1(BRCS1, BRCS, BRCS1, BRCS2, JMPLABEL, AVR32_V1),
26308 + SYNTAX_NORMAL_C1(BRGE1, BRGE, BRGE1, BRGE2, JMPLABEL, AVR32_V1),
26309 + SYNTAX_NORMAL_C1(BRLT1, BRLT, BRLT1, BRLT2, JMPLABEL, AVR32_V1),
26310 + SYNTAX_NORMAL_C1(BRMI1, BRMI, BRMI1, BRMI2, JMPLABEL, AVR32_V1),
26311 + SYNTAX_NORMAL_C1(BRPL1, BRPL, BRPL1, BRPL2, JMPLABEL, AVR32_V1),
26312 + SYNTAX_NORMAL_C1(BRHS1, BRHS, BRCC1, BRHS2, JMPLABEL, AVR32_V1),
26313 + SYNTAX_NORMAL_C1(BRLO1, BRLO, BRCS1, BRLO2, JMPLABEL, AVR32_V1),
26314 + SYNTAX_NORMAL1(BREQ2, BREQ, BREQ2, JMPLABEL, AVR32_V1),
26315 + SYNTAX_NORMAL1(BRNE2, BRNE, BRNE2, JMPLABEL, AVR32_V1),
26316 + SYNTAX_NORMAL1(BRCC2, BRCC, BRCC2, JMPLABEL, AVR32_V1),
26317 + SYNTAX_NORMAL1(BRCS2, BRCS, BRCS2, JMPLABEL, AVR32_V1),
26318 + SYNTAX_NORMAL1(BRGE2, BRGE, BRGE2, JMPLABEL, AVR32_V1),
26319 + SYNTAX_NORMAL1(BRLT2, BRLT, BRLT2, JMPLABEL, AVR32_V1),
26320 + SYNTAX_NORMAL1(BRMI2, BRMI, BRMI2, JMPLABEL, AVR32_V1),
26321 + SYNTAX_NORMAL1(BRPL2, BRPL, BRPL2, JMPLABEL, AVR32_V1),
26322 + SYNTAX_NORMAL1(BRLS, BRLS, BRLS, JMPLABEL, AVR32_V1),
26323 + SYNTAX_NORMAL1(BRGT, BRGT, BRGT, JMPLABEL, AVR32_V1),
26324 + SYNTAX_NORMAL1(BRLE, BRLE, BRLE, JMPLABEL, AVR32_V1),
26325 + SYNTAX_NORMAL1(BRHI, BRHI, BRHI, JMPLABEL, AVR32_V1),
26326 + SYNTAX_NORMAL1(BRVS, BRVS, BRVS, JMPLABEL, AVR32_V1),
26327 + SYNTAX_NORMAL1(BRVC, BRVC, BRVC, JMPLABEL, AVR32_V1),
26328 + SYNTAX_NORMAL1(BRQS, BRQS, BRQS, JMPLABEL, AVR32_V1),
26329 + SYNTAX_NORMAL1(BRAL, BRAL, BRAL, JMPLABEL, AVR32_V1),
26330 + SYNTAX_NORMAL1(BRHS2, BRHS, BRCC2, JMPLABEL, AVR32_V1),
26331 + SYNTAX_NORMAL1(BRLO2, BRLO, BRCS2, JMPLABEL, AVR32_V1),
26332 + SYNTAX_NORMAL0(BREAKPOINT, BREAKPOINT, BREAKPOINT, AVR32_V1),
26333 + SYNTAX_NORMAL1(BREV, BREV, BREV, INTREG, AVR32_V1),
26334 + SYNTAX_NORMAL2(BST, BST, BST, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26335 + SYNTAX_NORMAL2(CACHE, CACHE, CACHE, INTREG_SDISP, UNSIGNED_NUMBER, AVR32_V1),
26336 + SYNTAX_NORMAL1(CASTS_B, CASTS_B, CASTS_B, INTREG, AVR32_V1),
26337 + SYNTAX_NORMAL1(CASTS_H, CASTS_H, CASTS_H, INTREG, AVR32_V1),
26338 + SYNTAX_NORMAL1(CASTU_B, CASTU_B, CASTU_B, INTREG, AVR32_V1),
26339 + SYNTAX_NORMAL1(CASTU_H, CASTU_H, CASTU_H, INTREG, AVR32_V1),
26340 + SYNTAX_NORMAL2(CBR, CBR, CBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26341 + SYNTAX_NORMAL2(CLZ, CLZ, CLZ, INTREG, INTREG, AVR32_V1),
26342 + SYNTAX_NORMAL1(COM, COM, COM, INTREG, AVR32_V1),
26343 + SYNTAX_NORMAL5(COP, COP, COP, CPNO, CPREG, CPREG, CPREG, UNSIGNED_NUMBER, AVR32_V1),
26344 + SYNTAX_NORMAL2(CP_B, CP_B, CP_B, INTREG, INTREG, AVR32_V1),
26345 + SYNTAX_NORMAL2(CP_H, CP_H, CP_H, INTREG, INTREG, AVR32_V1),
26346 + SYNTAX_NORMAL_C2(CP_W1, CP_W, CP_W1, CP_W2, INTREG, INTREG, AVR32_V1),
26347 + SYNTAX_NORMAL_C2(CP_W2, CP_W, CP_W2, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
26348 + SYNTAX_NORMAL2(CP_W3, CP_W, CP_W3, INTREG, SIGNED_CONST, AVR32_V1),
26349 + SYNTAX_NORMAL_C2(CPC1, CPC, CPC1, CPC2, INTREG, INTREG, AVR32_V1),
26350 + SYNTAX_NORMAL1(CPC2, CPC, CPC2, INTREG, AVR32_V1),
26351 + SYNTAX_NORMAL1(CSRF, CSRF, CSRF, UNSIGNED_NUMBER, AVR32_V1),
26352 + SYNTAX_NORMAL1(CSRFCZ, CSRFCZ, CSRFCZ, UNSIGNED_NUMBER, AVR32_V1),
26353 + SYNTAX_NORMAL3(DIVS, DIVS, DIVS, INTREG, INTREG, INTREG, AVR32_V1),
26354 + SYNTAX_NORMAL3(DIVU, DIVU, DIVU, INTREG, INTREG, INTREG, AVR32_V1),
26355 + SYNTAX_NORMAL_C2(EOR1, EOR, EOR1, EOR2, INTREG, INTREG, AVR32_V1),
26356 + SYNTAX_NORMAL_C3(EOR2, EOR, EOR2, EOR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26357 + SYNTAX_NORMAL3(EOR3, EOR, EOR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26358 + SYNTAX_NORMAL2(EORL, EORL, EORL, INTREG, UNSIGNED_CONST, AVR32_V1),
26359 + SYNTAX_NORMAL2(EORH, EORH, EORH, INTREG, UNSIGNED_CONST, AVR32_V1),
26360 + SYNTAX_NORMAL0(FRS, FRS, FRS, AVR32_V1),
26361 + SYNTAX_NORMAL1(ICALL, ICALL, ICALL, INTREG, AVR32_V1),
26362 + SYNTAX_NORMAL1(INCJOSP, INCJOSP, INCJOSP, JOSPINC, AVR32_V1),
26363 + SYNTAX_NORMAL_C2(LD_D1, LD_D, LD_D1, LD_D2, DWREG, INTREG_POSTINC, AVR32_V1),
26364 + SYNTAX_NORMAL_C2(LD_D2, LD_D, LD_D2, LD_D3, DWREG, INTREG_PREDEC, AVR32_V1),
26365 + SYNTAX_NORMAL_C2(LD_D3, LD_D, LD_D3, LD_D5, DWREG, INTREG, AVR32_V1),
26366 + SYNTAX_NORMAL_C2(LD_D5, LD_D, LD_D5, LD_D4, DWREG, INTREG_INDEX, AVR32_V1),
26367 + SYNTAX_NORMAL2(LD_D4, LD_D, LD_D4, DWREG, INTREG_SDISP, AVR32_V1),
26368 + SYNTAX_NORMAL_C2(LD_SB2, LD_SB, LD_SB2, LD_SB1, INTREG, INTREG_INDEX, AVR32_V1),
26369 + SYNTAX_NORMAL2(LD_SB1, LD_SB, LD_SB1, INTREG, INTREG_SDISP, AVR32_V1),
26370 + SYNTAX_NORMAL_C2(LD_UB1, LD_UB, LD_UB1, LD_UB2, INTREG, INTREG_POSTINC, AVR32_V1),
26371 + SYNTAX_NORMAL_C2(LD_UB2, LD_UB, LD_UB2, LD_UB5, INTREG, INTREG_PREDEC, AVR32_V1),
26372 + SYNTAX_NORMAL_C2(LD_UB5, LD_UB, LD_UB5, LD_UB3, INTREG, INTREG_INDEX, AVR32_V1),
26373 + SYNTAX_NORMAL_C2(LD_UB3, LD_UB, LD_UB3, LD_UB4, INTREG, INTREG_UDISP, AVR32_V1),
26374 + SYNTAX_NORMAL2(LD_UB4, LD_UB, LD_UB4, INTREG, INTREG_SDISP, AVR32_V1),
26375 + SYNTAX_NORMAL_C2(LD_SH1, LD_SH, LD_SH1, LD_SH2, INTREG, INTREG_POSTINC, AVR32_V1),
26376 + SYNTAX_NORMAL_C2(LD_SH2, LD_SH, LD_SH2, LD_SH5, INTREG, INTREG_PREDEC, AVR32_V1),
26377 + SYNTAX_NORMAL_C2(LD_SH5, LD_SH, LD_SH5, LD_SH3, INTREG, INTREG_INDEX, AVR32_V1),
26378 + SYNTAX_NORMAL_C2(LD_SH3, LD_SH, LD_SH3, LD_SH4, INTREG, INTREG_UDISP_H, AVR32_V1),
26379 + SYNTAX_NORMAL2(LD_SH4, LD_SH, LD_SH4, INTREG, INTREG_SDISP, AVR32_V1),
26380 + SYNTAX_NORMAL_C2(LD_UH1, LD_UH, LD_UH1, LD_UH2, INTREG, INTREG_POSTINC, AVR32_V1),
26381 + SYNTAX_NORMAL_C2(LD_UH2, LD_UH, LD_UH2, LD_UH5, INTREG, INTREG_PREDEC, AVR32_V1),
26382 + SYNTAX_NORMAL_C2(LD_UH5, LD_UH, LD_UH5, LD_UH3, INTREG, INTREG_INDEX, AVR32_V1),
26383 + SYNTAX_NORMAL_C2(LD_UH3, LD_UH, LD_UH3, LD_UH4, INTREG, INTREG_UDISP_H, AVR32_V1),
26384 + SYNTAX_NORMAL2(LD_UH4, LD_UH, LD_UH4, INTREG, INTREG_SDISP, AVR32_V1),
26385 + SYNTAX_NORMAL_C2(LD_W1, LD_W, LD_W1, LD_W2, INTREG, INTREG_POSTINC, AVR32_V1),
26386 + SYNTAX_NORMAL_C2(LD_W2, LD_W, LD_W2, LD_W5, INTREG, INTREG_PREDEC, AVR32_V1),
26387 + SYNTAX_NORMAL_C2(LD_W5, LD_W, LD_W5, LD_W6, INTREG, INTREG_INDEX, AVR32_V1),
26388 + SYNTAX_NORMAL_C2(LD_W6, LD_W, LD_W6, LD_W3, INTREG, INTREG_XINDEX, AVR32_V1),
26389 + SYNTAX_NORMAL_C2(LD_W3, LD_W, LD_W3, LD_W4, INTREG, INTREG_UDISP_W, AVR32_V1),
26390 + SYNTAX_NORMAL2(LD_W4, LD_W, LD_W4, INTREG, INTREG_SDISP, AVR32_V1),
26391 + SYNTAX_NORMAL3(LDC_D1, LDC_D, LDC_D1, CPNO, CPREG_D, INTREG_UDISP_W, AVR32_V1),
26392 + SYNTAX_NORMAL_C3(LDC_D2, LDC_D, LDC_D2, LDC_D1, CPNO, CPREG_D, INTREG_PREDEC, AVR32_V1),
26393 + SYNTAX_NORMAL_C3(LDC_D3, LDC_D, LDC_D3, LDC_D2, CPNO, CPREG_D, INTREG_INDEX, AVR32_V1),
26394 + SYNTAX_NORMAL3(LDC_W1, LDC_W, LDC_W1, CPNO, CPREG, INTREG_UDISP_W, AVR32_V1),
26395 + SYNTAX_NORMAL_C3(LDC_W2, LDC_W, LDC_W2, LDC_W1, CPNO, CPREG, INTREG_PREDEC, AVR32_V1),
26396 + SYNTAX_NORMAL_C3(LDC_W3, LDC_W, LDC_W3, LDC_W2, CPNO, CPREG, INTREG_INDEX, AVR32_V1),
26397 + SYNTAX_NORMAL2(LDC0_D, LDC0_D, LDC0_D, CPREG_D, INTREG_UDISP_W, AVR32_V1),
26398 + SYNTAX_NORMAL2(LDC0_W, LDC0_W, LDC0_W, CPREG, INTREG_UDISP_W, AVR32_V1),
26399 + SYNTAX_NORMAL_CM3(LDCM_D, LDCM_D, LDCM_D, LDCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
26400 + SYNTAX_NORMALM3(LDCM_D_PU, LDCM_D, LDCM_D_PU, CPNO, INTREG_POSTINC, REGLIST_CPD8, AVR32_V1),
26401 + SYNTAX_NORMAL_CM3(LDCM_W, LDCM_W, LDCM_W, LDCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
26402 + SYNTAX_NORMALM3(LDCM_W_PU, LDCM_W, LDCM_W_PU, CPNO, INTREG_POSTINC, REGLIST_CP8, AVR32_V1),
26403 + SYNTAX_NORMAL2(LDDPC, LDDPC, LDDPC, INTREG, PC_UDISP_W, AVR32_V1),
26404 + SYNTAX_NORMAL2(LDDPC_EXT, LDDPC, LDDPC_EXT, INTREG, SIGNED_CONST, AVR32_V1),
26405 + SYNTAX_NORMAL2(LDDSP, LDDSP, LDDSP, INTREG, SP_UDISP_W, AVR32_V1),
26406 + SYNTAX_NORMAL2(LDINS_B, LDINS_B, LDINS_B, INTREG_BSEL, INTREG_SDISP, AVR32_V1),
26407 + SYNTAX_NORMAL2(LDINS_H, LDINS_H, LDINS_H, INTREG_HSEL, INTREG_SDISP_H, AVR32_V1),
26408 + SYNTAX_NORMALM1(LDM, LDM, LDM, REGLIST_LDM, AVR32_V1),
26409 + SYNTAX_NORMAL_CM2(LDMTS, LDMTS, LDMTS, LDMTS_PU, INTREG, REGLIST16, AVR32_V1),
26410 + SYNTAX_NORMALM2(LDMTS_PU, LDMTS, LDMTS_PU, INTREG_POSTINC, REGLIST16, AVR32_V1),
26411 + SYNTAX_NORMAL2(LDSWP_SH, LDSWP_SH, LDSWP_SH, INTREG, INTREG_SDISP_H, AVR32_V1),
26412 + SYNTAX_NORMAL2(LDSWP_UH, LDSWP_UH, LDSWP_UH, INTREG, INTREG_SDISP_H, AVR32_V1),
26413 + SYNTAX_NORMAL2(LDSWP_W, LDSWP_W, LDSWP_W, INTREG, INTREG_SDISP_W, AVR32_V1),
26414 + SYNTAX_NORMAL_C3(LSL1, LSL, LSL1, LSL3, INTREG, INTREG, INTREG, AVR32_V1),
26415 + SYNTAX_NORMAL_C3(LSL3, LSL, LSL3, LSL2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26416 + SYNTAX_NORMAL2(LSL2, LSL, LSL2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26417 + SYNTAX_NORMAL_C3(LSR1, LSR, LSR1, LSR3, INTREG, INTREG, INTREG, AVR32_V1),
26418 + SYNTAX_NORMAL_C3(LSR3, LSR, LSR3, LSR2, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26419 + SYNTAX_NORMAL2(LSR2, LSR, LSR2, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26420 + SYNTAX_NORMAL3(MAC, MAC, MAC, INTREG, INTREG, INTREG, AVR32_V1),
26421 + SYNTAX_NORMAL3(MACHH_D, MACHH_D, MACHH_D, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26422 + SYNTAX_NORMAL3(MACHH_W, MACHH_W, MACHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26423 + SYNTAX_NORMAL3(MACS_D, MACS_D, MACS_D, INTREG, INTREG, INTREG, AVR32_V1),
26424 + SYNTAX_NORMAL3(MACSATHH_W, MACSATHH_W, MACSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26425 + SYNTAX_NORMAL3(MACUD, MACU_D, MACUD, INTREG, INTREG, INTREG, AVR32_V1),
26426 + SYNTAX_NORMAL3(MACWH_D, MACWH_D, MACWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26427 + SYNTAX_NORMAL3(MAX, MAX, MAX, INTREG, INTREG, INTREG, AVR32_V1),
26428 + SYNTAX_NORMAL1(MCALL, MCALL, MCALL, MCALL, AVR32_V1),
26429 + SYNTAX_NORMAL2(MFDR, MFDR, MFDR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
26430 + SYNTAX_NORMAL2(MFSR, MFSR, MFSR, INTREG, UNSIGNED_CONST_W, AVR32_V1),
26431 + SYNTAX_NORMAL3(MIN, MIN, MIN, INTREG, INTREG, INTREG, AVR32_V1),
26432 + SYNTAX_NORMAL_C2(MOV3, MOV, MOV3, MOV1, INTREG, INTREG, AVR32_V1),
26433 + SYNTAX_NORMAL_C2(MOV1, MOV, MOV1, MOV2, INTREG, SIGNED_CONST, AVR32_V1),
26434 + SYNTAX_NORMAL2(MOV2, MOV, MOV2,INTREG, SIGNED_CONST, AVR32_V1),
26435 + SYNTAX_NORMAL_C2(MOVEQ1, MOVEQ, MOVEQ1, MOVEQ2, INTREG, INTREG, AVR32_V1),
26436 + SYNTAX_NORMAL_C2(MOVNE1, MOVNE, MOVNE1, MOVNE2, INTREG, INTREG, AVR32_V1),
26437 + SYNTAX_NORMAL_C2(MOVCC1, MOVCC, MOVCC1, MOVCC2, INTREG, INTREG, AVR32_V1),
26438 + SYNTAX_NORMAL_C2(MOVCS1, MOVCS, MOVCS1, MOVCS2, INTREG, INTREG, AVR32_V1),
26439 + SYNTAX_NORMAL_C2(MOVGE1, MOVGE, MOVGE1, MOVGE2, INTREG, INTREG, AVR32_V1),
26440 + SYNTAX_NORMAL_C2(MOVLT1, MOVLT, MOVLT1, MOVLT2, INTREG, INTREG, AVR32_V1),
26441 + SYNTAX_NORMAL_C2(MOVMI1, MOVMI, MOVMI1, MOVMI2, INTREG, INTREG, AVR32_V1),
26442 + SYNTAX_NORMAL_C2(MOVPL1, MOVPL, MOVPL1, MOVPL2, INTREG, INTREG, AVR32_V1),
26443 + SYNTAX_NORMAL_C2(MOVLS1, MOVLS, MOVLS1, MOVLS2, INTREG, INTREG, AVR32_V1),
26444 + SYNTAX_NORMAL_C2(MOVGT1, MOVGT, MOVGT1, MOVGT2, INTREG, INTREG, AVR32_V1),
26445 + SYNTAX_NORMAL_C2(MOVLE1, MOVLE, MOVLE1, MOVLE2, INTREG, INTREG, AVR32_V1),
26446 + SYNTAX_NORMAL_C2(MOVHI1, MOVHI, MOVHI1, MOVHI2, INTREG, INTREG, AVR32_V1),
26447 + SYNTAX_NORMAL_C2(MOVVS1, MOVVS, MOVVS1, MOVVS2, INTREG, INTREG, AVR32_V1),
26448 + SYNTAX_NORMAL_C2(MOVVC1, MOVVC, MOVVC1, MOVVC2, INTREG, INTREG, AVR32_V1),
26449 + SYNTAX_NORMAL_C2(MOVQS1, MOVQS, MOVQS1, MOVQS2, INTREG, INTREG, AVR32_V1),
26450 + SYNTAX_NORMAL_C2(MOVAL1, MOVAL, MOVAL1, MOVAL2, INTREG, INTREG, AVR32_V1),
26451 + SYNTAX_NORMAL_C2(MOVHS1, MOVHS, MOVCC1, MOVHS2, INTREG, INTREG, AVR32_V1),
26452 + SYNTAX_NORMAL_C2(MOVLO1, MOVLO, MOVCS1, MOVLO2, INTREG, INTREG, AVR32_V1),
26453 + SYNTAX_NORMAL2(MOVEQ2, MOVEQ, MOVEQ2, INTREG, SIGNED_CONST, AVR32_V1),
26454 + SYNTAX_NORMAL2(MOVNE2, MOVNE, MOVNE2, INTREG, SIGNED_CONST, AVR32_V1),
26455 + SYNTAX_NORMAL2(MOVCC2, MOVCC, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
26456 + SYNTAX_NORMAL2(MOVCS2, MOVCS, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
26457 + SYNTAX_NORMAL2(MOVGE2, MOVGE, MOVGE2, INTREG, SIGNED_CONST, AVR32_V1),
26458 + SYNTAX_NORMAL2(MOVLT2, MOVLT, MOVLT2, INTREG, SIGNED_CONST, AVR32_V1),
26459 + SYNTAX_NORMAL2(MOVMI2, MOVMI, MOVMI2, INTREG, SIGNED_CONST, AVR32_V1),
26460 + SYNTAX_NORMAL2(MOVPL2, MOVPL, MOVPL2, INTREG, SIGNED_CONST, AVR32_V1),
26461 + SYNTAX_NORMAL2(MOVLS2, MOVLS, MOVLS2, INTREG, SIGNED_CONST, AVR32_V1),
26462 + SYNTAX_NORMAL2(MOVGT2, MOVGT, MOVGT2, INTREG, SIGNED_CONST, AVR32_V1),
26463 + SYNTAX_NORMAL2(MOVLE2, MOVLE, MOVLE2, INTREG, SIGNED_CONST, AVR32_V1),
26464 + SYNTAX_NORMAL2(MOVHI2, MOVHI, MOVHI2, INTREG, SIGNED_CONST, AVR32_V1),
26465 + SYNTAX_NORMAL2(MOVVS2, MOVVS, MOVVS2, INTREG, SIGNED_CONST, AVR32_V1),
26466 + SYNTAX_NORMAL2(MOVVC2, MOVVC, MOVVC2, INTREG, SIGNED_CONST, AVR32_V1),
26467 + SYNTAX_NORMAL2(MOVQS2, MOVQS, MOVQS2, INTREG, SIGNED_CONST, AVR32_V1),
26468 + SYNTAX_NORMAL2(MOVAL2, MOVAL, MOVAL2, INTREG, SIGNED_CONST, AVR32_V1),
26469 + SYNTAX_NORMAL2(MOVHS2, MOVHS, MOVCC2, INTREG, SIGNED_CONST, AVR32_V1),
26470 + SYNTAX_NORMAL2(MOVLO2, MOVLO, MOVCS2, INTREG, SIGNED_CONST, AVR32_V1),
26471 + SYNTAX_NORMAL2(MTDR, MTDR, MTDR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26472 + SYNTAX_NORMAL2(MTSR, MTSR, MTSR, UNSIGNED_CONST_W, INTREG, AVR32_V1),
26473 + SYNTAX_NORMAL_C2(MUL1, MUL, MUL1, MUL2, INTREG, INTREG, AVR32_V1),
26474 + SYNTAX_NORMAL_C3(MUL2, MUL, MUL2, MUL3, INTREG, INTREG, INTREG, AVR32_V1),
26475 + SYNTAX_NORMAL3(MUL3, MUL, MUL3, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26476 + SYNTAX_NORMAL3(MULHH_W, MULHH_W, MULHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26477 + SYNTAX_NORMAL3(MULNHH_W, MULNHH_W, MULNHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26478 + SYNTAX_NORMAL3(MULNWH_D, MULNWH_D, MULNWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26479 + SYNTAX_NORMAL3(MULSD, MULS_D, MULSD, INTREG, INTREG, INTREG, AVR32_V1),
26480 + SYNTAX_NORMAL3(MULSATHH_H, MULSATHH_H, MULSATHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26481 + SYNTAX_NORMAL3(MULSATHH_W, MULSATHH_W, MULSATHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26482 + SYNTAX_NORMAL3(MULSATRNDHH_H, MULSATRNDHH_H, MULSATRNDHH_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26483 + SYNTAX_NORMAL3(MULSATRNDWH_W, MULSATRNDWH_W, MULSATRNDWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26484 + SYNTAX_NORMAL3(MULSATWH_W, MULSATWH_W, MULSATWH_W, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26485 + SYNTAX_NORMAL3(MULU_D, MULU_D, MULU_D, INTREG, INTREG, INTREG, AVR32_V1),
26486 + SYNTAX_NORMAL3(MULWH_D, MULWH_D, MULWH_D, INTREG, INTREG, INTREG_HSEL, AVR32_DSP),
26487 + SYNTAX_NORMAL1(MUSFR, MUSFR, MUSFR, INTREG, AVR32_V1),
26488 + SYNTAX_NORMAL1(MUSTR, MUSTR, MUSTR, INTREG, AVR32_V1),
26489 + SYNTAX_NORMAL3(MVCR_D, MVCR_D, MVCR_D, CPNO, DWREG, CPREG_D, AVR32_V1),
26490 + SYNTAX_NORMAL3(MVCR_W, MVCR_W, MVCR_W, CPNO, INTREG, CPREG, AVR32_V1),
26491 + SYNTAX_NORMAL3(MVRC_D, MVRC_D, MVRC_D, CPNO, CPREG_D, DWREG, AVR32_V1),
26492 + SYNTAX_NORMAL3(MVRC_W, MVRC_W, MVRC_W, CPNO, CPREG, INTREG, AVR32_V1),
26493 + SYNTAX_NORMAL1(NEG, NEG, NEG, INTREG, AVR32_V1),
26494 + SYNTAX_NORMAL0(NOP, NOP, NOP, AVR32_V1),
26495 + SYNTAX_NORMAL_C2(OR1, OR, OR1, OR2, INTREG, INTREG, AVR32_V1),
26496 + SYNTAX_NORMAL_C3(OR2, OR, OR2, OR3, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26497 + SYNTAX_NORMAL3(OR3, OR, OR3, INTREG, INTREG, INTREG_LSR, AVR32_V1),
26498 + SYNTAX_NORMAL2(ORH, ORH, ORH, INTREG, UNSIGNED_CONST, AVR32_V1),
26499 + SYNTAX_NORMAL2(ORL, ORL, ORL, INTREG, UNSIGNED_CONST, AVR32_V1),
26500 + SYNTAX_NORMAL2(PABS_SB, PABS_SB, PABS_SB, INTREG, INTREG, AVR32_SIMD),
26501 + SYNTAX_NORMAL2(PABS_SH, PABS_SH, PABS_SH, INTREG, INTREG, AVR32_SIMD),
26502 + SYNTAX_NORMAL3(PACKSH_SB, PACKSH_SB, PACKSH_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26503 + SYNTAX_NORMAL3(PACKSH_UB, PACKSH_UB, PACKSH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26504 + SYNTAX_NORMAL3(PACKW_SH, PACKW_SH, PACKW_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26505 + SYNTAX_NORMAL3(PADD_B, PADD_B, PADD_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26506 + SYNTAX_NORMAL3(PADD_H, PADD_H, PADD_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26507 + SYNTAX_NORMAL3(PADDH_SH, PADDH_SH, PADDH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26508 + SYNTAX_NORMAL3(PADDH_UB, PADDH_UB, PADDH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26509 + SYNTAX_NORMAL3(PADDS_SB, PADDS_SB, PADDS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26510 + SYNTAX_NORMAL3(PADDS_SH, PADDS_SH, PADDS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26511 + SYNTAX_NORMAL3(PADDS_UB, PADDS_UB, PADDS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26512 + SYNTAX_NORMAL3(PADDS_UH, PADDS_UH, PADDS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26513 + SYNTAX_NORMAL3(PADDSUB_H, PADDSUB_H, PADDSUB_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26514 + SYNTAX_NORMAL3(PADDSUBH_SH, PADDSUBH_SH, PADDSUBH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26515 + SYNTAX_NORMAL3(PADDSUBS_SH, PADDSUBS_SH, PADDSUBS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26516 + SYNTAX_NORMAL3(PADDSUBS_UH, PADDSUBS_UH, PADDSUBS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26517 + SYNTAX_NORMAL3(PADDX_H, PADDX_H, PADDX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26518 + SYNTAX_NORMAL3(PADDXH_SH, PADDXH_SH, PADDXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26519 + SYNTAX_NORMAL3(PADDXS_SH, PADDXS_SH, PADDXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26520 + SYNTAX_NORMAL3(PADDXS_UH, PADDXS_UH, PADDXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26521 + SYNTAX_NORMAL3(PASR_B, PASR_B, PASR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26522 + SYNTAX_NORMAL3(PASR_H, PASR_H, PASR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26523 + SYNTAX_NORMAL3(PAVG_SH, PAVG_SH, PAVG_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26524 + SYNTAX_NORMAL3(PAVG_UB, PAVG_UB, PAVG_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26525 + SYNTAX_NORMAL3(PLSL_B, PLSL_B, PLSL_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26526 + SYNTAX_NORMAL3(PLSL_H, PLSL_H, PLSL_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26527 + SYNTAX_NORMAL3(PLSR_B, PLSR_B, PLSR_B, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26528 + SYNTAX_NORMAL3(PLSR_H, PLSR_H, PLSR_H, INTREG, INTREG, UNSIGNED_NUMBER, AVR32_SIMD),
26529 + SYNTAX_NORMAL3(PMAX_SH, PMAX_SH, PMAX_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26530 + SYNTAX_NORMAL3(PMAX_UB, PMAX_UB, PMAX_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26531 + SYNTAX_NORMAL3(PMIN_SH, PMIN_SH, PMIN_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26532 + SYNTAX_NORMAL3(PMIN_UB, PMIN_UB, PMIN_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26533 + SYNTAX_NORMAL0(POPJC, POPJC, POPJC, AVR32_V1),
26534 + SYNTAX_NORMAL_CM1(POPM, POPM, POPM, POPM_E, REGLIST9, AVR32_V1),
26535 + SYNTAX_NORMALM1(POPM_E, POPM, POPM_E, REGLIST16, AVR32_V1),
26536 + SYNTAX_NORMAL1(PREF, PREF, PREF, INTREG_SDISP, AVR32_V1),
26537 + SYNTAX_NORMAL3(PSAD, PSAD, PSAD, INTREG, INTREG, INTREG, AVR32_SIMD),
26538 + SYNTAX_NORMAL3(PSUB_B, PSUB_B, PSUB_B, INTREG, INTREG, INTREG, AVR32_SIMD),
26539 + SYNTAX_NORMAL3(PSUB_H, PSUB_H, PSUB_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26540 + SYNTAX_NORMAL3(PSUBADD_H, PSUBADD_H, PSUBADD_H, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26541 + SYNTAX_NORMAL3(PSUBADDH_SH, PSUBADDH_SH, PSUBADDH_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26542 + SYNTAX_NORMAL3(PSUBADDS_SH, PSUBADDS_SH, PSUBADDS_SH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26543 + SYNTAX_NORMAL3(PSUBADDS_UH, PSUBADDS_UH, PSUBADDS_UH, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_SIMD),
26544 + SYNTAX_NORMAL3(PSUBH_SH, PSUBH_SH, PSUBH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26545 + SYNTAX_NORMAL3(PSUBH_UB, PSUBH_UB, PSUBH_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26546 + SYNTAX_NORMAL3(PSUBS_SB, PSUBS_SB, PSUBS_SB, INTREG, INTREG, INTREG, AVR32_SIMD),
26547 + SYNTAX_NORMAL3(PSUBS_SH, PSUBS_SH, PSUBS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26548 + SYNTAX_NORMAL3(PSUBS_UB, PSUBS_UB, PSUBS_UB, INTREG, INTREG, INTREG, AVR32_SIMD),
26549 + SYNTAX_NORMAL3(PSUBS_UH, PSUBS_UH, PSUBS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26550 + SYNTAX_NORMAL3(PSUBX_H, PSUBX_H, PSUBX_H, INTREG, INTREG, INTREG, AVR32_SIMD),
26551 + SYNTAX_NORMAL3(PSUBXH_SH, PSUBXH_SH, PSUBXH_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26552 + SYNTAX_NORMAL3(PSUBXS_SH, PSUBXS_SH, PSUBXS_SH, INTREG, INTREG, INTREG, AVR32_SIMD),
26553 + SYNTAX_NORMAL3(PSUBXS_UH, PSUBXS_UH, PSUBXS_UH, INTREG, INTREG, INTREG, AVR32_SIMD),
26554 + SYNTAX_NORMAL2(PUNPCKSB_H, PUNPCKSB_H, PUNPCKSB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26555 + SYNTAX_NORMAL2(PUNPCKUB_H, PUNPCKUB_H, PUNPCKUB_H, INTREG, INTREG_HSEL, AVR32_SIMD),
26556 + SYNTAX_NORMAL0(PUSHJC, PUSHJC, PUSHJC, AVR32_V1),
26557 + SYNTAX_NORMAL_CM1(PUSHM, PUSHM, PUSHM, PUSHM_E, REGLIST8, AVR32_V1),
26558 + SYNTAX_NORMALM1(PUSHM_E, PUSHM, PUSHM_E, REGLIST16, AVR32_V1),
26559 + SYNTAX_NORMAL_C1(RCALL1, RCALL, RCALL1, RCALL2, JMPLABEL, AVR32_V1),
26560 + SYNTAX_NORMAL1(RCALL2, RCALL, RCALL2, JMPLABEL, AVR32_V1),
26561 + SYNTAX_NORMAL1(RETEQ, RETEQ, RETEQ, RETVAL, AVR32_V1),
26562 + SYNTAX_NORMAL1(RETNE, RETNE, RETNE, RETVAL, AVR32_V1),
26563 + SYNTAX_NORMAL1(RETCC, RETCC, RETCC, RETVAL, AVR32_V1),
26564 + SYNTAX_NORMAL1(RETCS, RETCS, RETCS, RETVAL, AVR32_V1),
26565 + SYNTAX_NORMAL1(RETGE, RETGE, RETGE, RETVAL, AVR32_V1),
26566 + SYNTAX_NORMAL1(RETLT, RETLT, RETLT, RETVAL, AVR32_V1),
26567 + SYNTAX_NORMAL1(RETMI, RETMI, RETMI, RETVAL, AVR32_V1),
26568 + SYNTAX_NORMAL1(RETPL, RETPL, RETPL, RETVAL, AVR32_V1),
26569 + SYNTAX_NORMAL1(RETLS, RETLS, RETLS, RETVAL, AVR32_V1),
26570 + SYNTAX_NORMAL1(RETGT, RETGT, RETGT, RETVAL, AVR32_V1),
26571 + SYNTAX_NORMAL1(RETLE, RETLE, RETLE, RETVAL, AVR32_V1),
26572 + SYNTAX_NORMAL1(RETHI, RETHI, RETHI, RETVAL, AVR32_V1),
26573 + SYNTAX_NORMAL1(RETVS, RETVS, RETVS, RETVAL, AVR32_V1),
26574 + SYNTAX_NORMAL1(RETVC, RETVC, RETVC, RETVAL, AVR32_V1),
26575 + SYNTAX_NORMAL1(RETQS, RETQS, RETQS, RETVAL, AVR32_V1),
26576 + SYNTAX_NORMAL1(RETAL, RETAL, RETAL, RETVAL, AVR32_V1),
26577 + SYNTAX_NORMAL1(RETHS, RETHS, RETCC, RETVAL, AVR32_V1),
26578 + SYNTAX_NORMAL1(RETLO, RETLO, RETCS, RETVAL, AVR32_V1),
26579 + SYNTAX_NORMAL0(RETD, RETD, RETD, AVR32_V1),
26580 + SYNTAX_NORMAL0(RETE, RETE, RETE, AVR32_V1),
26581 + SYNTAX_NORMAL0(RETJ, RETJ, RETJ, AVR32_V1),
26582 + SYNTAX_NORMAL0(RETS, RETS, RETS, AVR32_V1),
26583 + SYNTAX_NORMAL1(RJMP, RJMP, RJMP, JMPLABEL, AVR32_V1),
26584 + SYNTAX_NORMAL1(ROL, ROL, ROL, INTREG, AVR32_V1),
26585 + SYNTAX_NORMAL1(ROR, ROR, ROR, INTREG, AVR32_V1),
26586 + SYNTAX_NORMAL_C2(RSUB1, RSUB, RSUB1, RSUB2, INTREG, INTREG, AVR32_V1),
26587 + SYNTAX_NORMAL3(RSUB2, RSUB, RSUB2, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26588 + SYNTAX_NORMAL3(SATADD_H, SATADD_H, SATADD_H, INTREG, INTREG, INTREG, AVR32_DSP),
26589 + SYNTAX_NORMAL3(SATADD_W, SATADD_W, SATADD_W, INTREG, INTREG, INTREG, AVR32_DSP),
26590 + SYNTAX_NORMAL2(SATRNDS, SATRNDS, SATRNDS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26591 + SYNTAX_NORMAL2(SATRNDU, SATRNDU, SATRNDU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26592 + SYNTAX_NORMAL2(SATS, SATS, SATS, INTREG_LSR, UNSIGNED_NUMBER, AVR32_DSP),
26593 + SYNTAX_NORMAL3(SATSUB_H, SATSUB_H, SATSUB_H, INTREG, INTREG, INTREG, AVR32_DSP),
26594 + SYNTAX_NORMAL_C3(SATSUB_W1, SATSUB_W, SATSUB_W1, SATSUB_W2, INTREG, INTREG, INTREG, AVR32_DSP),
26595 + SYNTAX_NORMAL3(SATSUB_W2, SATSUB_W, SATSUB_W2, INTREG, INTREG, SIGNED_CONST, AVR32_DSP),
26596 + SYNTAX_NORMAL2(SATU, SATU, SATU, INTREG_LSR, UNSIGNED_NUMBER, AVR32_V1),
26597 + SYNTAX_NORMAL3(SBC, SBC, SBC, INTREG, INTREG, INTREG, AVR32_V1),
26598 + SYNTAX_NORMAL2(SBR, SBR, SBR, INTREG, UNSIGNED_NUMBER, AVR32_V1),
26599 + SYNTAX_NORMAL0(SCALL, SCALL, SCALL, AVR32_V1),
26600 + SYNTAX_NORMAL1(SCR, SCR, SCR, INTREG, AVR32_V1),
26601 + SYNTAX_NORMAL1(SLEEP, SLEEP, SLEEP, UNSIGNED_CONST, AVR32_V1),
26602 + SYNTAX_NORMAL1(SREQ, SREQ, SREQ, INTREG, AVR32_V1),
26603 + SYNTAX_NORMAL1(SRNE, SRNE, SRNE, INTREG, AVR32_V1),
26604 + SYNTAX_NORMAL1(SRCC, SRCC, SRCC, INTREG, AVR32_V1),
26605 + SYNTAX_NORMAL1(SRCS, SRCS, SRCS, INTREG, AVR32_V1),
26606 + SYNTAX_NORMAL1(SRGE, SRGE, SRGE, INTREG, AVR32_V1),
26607 + SYNTAX_NORMAL1(SRLT, SRLT, SRLT, INTREG, AVR32_V1),
26608 + SYNTAX_NORMAL1(SRMI, SRMI, SRMI, INTREG, AVR32_V1),
26609 + SYNTAX_NORMAL1(SRPL, SRPL, SRPL, INTREG, AVR32_V1),
26610 + SYNTAX_NORMAL1(SRLS, SRLS, SRLS, INTREG, AVR32_V1),
26611 + SYNTAX_NORMAL1(SRGT, SRGT, SRGT, INTREG, AVR32_V1),
26612 + SYNTAX_NORMAL1(SRLE, SRLE, SRLE, INTREG, AVR32_V1),
26613 + SYNTAX_NORMAL1(SRHI, SRHI, SRHI, INTREG, AVR32_V1),
26614 + SYNTAX_NORMAL1(SRVS, SRVS, SRVS, INTREG, AVR32_V1),
26615 + SYNTAX_NORMAL1(SRVC, SRVC, SRVC, INTREG, AVR32_V1),
26616 + SYNTAX_NORMAL1(SRQS, SRQS, SRQS, INTREG, AVR32_V1),
26617 + SYNTAX_NORMAL1(SRAL, SRAL, SRAL, INTREG, AVR32_V1),
26618 + SYNTAX_NORMAL1(SRHS, SRHS, SRCC, INTREG, AVR32_V1),
26619 + SYNTAX_NORMAL1(SRLO, SRLO, SRCS, INTREG, AVR32_V1),
26620 + SYNTAX_NORMAL1(SSRF, SSRF, SSRF, UNSIGNED_NUMBER, AVR32_V1),
26621 + SYNTAX_NORMAL_C2(ST_B1, ST_B, ST_B1, ST_B2, INTREG_POSTINC, INTREG, AVR32_V1),
26622 + SYNTAX_NORMAL_C2(ST_B2, ST_B, ST_B2, ST_B5, INTREG_PREDEC, INTREG, AVR32_V1),
26623 + SYNTAX_NORMAL_C2(ST_B5, ST_B, ST_B5, ST_B3, INTREG_INDEX, INTREG, AVR32_V1),
26624 + SYNTAX_NORMAL_C2(ST_B3, ST_B, ST_B3, ST_B4, INTREG_UDISP, INTREG, AVR32_V1),
26625 + SYNTAX_NORMAL2(ST_B4, ST_B, ST_B4, INTREG_SDISP, INTREG, AVR32_V1),
26626 + SYNTAX_NORMAL_C2(ST_D1, ST_D, ST_D1, ST_D2, INTREG_POSTINC, DWREG, AVR32_V1),
26627 + SYNTAX_NORMAL_C2(ST_D2, ST_D, ST_D2, ST_D3, INTREG_PREDEC, DWREG, AVR32_V1),
26628 + SYNTAX_NORMAL_C2(ST_D3, ST_D, ST_D3, ST_D5, INTREG, DWREG, AVR32_V1),
26629 + SYNTAX_NORMAL_C2(ST_D5, ST_D, ST_D5, ST_D4, INTREG_INDEX, DWREG, AVR32_V1),
26630 + SYNTAX_NORMAL2(ST_D4, ST_D, ST_D4, INTREG_SDISP, DWREG, AVR32_V1),
26631 + SYNTAX_NORMAL_C2(ST_H1, ST_H, ST_H1, ST_H2, INTREG_POSTINC, INTREG, AVR32_V1),
26632 + SYNTAX_NORMAL_C2(ST_H2, ST_H, ST_H2, ST_H5, INTREG_PREDEC, INTREG, AVR32_V1),
26633 + SYNTAX_NORMAL_C2(ST_H5, ST_H, ST_H5, ST_H3, INTREG_INDEX, INTREG, AVR32_V1),
26634 + SYNTAX_NORMAL_C2(ST_H3, ST_H, ST_H3, ST_H4, INTREG_UDISP_H, INTREG, AVR32_V1),
26635 + SYNTAX_NORMAL2(ST_H4, ST_H, ST_H4, INTREG_SDISP, INTREG, AVR32_V1),
26636 + SYNTAX_NORMAL_C2(ST_W1, ST_W, ST_W1, ST_W2, INTREG_POSTINC, INTREG, AVR32_V1),
26637 + SYNTAX_NORMAL_C2(ST_W2, ST_W, ST_W2, ST_W5, INTREG_PREDEC, INTREG, AVR32_V1),
26638 + SYNTAX_NORMAL_C2(ST_W5, ST_W, ST_W5, ST_W3, INTREG_INDEX, INTREG, AVR32_V1),
26639 + SYNTAX_NORMAL_C2(ST_W3, ST_W, ST_W3, ST_W4, INTREG_UDISP_W, INTREG, AVR32_V1),
26640 + SYNTAX_NORMAL2(ST_W4, ST_W, ST_W4, INTREG_SDISP, INTREG, AVR32_V1),
26641 + SYNTAX_NORMAL3(STC_D1, STC_D, STC_D1, CPNO, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26642 + SYNTAX_NORMAL_C3(STC_D2, STC_D, STC_D2, STC_D1, CPNO, INTREG_POSTINC, CPREG_D, AVR32_V1),
26643 + SYNTAX_NORMAL_C3(STC_D3, STC_D, STC_D3, STC_D2, CPNO, INTREG_INDEX, CPREG_D, AVR32_V1),
26644 + SYNTAX_NORMAL3(STC_W1, STC_W, STC_W1, CPNO, INTREG_UDISP_W, CPREG, AVR32_V1),
26645 + SYNTAX_NORMAL_C3(STC_W2, STC_W, STC_W2, STC_W1, CPNO, INTREG_POSTINC, CPREG, AVR32_V1),
26646 + SYNTAX_NORMAL_C3(STC_W3, STC_W, STC_W3, STC_W2, CPNO, INTREG_INDEX, CPREG, AVR32_V1),
26647 + SYNTAX_NORMAL2(STC0_D, STC0_D, STC0_D, INTREG_UDISP_W, CPREG_D, AVR32_V1),
26648 + SYNTAX_NORMAL2(STC0_W, STC0_W, STC0_W, INTREG_UDISP_W, CPREG, AVR32_V1),
26649 + SYNTAX_NORMAL_CM3(STCM_D, STCM_D, STCM_D, STCM_D_PU, CPNO, INTREG, REGLIST_CPD8, AVR32_V1),
26650 + SYNTAX_NORMALM3(STCM_D_PU, STCM_D, STCM_D_PU, CPNO, INTREG_PREDEC, REGLIST_CPD8, AVR32_V1),
26651 + SYNTAX_NORMAL_CM3(STCM_W, STCM_W, STCM_W, STCM_W_PU, CPNO, INTREG, REGLIST_CP8, AVR32_V1),
26652 + SYNTAX_NORMALM3(STCM_W_PU, STCM_W, STCM_W_PU, CPNO, INTREG_PREDEC, REGLIST_CP8, AVR32_V1),
26653 + SYNTAX_NORMAL2(STCOND, STCOND, STCOND, INTREG_SDISP, INTREG, AVR32_V1),
26654 + SYNTAX_NORMAL2(STDSP, STDSP, STDSP, SP_UDISP_W, INTREG, AVR32_V1),
26655 + SYNTAX_NORMAL_C3(STHH_W2, STHH_W, STHH_W2, STHH_W1, INTREG_INDEX, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26656 + SYNTAX_NORMAL3(STHH_W1, STHH_W, STHH_W1, INTREG_UDISP_W, INTREG_HSEL, INTREG_HSEL, AVR32_V1),
26657 + SYNTAX_NORMAL_CM2(STM, STM, STM, STM_PU, INTREG, REGLIST16, AVR32_V1),
26658 + SYNTAX_NORMALM2(STM_PU, STM, STM_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26659 + SYNTAX_NORMAL_CM2(STMTS, STMTS, STMTS, STMTS_PU, INTREG, REGLIST16, AVR32_V1),
26660 + SYNTAX_NORMALM2(STMTS_PU, STMTS, STMTS_PU, INTREG_PREDEC, REGLIST16, AVR32_V1),
26661 + SYNTAX_NORMAL2(STSWP_H, STSWP_H, STSWP_H, INTREG_SDISP_H, INTREG, AVR32_V1),
26662 + SYNTAX_NORMAL2(STSWP_W, STSWP_W, STSWP_W, INTREG_SDISP_W, INTREG, AVR32_V1),
26663 + SYNTAX_NORMAL_C2(SUB1, SUB, SUB1, SUB2, INTREG, INTREG, AVR32_V1),
26664 + SYNTAX_NORMAL_C3(SUB2, SUB, SUB2, SUB5, INTREG, INTREG, INTREG_LSL, AVR32_V1),
26665 + SYNTAX_NORMAL_C3(SUB5, SUB, SUB5, SUB3_SP, INTREG, INTREG, SIGNED_CONST, AVR32_V1),
26666 + SYNTAX_NORMAL_C2(SUB3_SP, SUB, SUB3_SP, SUB3, SP, SIGNED_CONST_W, AVR32_V1),
26667 + SYNTAX_NORMAL_C2(SUB3, SUB, SUB3, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26668 + SYNTAX_NORMAL2(SUB4, SUB, SUB4, INTREG, SIGNED_CONST, AVR32_V1),
26669 + SYNTAX_NORMAL_C2(SUBEQ, SUBEQ, SUBEQ, SUB2EQ, INTREG, SIGNED_CONST, AVR32_V1),
26670 + SYNTAX_NORMAL_C2(SUBNE, SUBNE, SUBNE, SUB2NE, INTREG, SIGNED_CONST, AVR32_V1),
26671 + SYNTAX_NORMAL_C2(SUBCC, SUBCC, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26672 + SYNTAX_NORMAL_C2(SUBCS, SUBCS, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26673 + SYNTAX_NORMAL_C2(SUBGE, SUBGE, SUBGE, SUB2GE, INTREG, SIGNED_CONST, AVR32_V1),
26674 + SYNTAX_NORMAL_C2(SUBLT, SUBLT, SUBLT, SUB2LT, INTREG, SIGNED_CONST, AVR32_V1),
26675 + SYNTAX_NORMAL_C2(SUBMI, SUBMI, SUBMI, SUB2MI, INTREG, SIGNED_CONST, AVR32_V1),
26676 + SYNTAX_NORMAL_C2(SUBPL, SUBPL, SUBPL, SUB2PL, INTREG, SIGNED_CONST, AVR32_V1),
26677 + SYNTAX_NORMAL_C2(SUBLS, SUBLS, SUBLS, SUB2LS, INTREG, SIGNED_CONST, AVR32_V1),
26678 + SYNTAX_NORMAL_C2(SUBGT, SUBGT, SUBGT, SUB2GT, INTREG, SIGNED_CONST, AVR32_V1),
26679 + SYNTAX_NORMAL_C2(SUBLE, SUBLE, SUBLE, SUB2LE, INTREG, SIGNED_CONST, AVR32_V1),
26680 + SYNTAX_NORMAL_C2(SUBHI, SUBHI, SUBHI, SUB2HI, INTREG, SIGNED_CONST, AVR32_V1),
26681 + SYNTAX_NORMAL_C2(SUBVS, SUBVS, SUBVS, SUB2VS, INTREG, SIGNED_CONST, AVR32_V1),
26682 + SYNTAX_NORMAL_C2(SUBVC, SUBVC, SUBVC, SUB2VC, INTREG, SIGNED_CONST, AVR32_V1),
26683 + SYNTAX_NORMAL_C2(SUBQS, SUBQS, SUBQS, SUB2QS, INTREG, SIGNED_CONST, AVR32_V1),
26684 + SYNTAX_NORMAL_C2(SUBAL, SUBAL, SUBAL, SUB2AL, INTREG, SIGNED_CONST, AVR32_V1),
26685 + SYNTAX_NORMAL_C2(SUBHS, SUBHS, SUBCC, SUB2CC, INTREG, SIGNED_CONST, AVR32_V1),
26686 + SYNTAX_NORMAL_C2(SUBLO, SUBLO, SUBCS, SUB2CS, INTREG, SIGNED_CONST, AVR32_V1),
26687 + SYNTAX_NORMAL2(SUBFEQ, SUBFEQ, SUBFEQ, INTREG, SIGNED_CONST, AVR32_V1),
26688 + SYNTAX_NORMAL2(SUBFNE, SUBFNE, SUBFNE, INTREG, SIGNED_CONST, AVR32_V1),
26689 + SYNTAX_NORMAL2(SUBFCC, SUBFCC, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26690 + SYNTAX_NORMAL2(SUBFCS, SUBFCS, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26691 + SYNTAX_NORMAL2(SUBFGE, SUBFGE, SUBFGE, INTREG, SIGNED_CONST, AVR32_V1),
26692 + SYNTAX_NORMAL2(SUBFLT, SUBFLT, SUBFLT, INTREG, SIGNED_CONST, AVR32_V1),
26693 + SYNTAX_NORMAL2(SUBFMI, SUBFMI, SUBFMI, INTREG, SIGNED_CONST, AVR32_V1),
26694 + SYNTAX_NORMAL2(SUBFPL, SUBFPL, SUBFPL, INTREG, SIGNED_CONST, AVR32_V1),
26695 + SYNTAX_NORMAL2(SUBFLS, SUBFLS, SUBFLS, INTREG, SIGNED_CONST, AVR32_V1),
26696 + SYNTAX_NORMAL2(SUBFGT, SUBFGT, SUBFGT, INTREG, SIGNED_CONST, AVR32_V1),
26697 + SYNTAX_NORMAL2(SUBFLE, SUBFLE, SUBFLE, INTREG, SIGNED_CONST, AVR32_V1),
26698 + SYNTAX_NORMAL2(SUBFHI, SUBFHI, SUBFHI, INTREG, SIGNED_CONST, AVR32_V1),
26699 + SYNTAX_NORMAL2(SUBFVS, SUBFVS, SUBFVS, INTREG, SIGNED_CONST, AVR32_V1),
26700 + SYNTAX_NORMAL2(SUBFVC, SUBFVC, SUBFVC, INTREG, SIGNED_CONST, AVR32_V1),
26701 + SYNTAX_NORMAL2(SUBFQS, SUBFQS, SUBFQS, INTREG, SIGNED_CONST, AVR32_V1),
26702 + SYNTAX_NORMAL2(SUBFAL, SUBFAL, SUBFAL, INTREG, SIGNED_CONST, AVR32_V1),
26703 + SYNTAX_NORMAL2(SUBFHS, SUBFHS, SUBFCC, INTREG, SIGNED_CONST, AVR32_V1),
26704 + SYNTAX_NORMAL2(SUBFLO, SUBFLO, SUBFCS, INTREG, SIGNED_CONST, AVR32_V1),
26705 + SYNTAX_NORMAL3(SUBHH_W, SUBHH_W, SUBHH_W, INTREG, INTREG_HSEL, INTREG_HSEL, AVR32_DSP),
26706 + SYNTAX_NORMAL1(SWAP_B, SWAP_B, SWAP_B, INTREG, AVR32_V1),
26707 + SYNTAX_NORMAL1(SWAP_BH, SWAP_BH, SWAP_BH, INTREG, AVR32_V1),
26708 + SYNTAX_NORMAL1(SWAP_H, SWAP_H, SWAP_H, INTREG, AVR32_V1),
26709 + SYNTAX_NORMAL1(SYNC, SYNC, SYNC, UNSIGNED_CONST, AVR32_V1),
26710 + SYNTAX_NORMAL0(TLBR, TLBR, TLBR, AVR32_V1),
26711 + SYNTAX_NORMAL0(TLBS, TLBS, TLBS, AVR32_V1),
26712 + SYNTAX_NORMAL0(TLBW, TLBW, TLBW, AVR32_V1),
26713 + SYNTAX_NORMAL1(TNBZ, TNBZ, TNBZ, INTREG, AVR32_V1),
26714 + SYNTAX_NORMAL2(TST, TST, TST, INTREG, INTREG, AVR32_V1),
26715 + SYNTAX_NORMAL3(XCHG, XCHG, XCHG, INTREG, INTREG, INTREG, AVR32_V1),
26716 + SYNTAX_NORMAL2(MEMC, MEMC, MEMC, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26717 + SYNTAX_NORMAL2(MEMS, MEMS, MEMS, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26718 + SYNTAX_NORMAL2(MEMT, MEMT, MEMT, SIGNED_CONST_W, UNSIGNED_NUMBER, AVR32_RMW),
26719 + SYNTAX_FP(FADD, 3),
26720 + SYNTAX_FP(FSUB, 3),
26721 + SYNTAX_FP(FMAC, 3),
26722 + SYNTAX_FP(FNMAC, 3),
26723 + SYNTAX_FP(FMSC, 3),
26724 + SYNTAX_FP(FNMSC, 3),
26725 + SYNTAX_FP(FMUL, 3),
26726 + SYNTAX_FP(FNMUL, 3),
26727 + SYNTAX_FP(FNEG, 2),
26728 + SYNTAX_FP(FABS, 2),
26729 + SYNTAX_FP(FCMP, 2),
26730 + {
26731 + AVR32_SYNTAX_FMOV1_S,
26732 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26733 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_S] },
26734 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_S],
26735 + 2,
26736 + {
26737 + AVR32_OPERAND_FPREG_S,
26738 + AVR32_OPERAND_FPREG_S,
26739 + },
26740 + },
26741 + {
26742 + AVR32_SYNTAX_FMOV1_D,
26743 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26744 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV1_D] },
26745 + &avr32_syntax_table[AVR32_SYNTAX_FMOV2_D],
26746 + 2,
26747 + {
26748 + AVR32_OPERAND_FPREG_D,
26749 + AVR32_OPERAND_FPREG_D,
26750 + },
26751 + },
26752 + {
26753 + AVR32_SYNTAX_FMOV2_S,
26754 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26755 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_S] },
26756 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_S],
26757 + 2,
26758 + {
26759 + AVR32_OPERAND_INTREG,
26760 + AVR32_OPERAND_FPREG_S,
26761 + },
26762 + },
26763 + {
26764 + AVR32_SYNTAX_FMOV2_D,
26765 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26766 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV2_D] },
26767 + &avr32_syntax_table[AVR32_SYNTAX_FMOV3_D],
26768 + 2,
26769 + {
26770 + AVR32_OPERAND_DWREG,
26771 + AVR32_OPERAND_FPREG_D,
26772 + },
26773 + },
26774 + {
26775 + AVR32_SYNTAX_FMOV3_S,
26776 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26777 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_S] }, NULL,
26778 + 2,
26779 + {
26780 + AVR32_OPERAND_FPREG_S,
26781 + AVR32_OPERAND_INTREG,
26782 + },
26783 + },
26784 + {
26785 + AVR32_SYNTAX_FMOV3_D,
26786 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26787 + { .alias = &avr32_alias_table[AVR32_ALIAS_FMOV3_D] }, NULL,
26788 + 2,
26789 + {
26790 + AVR32_OPERAND_FPREG_D,
26791 + AVR32_OPERAND_DWREG,
26792 + },
26793 + },
26794 + {
26795 + AVR32_SYNTAX_FCASTS_D,
26796 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26797 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTS_D] }, NULL,
26798 + 2,
26799 + {
26800 + AVR32_OPERAND_FPREG_S,
26801 + AVR32_OPERAND_FPREG_D,
26802 + },
26803 + },
26804 + {
26805 + AVR32_SYNTAX_FCASTD_S,
26806 + AVR32_FP, NULL, AVR32_PARSER_ALIAS,
26807 + { .alias = &avr32_alias_table[AVR32_ALIAS_FCASTD_S] }, NULL,
26808 + 2,
26809 + {
26810 + AVR32_OPERAND_FPREG_D,
26811 + AVR32_OPERAND_FPREG_S,
26812 + },
26813 + },
26814 + {
26815 + AVR32_SYNTAX_LDA_W,
26816 + AVR32_V1, NULL, AVR32_PARSER_LDA,
26817 + { NULL }, NULL,
26818 + 2,
26819 + {
26820 + AVR32_OPERAND_INTREG,
26821 + AVR32_OPERAND_SIGNED_CONST,
26822 + },
26823 + },
26824 + {
26825 + AVR32_SYNTAX_CALL,
26826 + AVR32_V1, NULL, AVR32_PARSER_CALL,
26827 + { NULL }, NULL,
26828 + 1,
26829 + {
26830 + AVR32_OPERAND_JMPLABEL,
26831 + },
26832 + },
26833 + {
26834 + AVR32_SYNTAX_PICOSVMAC0,
26835 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26836 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC0] },
26837 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC1], 4,
26838 + {
26839 + AVR32_OPERAND_PICO_OUT0,
26840 + AVR32_OPERAND_PICO_IN,
26841 + AVR32_OPERAND_PICO_IN,
26842 + AVR32_OPERAND_PICO_IN,
26843 + },
26844 + },
26845 + {
26846 + AVR32_SYNTAX_PICOSVMAC1,
26847 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26848 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC1] },
26849 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC2], 4,
26850 + {
26851 + AVR32_OPERAND_PICO_OUT1,
26852 + AVR32_OPERAND_PICO_IN,
26853 + AVR32_OPERAND_PICO_IN,
26854 + AVR32_OPERAND_PICO_IN,
26855 + },
26856 + },
26857 + {
26858 + AVR32_SYNTAX_PICOSVMAC2,
26859 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26860 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC2] },
26861 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMAC3], 4,
26862 + {
26863 + AVR32_OPERAND_PICO_OUT2,
26864 + AVR32_OPERAND_PICO_IN,
26865 + AVR32_OPERAND_PICO_IN,
26866 + AVR32_OPERAND_PICO_IN,
26867 + },
26868 + },
26869 + {
26870 + AVR32_SYNTAX_PICOSVMAC3,
26871 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMAC], AVR32_PARSER_ALIAS,
26872 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMAC3] },
26873 + NULL, 4,
26874 + {
26875 + AVR32_OPERAND_PICO_OUT3,
26876 + AVR32_OPERAND_PICO_IN,
26877 + AVR32_OPERAND_PICO_IN,
26878 + AVR32_OPERAND_PICO_IN,
26879 + },
26880 + },
26881 + {
26882 + AVR32_SYNTAX_PICOSVMUL0,
26883 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26884 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL0] },
26885 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL1], 4,
26886 + {
26887 + AVR32_OPERAND_PICO_OUT0,
26888 + AVR32_OPERAND_PICO_IN,
26889 + AVR32_OPERAND_PICO_IN,
26890 + AVR32_OPERAND_PICO_IN,
26891 + },
26892 + },
26893 + {
26894 + AVR32_SYNTAX_PICOSVMUL1,
26895 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26896 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL1] },
26897 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL2], 4,
26898 + {
26899 + AVR32_OPERAND_PICO_OUT1,
26900 + AVR32_OPERAND_PICO_IN,
26901 + AVR32_OPERAND_PICO_IN,
26902 + AVR32_OPERAND_PICO_IN,
26903 + },
26904 + },
26905 + {
26906 + AVR32_SYNTAX_PICOSVMUL2,
26907 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26908 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL2] },
26909 + &avr32_syntax_table[AVR32_SYNTAX_PICOSVMUL3], 4,
26910 + {
26911 + AVR32_OPERAND_PICO_OUT2,
26912 + AVR32_OPERAND_PICO_IN,
26913 + AVR32_OPERAND_PICO_IN,
26914 + AVR32_OPERAND_PICO_IN,
26915 + },
26916 + },
26917 + {
26918 + AVR32_SYNTAX_PICOSVMUL3,
26919 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSVMUL], AVR32_PARSER_ALIAS,
26920 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSVMUL3] },
26921 + NULL, 4,
26922 + {
26923 + AVR32_OPERAND_PICO_OUT3,
26924 + AVR32_OPERAND_PICO_IN,
26925 + AVR32_OPERAND_PICO_IN,
26926 + AVR32_OPERAND_PICO_IN,
26927 + },
26928 + },
26929 + {
26930 + AVR32_SYNTAX_PICOVMAC0,
26931 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26932 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC0] },
26933 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC1], 4,
26934 + {
26935 + AVR32_OPERAND_PICO_OUT0,
26936 + AVR32_OPERAND_PICO_IN,
26937 + AVR32_OPERAND_PICO_IN,
26938 + AVR32_OPERAND_PICO_IN,
26939 + },
26940 + },
26941 + {
26942 + AVR32_SYNTAX_PICOVMAC1,
26943 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26944 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC1] },
26945 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC2], 4,
26946 + {
26947 + AVR32_OPERAND_PICO_OUT1,
26948 + AVR32_OPERAND_PICO_IN,
26949 + AVR32_OPERAND_PICO_IN,
26950 + AVR32_OPERAND_PICO_IN,
26951 + },
26952 + },
26953 + {
26954 + AVR32_SYNTAX_PICOVMAC2,
26955 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26956 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC2] },
26957 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMAC3], 4,
26958 + {
26959 + AVR32_OPERAND_PICO_OUT2,
26960 + AVR32_OPERAND_PICO_IN,
26961 + AVR32_OPERAND_PICO_IN,
26962 + AVR32_OPERAND_PICO_IN,
26963 + },
26964 + },
26965 + {
26966 + AVR32_SYNTAX_PICOVMAC3,
26967 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMAC], AVR32_PARSER_ALIAS,
26968 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMAC3] },
26969 + NULL, 4,
26970 + {
26971 + AVR32_OPERAND_PICO_OUT3,
26972 + AVR32_OPERAND_PICO_IN,
26973 + AVR32_OPERAND_PICO_IN,
26974 + AVR32_OPERAND_PICO_IN,
26975 + },
26976 + },
26977 + {
26978 + AVR32_SYNTAX_PICOVMUL0,
26979 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26980 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL0] },
26981 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL1], 4,
26982 + {
26983 + AVR32_OPERAND_PICO_OUT0,
26984 + AVR32_OPERAND_PICO_IN,
26985 + AVR32_OPERAND_PICO_IN,
26986 + AVR32_OPERAND_PICO_IN,
26987 + },
26988 + },
26989 + {
26990 + AVR32_SYNTAX_PICOVMUL1,
26991 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
26992 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL1] },
26993 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL2], 4,
26994 + {
26995 + AVR32_OPERAND_PICO_OUT1,
26996 + AVR32_OPERAND_PICO_IN,
26997 + AVR32_OPERAND_PICO_IN,
26998 + AVR32_OPERAND_PICO_IN,
26999 + },
27000 + },
27001 + {
27002 + AVR32_SYNTAX_PICOVMUL2,
27003 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27004 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL2] },
27005 + &avr32_syntax_table[AVR32_SYNTAX_PICOVMUL3], 4,
27006 + {
27007 + AVR32_OPERAND_PICO_OUT2,
27008 + AVR32_OPERAND_PICO_IN,
27009 + AVR32_OPERAND_PICO_IN,
27010 + AVR32_OPERAND_PICO_IN,
27011 + },
27012 + },
27013 + {
27014 + AVR32_SYNTAX_PICOVMUL3,
27015 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOVMUL], AVR32_PARSER_ALIAS,
27016 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOVMUL3] },
27017 + NULL, 4,
27018 + {
27019 + AVR32_OPERAND_PICO_OUT3,
27020 + AVR32_OPERAND_PICO_IN,
27021 + AVR32_OPERAND_PICO_IN,
27022 + AVR32_OPERAND_PICO_IN,
27023 + },
27024 + },
27025 + {
27026 + AVR32_SYNTAX_PICOLD_D2,
27027 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27028 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D2] },
27029 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D3], 2,
27030 + {
27031 + AVR32_OPERAND_PICO_REG_D,
27032 + AVR32_OPERAND_INTREG_PREDEC,
27033 + },
27034 + },
27035 + {
27036 + AVR32_SYNTAX_PICOLD_D3,
27037 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27038 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D3] },
27039 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_D1], 2,
27040 + {
27041 + AVR32_OPERAND_PICO_REG_D,
27042 + AVR32_OPERAND_INTREG_INDEX,
27043 + },
27044 + },
27045 + {
27046 + AVR32_SYNTAX_PICOLD_D1,
27047 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_D], AVR32_PARSER_ALIAS,
27048 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_D1] },
27049 + NULL, 2,
27050 + {
27051 + AVR32_OPERAND_PICO_REG_D,
27052 + AVR32_OPERAND_INTREG_UDISP_W,
27053 + },
27054 + },
27055 + {
27056 + AVR32_SYNTAX_PICOLD_W2,
27057 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27058 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W2] },
27059 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W3], 2,
27060 + {
27061 + AVR32_OPERAND_PICO_REG_W,
27062 + AVR32_OPERAND_INTREG_PREDEC,
27063 + },
27064 + },
27065 + {
27066 + AVR32_SYNTAX_PICOLD_W3,
27067 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27068 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W3] },
27069 + &avr32_syntax_table[AVR32_SYNTAX_PICOLD_W1], 2,
27070 + {
27071 + AVR32_OPERAND_PICO_REG_W,
27072 + AVR32_OPERAND_INTREG_INDEX,
27073 + },
27074 + },
27075 + {
27076 + AVR32_SYNTAX_PICOLD_W1,
27077 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLD_W], AVR32_PARSER_ALIAS,
27078 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLD_W1] },
27079 + NULL, 2,
27080 + {
27081 + AVR32_OPERAND_PICO_REG_W,
27082 + AVR32_OPERAND_INTREG_UDISP_W,
27083 + },
27084 + },
27085 + {
27086 + AVR32_SYNTAX_PICOLDM_D,
27087 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
27088 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D] },
27089 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_D_PU], -2,
27090 + {
27091 + AVR32_OPERAND_INTREG,
27092 + AVR32_OPERAND_PICO_REGLIST_D,
27093 + },
27094 + },
27095 + {
27096 + AVR32_SYNTAX_PICOLDM_D_PU,
27097 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_D], AVR32_PARSER_ALIAS,
27098 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_D_PU] },
27099 + NULL, -2,
27100 + {
27101 + AVR32_OPERAND_INTREG_POSTINC,
27102 + AVR32_OPERAND_PICO_REGLIST_D,
27103 + },
27104 + },
27105 + {
27106 + AVR32_SYNTAX_PICOLDM_W,
27107 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
27108 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W] },
27109 + &avr32_syntax_table[AVR32_SYNTAX_PICOLDM_W_PU], -2,
27110 + {
27111 + AVR32_OPERAND_INTREG,
27112 + AVR32_OPERAND_PICO_REGLIST_W,
27113 + },
27114 + },
27115 + {
27116 + AVR32_SYNTAX_PICOLDM_W_PU,
27117 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOLDM_W], AVR32_PARSER_ALIAS,
27118 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOLDM_W_PU] },
27119 + NULL, -2,
27120 + {
27121 + AVR32_OPERAND_INTREG_POSTINC,
27122 + AVR32_OPERAND_PICO_REGLIST_W,
27123 + },
27124 + },
27125 + {
27126 + AVR32_SYNTAX_PICOMV_D1,
27127 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
27128 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D1] },
27129 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_D2], 2,
27130 + {
27131 + AVR32_OPERAND_DWREG,
27132 + AVR32_OPERAND_PICO_REG_D,
27133 + },
27134 + },
27135 + {
27136 + AVR32_SYNTAX_PICOMV_D2,
27137 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_D], AVR32_PARSER_ALIAS,
27138 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_D2] },
27139 + NULL, 2,
27140 + {
27141 + AVR32_OPERAND_PICO_REG_D,
27142 + AVR32_OPERAND_DWREG,
27143 + },
27144 + },
27145 + {
27146 + AVR32_SYNTAX_PICOMV_W1,
27147 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
27148 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W1] },
27149 + &avr32_syntax_table[AVR32_SYNTAX_PICOMV_W2], 2,
27150 + {
27151 + AVR32_OPERAND_INTREG,
27152 + AVR32_OPERAND_PICO_REG_W,
27153 + },
27154 + },
27155 + {
27156 + AVR32_SYNTAX_PICOMV_W2,
27157 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOMV_W], AVR32_PARSER_ALIAS,
27158 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOMV_W2] },
27159 + NULL, 2,
27160 + {
27161 + AVR32_OPERAND_PICO_REG_W,
27162 + AVR32_OPERAND_INTREG,
27163 + },
27164 + },
27165 + {
27166 + AVR32_SYNTAX_PICOST_D2,
27167 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27168 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D2] },
27169 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D3], 2,
27170 + {
27171 + AVR32_OPERAND_INTREG_POSTINC,
27172 + AVR32_OPERAND_PICO_REG_D,
27173 + },
27174 + },
27175 + {
27176 + AVR32_SYNTAX_PICOST_D3,
27177 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27178 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D3] },
27179 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_D1], 2,
27180 + {
27181 + AVR32_OPERAND_INTREG_INDEX,
27182 + AVR32_OPERAND_PICO_REG_D,
27183 + },
27184 + },
27185 + {
27186 + AVR32_SYNTAX_PICOST_D1,
27187 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_D], AVR32_PARSER_ALIAS,
27188 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_D1] },
27189 + NULL, 2,
27190 + {
27191 + AVR32_OPERAND_INTREG_UDISP_W,
27192 + AVR32_OPERAND_PICO_REG_D,
27193 + },
27194 + },
27195 + {
27196 + AVR32_SYNTAX_PICOST_W2,
27197 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27198 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W2] },
27199 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W3], 2,
27200 + {
27201 + AVR32_OPERAND_INTREG_POSTINC,
27202 + AVR32_OPERAND_PICO_REG_W,
27203 + },
27204 + },
27205 + {
27206 + AVR32_SYNTAX_PICOST_W3,
27207 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27208 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W3] },
27209 + &avr32_syntax_table[AVR32_SYNTAX_PICOST_W1], 2,
27210 + {
27211 + AVR32_OPERAND_INTREG_INDEX,
27212 + AVR32_OPERAND_PICO_REG_W,
27213 + },
27214 + },
27215 + {
27216 + AVR32_SYNTAX_PICOST_W1,
27217 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOST_W], AVR32_PARSER_ALIAS,
27218 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOST_W1] },
27219 + NULL, 2,
27220 + {
27221 + AVR32_OPERAND_INTREG_UDISP_W,
27222 + AVR32_OPERAND_PICO_REG_W,
27223 + },
27224 + },
27225 + {
27226 + AVR32_SYNTAX_PICOSTM_D,
27227 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
27228 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D] },
27229 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_D_PU], -2,
27230 + {
27231 + AVR32_OPERAND_INTREG,
27232 + AVR32_OPERAND_PICO_REGLIST_D,
27233 + },
27234 + },
27235 + {
27236 + AVR32_SYNTAX_PICOSTM_D_PU,
27237 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_D], AVR32_PARSER_ALIAS,
27238 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_D_PU] },
27239 + NULL, -2,
27240 + {
27241 + AVR32_OPERAND_INTREG_PREDEC,
27242 + AVR32_OPERAND_PICO_REGLIST_D,
27243 + },
27244 + },
27245 + {
27246 + AVR32_SYNTAX_PICOSTM_W,
27247 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
27248 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W] },
27249 + &avr32_syntax_table[AVR32_SYNTAX_PICOSTM_W_PU], -2,
27250 + {
27251 + AVR32_OPERAND_INTREG,
27252 + AVR32_OPERAND_PICO_REGLIST_W,
27253 + },
27254 + },
27255 + {
27256 + AVR32_SYNTAX_PICOSTM_W_PU,
27257 + AVR32_PICO, &avr32_mnemonic_table[AVR32_MNEMONIC_PICOSTM_W], AVR32_PARSER_ALIAS,
27258 + { .alias = &avr32_alias_table[AVR32_ALIAS_PICOSTM_W_PU] },
27259 + NULL, -2,
27260 + {
27261 + AVR32_OPERAND_INTREG_PREDEC,
27262 + AVR32_OPERAND_PICO_REGLIST_W,
27263 + },
27264 + },
27265 + SYNTAX_NORMAL2(RSUBEQ, RSUBEQ, RSUBEQ, INTREG, SIGNED_CONST, AVR32_V1),
27266 + SYNTAX_NORMAL2(RSUBNE, RSUBNE, RSUBNE, INTREG, SIGNED_CONST, AVR32_V2),
27267 + SYNTAX_NORMAL2(RSUBCC, RSUBCC, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
27268 + SYNTAX_NORMAL2(RSUBCS, RSUBCS, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
27269 + SYNTAX_NORMAL2(RSUBGE, RSUBGE, RSUBGE, INTREG, SIGNED_CONST, AVR32_V2),
27270 + SYNTAX_NORMAL2(RSUBLT, RSUBLT, RSUBLT, INTREG, SIGNED_CONST, AVR32_V2),
27271 + SYNTAX_NORMAL2(RSUBMI, RSUBMI, RSUBMI, INTREG, SIGNED_CONST, AVR32_V2),
27272 + SYNTAX_NORMAL2(RSUBPL, RSUBPL, RSUBPL, INTREG, SIGNED_CONST, AVR32_V2),
27273 + SYNTAX_NORMAL2(RSUBLS, RSUBLS, RSUBLS, INTREG, SIGNED_CONST, AVR32_V2),
27274 + SYNTAX_NORMAL2(RSUBGT, RSUBGT, RSUBGT, INTREG, SIGNED_CONST, AVR32_V2),
27275 + SYNTAX_NORMAL2(RSUBLE, RSUBLE, RSUBLE, INTREG, SIGNED_CONST, AVR32_V2),
27276 + SYNTAX_NORMAL2(RSUBHI, RSUBHI, RSUBHI, INTREG, SIGNED_CONST, AVR32_V2),
27277 + SYNTAX_NORMAL2(RSUBVS, RSUBVS, RSUBVS, INTREG, SIGNED_CONST, AVR32_V2),
27278 + SYNTAX_NORMAL2(RSUBVC, RSUBVC, RSUBVC, INTREG, SIGNED_CONST, AVR32_V2),
27279 + SYNTAX_NORMAL2(RSUBQS, RSUBQS, RSUBQS, INTREG, SIGNED_CONST, AVR32_V2),
27280 + SYNTAX_NORMAL2(RSUBAL, RSUBAL, RSUBAL, INTREG, SIGNED_CONST, AVR32_V2),
27281 + SYNTAX_NORMAL2(RSUBHS, RSUBHS, RSUBCC, INTREG, SIGNED_CONST, AVR32_V2),
27282 + SYNTAX_NORMAL2(RSUBLO, RSUBLO, RSUBCS, INTREG, SIGNED_CONST, AVR32_V2),
27283 + SYNTAX_NORMAL3(ADDEQ, ADDEQ, ADDEQ, INTREG, INTREG, INTREG, AVR32_V2),
27284 + SYNTAX_NORMAL3(ADDNE, ADDNE, ADDNE, INTREG, INTREG, INTREG, AVR32_V2),
27285 + SYNTAX_NORMAL3(ADDCC, ADDCC, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
27286 + SYNTAX_NORMAL3(ADDCS, ADDCS, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
27287 + SYNTAX_NORMAL3(ADDGE, ADDGE, ADDGE, INTREG, INTREG, INTREG, AVR32_V2),
27288 + SYNTAX_NORMAL3(ADDLT, ADDLT, ADDLT, INTREG, INTREG, INTREG, AVR32_V2),
27289 + SYNTAX_NORMAL3(ADDMI, ADDMI, ADDMI, INTREG, INTREG, INTREG, AVR32_V2),
27290 + SYNTAX_NORMAL3(ADDPL, ADDPL, ADDPL, INTREG, INTREG, INTREG, AVR32_V2),
27291 + SYNTAX_NORMAL3(ADDLS, ADDLS, ADDLS, INTREG, INTREG, INTREG, AVR32_V2),
27292 + SYNTAX_NORMAL3(ADDGT, ADDGT, ADDGT, INTREG, INTREG, INTREG, AVR32_V2),
27293 + SYNTAX_NORMAL3(ADDLE, ADDLE, ADDLE, INTREG, INTREG, INTREG, AVR32_V2),
27294 + SYNTAX_NORMAL3(ADDHI, ADDHI, ADDHI, INTREG, INTREG, INTREG, AVR32_V2),
27295 + SYNTAX_NORMAL3(ADDVS, ADDVS, ADDVS, INTREG, INTREG, INTREG, AVR32_V2),
27296 + SYNTAX_NORMAL3(ADDVC, ADDVC, ADDVC, INTREG, INTREG, INTREG, AVR32_V2),
27297 + SYNTAX_NORMAL3(ADDQS, ADDQS, ADDQS, INTREG, INTREG, INTREG, AVR32_V2),
27298 + SYNTAX_NORMAL3(ADDAL, ADDAL, ADDAL, INTREG, INTREG, INTREG, AVR32_V2),
27299 + SYNTAX_NORMAL3(ADDHS, ADDHS, ADDCC, INTREG, INTREG, INTREG, AVR32_V2),
27300 + SYNTAX_NORMAL3(ADDLO, ADDLO, ADDCS, INTREG, INTREG, INTREG, AVR32_V2),
27301 + SYNTAX_NORMAL3(SUB2EQ, SUBEQ, SUB2EQ, INTREG, INTREG, INTREG, AVR32_V2),
27302 + SYNTAX_NORMAL3(SUB2NE, SUBNE, SUB2NE, INTREG, INTREG, INTREG, AVR32_V2),
27303 + SYNTAX_NORMAL3(SUB2CC, SUBCC, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
27304 + SYNTAX_NORMAL3(SUB2CS, SUBCS, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
27305 + SYNTAX_NORMAL3(SUB2GE, SUBGE, SUB2GE, INTREG, INTREG, INTREG, AVR32_V2),
27306 + SYNTAX_NORMAL3(SUB2LT, SUBLT, SUB2LT, INTREG, INTREG, INTREG, AVR32_V2),
27307 + SYNTAX_NORMAL3(SUB2MI, SUBMI, SUB2MI, INTREG, INTREG, INTREG, AVR32_V2),
27308 + SYNTAX_NORMAL3(SUB2PL, SUBPL, SUB2PL, INTREG, INTREG, INTREG, AVR32_V2),
27309 + SYNTAX_NORMAL3(SUB2LS, SUBLS, SUB2LS, INTREG, INTREG, INTREG, AVR32_V2),
27310 + SYNTAX_NORMAL3(SUB2GT, SUBGT, SUB2GT, INTREG, INTREG, INTREG, AVR32_V2),
27311 + SYNTAX_NORMAL3(SUB2LE, SUBLE, SUB2LE, INTREG, INTREG, INTREG, AVR32_V2),
27312 + SYNTAX_NORMAL3(SUB2HI, SUBHI, SUB2HI, INTREG, INTREG, INTREG, AVR32_V2),
27313 + SYNTAX_NORMAL3(SUB2VS, SUBVS, SUB2VS, INTREG, INTREG, INTREG, AVR32_V2),
27314 + SYNTAX_NORMAL3(SUB2VC, SUBVC, SUB2VC, INTREG, INTREG, INTREG, AVR32_V2),
27315 + SYNTAX_NORMAL3(SUB2QS, SUBQS, SUB2QS, INTREG, INTREG, INTREG, AVR32_V2),
27316 + SYNTAX_NORMAL3(SUB2AL, SUBAL, SUB2AL, INTREG, INTREG, INTREG, AVR32_V2),
27317 + SYNTAX_NORMAL3(SUB2HS, SUBHS, SUB2CC, INTREG, INTREG, INTREG, AVR32_V2),
27318 + SYNTAX_NORMAL3(SUB2LO, SUBLO, SUB2CS, INTREG, INTREG, INTREG, AVR32_V2),
27319 + SYNTAX_NORMAL3(ANDEQ, ANDEQ, ANDEQ, INTREG, INTREG, INTREG, AVR32_V2),
27320 + SYNTAX_NORMAL3(ANDNE, ANDNE, ANDNE, INTREG, INTREG, INTREG, AVR32_V2),
27321 + SYNTAX_NORMAL3(ANDCC, ANDCC, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
27322 + SYNTAX_NORMAL3(ANDCS, ANDCS, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
27323 + SYNTAX_NORMAL3(ANDGE, ANDGE, ANDGE, INTREG, INTREG, INTREG, AVR32_V2),
27324 + SYNTAX_NORMAL3(ANDLT, ANDLT, ANDLT, INTREG, INTREG, INTREG, AVR32_V2),
27325 + SYNTAX_NORMAL3(ANDMI, ANDMI, ANDMI, INTREG, INTREG, INTREG, AVR32_V2),
27326 + SYNTAX_NORMAL3(ANDPL, ANDPL, ANDPL, INTREG, INTREG, INTREG, AVR32_V2),
27327 + SYNTAX_NORMAL3(ANDLS, ANDLS, ANDLS, INTREG, INTREG, INTREG, AVR32_V2),
27328 + SYNTAX_NORMAL3(ANDGT, ANDGT, ANDGT, INTREG, INTREG, INTREG, AVR32_V2),
27329 + SYNTAX_NORMAL3(ANDLE, ANDLE, ANDLE, INTREG, INTREG, INTREG, AVR32_V2),
27330 + SYNTAX_NORMAL3(ANDHI, ANDHI, ANDHI, INTREG, INTREG, INTREG, AVR32_V2),
27331 + SYNTAX_NORMAL3(ANDVS, ANDVS, ANDVS, INTREG, INTREG, INTREG, AVR32_V2),
27332 + SYNTAX_NORMAL3(ANDVC, ANDVC, ANDVC, INTREG, INTREG, INTREG, AVR32_V2),
27333 + SYNTAX_NORMAL3(ANDQS, ANDQS, ANDQS, INTREG, INTREG, INTREG, AVR32_V2),
27334 + SYNTAX_NORMAL3(ANDAL, ANDAL, ANDAL, INTREG, INTREG, INTREG, AVR32_V2),
27335 + SYNTAX_NORMAL3(ANDHS, ANDHS, ANDCC, INTREG, INTREG, INTREG, AVR32_V2),
27336 + SYNTAX_NORMAL3(ANDLO, ANDLO, ANDCS, INTREG, INTREG, INTREG, AVR32_V2),
27337 + SYNTAX_NORMAL3(OREQ, OREQ, OREQ, INTREG, INTREG, INTREG, AVR32_V2),
27338 + SYNTAX_NORMAL3(ORNE, ORNE, ORNE, INTREG, INTREG, INTREG, AVR32_V2),
27339 + SYNTAX_NORMAL3(ORCC, ORCC, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
27340 + SYNTAX_NORMAL3(ORCS, ORCS, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
27341 + SYNTAX_NORMAL3(ORGE, ORGE, ORGE, INTREG, INTREG, INTREG, AVR32_V2),
27342 + SYNTAX_NORMAL3(ORLT, ORLT, ORLT, INTREG, INTREG, INTREG, AVR32_V2),
27343 + SYNTAX_NORMAL3(ORMI, ORMI, ORMI, INTREG, INTREG, INTREG, AVR32_V2),
27344 + SYNTAX_NORMAL3(ORPL, ORPL, ORPL, INTREG, INTREG, INTREG, AVR32_V2),
27345 + SYNTAX_NORMAL3(ORLS, ORLS, ORLS, INTREG, INTREG, INTREG, AVR32_V2),
27346 + SYNTAX_NORMAL3(ORGT, ORGT, ORGT, INTREG, INTREG, INTREG, AVR32_V2),
27347 + SYNTAX_NORMAL3(ORLE, ORLE, ORLE, INTREG, INTREG, INTREG, AVR32_V2),
27348 + SYNTAX_NORMAL3(ORHI, ORHI, ORHI, INTREG, INTREG, INTREG, AVR32_V2),
27349 + SYNTAX_NORMAL3(ORVS, ORVS, ORVS, INTREG, INTREG, INTREG, AVR32_V2),
27350 + SYNTAX_NORMAL3(ORVC, ORVC, ORVC, INTREG, INTREG, INTREG, AVR32_V2),
27351 + SYNTAX_NORMAL3(ORQS, ORQS, ORQS, INTREG, INTREG, INTREG, AVR32_V2),
27352 + SYNTAX_NORMAL3(ORAL, ORAL, ORAL, INTREG, INTREG, INTREG, AVR32_V2),
27353 + SYNTAX_NORMAL3(ORHS, ORHS, ORCC, INTREG, INTREG, INTREG, AVR32_V2),
27354 + SYNTAX_NORMAL3(ORLO, ORLO, ORCS, INTREG, INTREG, INTREG, AVR32_V2),
27355 + SYNTAX_NORMAL3(EOREQ, EOREQ, EOREQ, INTREG, INTREG, INTREG, AVR32_V2),
27356 + SYNTAX_NORMAL3(EORNE, EORNE, EORNE, INTREG, INTREG, INTREG, AVR32_V2),
27357 + SYNTAX_NORMAL3(EORCC, EORCC, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
27358 + SYNTAX_NORMAL3(EORCS, EORCS, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
27359 + SYNTAX_NORMAL3(EORGE, EORGE, EORGE, INTREG, INTREG, INTREG, AVR32_V2),
27360 + SYNTAX_NORMAL3(EORLT, EORLT, EORLT, INTREG, INTREG, INTREG, AVR32_V2),
27361 + SYNTAX_NORMAL3(EORMI, EORMI, EORMI, INTREG, INTREG, INTREG, AVR32_V2),
27362 + SYNTAX_NORMAL3(EORPL, EORPL, EORPL, INTREG, INTREG, INTREG, AVR32_V2),
27363 + SYNTAX_NORMAL3(EORLS, EORLS, EORLS, INTREG, INTREG, INTREG, AVR32_V2),
27364 + SYNTAX_NORMAL3(EORGT, EORGT, EORGT, INTREG, INTREG, INTREG, AVR32_V2),
27365 + SYNTAX_NORMAL3(EORLE, EORLE, EORLE, INTREG, INTREG, INTREG, AVR32_V2),
27366 + SYNTAX_NORMAL3(EORHI, EORHI, EORHI, INTREG, INTREG, INTREG, AVR32_V2),
27367 + SYNTAX_NORMAL3(EORVS, EORVS, EORVS, INTREG, INTREG, INTREG, AVR32_V2),
27368 + SYNTAX_NORMAL3(EORVC, EORVC, EORVC, INTREG, INTREG, INTREG, AVR32_V2),
27369 + SYNTAX_NORMAL3(EORQS, EORQS, EORQS, INTREG, INTREG, INTREG, AVR32_V2),
27370 + SYNTAX_NORMAL3(EORAL, EORAL, EORAL, INTREG, INTREG, INTREG, AVR32_V2),
27371 + SYNTAX_NORMAL3(EORHS, EORHS, EORCC, INTREG, INTREG, INTREG, AVR32_V2),
27372 + SYNTAX_NORMAL3(EORLO, EORLO, EORCS, INTREG, INTREG, INTREG, AVR32_V2),
27373 + SYNTAX_NORMAL2(LD_WEQ, LD_WEQ, LD_WEQ, INTREG, INTREG_UDISP_W, AVR32_V2),
27374 + SYNTAX_NORMAL2(LD_WNE, LD_WNE, LD_WNE, INTREG, INTREG_UDISP_W, AVR32_V2),
27375 + SYNTAX_NORMAL2(LD_WCC, LD_WCC, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
27376 + SYNTAX_NORMAL2(LD_WCS, LD_WCS, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
27377 + SYNTAX_NORMAL2(LD_WGE, LD_WGE, LD_WGE, INTREG, INTREG_UDISP_W, AVR32_V2),
27378 + SYNTAX_NORMAL2(LD_WLT, LD_WLT, LD_WLT, INTREG, INTREG_UDISP_W, AVR32_V2),
27379 + SYNTAX_NORMAL2(LD_WMI, LD_WMI, LD_WMI, INTREG, INTREG_UDISP_W, AVR32_V2),
27380 + SYNTAX_NORMAL2(LD_WPL, LD_WPL, LD_WPL, INTREG, INTREG_UDISP_W, AVR32_V2),
27381 + SYNTAX_NORMAL2(LD_WLS, LD_WLS, LD_WLS, INTREG, INTREG_UDISP_W, AVR32_V2),
27382 + SYNTAX_NORMAL2(LD_WGT, LD_WGT, LD_WGT, INTREG, INTREG_UDISP_W, AVR32_V2),
27383 + SYNTAX_NORMAL2(LD_WLE, LD_WLE, LD_WLE, INTREG, INTREG_UDISP_W, AVR32_V2),
27384 + SYNTAX_NORMAL2(LD_WHI, LD_WHI, LD_WHI, INTREG, INTREG_UDISP_W, AVR32_V2),
27385 + SYNTAX_NORMAL2(LD_WVS, LD_WVS, LD_WVS, INTREG, INTREG_UDISP_W, AVR32_V2),
27386 + SYNTAX_NORMAL2(LD_WVC, LD_WVC, LD_WVC, INTREG, INTREG_UDISP_W, AVR32_V2),
27387 + SYNTAX_NORMAL2(LD_WQS, LD_WQS, LD_WQS, INTREG, INTREG_UDISP_W, AVR32_V2),
27388 + SYNTAX_NORMAL2(LD_WAL, LD_WAL, LD_WAL, INTREG, INTREG_UDISP_W, AVR32_V2),
27389 + SYNTAX_NORMAL2(LD_WHS, LD_WHS, LD_WCC, INTREG, INTREG_UDISP_W, AVR32_V2),
27390 + SYNTAX_NORMAL2(LD_WLO, LD_WLO, LD_WCS, INTREG, INTREG_UDISP_W, AVR32_V2),
27391 + SYNTAX_NORMAL2(LD_SHEQ, LD_SHEQ, LD_SHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
27392 + SYNTAX_NORMAL2(LD_SHNE, LD_SHNE, LD_SHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
27393 + SYNTAX_NORMAL2(LD_SHCC, LD_SHCC, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27394 + SYNTAX_NORMAL2(LD_SHCS, LD_SHCS, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27395 + SYNTAX_NORMAL2(LD_SHGE, LD_SHGE, LD_SHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
27396 + SYNTAX_NORMAL2(LD_SHLT, LD_SHLT, LD_SHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
27397 + SYNTAX_NORMAL2(LD_SHMI, LD_SHMI, LD_SHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
27398 + SYNTAX_NORMAL2(LD_SHPL, LD_SHPL, LD_SHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
27399 + SYNTAX_NORMAL2(LD_SHLS, LD_SHLS, LD_SHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
27400 + SYNTAX_NORMAL2(LD_SHGT, LD_SHGT, LD_SHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
27401 + SYNTAX_NORMAL2(LD_SHLE, LD_SHLE, LD_SHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
27402 + SYNTAX_NORMAL2(LD_SHHI, LD_SHHI, LD_SHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
27403 + SYNTAX_NORMAL2(LD_SHVS, LD_SHVS, LD_SHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
27404 + SYNTAX_NORMAL2(LD_SHVC, LD_SHVC, LD_SHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
27405 + SYNTAX_NORMAL2(LD_SHQS, LD_SHQS, LD_SHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
27406 + SYNTAX_NORMAL2(LD_SHAL, LD_SHAL, LD_SHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
27407 + SYNTAX_NORMAL2(LD_SHHS, LD_SHHS, LD_SHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27408 + SYNTAX_NORMAL2(LD_SHLO, LD_SHLO, LD_SHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27409 + SYNTAX_NORMAL2(LD_UHEQ, LD_UHEQ, LD_UHEQ, INTREG, INTREG_UDISP_H, AVR32_V2),
27410 + SYNTAX_NORMAL2(LD_UHNE, LD_UHNE, LD_UHNE, INTREG, INTREG_UDISP_H, AVR32_V2),
27411 + SYNTAX_NORMAL2(LD_UHCC, LD_UHCC, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27412 + SYNTAX_NORMAL2(LD_UHCS, LD_UHCS, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27413 + SYNTAX_NORMAL2(LD_UHGE, LD_UHGE, LD_UHGE, INTREG, INTREG_UDISP_H, AVR32_V2),
27414 + SYNTAX_NORMAL2(LD_UHLT, LD_UHLT, LD_UHLT, INTREG, INTREG_UDISP_H, AVR32_V2),
27415 + SYNTAX_NORMAL2(LD_UHMI, LD_UHMI, LD_UHMI, INTREG, INTREG_UDISP_H, AVR32_V2),
27416 + SYNTAX_NORMAL2(LD_UHPL, LD_UHPL, LD_UHPL, INTREG, INTREG_UDISP_H, AVR32_V2),
27417 + SYNTAX_NORMAL2(LD_UHLS, LD_UHLS, LD_UHLS, INTREG, INTREG_UDISP_H, AVR32_V2),
27418 + SYNTAX_NORMAL2(LD_UHGT, LD_UHGT, LD_UHGT, INTREG, INTREG_UDISP_H, AVR32_V2),
27419 + SYNTAX_NORMAL2(LD_UHLE, LD_UHLE, LD_UHLE, INTREG, INTREG_UDISP_H, AVR32_V2),
27420 + SYNTAX_NORMAL2(LD_UHHI, LD_UHHI, LD_UHHI, INTREG, INTREG_UDISP_H, AVR32_V2),
27421 + SYNTAX_NORMAL2(LD_UHVS, LD_UHVS, LD_UHVS, INTREG, INTREG_UDISP_H, AVR32_V2),
27422 + SYNTAX_NORMAL2(LD_UHVC, LD_UHVC, LD_UHVC, INTREG, INTREG_UDISP_H, AVR32_V2),
27423 + SYNTAX_NORMAL2(LD_UHQS, LD_UHQS, LD_UHQS, INTREG, INTREG_UDISP_H, AVR32_V2),
27424 + SYNTAX_NORMAL2(LD_UHAL, LD_UHAL, LD_UHAL, INTREG, INTREG_UDISP_H, AVR32_V2),
27425 + SYNTAX_NORMAL2(LD_UHHS, LD_UHHS, LD_UHCC, INTREG, INTREG_UDISP_H, AVR32_V2),
27426 + SYNTAX_NORMAL2(LD_UHLO, LD_UHLO, LD_UHCS, INTREG, INTREG_UDISP_H, AVR32_V2),
27427 + SYNTAX_NORMAL2(LD_SBEQ, LD_SBEQ, LD_SBEQ, INTREG, INTREG_UDISP, AVR32_V2),
27428 + SYNTAX_NORMAL2(LD_SBNE, LD_SBNE, LD_SBNE, INTREG, INTREG_UDISP, AVR32_V2),
27429 + SYNTAX_NORMAL2(LD_SBCC, LD_SBCC, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
27430 + SYNTAX_NORMAL2(LD_SBCS, LD_SBCS, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
27431 + SYNTAX_NORMAL2(LD_SBGE, LD_SBGE, LD_SBGE, INTREG, INTREG_UDISP, AVR32_V2),
27432 + SYNTAX_NORMAL2(LD_SBLT, LD_SBLT, LD_SBLT, INTREG, INTREG_UDISP, AVR32_V2),
27433 + SYNTAX_NORMAL2(LD_SBMI, LD_SBMI, LD_SBMI, INTREG, INTREG_UDISP, AVR32_V2),
27434 + SYNTAX_NORMAL2(LD_SBPL, LD_SBPL, LD_SBPL, INTREG, INTREG_UDISP, AVR32_V2),
27435 + SYNTAX_NORMAL2(LD_SBLS, LD_SBLS, LD_SBLS, INTREG, INTREG_UDISP, AVR32_V2),
27436 + SYNTAX_NORMAL2(LD_SBGT, LD_SBGT, LD_SBGT, INTREG, INTREG_UDISP, AVR32_V2),
27437 + SYNTAX_NORMAL2(LD_SBLE, LD_SBLE, LD_SBLE, INTREG, INTREG_UDISP, AVR32_V2),
27438 + SYNTAX_NORMAL2(LD_SBHI, LD_SBHI, LD_SBHI, INTREG, INTREG_UDISP, AVR32_V2),
27439 + SYNTAX_NORMAL2(LD_SBVS, LD_SBVS, LD_SBVS, INTREG, INTREG_UDISP, AVR32_V2),
27440 + SYNTAX_NORMAL2(LD_SBVC, LD_SBVC, LD_SBVC, INTREG, INTREG_UDISP, AVR32_V2),
27441 + SYNTAX_NORMAL2(LD_SBQS, LD_SBQS, LD_SBQS, INTREG, INTREG_UDISP, AVR32_V2),
27442 + SYNTAX_NORMAL2(LD_SBAL, LD_SBAL, LD_SBAL, INTREG, INTREG_UDISP, AVR32_V2),
27443 + SYNTAX_NORMAL2(LD_SBHS, LD_SBHS, LD_SBCC, INTREG, INTREG_UDISP, AVR32_V2),
27444 + SYNTAX_NORMAL2(LD_SBLO, LD_SBLO, LD_SBCS, INTREG, INTREG_UDISP, AVR32_V2),
27445 + SYNTAX_NORMAL2(LD_UBEQ, LD_UBEQ, LD_UBEQ, INTREG, INTREG_UDISP, AVR32_V2),
27446 + SYNTAX_NORMAL2(LD_UBNE, LD_UBNE, LD_UBNE, INTREG, INTREG_UDISP, AVR32_V2),
27447 + SYNTAX_NORMAL2(LD_UBCC, LD_UBCC, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
27448 + SYNTAX_NORMAL2(LD_UBCS, LD_UBCS, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
27449 + SYNTAX_NORMAL2(LD_UBGE, LD_UBGE, LD_UBGE, INTREG, INTREG_UDISP, AVR32_V2),
27450 + SYNTAX_NORMAL2(LD_UBLT, LD_UBLT, LD_UBLT, INTREG, INTREG_UDISP, AVR32_V2),
27451 + SYNTAX_NORMAL2(LD_UBMI, LD_UBMI, LD_UBMI, INTREG, INTREG_UDISP, AVR32_V2),
27452 + SYNTAX_NORMAL2(LD_UBPL, LD_UBPL, LD_UBPL, INTREG, INTREG_UDISP, AVR32_V2),
27453 + SYNTAX_NORMAL2(LD_UBLS, LD_UBLS, LD_UBLS, INTREG, INTREG_UDISP, AVR32_V2),
27454 + SYNTAX_NORMAL2(LD_UBGT, LD_UBGT, LD_UBGT, INTREG, INTREG_UDISP, AVR32_V2),
27455 + SYNTAX_NORMAL2(LD_UBLE, LD_UBLE, LD_UBLE, INTREG, INTREG_UDISP, AVR32_V2),
27456 + SYNTAX_NORMAL2(LD_UBHI, LD_UBHI, LD_UBHI, INTREG, INTREG_UDISP, AVR32_V2),
27457 + SYNTAX_NORMAL2(LD_UBVS, LD_UBVS, LD_UBVS, INTREG, INTREG_UDISP, AVR32_V2),
27458 + SYNTAX_NORMAL2(LD_UBVC, LD_UBVC, LD_UBVC, INTREG, INTREG_UDISP, AVR32_V2),
27459 + SYNTAX_NORMAL2(LD_UBQS, LD_UBQS, LD_UBQS, INTREG, INTREG_UDISP, AVR32_V2),
27460 + SYNTAX_NORMAL2(LD_UBAL, LD_UBAL, LD_UBAL, INTREG, INTREG_UDISP, AVR32_V2),
27461 + SYNTAX_NORMAL2(LD_UBHS, LD_UBHS, LD_UBCC, INTREG, INTREG_UDISP, AVR32_V2),
27462 + SYNTAX_NORMAL2(LD_UBLO, LD_UBLO, LD_UBCS, INTREG, INTREG_UDISP, AVR32_V2),
27463 + SYNTAX_NORMAL2(ST_WEQ, ST_WEQ, ST_WEQ, INTREG_UDISP_W, INTREG, AVR32_V2),
27464 + SYNTAX_NORMAL2(ST_WNE, ST_WNE, ST_WNE, INTREG_UDISP_W, INTREG, AVR32_V2),
27465 + SYNTAX_NORMAL2(ST_WCC, ST_WCC, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27466 + SYNTAX_NORMAL2(ST_WCS, ST_WCS, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27467 + SYNTAX_NORMAL2(ST_WGE, ST_WGE, ST_WGE, INTREG_UDISP_W, INTREG, AVR32_V2),
27468 + SYNTAX_NORMAL2(ST_WLT, ST_WLT, ST_WLT, INTREG_UDISP_W, INTREG, AVR32_V2),
27469 + SYNTAX_NORMAL2(ST_WMI, ST_WMI, ST_WMI, INTREG_UDISP_W, INTREG, AVR32_V2),
27470 + SYNTAX_NORMAL2(ST_WPL, ST_WPL, ST_WPL, INTREG_UDISP_W, INTREG, AVR32_V2),
27471 + SYNTAX_NORMAL2(ST_WLS, ST_WLS, ST_WLS, INTREG_UDISP_W, INTREG, AVR32_V2),
27472 + SYNTAX_NORMAL2(ST_WGT, ST_WGT, ST_WGT, INTREG_UDISP_W, INTREG, AVR32_V2),
27473 + SYNTAX_NORMAL2(ST_WLE, ST_WLE, ST_WLE, INTREG_UDISP_W, INTREG, AVR32_V2),
27474 + SYNTAX_NORMAL2(ST_WHI, ST_WHI, ST_WHI, INTREG_UDISP_W, INTREG, AVR32_V2),
27475 + SYNTAX_NORMAL2(ST_WVS, ST_WVS, ST_WVS, INTREG_UDISP_W, INTREG, AVR32_V2),
27476 + SYNTAX_NORMAL2(ST_WVC, ST_WVC, ST_WVC, INTREG_UDISP_W, INTREG, AVR32_V2),
27477 + SYNTAX_NORMAL2(ST_WQS, ST_WQS, ST_WQS, INTREG_UDISP_W, INTREG, AVR32_V2),
27478 + SYNTAX_NORMAL2(ST_WAL, ST_WAL, ST_WAL, INTREG_UDISP_W, INTREG, AVR32_V2),
27479 + SYNTAX_NORMAL2(ST_WHS, ST_WHS, ST_WCC, INTREG_UDISP_W, INTREG, AVR32_V2),
27480 + SYNTAX_NORMAL2(ST_WLO, ST_WLO, ST_WCS, INTREG_UDISP_W, INTREG, AVR32_V2),
27481 + SYNTAX_NORMAL2(ST_HEQ, ST_HEQ, ST_HEQ, INTREG_UDISP_H, INTREG, AVR32_V2),
27482 + SYNTAX_NORMAL2(ST_HNE, ST_HNE, ST_HNE, INTREG_UDISP_H, INTREG, AVR32_V2),
27483 + SYNTAX_NORMAL2(ST_HCC, ST_HCC, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27484 + SYNTAX_NORMAL2(ST_HCS, ST_HCS, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27485 + SYNTAX_NORMAL2(ST_HGE, ST_HGE, ST_HGE, INTREG_UDISP_H, INTREG, AVR32_V2),
27486 + SYNTAX_NORMAL2(ST_HLT, ST_HLT, ST_HLT, INTREG_UDISP_H, INTREG, AVR32_V2),
27487 + SYNTAX_NORMAL2(ST_HMI, ST_HMI, ST_HMI, INTREG_UDISP_H, INTREG, AVR32_V2),
27488 + SYNTAX_NORMAL2(ST_HPL, ST_HPL, ST_HPL, INTREG_UDISP_H, INTREG, AVR32_V2),
27489 + SYNTAX_NORMAL2(ST_HLS, ST_HLS, ST_HLS, INTREG_UDISP_H, INTREG, AVR32_V2),
27490 + SYNTAX_NORMAL2(ST_HGT, ST_HGT, ST_HGT, INTREG_UDISP_H, INTREG, AVR32_V2),
27491 + SYNTAX_NORMAL2(ST_HLE, ST_HLE, ST_HLE, INTREG_UDISP_H, INTREG, AVR32_V2),
27492 + SYNTAX_NORMAL2(ST_HHI, ST_HHI, ST_HHI, INTREG_UDISP_H, INTREG, AVR32_V2),
27493 + SYNTAX_NORMAL2(ST_HVS, ST_HVS, ST_HVS, INTREG_UDISP_H, INTREG, AVR32_V2),
27494 + SYNTAX_NORMAL2(ST_HVC, ST_HVC, ST_HVC, INTREG_UDISP_H, INTREG, AVR32_V2),
27495 + SYNTAX_NORMAL2(ST_HQS, ST_HQS, ST_HQS, INTREG_UDISP_H, INTREG, AVR32_V2),
27496 + SYNTAX_NORMAL2(ST_HAL, ST_HAL, ST_HAL, INTREG_UDISP_H, INTREG, AVR32_V2),
27497 + SYNTAX_NORMAL2(ST_HHS, ST_HHS, ST_HCC, INTREG_UDISP_H, INTREG, AVR32_V2),
27498 + SYNTAX_NORMAL2(ST_HLO, ST_HLO, ST_HCS, INTREG_UDISP_H, INTREG, AVR32_V2),
27499 + SYNTAX_NORMAL2(ST_BEQ, ST_BEQ, ST_BEQ, INTREG_UDISP, INTREG, AVR32_V2),
27500 + SYNTAX_NORMAL2(ST_BNE, ST_BNE, ST_BNE, INTREG_UDISP, INTREG, AVR32_V2),
27501 + SYNTAX_NORMAL2(ST_BCC, ST_BCC, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27502 + SYNTAX_NORMAL2(ST_BCS, ST_BCS, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27503 + SYNTAX_NORMAL2(ST_BGE, ST_BGE, ST_BGE, INTREG_UDISP, INTREG, AVR32_V2),
27504 + SYNTAX_NORMAL2(ST_BLT, ST_BLT, ST_BLT, INTREG_UDISP, INTREG, AVR32_V2),
27505 + SYNTAX_NORMAL2(ST_BMI, ST_BMI, ST_BMI, INTREG_UDISP, INTREG, AVR32_V2),
27506 + SYNTAX_NORMAL2(ST_BPL, ST_BPL, ST_BPL, INTREG_UDISP, INTREG, AVR32_V2),
27507 + SYNTAX_NORMAL2(ST_BLS, ST_BLS, ST_BLS, INTREG_UDISP, INTREG, AVR32_V2),
27508 + SYNTAX_NORMAL2(ST_BGT, ST_BGT, ST_BGT, INTREG_UDISP, INTREG, AVR32_V2),
27509 + SYNTAX_NORMAL2(ST_BLE, ST_BLE, ST_BLE, INTREG_UDISP, INTREG, AVR32_V2),
27510 + SYNTAX_NORMAL2(ST_BHI, ST_BHI, ST_BHI, INTREG_UDISP, INTREG, AVR32_V2),
27511 + SYNTAX_NORMAL2(ST_BVS, ST_BVS, ST_BVS, INTREG_UDISP, INTREG, AVR32_V2),
27512 + SYNTAX_NORMAL2(ST_BVC, ST_BVC, ST_BVC, INTREG_UDISP, INTREG, AVR32_V2),
27513 + SYNTAX_NORMAL2(ST_BQS, ST_BQS, ST_BQS, INTREG_UDISP, INTREG, AVR32_V2),
27514 + SYNTAX_NORMAL2(ST_BAL, ST_BAL, ST_BAL, INTREG_UDISP, INTREG, AVR32_V2),
27515 + SYNTAX_NORMAL2(ST_BHS, ST_BHS, ST_BCC, INTREG_UDISP, INTREG, AVR32_V2),
27516 + SYNTAX_NORMAL2(ST_BLO, ST_BLO, ST_BCS, INTREG_UDISP, INTREG, AVR32_V2),
27517 + SYNTAX_NORMAL2(MOVH, MOVH, MOVH, INTREG, UNSIGNED_CONST, AVR32_V2),
27518 +
27519 + };
27520 +
27521 +#define NORMAL_MNEMONIC(name, syntax, str) \
27522 + { \
27523 + AVR32_MNEMONIC_##name, str, \
27524 + &avr32_syntax_table[AVR32_SYNTAX_##syntax], \
27525 + }
27526 +#define FP_MNEMONIC(name, syntax, str) \
27527 + NORMAL_MNEMONIC(name##_S, syntax##_S, str ".s"), \
27528 + NORMAL_MNEMONIC(name##_D, syntax##_D, str ".d")
27529 +
27530 +const struct avr32_mnemonic avr32_mnemonic_table[] =
27531 + {
27532 + NORMAL_MNEMONIC(ABS, ABS, "abs"),
27533 + NORMAL_MNEMONIC(ACALL, ACALL, "acall"),
27534 + NORMAL_MNEMONIC(ACR, ACR, "acr"),
27535 + NORMAL_MNEMONIC(ADC, ADC, "adc"),
27536 + NORMAL_MNEMONIC(ADD, ADD1, "add"),
27537 + NORMAL_MNEMONIC(ADDABS, ADDABS, "addabs"),
27538 + NORMAL_MNEMONIC(ADDHH_W, ADDHH_W, "addhh.w"),
27539 + NORMAL_MNEMONIC(AND, AND1, "and"),
27540 + NORMAL_MNEMONIC(ANDH, ANDH, "andh"),
27541 + NORMAL_MNEMONIC(ANDL, ANDL, "andl"),
27542 + NORMAL_MNEMONIC(ANDN, ANDN, "andn"),
27543 + NORMAL_MNEMONIC(ASR, ASR1, "asr"),
27544 + NORMAL_MNEMONIC(BFEXTS, BFEXTS, "bfexts"),
27545 + NORMAL_MNEMONIC(BFEXTU, BFEXTU, "bfextu"),
27546 + NORMAL_MNEMONIC(BFINS, BFINS, "bfins"),
27547 + NORMAL_MNEMONIC(BLD, BLD, "bld"),
27548 + NORMAL_MNEMONIC(BREQ, BREQ1, "breq"),
27549 + NORMAL_MNEMONIC(BRNE, BRNE1, "brne"),
27550 + NORMAL_MNEMONIC(BRCC, BRCC1, "brcc"),
27551 + NORMAL_MNEMONIC(BRCS, BRCS1, "brcs"),
27552 + NORMAL_MNEMONIC(BRGE, BRGE1, "brge"),
27553 + NORMAL_MNEMONIC(BRLT, BRLT1, "brlt"),
27554 + NORMAL_MNEMONIC(BRMI, BRMI1, "brmi"),
27555 + NORMAL_MNEMONIC(BRPL, BRPL1, "brpl"),
27556 + NORMAL_MNEMONIC(BRHS, BRHS1, "brhs"),
27557 + NORMAL_MNEMONIC(BRLO, BRLO1, "brlo"),
27558 + NORMAL_MNEMONIC(BRLS, BRLS, "brls"),
27559 + NORMAL_MNEMONIC(BRGT, BRGT, "brgt"),
27560 + NORMAL_MNEMONIC(BRLE, BRLE, "brle"),
27561 + NORMAL_MNEMONIC(BRHI, BRHI, "brhi"),
27562 + NORMAL_MNEMONIC(BRVS, BRVS, "brvs"),
27563 + NORMAL_MNEMONIC(BRVC, BRVC, "brvc"),
27564 + NORMAL_MNEMONIC(BRQS, BRQS, "brqs"),
27565 + NORMAL_MNEMONIC(BRAL, BRAL, "bral"),
27566 + NORMAL_MNEMONIC(BREAKPOINT, BREAKPOINT, "breakpoint"),
27567 + NORMAL_MNEMONIC(BREV, BREV, "brev"),
27568 + NORMAL_MNEMONIC(BST, BST, "bst"),
27569 + NORMAL_MNEMONIC(CACHE, CACHE, "cache"),
27570 + NORMAL_MNEMONIC(CASTS_B, CASTS_B, "casts.b"),
27571 + NORMAL_MNEMONIC(CASTS_H, CASTS_H, "casts.h"),
27572 + NORMAL_MNEMONIC(CASTU_B, CASTU_B, "castu.b"),
27573 + NORMAL_MNEMONIC(CASTU_H, CASTU_H, "castu.h"),
27574 + NORMAL_MNEMONIC(CBR, CBR, "cbr"),
27575 + NORMAL_MNEMONIC(CLZ, CLZ, "clz"),
27576 + NORMAL_MNEMONIC(COM, COM, "com"),
27577 + NORMAL_MNEMONIC(COP, COP, "cop"),
27578 + NORMAL_MNEMONIC(CP_B, CP_B, "cp.b"),
27579 + NORMAL_MNEMONIC(CP_H, CP_H, "cp.h"),
27580 + NORMAL_MNEMONIC(CP_W, CP_W1, "cp.w"),
27581 + NORMAL_MNEMONIC(CP, CP_W1, "cp"),
27582 + NORMAL_MNEMONIC(CPC, CPC1, "cpc"),
27583 + NORMAL_MNEMONIC(CSRF, CSRF, "csrf"),
27584 + NORMAL_MNEMONIC(CSRFCZ, CSRFCZ, "csrfcz"),
27585 + NORMAL_MNEMONIC(DIVS, DIVS, "divs"),
27586 + NORMAL_MNEMONIC(DIVU, DIVU, "divu"),
27587 + NORMAL_MNEMONIC(EOR, EOR1, "eor"),
27588 + NORMAL_MNEMONIC(EORL, EORL, "eorl"),
27589 + NORMAL_MNEMONIC(EORH, EORH, "eorh"),
27590 + NORMAL_MNEMONIC(FRS, FRS, "frs"),
27591 + NORMAL_MNEMONIC(ICALL, ICALL, "icall"),
27592 + NORMAL_MNEMONIC(INCJOSP, INCJOSP, "incjosp"),
27593 + NORMAL_MNEMONIC(LD_D, LD_D1, "ld.d"),
27594 + NORMAL_MNEMONIC(LD_SB, LD_SB2, "ld.sb"),
27595 + NORMAL_MNEMONIC(LD_UB, LD_UB1, "ld.ub"),
27596 + NORMAL_MNEMONIC(LD_SH, LD_SH1, "ld.sh"),
27597 + NORMAL_MNEMONIC(LD_UH, LD_UH1, "ld.uh"),
27598 + NORMAL_MNEMONIC(LD_W, LD_W1, "ld.w"),
27599 + NORMAL_MNEMONIC(LDC_D, LDC_D3, "ldc.d"),
27600 + NORMAL_MNEMONIC(LDC_W, LDC_W3, "ldc.w"),
27601 + NORMAL_MNEMONIC(LDC0_D, LDC0_D, "ldc0.d"),
27602 + NORMAL_MNEMONIC(LDC0_W, LDC0_W, "ldc0.w"),
27603 + NORMAL_MNEMONIC(LDCM_D, LDCM_D, "ldcm.d"),
27604 + NORMAL_MNEMONIC(LDCM_W, LDCM_W, "ldcm.w"),
27605 + NORMAL_MNEMONIC(LDDPC, LDDPC, "lddpc"),
27606 + NORMAL_MNEMONIC(LDDSP, LDDSP, "lddsp"),
27607 + NORMAL_MNEMONIC(LDINS_B, LDINS_B, "ldins.b"),
27608 + NORMAL_MNEMONIC(LDINS_H, LDINS_H, "ldins.h"),
27609 + NORMAL_MNEMONIC(LDM, LDM, "ldm"),
27610 + NORMAL_MNEMONIC(LDMTS, LDMTS, "ldmts"),
27611 + NORMAL_MNEMONIC(LDSWP_SH, LDSWP_SH, "ldswp.sh"),
27612 + NORMAL_MNEMONIC(LDSWP_UH, LDSWP_UH, "ldswp.uh"),
27613 + NORMAL_MNEMONIC(LDSWP_W, LDSWP_W, "ldswp.w"),
27614 + NORMAL_MNEMONIC(LSL, LSL1, "lsl"),
27615 + NORMAL_MNEMONIC(LSR, LSR1, "lsr"),
27616 + NORMAL_MNEMONIC(MAC, MAC, "mac"),
27617 + NORMAL_MNEMONIC(MACHH_D, MACHH_D, "machh.d"),
27618 + NORMAL_MNEMONIC(MACHH_W, MACHH_W, "machh.w"),
27619 + NORMAL_MNEMONIC(MACS_D, MACS_D, "macs.d"),
27620 + NORMAL_MNEMONIC(MACSATHH_W, MACSATHH_W, "macsathh.w"),
27621 + NORMAL_MNEMONIC(MACU_D, MACUD, "macu.d"),
27622 + NORMAL_MNEMONIC(MACWH_D, MACWH_D, "macwh.d"),
27623 + NORMAL_MNEMONIC(MAX, MAX, "max"),
27624 + NORMAL_MNEMONIC(MCALL, MCALL, "mcall"),
27625 + NORMAL_MNEMONIC(MFDR, MFDR, "mfdr"),
27626 + NORMAL_MNEMONIC(MFSR, MFSR, "mfsr"),
27627 + NORMAL_MNEMONIC(MIN, MIN, "min"),
27628 + NORMAL_MNEMONIC(MOV, MOV3, "mov"),
27629 + NORMAL_MNEMONIC(MOVEQ, MOVEQ1, "moveq"),
27630 + NORMAL_MNEMONIC(MOVNE, MOVNE1, "movne"),
27631 + NORMAL_MNEMONIC(MOVCC, MOVCC1, "movcc"),
27632 + NORMAL_MNEMONIC(MOVCS, MOVCS1, "movcs"),
27633 + NORMAL_MNEMONIC(MOVGE, MOVGE1, "movge"),
27634 + NORMAL_MNEMONIC(MOVLT, MOVLT1, "movlt"),
27635 + NORMAL_MNEMONIC(MOVMI, MOVMI1, "movmi"),
27636 + NORMAL_MNEMONIC(MOVPL, MOVPL1, "movpl"),
27637 + NORMAL_MNEMONIC(MOVLS, MOVLS1, "movls"),
27638 + NORMAL_MNEMONIC(MOVGT, MOVGT1, "movgt"),
27639 + NORMAL_MNEMONIC(MOVLE, MOVLE1, "movle"),
27640 + NORMAL_MNEMONIC(MOVHI, MOVHI1, "movhi"),
27641 + NORMAL_MNEMONIC(MOVVS, MOVVS1, "movvs"),
27642 + NORMAL_MNEMONIC(MOVVC, MOVVC1, "movvc"),
27643 + NORMAL_MNEMONIC(MOVQS, MOVQS1, "movqs"),
27644 + NORMAL_MNEMONIC(MOVAL, MOVAL1, "moval"),
27645 + NORMAL_MNEMONIC(MOVHS, MOVHS1, "movhs"),
27646 + NORMAL_MNEMONIC(MOVLO, MOVLO1, "movlo"),
27647 + NORMAL_MNEMONIC(MTDR, MTDR, "mtdr"),
27648 + NORMAL_MNEMONIC(MTSR, MTSR, "mtsr"),
27649 + NORMAL_MNEMONIC(MUL, MUL1, "mul"),
27650 + NORMAL_MNEMONIC(MULHH_W, MULHH_W, "mulhh.w"),
27651 + NORMAL_MNEMONIC(MULNHH_W, MULNHH_W, "mulnhh.w"),
27652 + NORMAL_MNEMONIC(MULNWH_D, MULNWH_D, "mulnwh.d"),
27653 + NORMAL_MNEMONIC(MULS_D, MULSD, "muls.d"),
27654 + NORMAL_MNEMONIC(MULSATHH_H, MULSATHH_H, "mulsathh.h"),
27655 + NORMAL_MNEMONIC(MULSATHH_W, MULSATHH_W, "mulsathh.w"),
27656 + NORMAL_MNEMONIC(MULSATRNDHH_H, MULSATRNDHH_H, "mulsatrndhh.h"),
27657 + NORMAL_MNEMONIC(MULSATRNDWH_W, MULSATRNDWH_W, "mulsatrndwh.w"),
27658 + NORMAL_MNEMONIC(MULSATWH_W, MULSATWH_W, "mulsatwh.w"),
27659 + NORMAL_MNEMONIC(MULU_D, MULU_D, "mulu.d"),
27660 + NORMAL_MNEMONIC(MULWH_D, MULWH_D, "mulwh.d"),
27661 + NORMAL_MNEMONIC(MUSFR, MUSFR, "musfr"),
27662 + NORMAL_MNEMONIC(MUSTR, MUSTR, "mustr"),
27663 + NORMAL_MNEMONIC(MVCR_D, MVCR_D, "mvcr.d"),
27664 + NORMAL_MNEMONIC(MVCR_W, MVCR_W, "mvcr.w"),
27665 + NORMAL_MNEMONIC(MVRC_D, MVRC_D, "mvrc.d"),
27666 + NORMAL_MNEMONIC(MVRC_W, MVRC_W, "mvrc.w"),
27667 + NORMAL_MNEMONIC(NEG, NEG, "neg"),
27668 + NORMAL_MNEMONIC(NOP, NOP, "nop"),
27669 + NORMAL_MNEMONIC(OR, OR1, "or"),
27670 + NORMAL_MNEMONIC(ORH, ORH, "orh"),
27671 + NORMAL_MNEMONIC(ORL, ORL, "orl"),
27672 + NORMAL_MNEMONIC(PABS_SB, PABS_SB, "pabs.sb"),
27673 + NORMAL_MNEMONIC(PABS_SH, PABS_SH, "pabs.sh"),
27674 + NORMAL_MNEMONIC(PACKSH_SB, PACKSH_SB, "packsh.sb"),
27675 + NORMAL_MNEMONIC(PACKSH_UB, PACKSH_UB, "packsh.ub"),
27676 + NORMAL_MNEMONIC(PACKW_SH, PACKW_SH, "packw.sh"),
27677 + NORMAL_MNEMONIC(PADD_B, PADD_B, "padd.b"),
27678 + NORMAL_MNEMONIC(PADD_H, PADD_H, "padd.h"),
27679 + NORMAL_MNEMONIC(PADDH_SH, PADDH_SH, "paddh.sh"),
27680 + NORMAL_MNEMONIC(PADDH_UB, PADDH_UB, "paddh.ub"),
27681 + NORMAL_MNEMONIC(PADDS_SB, PADDS_SB, "padds.sb"),
27682 + NORMAL_MNEMONIC(PADDS_SH, PADDS_SH, "padds.sh"),
27683 + NORMAL_MNEMONIC(PADDS_UB, PADDS_UB, "padds.ub"),
27684 + NORMAL_MNEMONIC(PADDS_UH, PADDS_UH, "padds.uh"),
27685 + NORMAL_MNEMONIC(PADDSUB_H, PADDSUB_H, "paddsub.h"),
27686 + NORMAL_MNEMONIC(PADDSUBH_SH, PADDSUBH_SH, "paddsubh.sh"),
27687 + NORMAL_MNEMONIC(PADDSUBS_SH, PADDSUBS_SH, "paddsubs.sh"),
27688 + NORMAL_MNEMONIC(PADDSUBS_UH, PADDSUBS_UH, "paddsubs.uh"),
27689 + NORMAL_MNEMONIC(PADDX_H, PADDX_H, "paddx.h"),
27690 + NORMAL_MNEMONIC(PADDXH_SH, PADDXH_SH, "paddxh.sh"),
27691 + NORMAL_MNEMONIC(PADDXS_SH, PADDXS_SH, "paddxs.sh"),
27692 + NORMAL_MNEMONIC(PADDXS_UH, PADDXS_UH, "paddxs.uh"),
27693 + NORMAL_MNEMONIC(PASR_B, PASR_B, "pasr.b"),
27694 + NORMAL_MNEMONIC(PASR_H, PASR_H, "pasr.h"),
27695 + NORMAL_MNEMONIC(PAVG_SH, PAVG_SH, "pavg.sh"),
27696 + NORMAL_MNEMONIC(PAVG_UB, PAVG_UB, "pavg.ub"),
27697 + NORMAL_MNEMONIC(PLSL_B, PLSL_B, "plsl.b"),
27698 + NORMAL_MNEMONIC(PLSL_H, PLSL_H, "plsl.h"),
27699 + NORMAL_MNEMONIC(PLSR_B, PLSR_B, "plsr.b"),
27700 + NORMAL_MNEMONIC(PLSR_H, PLSR_H, "plsr.h"),
27701 + NORMAL_MNEMONIC(PMAX_SH, PMAX_SH, "pmax.sh"),
27702 + NORMAL_MNEMONIC(PMAX_UB, PMAX_UB, "pmax.ub"),
27703 + NORMAL_MNEMONIC(PMIN_SH, PMIN_SH, "pmin.sh"),
27704 + NORMAL_MNEMONIC(PMIN_UB, PMIN_UB, "pmin.ub"),
27705 + NORMAL_MNEMONIC(POPJC, POPJC, "popjc"),
27706 + NORMAL_MNEMONIC(POPM, POPM, "popm"),
27707 + NORMAL_MNEMONIC(PREF, PREF, "pref"),
27708 + NORMAL_MNEMONIC(PSAD, PSAD, "psad"),
27709 + NORMAL_MNEMONIC(PSUB_B, PSUB_B, "psub.b"),
27710 + NORMAL_MNEMONIC(PSUB_H, PSUB_H, "psub.h"),
27711 + NORMAL_MNEMONIC(PSUBADD_H, PSUBADD_H, "psubadd.h"),
27712 + NORMAL_MNEMONIC(PSUBADDH_SH, PSUBADDH_SH, "psubaddh.sh"),
27713 + NORMAL_MNEMONIC(PSUBADDS_SH, PSUBADDS_SH, "psubadds.sh"),
27714 + NORMAL_MNEMONIC(PSUBADDS_UH, PSUBADDS_UH, "psubadds.uh"),
27715 + NORMAL_MNEMONIC(PSUBH_SH, PSUBH_SH, "psubh.sh"),
27716 + NORMAL_MNEMONIC(PSUBH_UB, PSUBH_UB, "psubh.ub"),
27717 + NORMAL_MNEMONIC(PSUBS_SB, PSUBS_SB, "psubs.sb"),
27718 + NORMAL_MNEMONIC(PSUBS_SH, PSUBS_SH, "psubs.sh"),
27719 + NORMAL_MNEMONIC(PSUBS_UB, PSUBS_UB, "psubs.ub"),
27720 + NORMAL_MNEMONIC(PSUBS_UH, PSUBS_UH, "psubs.uh"),
27721 + NORMAL_MNEMONIC(PSUBX_H, PSUBX_H, "psubx.h"),
27722 + NORMAL_MNEMONIC(PSUBXH_SH, PSUBXH_SH, "psubxh.sh"),
27723 + NORMAL_MNEMONIC(PSUBXS_SH, PSUBXS_SH, "psubxs.sh"),
27724 + NORMAL_MNEMONIC(PSUBXS_UH, PSUBXS_UH, "psubxs.uh"),
27725 + NORMAL_MNEMONIC(PUNPCKSB_H, PUNPCKSB_H, "punpcksb.h"),
27726 + NORMAL_MNEMONIC(PUNPCKUB_H, PUNPCKUB_H, "punpckub.h"),
27727 + NORMAL_MNEMONIC(PUSHJC, PUSHJC, "pushjc"),
27728 + NORMAL_MNEMONIC(PUSHM, PUSHM, "pushm"),
27729 + NORMAL_MNEMONIC(RCALL, RCALL1, "rcall"),
27730 + NORMAL_MNEMONIC(RETEQ, RETEQ, "reteq"),
27731 + NORMAL_MNEMONIC(RETNE, RETNE, "retne"),
27732 + NORMAL_MNEMONIC(RETCC, RETCC, "retcc"),
27733 + NORMAL_MNEMONIC(RETCS, RETCS, "retcs"),
27734 + NORMAL_MNEMONIC(RETGE, RETGE, "retge"),
27735 + NORMAL_MNEMONIC(RETLT, RETLT, "retlt"),
27736 + NORMAL_MNEMONIC(RETMI, RETMI, "retmi"),
27737 + NORMAL_MNEMONIC(RETPL, RETPL, "retpl"),
27738 + NORMAL_MNEMONIC(RETLS, RETLS, "retls"),
27739 + NORMAL_MNEMONIC(RETGT, RETGT, "retgt"),
27740 + NORMAL_MNEMONIC(RETLE, RETLE, "retle"),
27741 + NORMAL_MNEMONIC(RETHI, RETHI, "rethi"),
27742 + NORMAL_MNEMONIC(RETVS, RETVS, "retvs"),
27743 + NORMAL_MNEMONIC(RETVC, RETVC, "retvc"),
27744 + NORMAL_MNEMONIC(RETQS, RETQS, "retqs"),
27745 + NORMAL_MNEMONIC(RETAL, RETAL, "retal"),
27746 + NORMAL_MNEMONIC(RETHS, RETHS, "reths"),
27747 + NORMAL_MNEMONIC(RETLO, RETLO, "retlo"),
27748 + NORMAL_MNEMONIC(RET, RETAL, "ret"),
27749 + NORMAL_MNEMONIC(RETD, RETD, "retd"),
27750 + NORMAL_MNEMONIC(RETE, RETE, "rete"),
27751 + NORMAL_MNEMONIC(RETJ, RETJ, "retj"),
27752 + NORMAL_MNEMONIC(RETS, RETS, "rets"),
27753 + NORMAL_MNEMONIC(RJMP, RJMP, "rjmp"),
27754 + NORMAL_MNEMONIC(ROL, ROL, "rol"),
27755 + NORMAL_MNEMONIC(ROR, ROR, "ror"),
27756 + NORMAL_MNEMONIC(RSUB, RSUB1, "rsub"),
27757 + NORMAL_MNEMONIC(SATADD_H, SATADD_H, "satadd.h"),
27758 + NORMAL_MNEMONIC(SATADD_W, SATADD_W, "satadd.w"),
27759 + NORMAL_MNEMONIC(SATRNDS, SATRNDS, "satrnds"),
27760 + NORMAL_MNEMONIC(SATRNDU, SATRNDU, "satrndu"),
27761 + NORMAL_MNEMONIC(SATS, SATS, "sats"),
27762 + NORMAL_MNEMONIC(SATSUB_H, SATSUB_H, "satsub.h"),
27763 + NORMAL_MNEMONIC(SATSUB_W, SATSUB_W1, "satsub.w"),
27764 + NORMAL_MNEMONIC(SATU, SATU, "satu"),
27765 + NORMAL_MNEMONIC(SBC, SBC, "sbc"),
27766 + NORMAL_MNEMONIC(SBR, SBR, "sbr"),
27767 + NORMAL_MNEMONIC(SCALL, SCALL, "scall"),
27768 + NORMAL_MNEMONIC(SCR, SCR, "scr"),
27769 + NORMAL_MNEMONIC(SLEEP, SLEEP, "sleep"),
27770 + NORMAL_MNEMONIC(SREQ, SREQ, "sreq"),
27771 + NORMAL_MNEMONIC(SRNE, SRNE, "srne"),
27772 + NORMAL_MNEMONIC(SRCC, SRCC, "srcc"),
27773 + NORMAL_MNEMONIC(SRCS, SRCS, "srcs"),
27774 + NORMAL_MNEMONIC(SRGE, SRGE, "srge"),
27775 + NORMAL_MNEMONIC(SRLT, SRLT, "srlt"),
27776 + NORMAL_MNEMONIC(SRMI, SRMI, "srmi"),
27777 + NORMAL_MNEMONIC(SRPL, SRPL, "srpl"),
27778 + NORMAL_MNEMONIC(SRLS, SRLS, "srls"),
27779 + NORMAL_MNEMONIC(SRGT, SRGT, "srgt"),
27780 + NORMAL_MNEMONIC(SRLE, SRLE, "srle"),
27781 + NORMAL_MNEMONIC(SRHI, SRHI, "srhi"),
27782 + NORMAL_MNEMONIC(SRVS, SRVS, "srvs"),
27783 + NORMAL_MNEMONIC(SRVC, SRVC, "srvc"),
27784 + NORMAL_MNEMONIC(SRQS, SRQS, "srqs"),
27785 + NORMAL_MNEMONIC(SRAL, SRAL, "sral"),
27786 + NORMAL_MNEMONIC(SRHS, SRHS, "srhs"),
27787 + NORMAL_MNEMONIC(SRLO, SRLO, "srlo"),
27788 + NORMAL_MNEMONIC(SSRF, SSRF, "ssrf"),
27789 + NORMAL_MNEMONIC(ST_B, ST_B1, "st.b"),
27790 + NORMAL_MNEMONIC(ST_D, ST_D1, "st.d"),
27791 + NORMAL_MNEMONIC(ST_H, ST_H1, "st.h"),
27792 + NORMAL_MNEMONIC(ST_W, ST_W1, "st.w"),
27793 + NORMAL_MNEMONIC(STC_D, STC_D3, "stc.d"),
27794 + NORMAL_MNEMONIC(STC_W, STC_W3, "stc.w"),
27795 + NORMAL_MNEMONIC(STC0_D, STC0_D, "stc0.d"),
27796 + NORMAL_MNEMONIC(STC0_W, STC0_W, "stc0.w"),
27797 + NORMAL_MNEMONIC(STCM_D, STCM_D, "stcm.d"),
27798 + NORMAL_MNEMONIC(STCM_W, STCM_W, "stcm.w"),
27799 + NORMAL_MNEMONIC(STCOND, STCOND, "stcond"),
27800 + NORMAL_MNEMONIC(STDSP, STDSP, "stdsp"),
27801 + NORMAL_MNEMONIC(STHH_W, STHH_W2, "sthh.w"),
27802 + NORMAL_MNEMONIC(STM, STM, "stm"),
27803 + NORMAL_MNEMONIC(STMTS, STMTS, "stmts"),
27804 + NORMAL_MNEMONIC(STSWP_H, STSWP_H, "stswp.h"),
27805 + NORMAL_MNEMONIC(STSWP_W, STSWP_W, "stswp.w"),
27806 + NORMAL_MNEMONIC(SUB, SUB1, "sub"),
27807 + NORMAL_MNEMONIC(SUBEQ, SUBEQ, "subeq"),
27808 + NORMAL_MNEMONIC(SUBNE, SUBNE, "subne"),
27809 + NORMAL_MNEMONIC(SUBCC, SUBCC, "subcc"),
27810 + NORMAL_MNEMONIC(SUBCS, SUBCS, "subcs"),
27811 + NORMAL_MNEMONIC(SUBGE, SUBGE, "subge"),
27812 + NORMAL_MNEMONIC(SUBLT, SUBLT, "sublt"),
27813 + NORMAL_MNEMONIC(SUBMI, SUBMI, "submi"),
27814 + NORMAL_MNEMONIC(SUBPL, SUBPL, "subpl"),
27815 + NORMAL_MNEMONIC(SUBLS, SUBLS, "subls"),
27816 + NORMAL_MNEMONIC(SUBGT, SUBGT, "subgt"),
27817 + NORMAL_MNEMONIC(SUBLE, SUBLE, "suble"),
27818 + NORMAL_MNEMONIC(SUBHI, SUBHI, "subhi"),
27819 + NORMAL_MNEMONIC(SUBVS, SUBVS, "subvs"),
27820 + NORMAL_MNEMONIC(SUBVC, SUBVC, "subvc"),
27821 + NORMAL_MNEMONIC(SUBQS, SUBQS, "subqs"),
27822 + NORMAL_MNEMONIC(SUBAL, SUBAL, "subal"),
27823 + NORMAL_MNEMONIC(SUBHS, SUBHS, "subhs"),
27824 + NORMAL_MNEMONIC(SUBLO, SUBLO, "sublo"),
27825 + NORMAL_MNEMONIC(SUBFEQ, SUBFEQ, "subfeq"),
27826 + NORMAL_MNEMONIC(SUBFNE, SUBFNE, "subfne"),
27827 + NORMAL_MNEMONIC(SUBFCC, SUBFCC, "subfcc"),
27828 + NORMAL_MNEMONIC(SUBFCS, SUBFCS, "subfcs"),
27829 + NORMAL_MNEMONIC(SUBFGE, SUBFGE, "subfge"),
27830 + NORMAL_MNEMONIC(SUBFLT, SUBFLT, "subflt"),
27831 + NORMAL_MNEMONIC(SUBFMI, SUBFMI, "subfmi"),
27832 + NORMAL_MNEMONIC(SUBFPL, SUBFPL, "subfpl"),
27833 + NORMAL_MNEMONIC(SUBFLS, SUBFLS, "subfls"),
27834 + NORMAL_MNEMONIC(SUBFGT, SUBFGT, "subfgt"),
27835 + NORMAL_MNEMONIC(SUBFLE, SUBFLE, "subfle"),
27836 + NORMAL_MNEMONIC(SUBFHI, SUBFHI, "subfhi"),
27837 + NORMAL_MNEMONIC(SUBFVS, SUBFVS, "subfvs"),
27838 + NORMAL_MNEMONIC(SUBFVC, SUBFVC, "subfvc"),
27839 + NORMAL_MNEMONIC(SUBFQS, SUBFQS, "subfqs"),
27840 + NORMAL_MNEMONIC(SUBFAL, SUBFAL, "subfal"),
27841 + NORMAL_MNEMONIC(SUBFHS, SUBFHS, "subfhs"),
27842 + NORMAL_MNEMONIC(SUBFLO, SUBFLO, "subflo"),
27843 + NORMAL_MNEMONIC(SUBHH_W, SUBHH_W, "subhh.w"),
27844 + NORMAL_MNEMONIC(SWAP_B, SWAP_B, "swap.b"),
27845 + NORMAL_MNEMONIC(SWAP_BH, SWAP_BH, "swap.bh"),
27846 + NORMAL_MNEMONIC(SWAP_H, SWAP_H, "swap.h"),
27847 + NORMAL_MNEMONIC(SYNC, SYNC, "sync"),
27848 + NORMAL_MNEMONIC(TLBR, TLBR, "tlbr"),
27849 + NORMAL_MNEMONIC(TLBS, TLBS, "tlbs"),
27850 + NORMAL_MNEMONIC(TLBW, TLBW, "tlbw"),
27851 + NORMAL_MNEMONIC(TNBZ, TNBZ, "tnbz"),
27852 + NORMAL_MNEMONIC(TST, TST, "tst"),
27853 + NORMAL_MNEMONIC(XCHG, XCHG, "xchg"),
27854 + NORMAL_MNEMONIC(MEMC, MEMC, "memc"),
27855 + NORMAL_MNEMONIC(MEMS, MEMS, "mems"),
27856 + NORMAL_MNEMONIC(MEMT, MEMT, "memt"),
27857 + FP_MNEMONIC(FADD, FADD, "fadd"),
27858 + FP_MNEMONIC(FSUB, FSUB, "fsub"),
27859 + FP_MNEMONIC(FMAC, FMAC, "fmac"),
27860 + FP_MNEMONIC(FNMAC, FNMAC, "fnmac"),
27861 + FP_MNEMONIC(FMSC, FMSC, "fmsc"),
27862 + FP_MNEMONIC(FNMSC, FNMSC, "fnmsc"),
27863 + FP_MNEMONIC(FMUL, FMUL, "fmul"),
27864 + FP_MNEMONIC(FNMUL, FNMUL, "fnmul"),
27865 + FP_MNEMONIC(FNEG, FNEG, "fneg"),
27866 + FP_MNEMONIC(FABS, FABS, "fabs"),
27867 + FP_MNEMONIC(FCMP, FCMP, "fcmp"),
27868 + FP_MNEMONIC(FMOV, FMOV1, "fmov"),
27869 + NORMAL_MNEMONIC(FCASTS_D, FCASTS_D, "fcasts.d"),
27870 + NORMAL_MNEMONIC(FCASTD_S, FCASTD_S, "fcastd.s"),
27871 + NORMAL_MNEMONIC(LDA_W, LDA_W, "lda.w"),
27872 + NORMAL_MNEMONIC(CALL, CALL, "call"),
27873 + NORMAL_MNEMONIC(PICOSVMAC, PICOSVMAC0, "picosvmac"),
27874 + NORMAL_MNEMONIC(PICOSVMUL, PICOSVMUL0, "picosvmul"),
27875 + NORMAL_MNEMONIC(PICOVMAC, PICOVMAC0, "picovmac"),
27876 + NORMAL_MNEMONIC(PICOVMUL, PICOVMUL0, "picovmul"),
27877 + NORMAL_MNEMONIC(PICOLD_D, PICOLD_D2, "picold.d"),
27878 + NORMAL_MNEMONIC(PICOLD_W, PICOLD_W2, "picold.w"),
27879 + NORMAL_MNEMONIC(PICOLDM_D, PICOLDM_D, "picoldm.d"),
27880 + NORMAL_MNEMONIC(PICOLDM_W, PICOLDM_W, "picoldm.w"),
27881 + NORMAL_MNEMONIC(PICOMV_D, PICOMV_D1, "picomv.d"),
27882 + NORMAL_MNEMONIC(PICOMV_W, PICOMV_W1, "picomv.w"),
27883 + NORMAL_MNEMONIC(PICOST_D, PICOST_D2, "picost.d"),
27884 + NORMAL_MNEMONIC(PICOST_W, PICOST_W2, "picost.w"),
27885 + NORMAL_MNEMONIC(PICOSTM_D, PICOSTM_D, "picostm.d"),
27886 + NORMAL_MNEMONIC(PICOSTM_W, PICOSTM_W, "picostm.w"),
27887 + NORMAL_MNEMONIC(RSUBEQ, RSUBEQ, "rsubeq"),
27888 + NORMAL_MNEMONIC(RSUBNE, RSUBNE, "rsubne"),
27889 + NORMAL_MNEMONIC(RSUBCC, RSUBCC, "rsubcc"),
27890 + NORMAL_MNEMONIC(RSUBCS, RSUBCS, "rsubcs"),
27891 + NORMAL_MNEMONIC(RSUBGE, RSUBGE, "rsubge"),
27892 + NORMAL_MNEMONIC(RSUBLT, RSUBLT, "rsublt"),
27893 + NORMAL_MNEMONIC(RSUBMI, RSUBMI, "rsubmi"),
27894 + NORMAL_MNEMONIC(RSUBPL, RSUBPL, "rsubpl"),
27895 + NORMAL_MNEMONIC(RSUBLS, RSUBLS, "rsubls"),
27896 + NORMAL_MNEMONIC(RSUBGT, RSUBGT, "rsubgt"),
27897 + NORMAL_MNEMONIC(RSUBLE, RSUBLE, "rsuble"),
27898 + NORMAL_MNEMONIC(RSUBHI, RSUBHI, "rsubhi"),
27899 + NORMAL_MNEMONIC(RSUBVS, RSUBVS, "rsubvs"),
27900 + NORMAL_MNEMONIC(RSUBVC, RSUBVC, "rsubvc"),
27901 + NORMAL_MNEMONIC(RSUBQS, RSUBQS, "rsubqs"),
27902 + NORMAL_MNEMONIC(RSUBAL, RSUBAL, "rsubal"),
27903 + NORMAL_MNEMONIC(RSUBHS, RSUBHS, "rsubhs"),
27904 + NORMAL_MNEMONIC(RSUBLO, RSUBLO, "rsublo"),
27905 + NORMAL_MNEMONIC(ADDEQ, ADDEQ, "addeq"),
27906 + NORMAL_MNEMONIC(ADDNE, ADDNE, "addne"),
27907 + NORMAL_MNEMONIC(ADDCC, ADDCC, "addcc"),
27908 + NORMAL_MNEMONIC(ADDCS, ADDCS, "addcs"),
27909 + NORMAL_MNEMONIC(ADDGE, ADDGE, "addge"),
27910 + NORMAL_MNEMONIC(ADDLT, ADDLT, "addlt"),
27911 + NORMAL_MNEMONIC(ADDMI, ADDMI, "addmi"),
27912 + NORMAL_MNEMONIC(ADDPL, ADDPL, "addpl"),
27913 + NORMAL_MNEMONIC(ADDLS, ADDLS, "addls"),
27914 + NORMAL_MNEMONIC(ADDGT, ADDGT, "addgt"),
27915 + NORMAL_MNEMONIC(ADDLE, ADDLE, "addle"),
27916 + NORMAL_MNEMONIC(ADDHI, ADDHI, "addhi"),
27917 + NORMAL_MNEMONIC(ADDVS, ADDVS, "addvs"),
27918 + NORMAL_MNEMONIC(ADDVC, ADDVC, "addvc"),
27919 + NORMAL_MNEMONIC(ADDQS, ADDQS, "addqs"),
27920 + NORMAL_MNEMONIC(ADDAL, ADDAL, "addal"),
27921 + NORMAL_MNEMONIC(ADDHS, ADDHS, "addhs"),
27922 + NORMAL_MNEMONIC(ADDLO, ADDLO, "addlo"),
27923 + NORMAL_MNEMONIC(ANDEQ, ANDEQ, "andeq"),
27924 + NORMAL_MNEMONIC(ANDNE, ANDNE, "andne"),
27925 + NORMAL_MNEMONIC(ANDCC, ANDCC, "andcc"),
27926 + NORMAL_MNEMONIC(ANDCS, ANDCS, "andcs"),
27927 + NORMAL_MNEMONIC(ANDGE, ANDGE, "andge"),
27928 + NORMAL_MNEMONIC(ANDLT, ANDLT, "andlt"),
27929 + NORMAL_MNEMONIC(ANDMI, ANDMI, "andmi"),
27930 + NORMAL_MNEMONIC(ANDPL, ANDPL, "andpl"),
27931 + NORMAL_MNEMONIC(ANDLS, ANDLS, "andls"),
27932 + NORMAL_MNEMONIC(ANDGT, ANDGT, "andgt"),
27933 + NORMAL_MNEMONIC(ANDLE, ANDLE, "andle"),
27934 + NORMAL_MNEMONIC(ANDHI, ANDHI, "andhi"),
27935 + NORMAL_MNEMONIC(ANDVS, ANDVS, "andvs"),
27936 + NORMAL_MNEMONIC(ANDVC, ANDVC, "andvc"),
27937 + NORMAL_MNEMONIC(ANDQS, ANDQS, "andqs"),
27938 + NORMAL_MNEMONIC(ANDAL, ANDAL, "andal"),
27939 + NORMAL_MNEMONIC(ANDHS, ANDHS, "andhs"),
27940 + NORMAL_MNEMONIC(ANDLO, ANDLO, "andlo"),
27941 + NORMAL_MNEMONIC(OREQ, OREQ, "oreq"),
27942 + NORMAL_MNEMONIC(ORNE, ORNE, "orne"),
27943 + NORMAL_MNEMONIC(ORCC, ORCC, "orcc"),
27944 + NORMAL_MNEMONIC(ORCS, ORCS, "orcs"),
27945 + NORMAL_MNEMONIC(ORGE, ORGE, "orge"),
27946 + NORMAL_MNEMONIC(ORLT, ORLT, "orlt"),
27947 + NORMAL_MNEMONIC(ORMI, ORMI, "ormi"),
27948 + NORMAL_MNEMONIC(ORPL, ORPL, "orpl"),
27949 + NORMAL_MNEMONIC(ORLS, ORLS, "orls"),
27950 + NORMAL_MNEMONIC(ORGT, ORGT, "orgt"),
27951 + NORMAL_MNEMONIC(ORLE, ORLE, "orle"),
27952 + NORMAL_MNEMONIC(ORHI, ORHI, "orhi"),
27953 + NORMAL_MNEMONIC(ORVS, ORVS, "orvs"),
27954 + NORMAL_MNEMONIC(ORVC, ORVC, "orvc"),
27955 + NORMAL_MNEMONIC(ORQS, ORQS, "orqs"),
27956 + NORMAL_MNEMONIC(ORAL, ORAL, "oral"),
27957 + NORMAL_MNEMONIC(ORHS, ORHS, "orhs"),
27958 + NORMAL_MNEMONIC(ORLO, ORLO, "orlo"),
27959 + NORMAL_MNEMONIC(EOREQ, EOREQ, "eoreq"),
27960 + NORMAL_MNEMONIC(EORNE, EORNE, "eorne"),
27961 + NORMAL_MNEMONIC(EORCC, EORCC, "eorcc"),
27962 + NORMAL_MNEMONIC(EORCS, EORCS, "eorcs"),
27963 + NORMAL_MNEMONIC(EORGE, EORGE, "eorge"),
27964 + NORMAL_MNEMONIC(EORLT, EORLT, "eorlt"),
27965 + NORMAL_MNEMONIC(EORMI, EORMI, "eormi"),
27966 + NORMAL_MNEMONIC(EORPL, EORPL, "eorpl"),
27967 + NORMAL_MNEMONIC(EORLS, EORLS, "eorls"),
27968 + NORMAL_MNEMONIC(EORGT, EORGT, "eorgt"),
27969 + NORMAL_MNEMONIC(EORLE, EORLE, "eorle"),
27970 + NORMAL_MNEMONIC(EORHI, EORHI, "eorhi"),
27971 + NORMAL_MNEMONIC(EORVS, EORVS, "eorvs"),
27972 + NORMAL_MNEMONIC(EORVC, EORVC, "eorvc"),
27973 + NORMAL_MNEMONIC(EORQS, EORQS, "eorqs"),
27974 + NORMAL_MNEMONIC(EORAL, EORAL, "eoral"),
27975 + NORMAL_MNEMONIC(EORHS, EORHS, "eorhs"),
27976 + NORMAL_MNEMONIC(EORLO, EORLO, "eorlo"),
27977 + NORMAL_MNEMONIC(LD_WEQ, LD_WEQ, "ld.weq"),
27978 + NORMAL_MNEMONIC(LD_WNE, LD_WNE, "ld.wne"),
27979 + NORMAL_MNEMONIC(LD_WCC, LD_WCC, "ld.wcc"),
27980 + NORMAL_MNEMONIC(LD_WCS, LD_WCS, "ld.wcs"),
27981 + NORMAL_MNEMONIC(LD_WGE, LD_WGE, "ld.wge"),
27982 + NORMAL_MNEMONIC(LD_WLT, LD_WLT, "ld.wlt"),
27983 + NORMAL_MNEMONIC(LD_WMI, LD_WMI, "ld.wmi"),
27984 + NORMAL_MNEMONIC(LD_WPL, LD_WPL, "ld.wpl"),
27985 + NORMAL_MNEMONIC(LD_WLS, LD_WLS, "ld.wls"),
27986 + NORMAL_MNEMONIC(LD_WGT, LD_WGT, "ld.wgt"),
27987 + NORMAL_MNEMONIC(LD_WLE, LD_WLE, "ld.wle"),
27988 + NORMAL_MNEMONIC(LD_WHI, LD_WHI, "ld.whi"),
27989 + NORMAL_MNEMONIC(LD_WVS, LD_WVS, "ld.wvs"),
27990 + NORMAL_MNEMONIC(LD_WVC, LD_WVC, "ld.wvc"),
27991 + NORMAL_MNEMONIC(LD_WQS, LD_WQS, "ld.wqs"),
27992 + NORMAL_MNEMONIC(LD_WAL, LD_WAL, "ld.wal"),
27993 + NORMAL_MNEMONIC(LD_WHS, LD_WHS, "ld.whs"),
27994 + NORMAL_MNEMONIC(LD_WLO, LD_WLO, "ld.wlo"),
27995 + NORMAL_MNEMONIC(LD_SHEQ, LD_SHEQ, "ld.sheq"),
27996 + NORMAL_MNEMONIC(LD_SHNE, LD_SHNE, "ld.shne"),
27997 + NORMAL_MNEMONIC(LD_SHCC, LD_SHCC, "ld.shcc"),
27998 + NORMAL_MNEMONIC(LD_SHCS, LD_SHCS, "ld.shcs"),
27999 + NORMAL_MNEMONIC(LD_SHGE, LD_SHGE, "ld.shge"),
28000 + NORMAL_MNEMONIC(LD_SHLT, LD_SHLT, "ld.shlt"),
28001 + NORMAL_MNEMONIC(LD_SHMI, LD_SHMI, "ld.shmi"),
28002 + NORMAL_MNEMONIC(LD_SHPL, LD_SHPL, "ld.shpl"),
28003 + NORMAL_MNEMONIC(LD_SHLS, LD_SHLS, "ld.shls"),
28004 + NORMAL_MNEMONIC(LD_SHGT, LD_SHGT, "ld.shgt"),
28005 + NORMAL_MNEMONIC(LD_SHLE, LD_SHLE, "ld.shle"),
28006 + NORMAL_MNEMONIC(LD_SHHI, LD_SHHI, "ld.shhi"),
28007 + NORMAL_MNEMONIC(LD_SHVS, LD_SHVS, "ld.shvs"),
28008 + NORMAL_MNEMONIC(LD_SHVC, LD_SHVC, "ld.shvc"),
28009 + NORMAL_MNEMONIC(LD_SHQS, LD_SHQS, "ld.shqs"),
28010 + NORMAL_MNEMONIC(LD_SHAL, LD_SHAL, "ld.shal"),
28011 + NORMAL_MNEMONIC(LD_SHHS, LD_SHHS, "ld.shhs"),
28012 + NORMAL_MNEMONIC(LD_SHLO, LD_SHLO, "ld.shlo"),
28013 + NORMAL_MNEMONIC(LD_UHEQ, LD_UHEQ, "ld.uheq"),
28014 + NORMAL_MNEMONIC(LD_UHNE, LD_UHNE, "ld.uhne"),
28015 + NORMAL_MNEMONIC(LD_UHCC, LD_UHCC, "ld.uhcc"),
28016 + NORMAL_MNEMONIC(LD_UHCS, LD_UHCS, "ld.uhcs"),
28017 + NORMAL_MNEMONIC(LD_UHGE, LD_UHGE, "ld.uhge"),
28018 + NORMAL_MNEMONIC(LD_UHLT, LD_UHLT, "ld.uhlt"),
28019 + NORMAL_MNEMONIC(LD_UHMI, LD_UHMI, "ld.uhmi"),
28020 + NORMAL_MNEMONIC(LD_UHPL, LD_UHPL, "ld.uhpl"),
28021 + NORMAL_MNEMONIC(LD_UHLS, LD_UHLS, "ld.uhls"),
28022 + NORMAL_MNEMONIC(LD_UHGT, LD_UHGT, "ld.uhgt"),
28023 + NORMAL_MNEMONIC(LD_UHLE, LD_UHLE, "ld.uhle"),
28024 + NORMAL_MNEMONIC(LD_UHHI, LD_UHHI, "ld.uhhi"),
28025 + NORMAL_MNEMONIC(LD_UHVS, LD_UHVS, "ld.uhvs"),
28026 + NORMAL_MNEMONIC(LD_UHVC, LD_UHVC, "ld.uhvc"),
28027 + NORMAL_MNEMONIC(LD_UHQS, LD_UHQS, "ld.uhqs"),
28028 + NORMAL_MNEMONIC(LD_UHAL, LD_UHAL, "ld.uhal"),
28029 + NORMAL_MNEMONIC(LD_UHHS, LD_UHHS, "ld.uhhs"),
28030 + NORMAL_MNEMONIC(LD_UHLO, LD_UHLO, "ld.uhlo"),
28031 + NORMAL_MNEMONIC(LD_SBEQ, LD_SBEQ, "ld.sbeq"),
28032 + NORMAL_MNEMONIC(LD_SBNE, LD_SBNE, "ld.sbne"),
28033 + NORMAL_MNEMONIC(LD_SBCC, LD_SBCC, "ld.sbcc"),
28034 + NORMAL_MNEMONIC(LD_SBCS, LD_SBCS, "ld.sbcs"),
28035 + NORMAL_MNEMONIC(LD_SBGE, LD_SBGE, "ld.sbge"),
28036 + NORMAL_MNEMONIC(LD_SBLT, LD_SBLT, "ld.sblt"),
28037 + NORMAL_MNEMONIC(LD_SBMI, LD_SBMI, "ld.sbmi"),
28038 + NORMAL_MNEMONIC(LD_SBPL, LD_SBPL, "ld.sbpl"),
28039 + NORMAL_MNEMONIC(LD_SBLS, LD_SBLS, "ld.sbls"),
28040 + NORMAL_MNEMONIC(LD_SBGT, LD_SBGT, "ld.sbgt"),
28041 + NORMAL_MNEMONIC(LD_SBLE, LD_SBLE, "ld.sble"),
28042 + NORMAL_MNEMONIC(LD_SBHI, LD_SBHI, "ld.sbhi"),
28043 + NORMAL_MNEMONIC(LD_SBVS, LD_SBVS, "ld.sbvs"),
28044 + NORMAL_MNEMONIC(LD_SBVC, LD_SBVC, "ld.sbvc"),
28045 + NORMAL_MNEMONIC(LD_SBQS, LD_SBQS, "ld.sbqs"),
28046 + NORMAL_MNEMONIC(LD_SBAL, LD_SBAL, "ld.sbal"),
28047 + NORMAL_MNEMONIC(LD_SBHS, LD_SBHS, "ld.sbhs"),
28048 + NORMAL_MNEMONIC(LD_SBLO, LD_SBLO, "ld.sblo"),
28049 + NORMAL_MNEMONIC(LD_UBEQ, LD_UBEQ, "ld.ubeq"),
28050 + NORMAL_MNEMONIC(LD_UBNE, LD_UBNE, "ld.ubne"),
28051 + NORMAL_MNEMONIC(LD_UBCC, LD_UBCC, "ld.ubcc"),
28052 + NORMAL_MNEMONIC(LD_UBCS, LD_UBCS, "ld.ubcs"),
28053 + NORMAL_MNEMONIC(LD_UBGE, LD_UBGE, "ld.ubge"),
28054 + NORMAL_MNEMONIC(LD_UBLT, LD_UBLT, "ld.ublt"),
28055 + NORMAL_MNEMONIC(LD_UBMI, LD_UBMI, "ld.ubmi"),
28056 + NORMAL_MNEMONIC(LD_UBPL, LD_UBPL, "ld.ubpl"),
28057 + NORMAL_MNEMONIC(LD_UBLS, LD_UBLS, "ld.ubls"),
28058 + NORMAL_MNEMONIC(LD_UBGT, LD_UBGT, "ld.ubgt"),
28059 + NORMAL_MNEMONIC(LD_UBLE, LD_UBLE, "ld.uble"),
28060 + NORMAL_MNEMONIC(LD_UBHI, LD_UBHI, "ld.ubhi"),
28061 + NORMAL_MNEMONIC(LD_UBVS, LD_UBVS, "ld.ubvs"),
28062 + NORMAL_MNEMONIC(LD_UBVC, LD_UBVC, "ld.ubvc"),
28063 + NORMAL_MNEMONIC(LD_UBQS, LD_UBQS, "ld.ubqs"),
28064 + NORMAL_MNEMONIC(LD_UBAL, LD_UBAL, "ld.ubal"),
28065 + NORMAL_MNEMONIC(LD_UBHS, LD_UBHS, "ld.ubhs"),
28066 + NORMAL_MNEMONIC(LD_UBLO, LD_UBLO, "ld.ublo"),
28067 + NORMAL_MNEMONIC(ST_WEQ, ST_WEQ, "st.weq"),
28068 + NORMAL_MNEMONIC(ST_WNE, ST_WNE, "st.wne"),
28069 + NORMAL_MNEMONIC(ST_WCC, ST_WCC, "st.wcc"),
28070 + NORMAL_MNEMONIC(ST_WCS, ST_WCS, "st.wcs"),
28071 + NORMAL_MNEMONIC(ST_WGE, ST_WGE, "st.wge"),
28072 + NORMAL_MNEMONIC(ST_WLT, ST_WLT, "st.wlt"),
28073 + NORMAL_MNEMONIC(ST_WMI, ST_WMI, "st.wmi"),
28074 + NORMAL_MNEMONIC(ST_WPL, ST_WPL, "st.wpl"),
28075 + NORMAL_MNEMONIC(ST_WLS, ST_WLS, "st.wls"),
28076 + NORMAL_MNEMONIC(ST_WGT, ST_WGT, "st.wgt"),
28077 + NORMAL_MNEMONIC(ST_WLE, ST_WLE, "st.wle"),
28078 + NORMAL_MNEMONIC(ST_WHI, ST_WHI, "st.whi"),
28079 + NORMAL_MNEMONIC(ST_WVS, ST_WVS, "st.wvs"),
28080 + NORMAL_MNEMONIC(ST_WVC, ST_WVC, "st.wvc"),
28081 + NORMAL_MNEMONIC(ST_WQS, ST_WQS, "st.wqs"),
28082 + NORMAL_MNEMONIC(ST_WAL, ST_WAL, "st.wal"),
28083 + NORMAL_MNEMONIC(ST_WHS, ST_WHS, "st.whs"),
28084 + NORMAL_MNEMONIC(ST_WLO, ST_WLO, "st.wlo"),
28085 + NORMAL_MNEMONIC(ST_HEQ, ST_HEQ, "st.heq"),
28086 + NORMAL_MNEMONIC(ST_HNE, ST_HNE, "st.hne"),
28087 + NORMAL_MNEMONIC(ST_HCC, ST_HCC, "st.hcc"),
28088 + NORMAL_MNEMONIC(ST_HCS, ST_HCS, "st.hcs"),
28089 + NORMAL_MNEMONIC(ST_HGE, ST_HGE, "st.hge"),
28090 + NORMAL_MNEMONIC(ST_HLT, ST_HLT, "st.hlt"),
28091 + NORMAL_MNEMONIC(ST_HMI, ST_HMI, "st.hmi"),
28092 + NORMAL_MNEMONIC(ST_HPL, ST_HPL, "st.hpl"),
28093 + NORMAL_MNEMONIC(ST_HLS, ST_HLS, "st.hls"),
28094 + NORMAL_MNEMONIC(ST_HGT, ST_HGT, "st.hgt"),
28095 + NORMAL_MNEMONIC(ST_HLE, ST_HLE, "st.hle"),
28096 + NORMAL_MNEMONIC(ST_HHI, ST_HHI, "st.hhi"),
28097 + NORMAL_MNEMONIC(ST_HVS, ST_HVS, "st.hvs"),
28098 + NORMAL_MNEMONIC(ST_HVC, ST_HVC, "st.hvc"),
28099 + NORMAL_MNEMONIC(ST_HQS, ST_HQS, "st.hqs"),
28100 + NORMAL_MNEMONIC(ST_HAL, ST_HAL, "st.hal"),
28101 + NORMAL_MNEMONIC(ST_HHS, ST_HHS, "st.hhs"),
28102 + NORMAL_MNEMONIC(ST_HLO, ST_HLO, "st.hlo"),
28103 + NORMAL_MNEMONIC(ST_BEQ, ST_BEQ, "st.beq"),
28104 + NORMAL_MNEMONIC(ST_BNE, ST_BNE, "st.bne"),
28105 + NORMAL_MNEMONIC(ST_BCC, ST_BCC, "st.bcc"),
28106 + NORMAL_MNEMONIC(ST_BCS, ST_BCS, "st.bcs"),
28107 + NORMAL_MNEMONIC(ST_BGE, ST_BGE, "st.bge"),
28108 + NORMAL_MNEMONIC(ST_BLT, ST_BLT, "st.blt"),
28109 + NORMAL_MNEMONIC(ST_BMI, ST_BMI, "st.bmi"),
28110 + NORMAL_MNEMONIC(ST_BPL, ST_BPL, "st.bpl"),
28111 + NORMAL_MNEMONIC(ST_BLS, ST_BLS, "st.bls"),
28112 + NORMAL_MNEMONIC(ST_BGT, ST_BGT, "st.bgt"),
28113 + NORMAL_MNEMONIC(ST_BLE, ST_BLE, "st.ble"),
28114 + NORMAL_MNEMONIC(ST_BHI, ST_BHI, "st.bhi"),
28115 + NORMAL_MNEMONIC(ST_BVS, ST_BVS, "st.bvs"),
28116 + NORMAL_MNEMONIC(ST_BVC, ST_BVC, "st.bvc"),
28117 + NORMAL_MNEMONIC(ST_BQS, ST_BQS, "st.bqs"),
28118 + NORMAL_MNEMONIC(ST_BAL, ST_BAL, "st.bal"),
28119 + NORMAL_MNEMONIC(ST_BHS, ST_BHS, "st.bhs"),
28120 + NORMAL_MNEMONIC(ST_BLO, ST_BLO, "st.blo"),
28121 + NORMAL_MNEMONIC(MOVH, MOVH, "movh"),
28122 +
28123 + };
28124 +#undef NORMAL_MNEMONIC
28125 +#undef ALIAS_MNEMONIC
28126 +#undef FP_MNEMONIC
28127 --- /dev/null
28128 +++ b/opcodes/avr32-opc.h
28129 @@ -0,0 +1,2370 @@
28130 +/* Opcode tables for AVR32.
28131 + Copyright 2005, 2006 Atmel Corporation.
28132 +
28133 + Written by Haavard Skinnemoen, Atmel Norway, <hskinnemoen@atmel.com>
28134 +
28135 + This file is part of libopcodes.
28136 +
28137 + This program is free software; you can redistribute it and/or
28138 + modify it under the terms of the GNU General Public License as
28139 + published by the Free Software Foundation; either version 2 of the
28140 + License, or (at your option) any later version.
28141 +
28142 + This program is distributed in the hope that it will be useful, but
28143 + WITHOUT ANY WARRANTY; without even the implied warranty of
28144 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28145 + General Public License for more details.
28146 +
28147 + You should have received a copy of the GNU General Public License
28148 + along with this program; if not, write to the Free Software
28149 + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
28150 + 02111-1307, USA. */
28151 +
28152 +#include "bfd.h"
28153 +
28154 +#define AVR32_MAX_OPERANDS 8
28155 +#define AVR32_MAX_FIELDS 8
28156 +
28157 +#define AVR32_V1 (1 << 1)
28158 +#define AVR32_SIMD (1 << 2)
28159 +#define AVR32_DSP (1 << 3)
28160 +#define AVR32_RMW (1 << 4)
28161 +#define AVR32_V2 (1 << 5)
28162 +#define AVR32_FP (1 << 16)
28163 +#define AVR32_PICO (1 << 17)
28164 +
28165 +/* Registers we commonly refer to */
28166 +#define AVR32_REG_R12 12
28167 +#define AVR32_REG_SP 13
28168 +#define AVR32_REG_LR 14
28169 +#define AVR32_REG_PC 15
28170 +
28171 +struct avr32_ifield
28172 +{
28173 + int id;
28174 + unsigned short bitsize;
28175 + unsigned short shift;
28176 + unsigned long mask;
28177 +
28178 + /* If the value doesn't fit, it will be truncated with no warning */
28179 + void (*insert)(const struct avr32_ifield *, void *, unsigned long);
28180 + void (*extract)(const struct avr32_ifield *, void *, unsigned long *);
28181 +};
28182 +
28183 +struct avr32_opcode
28184 +{
28185 + int id;
28186 + int size;
28187 + unsigned long value;
28188 + unsigned long mask;
28189 + const struct avr32_syntax *syntax;
28190 + bfd_reloc_code_real_type reloc_type;
28191 + unsigned int nr_fields;
28192 + /* if relaxable, which field is variable, otherwise -1 */
28193 + int var_field;
28194 + const struct avr32_ifield *fields[AVR32_MAX_FIELDS];
28195 +};
28196 +
28197 +struct avr32_alias
28198 +{
28199 + int id;
28200 + const struct avr32_opcode *opc;
28201 + struct {
28202 + int is_opindex;
28203 + unsigned long value;
28204 + } operand_map[AVR32_MAX_OPERANDS];
28205 +};
28206 +
28207 +struct avr32_syntax
28208 +{
28209 + int id;
28210 + unsigned long isa_flags;
28211 + const struct avr32_mnemonic *mnemonic;
28212 + int type;
28213 + union {
28214 + const struct avr32_opcode *opc;
28215 + const struct avr32_alias *alias;
28216 + } u;
28217 + const struct avr32_syntax *next;
28218 + /* negative means "vararg" */
28219 + int nr_operands;
28220 + int operand[AVR32_MAX_OPERANDS];
28221 +};
28222 +
28223 +#if 0
28224 +#define AVR32_ALIAS_MAKE_CONST(val) ((val) | 0x80000000UL)
28225 +#define AVR32_ALIAS_IS_CONST(mapval) (((mapval) & 0x80000000UL) != 0)
28226 +#define AVR32_ALIAS_GET_CONST(mapval) ((mapval) & ~0x80000000UL)
28227 +#endif
28228 +
28229 +struct avr32_mnemonic
28230 +{
28231 + int id;
28232 + const char *name;
28233 + const struct avr32_syntax *syntax;
28234 +};
28235 +
28236 +extern const struct avr32_ifield avr32_ifield_table[];
28237 +extern struct avr32_opcode avr32_opc_table[];
28238 +extern const struct avr32_syntax avr32_syntax_table[];
28239 +extern const struct avr32_alias avr32_alias_table[];
28240 +extern const struct avr32_mnemonic avr32_mnemonic_table[];
28241 +
28242 +extern void avr32_insert_simple(const struct avr32_ifield *field,
28243 + void *buf, unsigned long value);
28244 +extern void avr32_insert_bit5c(const struct avr32_ifield *field,
28245 + void *buf, unsigned long value);
28246 +extern void avr32_insert_k10(const struct avr32_ifield *field,
28247 + void *buf, unsigned long value);
28248 +extern void avr32_insert_k21(const struct avr32_ifield *field,
28249 + void *buf, unsigned long value);
28250 +extern void avr32_insert_cpop(const struct avr32_ifield *field,
28251 + void *buf, unsigned long value);
28252 +extern void avr32_insert_k12cp(const struct avr32_ifield *field,
28253 + void *buf, unsigned long value);
28254 +
28255 +extern void avr32_extract_simple(const struct avr32_ifield *field,
28256 + void *buf, unsigned long *value);
28257 +extern void avr32_extract_bit5c(const struct avr32_ifield *field,
28258 + void *buf, unsigned long *value);
28259 +extern void avr32_extract_k10(const struct avr32_ifield *field,
28260 + void *buf, unsigned long *value);
28261 +extern void avr32_extract_k21(const struct avr32_ifield *field,
28262 + void *buf, unsigned long *value);
28263 +extern void avr32_extract_cpop(const struct avr32_ifield *field,
28264 + void *buf, unsigned long *value);
28265 +extern void avr32_extract_k12cp(const struct avr32_ifield *field,
28266 + void *buf, unsigned long *value);
28267 +
28268 +enum avr32_operand_type
28269 +{
28270 + AVR32_OPERAND_INTREG, /* just a register */
28271 + AVR32_OPERAND_INTREG_PREDEC, /* register with pre-decrement */
28272 + AVR32_OPERAND_INTREG_POSTINC, /* register with post-increment */
28273 + AVR32_OPERAND_INTREG_LSL, /* register with left shift */
28274 + AVR32_OPERAND_INTREG_LSR, /* register with right shift */
28275 + AVR32_OPERAND_INTREG_BSEL, /* register with byte selector */
28276 + AVR32_OPERAND_INTREG_HSEL, /* register with halfword selector */
28277 + AVR32_OPERAND_INTREG_SDISP, /* Rp[signed disp] */
28278 + AVR32_OPERAND_INTREG_SDISP_H, /* Rp[signed hword-aligned disp] */
28279 + AVR32_OPERAND_INTREG_SDISP_W, /* Rp[signed word-aligned disp] */
28280 + AVR32_OPERAND_INTREG_UDISP, /* Rp[unsigned disp] */
28281 + AVR32_OPERAND_INTREG_UDISP_H, /* Rp[unsigned hword-aligned disp] */
28282 + AVR32_OPERAND_INTREG_UDISP_W, /* Rp[unsigned word-aligned disp] */
28283 + AVR32_OPERAND_INTREG_INDEX, /* Rp[Ri << sa] */
28284 + AVR32_OPERAND_INTREG_XINDEX, /* Rp[Ri:bytesel << 2] */
28285 + AVR32_OPERAND_DWREG, /* Even-numbered register */
28286 + AVR32_OPERAND_PC_UDISP_W, /* PC[unsigned word-aligned disp] or label */
28287 + AVR32_OPERAND_SP, /* Just SP */
28288 + AVR32_OPERAND_SP_UDISP_W, /* SP[unsigned word-aligned disp] */
28289 + AVR32_OPERAND_CPNO,
28290 + AVR32_OPERAND_CPREG,
28291 + AVR32_OPERAND_CPREG_D,
28292 + AVR32_OPERAND_UNSIGNED_CONST,
28293 + AVR32_OPERAND_UNSIGNED_CONST_W,
28294 + AVR32_OPERAND_SIGNED_CONST,
28295 + AVR32_OPERAND_SIGNED_CONST_W,
28296 + AVR32_OPERAND_JMPLABEL,
28297 + AVR32_OPERAND_UNSIGNED_NUMBER,
28298 + AVR32_OPERAND_UNSIGNED_NUMBER_W,
28299 + AVR32_OPERAND_REGLIST8,
28300 + AVR32_OPERAND_REGLIST9,
28301 + AVR32_OPERAND_REGLIST16,
28302 + AVR32_OPERAND_REGLIST_LDM,
28303 + AVR32_OPERAND_REGLIST_CP8,
28304 + AVR32_OPERAND_REGLIST_CPD8,
28305 + AVR32_OPERAND_RETVAL,
28306 + AVR32_OPERAND_MCALL,
28307 + AVR32_OPERAND_JOSPINC,
28308 + AVR32_OPERAND_COH,
28309 + AVR32_OPERAND_FPREG_S,
28310 + AVR32_OPERAND_FPREG_D,
28311 + AVR32_OPERAND_PICO_REG_W,
28312 + AVR32_OPERAND_PICO_REG_D,
28313 + AVR32_OPERAND_PICO_REGLIST_W,
28314 + AVR32_OPERAND_PICO_REGLIST_D,
28315 + AVR32_OPERAND_PICO_IN,
28316 + AVR32_OPERAND_PICO_OUT0,
28317 + AVR32_OPERAND_PICO_OUT1,
28318 + AVR32_OPERAND_PICO_OUT2,
28319 + AVR32_OPERAND_PICO_OUT3,
28320 + AVR32_OPERAND__END_
28321 +};
28322 +#define AVR32_OPERAND_UNKNOWN AVR32_OPERAND__END_
28323 +#define AVR32_NR_OPERANDS AVR32_OPERAND__END_
28324 +
28325 +enum avr32_ifield_type
28326 +{
28327 + AVR32_IFIELD_RX,
28328 + AVR32_IFIELD_RY,
28329 + AVR32_IFIELD_COND4C,
28330 + AVR32_IFIELD_K8C,
28331 + AVR32_IFIELD_K7C,
28332 + AVR32_IFIELD_K5C,
28333 + AVR32_IFIELD_K3,
28334 + AVR32_IFIELD_RY_DW,
28335 + AVR32_IFIELD_COND4E,
28336 + AVR32_IFIELD_K8E,
28337 + AVR32_IFIELD_BIT5C,
28338 + AVR32_IFIELD_COND3,
28339 + AVR32_IFIELD_K10,
28340 + AVR32_IFIELD_POPM,
28341 + AVR32_IFIELD_K2,
28342 + AVR32_IFIELD_RD_E,
28343 + AVR32_IFIELD_RD_DW,
28344 + AVR32_IFIELD_X,
28345 + AVR32_IFIELD_Y,
28346 + AVR32_IFIELD_X2,
28347 + AVR32_IFIELD_Y2,
28348 + AVR32_IFIELD_K5E,
28349 + AVR32_IFIELD_PART2,
28350 + AVR32_IFIELD_PART1,
28351 + AVR32_IFIELD_K16,
28352 + AVR32_IFIELD_CACHEOP,
28353 + AVR32_IFIELD_K11,
28354 + AVR32_IFIELD_K21,
28355 + AVR32_IFIELD_CPOP,
28356 + AVR32_IFIELD_CPNO,
28357 + AVR32_IFIELD_CRD_RI,
28358 + AVR32_IFIELD_CRX,
28359 + AVR32_IFIELD_CRY,
28360 + AVR32_IFIELD_K7E,
28361 + AVR32_IFIELD_CRD_DW,
28362 + AVR32_IFIELD_PART1_K12,
28363 + AVR32_IFIELD_PART2_K12,
28364 + AVR32_IFIELD_K12,
28365 + AVR32_IFIELD_S5,
28366 + AVR32_IFIELD_K5E2,
28367 + AVR32_IFIELD_K4,
28368 + AVR32_IFIELD_COND4E2,
28369 + AVR32_IFIELD_K8E2,
28370 + AVR32_IFIELD_K6,
28371 + AVR32_IFIELD_MEM15,
28372 + AVR32_IFIELD_MEMB5,
28373 + AVR32_IFIELD_W,
28374 + AVR32_IFIELD_CM_HL,
28375 + AVR32_IFIELD_K12CP,
28376 + AVR32_IFIELD_K9E,
28377 + AVR32_IFIELD__END_,
28378 +};
28379 +#define AVR32_NR_IFIELDS AVR32_IFIELD__END_
28380 +
28381 +enum avr32_opc_type
28382 +{
28383 + AVR32_OPC_ABS,
28384 + AVR32_OPC_ACALL,
28385 + AVR32_OPC_ACR,
28386 + AVR32_OPC_ADC,
28387 + AVR32_OPC_ADD1,
28388 + AVR32_OPC_ADD2,
28389 + AVR32_OPC_ADDABS,
28390 + AVR32_OPC_ADDHH_W,
28391 + AVR32_OPC_AND1,
28392 + AVR32_OPC_AND2,
28393 + AVR32_OPC_AND3,
28394 + AVR32_OPC_ANDH,
28395 + AVR32_OPC_ANDH_COH,
28396 + AVR32_OPC_ANDL,
28397 + AVR32_OPC_ANDL_COH,
28398 + AVR32_OPC_ANDN,
28399 + AVR32_OPC_ASR1,
28400 + AVR32_OPC_ASR3,
28401 + AVR32_OPC_ASR2,
28402 + AVR32_OPC_BLD,
28403 + AVR32_OPC_BREQ1,
28404 + AVR32_OPC_BRNE1,
28405 + AVR32_OPC_BRCC1,
28406 + AVR32_OPC_BRCS1,
28407 + AVR32_OPC_BRGE1,
28408 + AVR32_OPC_BRLT1,
28409 + AVR32_OPC_BRMI1,
28410 + AVR32_OPC_BRPL1,
28411 + AVR32_OPC_BREQ2,
28412 + AVR32_OPC_BRNE2,
28413 + AVR32_OPC_BRCC2,
28414 + AVR32_OPC_BRCS2,
28415 + AVR32_OPC_BRGE2,
28416 + AVR32_OPC_BRLT2,
28417 + AVR32_OPC_BRMI2,
28418 + AVR32_OPC_BRPL2,
28419 + AVR32_OPC_BRLS,
28420 + AVR32_OPC_BRGT,
28421 + AVR32_OPC_BRLE,
28422 + AVR32_OPC_BRHI,
28423 + AVR32_OPC_BRVS,
28424 + AVR32_OPC_BRVC,
28425 + AVR32_OPC_BRQS,
28426 + AVR32_OPC_BRAL,
28427 + AVR32_OPC_BREAKPOINT,
28428 + AVR32_OPC_BREV,
28429 + AVR32_OPC_BST,
28430 + AVR32_OPC_CACHE,
28431 + AVR32_OPC_CASTS_B,
28432 + AVR32_OPC_CASTS_H,
28433 + AVR32_OPC_CASTU_B,
28434 + AVR32_OPC_CASTU_H,
28435 + AVR32_OPC_CBR,
28436 + AVR32_OPC_CLZ,
28437 + AVR32_OPC_COM,
28438 + AVR32_OPC_COP,
28439 + AVR32_OPC_CP_B,
28440 + AVR32_OPC_CP_H,
28441 + AVR32_OPC_CP_W1,
28442 + AVR32_OPC_CP_W2,
28443 + AVR32_OPC_CP_W3,
28444 + AVR32_OPC_CPC1,
28445 + AVR32_OPC_CPC2,
28446 + AVR32_OPC_CSRF,
28447 + AVR32_OPC_CSRFCZ,
28448 + AVR32_OPC_DIVS,
28449 + AVR32_OPC_DIVU,
28450 + AVR32_OPC_EOR1,
28451 + AVR32_OPC_EOR2,
28452 + AVR32_OPC_EOR3,
28453 + AVR32_OPC_EORL,
28454 + AVR32_OPC_EORH,
28455 + AVR32_OPC_FRS,
28456 + AVR32_OPC_ICALL,
28457 + AVR32_OPC_INCJOSP,
28458 + AVR32_OPC_LD_D1,
28459 + AVR32_OPC_LD_D2,
28460 + AVR32_OPC_LD_D3,
28461 + AVR32_OPC_LD_D5,
28462 + AVR32_OPC_LD_D4,
28463 + AVR32_OPC_LD_SB2,
28464 + AVR32_OPC_LD_SB1,
28465 + AVR32_OPC_LD_UB1,
28466 + AVR32_OPC_LD_UB2,
28467 + AVR32_OPC_LD_UB5,
28468 + AVR32_OPC_LD_UB3,
28469 + AVR32_OPC_LD_UB4,
28470 + AVR32_OPC_LD_SH1,
28471 + AVR32_OPC_LD_SH2,
28472 + AVR32_OPC_LD_SH5,
28473 + AVR32_OPC_LD_SH3,
28474 + AVR32_OPC_LD_SH4,
28475 + AVR32_OPC_LD_UH1,
28476 + AVR32_OPC_LD_UH2,
28477 + AVR32_OPC_LD_UH5,
28478 + AVR32_OPC_LD_UH3,
28479 + AVR32_OPC_LD_UH4,
28480 + AVR32_OPC_LD_W1,
28481 + AVR32_OPC_LD_W2,
28482 + AVR32_OPC_LD_W5,
28483 + AVR32_OPC_LD_W6,
28484 + AVR32_OPC_LD_W3,
28485 + AVR32_OPC_LD_W4,
28486 + AVR32_OPC_LDC_D1,
28487 + AVR32_OPC_LDC_D2,
28488 + AVR32_OPC_LDC_D3,
28489 + AVR32_OPC_LDC_W1,
28490 + AVR32_OPC_LDC_W2,
28491 + AVR32_OPC_LDC_W3,
28492 + AVR32_OPC_LDC0_D,
28493 + AVR32_OPC_LDC0_W,
28494 + AVR32_OPC_LDCM_D,
28495 + AVR32_OPC_LDCM_D_PU,
28496 + AVR32_OPC_LDCM_W,
28497 + AVR32_OPC_LDCM_W_PU,
28498 + AVR32_OPC_LDDPC,
28499 + AVR32_OPC_LDDPC_EXT,
28500 + AVR32_OPC_LDDSP,
28501 + AVR32_OPC_LDINS_B,
28502 + AVR32_OPC_LDINS_H,
28503 + AVR32_OPC_LDM,
28504 + AVR32_OPC_LDMTS,
28505 + AVR32_OPC_LDMTS_PU,
28506 + AVR32_OPC_LDSWP_SH,
28507 + AVR32_OPC_LDSWP_UH,
28508 + AVR32_OPC_LDSWP_W,
28509 + AVR32_OPC_LSL1,
28510 + AVR32_OPC_LSL3,
28511 + AVR32_OPC_LSL2,
28512 + AVR32_OPC_LSR1,
28513 + AVR32_OPC_LSR3,
28514 + AVR32_OPC_LSR2,
28515 + AVR32_OPC_MAC,
28516 + AVR32_OPC_MACHH_D,
28517 + AVR32_OPC_MACHH_W,
28518 + AVR32_OPC_MACS_D,
28519 + AVR32_OPC_MACSATHH_W,
28520 + AVR32_OPC_MACUD,
28521 + AVR32_OPC_MACWH_D,
28522 + AVR32_OPC_MAX,
28523 + AVR32_OPC_MCALL,
28524 + AVR32_OPC_MFDR,
28525 + AVR32_OPC_MFSR,
28526 + AVR32_OPC_MIN,
28527 + AVR32_OPC_MOV3,
28528 + AVR32_OPC_MOV1,
28529 + AVR32_OPC_MOV2,
28530 + AVR32_OPC_MOVEQ1,
28531 + AVR32_OPC_MOVNE1,
28532 + AVR32_OPC_MOVCC1,
28533 + AVR32_OPC_MOVCS1,
28534 + AVR32_OPC_MOVGE1,
28535 + AVR32_OPC_MOVLT1,
28536 + AVR32_OPC_MOVMI1,
28537 + AVR32_OPC_MOVPL1,
28538 + AVR32_OPC_MOVLS1,
28539 + AVR32_OPC_MOVGT1,
28540 + AVR32_OPC_MOVLE1,
28541 + AVR32_OPC_MOVHI1,
28542 + AVR32_OPC_MOVVS1,
28543 + AVR32_OPC_MOVVC1,
28544 + AVR32_OPC_MOVQS1,
28545 + AVR32_OPC_MOVAL1,
28546 + AVR32_OPC_MOVEQ2,
28547 + AVR32_OPC_MOVNE2,
28548 + AVR32_OPC_MOVCC2,
28549 + AVR32_OPC_MOVCS2,
28550 + AVR32_OPC_MOVGE2,
28551 + AVR32_OPC_MOVLT2,
28552 + AVR32_OPC_MOVMI2,
28553 + AVR32_OPC_MOVPL2,
28554 + AVR32_OPC_MOVLS2,
28555 + AVR32_OPC_MOVGT2,
28556 + AVR32_OPC_MOVLE2,
28557 + AVR32_OPC_MOVHI2,
28558 + AVR32_OPC_MOVVS2,
28559 + AVR32_OPC_MOVVC2,
28560 + AVR32_OPC_MOVQS2,
28561 + AVR32_OPC_MOVAL2,
28562 + AVR32_OPC_MTDR,
28563 + AVR32_OPC_MTSR,
28564 + AVR32_OPC_MUL1,
28565 + AVR32_OPC_MUL2,
28566 + AVR32_OPC_MUL3,
28567 + AVR32_OPC_MULHH_W,
28568 + AVR32_OPC_MULNHH_W,
28569 + AVR32_OPC_MULNWH_D,
28570 + AVR32_OPC_MULSD,
28571 + AVR32_OPC_MULSATHH_H,
28572 + AVR32_OPC_MULSATHH_W,
28573 + AVR32_OPC_MULSATRNDHH_H,
28574 + AVR32_OPC_MULSATRNDWH_W,
28575 + AVR32_OPC_MULSATWH_W,
28576 + AVR32_OPC_MULU_D,
28577 + AVR32_OPC_MULWH_D,
28578 + AVR32_OPC_MUSFR,
28579 + AVR32_OPC_MUSTR,
28580 + AVR32_OPC_MVCR_D,
28581 + AVR32_OPC_MVCR_W,
28582 + AVR32_OPC_MVRC_D,
28583 + AVR32_OPC_MVRC_W,
28584 + AVR32_OPC_NEG,
28585 + AVR32_OPC_NOP,
28586 + AVR32_OPC_OR1,
28587 + AVR32_OPC_OR2,
28588 + AVR32_OPC_OR3,
28589 + AVR32_OPC_ORH,
28590 + AVR32_OPC_ORL,
28591 + AVR32_OPC_PABS_SB,
28592 + AVR32_OPC_PABS_SH,
28593 + AVR32_OPC_PACKSH_SB,
28594 + AVR32_OPC_PACKSH_UB,
28595 + AVR32_OPC_PACKW_SH,
28596 + AVR32_OPC_PADD_B,
28597 + AVR32_OPC_PADD_H,
28598 + AVR32_OPC_PADDH_SH,
28599 + AVR32_OPC_PADDH_UB,
28600 + AVR32_OPC_PADDS_SB,
28601 + AVR32_OPC_PADDS_SH,
28602 + AVR32_OPC_PADDS_UB,
28603 + AVR32_OPC_PADDS_UH,
28604 + AVR32_OPC_PADDSUB_H,
28605 + AVR32_OPC_PADDSUBH_SH,
28606 + AVR32_OPC_PADDSUBS_SH,
28607 + AVR32_OPC_PADDSUBS_UH,
28608 + AVR32_OPC_PADDX_H,
28609 + AVR32_OPC_PADDXH_SH,
28610 + AVR32_OPC_PADDXS_SH,
28611 + AVR32_OPC_PADDXS_UH,
28612 + AVR32_OPC_PASR_B,
28613 + AVR32_OPC_PASR_H,
28614 + AVR32_OPC_PAVG_SH,
28615 + AVR32_OPC_PAVG_UB,
28616 + AVR32_OPC_PLSL_B,
28617 + AVR32_OPC_PLSL_H,
28618 + AVR32_OPC_PLSR_B,
28619 + AVR32_OPC_PLSR_H,
28620 + AVR32_OPC_PMAX_SH,
28621 + AVR32_OPC_PMAX_UB,
28622 + AVR32_OPC_PMIN_SH,
28623 + AVR32_OPC_PMIN_UB,
28624 + AVR32_OPC_POPJC,
28625 + AVR32_OPC_POPM,
28626 + AVR32_OPC_POPM_E,
28627 + AVR32_OPC_PREF,
28628 + AVR32_OPC_PSAD,
28629 + AVR32_OPC_PSUB_B,
28630 + AVR32_OPC_PSUB_H,
28631 + AVR32_OPC_PSUBADD_H,
28632 + AVR32_OPC_PSUBADDH_SH,
28633 + AVR32_OPC_PSUBADDS_SH,
28634 + AVR32_OPC_PSUBADDS_UH,
28635 + AVR32_OPC_PSUBH_SH,
28636 + AVR32_OPC_PSUBH_UB,
28637 + AVR32_OPC_PSUBS_SB,
28638 + AVR32_OPC_PSUBS_SH,
28639 + AVR32_OPC_PSUBS_UB,
28640 + AVR32_OPC_PSUBS_UH,
28641 + AVR32_OPC_PSUBX_H,
28642 + AVR32_OPC_PSUBXH_SH,
28643 + AVR32_OPC_PSUBXS_SH,
28644 + AVR32_OPC_PSUBXS_UH,
28645 + AVR32_OPC_PUNPCKSB_H,
28646 + AVR32_OPC_PUNPCKUB_H,
28647 + AVR32_OPC_PUSHJC,
28648 + AVR32_OPC_PUSHM,
28649 + AVR32_OPC_PUSHM_E,
28650 + AVR32_OPC_RCALL1,
28651 + AVR32_OPC_RCALL2,
28652 + AVR32_OPC_RETEQ,
28653 + AVR32_OPC_RETNE,
28654 + AVR32_OPC_RETCC,
28655 + AVR32_OPC_RETCS,
28656 + AVR32_OPC_RETGE,
28657 + AVR32_OPC_RETLT,
28658 + AVR32_OPC_RETMI,
28659 + AVR32_OPC_RETPL,
28660 + AVR32_OPC_RETLS,
28661 + AVR32_OPC_RETGT,
28662 + AVR32_OPC_RETLE,
28663 + AVR32_OPC_RETHI,
28664 + AVR32_OPC_RETVS,
28665 + AVR32_OPC_RETVC,
28666 + AVR32_OPC_RETQS,
28667 + AVR32_OPC_RETAL,
28668 + AVR32_OPC_RETD,
28669 + AVR32_OPC_RETE,
28670 + AVR32_OPC_RETJ,
28671 + AVR32_OPC_RETS,
28672 + AVR32_OPC_RJMP,
28673 + AVR32_OPC_ROL,
28674 + AVR32_OPC_ROR,
28675 + AVR32_OPC_RSUB1,
28676 + AVR32_OPC_RSUB2,
28677 + AVR32_OPC_SATADD_H,
28678 + AVR32_OPC_SATADD_W,
28679 + AVR32_OPC_SATRNDS,
28680 + AVR32_OPC_SATRNDU,
28681 + AVR32_OPC_SATS,
28682 + AVR32_OPC_SATSUB_H,
28683 + AVR32_OPC_SATSUB_W1,
28684 + AVR32_OPC_SATSUB_W2,
28685 + AVR32_OPC_SATU,
28686 + AVR32_OPC_SBC,
28687 + AVR32_OPC_SBR,
28688 + AVR32_OPC_SCALL,
28689 + AVR32_OPC_SCR,
28690 + AVR32_OPC_SLEEP,
28691 + AVR32_OPC_SREQ,
28692 + AVR32_OPC_SRNE,
28693 + AVR32_OPC_SRCC,
28694 + AVR32_OPC_SRCS,
28695 + AVR32_OPC_SRGE,
28696 + AVR32_OPC_SRLT,
28697 + AVR32_OPC_SRMI,
28698 + AVR32_OPC_SRPL,
28699 + AVR32_OPC_SRLS,
28700 + AVR32_OPC_SRGT,
28701 + AVR32_OPC_SRLE,
28702 + AVR32_OPC_SRHI,
28703 + AVR32_OPC_SRVS,
28704 + AVR32_OPC_SRVC,
28705 + AVR32_OPC_SRQS,
28706 + AVR32_OPC_SRAL,
28707 + AVR32_OPC_SSRF,
28708 + AVR32_OPC_ST_B1,
28709 + AVR32_OPC_ST_B2,
28710 + AVR32_OPC_ST_B5,
28711 + AVR32_OPC_ST_B3,
28712 + AVR32_OPC_ST_B4,
28713 + AVR32_OPC_ST_D1,
28714 + AVR32_OPC_ST_D2,
28715 + AVR32_OPC_ST_D3,
28716 + AVR32_OPC_ST_D5,
28717 + AVR32_OPC_ST_D4,
28718 + AVR32_OPC_ST_H1,
28719 + AVR32_OPC_ST_H2,
28720 + AVR32_OPC_ST_H5,
28721 + AVR32_OPC_ST_H3,
28722 + AVR32_OPC_ST_H4,
28723 + AVR32_OPC_ST_W1,
28724 + AVR32_OPC_ST_W2,
28725 + AVR32_OPC_ST_W5,
28726 + AVR32_OPC_ST_W3,
28727 + AVR32_OPC_ST_W4,
28728 + AVR32_OPC_STC_D1,
28729 + AVR32_OPC_STC_D2,
28730 + AVR32_OPC_STC_D3,
28731 + AVR32_OPC_STC_W1,
28732 + AVR32_OPC_STC_W2,
28733 + AVR32_OPC_STC_W3,
28734 + AVR32_OPC_STC0_D,
28735 + AVR32_OPC_STC0_W,
28736 + AVR32_OPC_STCM_D,
28737 + AVR32_OPC_STCM_D_PU,
28738 + AVR32_OPC_STCM_W,
28739 + AVR32_OPC_STCM_W_PU,
28740 + AVR32_OPC_STCOND,
28741 + AVR32_OPC_STDSP,
28742 + AVR32_OPC_STHH_W2,
28743 + AVR32_OPC_STHH_W1,
28744 + AVR32_OPC_STM,
28745 + AVR32_OPC_STM_PU,
28746 + AVR32_OPC_STMTS,
28747 + AVR32_OPC_STMTS_PU,
28748 + AVR32_OPC_STSWP_H,
28749 + AVR32_OPC_STSWP_W,
28750 + AVR32_OPC_SUB1,
28751 + AVR32_OPC_SUB2,
28752 + AVR32_OPC_SUB5,
28753 + AVR32_OPC_SUB3_SP,
28754 + AVR32_OPC_SUB3,
28755 + AVR32_OPC_SUB4,
28756 + AVR32_OPC_SUBEQ,
28757 + AVR32_OPC_SUBNE,
28758 + AVR32_OPC_SUBCC,
28759 + AVR32_OPC_SUBCS,
28760 + AVR32_OPC_SUBGE,
28761 + AVR32_OPC_SUBLT,
28762 + AVR32_OPC_SUBMI,
28763 + AVR32_OPC_SUBPL,
28764 + AVR32_OPC_SUBLS,
28765 + AVR32_OPC_SUBGT,
28766 + AVR32_OPC_SUBLE,
28767 + AVR32_OPC_SUBHI,
28768 + AVR32_OPC_SUBVS,
28769 + AVR32_OPC_SUBVC,
28770 + AVR32_OPC_SUBQS,
28771 + AVR32_OPC_SUBAL,
28772 + AVR32_OPC_SUBFEQ,
28773 + AVR32_OPC_SUBFNE,
28774 + AVR32_OPC_SUBFCC,
28775 + AVR32_OPC_SUBFCS,
28776 + AVR32_OPC_SUBFGE,
28777 + AVR32_OPC_SUBFLT,
28778 + AVR32_OPC_SUBFMI,
28779 + AVR32_OPC_SUBFPL,
28780 + AVR32_OPC_SUBFLS,
28781 + AVR32_OPC_SUBFGT,
28782 + AVR32_OPC_SUBFLE,
28783 + AVR32_OPC_SUBFHI,
28784 + AVR32_OPC_SUBFVS,
28785 + AVR32_OPC_SUBFVC,
28786 + AVR32_OPC_SUBFQS,
28787 + AVR32_OPC_SUBFAL,
28788 + AVR32_OPC_SUBHH_W,
28789 + AVR32_OPC_SWAP_B,
28790 + AVR32_OPC_SWAP_BH,
28791 + AVR32_OPC_SWAP_H,
28792 + AVR32_OPC_SYNC,
28793 + AVR32_OPC_TLBR,
28794 + AVR32_OPC_TLBS,
28795 + AVR32_OPC_TLBW,
28796 + AVR32_OPC_TNBZ,
28797 + AVR32_OPC_TST,
28798 + AVR32_OPC_XCHG,
28799 + AVR32_OPC_MEMC,
28800 + AVR32_OPC_MEMS,
28801 + AVR32_OPC_MEMT,
28802 + AVR32_OPC_BFEXTS,
28803 + AVR32_OPC_BFEXTU,
28804 + AVR32_OPC_BFINS,
28805 + AVR32_OPC_RSUBEQ,
28806 + AVR32_OPC_RSUBNE,
28807 + AVR32_OPC_RSUBCC,
28808 + AVR32_OPC_RSUBCS,
28809 + AVR32_OPC_RSUBGE,
28810 + AVR32_OPC_RSUBLT,
28811 + AVR32_OPC_RSUBMI,
28812 + AVR32_OPC_RSUBPL,
28813 + AVR32_OPC_RSUBLS,
28814 + AVR32_OPC_RSUBGT,
28815 + AVR32_OPC_RSUBLE,
28816 + AVR32_OPC_RSUBHI,
28817 + AVR32_OPC_RSUBVS,
28818 + AVR32_OPC_RSUBVC,
28819 + AVR32_OPC_RSUBQS,
28820 + AVR32_OPC_RSUBAL,
28821 + AVR32_OPC_ADDEQ,
28822 + AVR32_OPC_ADDNE,
28823 + AVR32_OPC_ADDCC,
28824 + AVR32_OPC_ADDCS,
28825 + AVR32_OPC_ADDGE,
28826 + AVR32_OPC_ADDLT,
28827 + AVR32_OPC_ADDMI,
28828 + AVR32_OPC_ADDPL,
28829 + AVR32_OPC_ADDLS,
28830 + AVR32_OPC_ADDGT,
28831 + AVR32_OPC_ADDLE,
28832 + AVR32_OPC_ADDHI,
28833 + AVR32_OPC_ADDVS,
28834 + AVR32_OPC_ADDVC,
28835 + AVR32_OPC_ADDQS,
28836 + AVR32_OPC_ADDAL,
28837 + AVR32_OPC_SUB2EQ,
28838 + AVR32_OPC_SUB2NE,
28839 + AVR32_OPC_SUB2CC,
28840 + AVR32_OPC_SUB2CS,
28841 + AVR32_OPC_SUB2GE,
28842 + AVR32_OPC_SUB2LT,
28843 + AVR32_OPC_SUB2MI,
28844 + AVR32_OPC_SUB2PL,
28845 + AVR32_OPC_SUB2LS,
28846 + AVR32_OPC_SUB2GT,
28847 + AVR32_OPC_SUB2LE,
28848 + AVR32_OPC_SUB2HI,
28849 + AVR32_OPC_SUB2VS,
28850 + AVR32_OPC_SUB2VC,
28851 + AVR32_OPC_SUB2QS,
28852 + AVR32_OPC_SUB2AL,
28853 + AVR32_OPC_ANDEQ,
28854 + AVR32_OPC_ANDNE,
28855 + AVR32_OPC_ANDCC,
28856 + AVR32_OPC_ANDCS,
28857 + AVR32_OPC_ANDGE,
28858 + AVR32_OPC_ANDLT,
28859 + AVR32_OPC_ANDMI,
28860 + AVR32_OPC_ANDPL,
28861 + AVR32_OPC_ANDLS,
28862 + AVR32_OPC_ANDGT,
28863 + AVR32_OPC_ANDLE,
28864 + AVR32_OPC_ANDHI,
28865 + AVR32_OPC_ANDVS,
28866 + AVR32_OPC_ANDVC,
28867 + AVR32_OPC_ANDQS,
28868 + AVR32_OPC_ANDAL,
28869 + AVR32_OPC_OREQ,
28870 + AVR32_OPC_ORNE,
28871 + AVR32_OPC_ORCC,
28872 + AVR32_OPC_ORCS,
28873 + AVR32_OPC_ORGE,
28874 + AVR32_OPC_ORLT,
28875 + AVR32_OPC_ORMI,
28876 + AVR32_OPC_ORPL,
28877 + AVR32_OPC_ORLS,
28878 + AVR32_OPC_ORGT,
28879 + AVR32_OPC_ORLE,
28880 + AVR32_OPC_ORHI,
28881 + AVR32_OPC_ORVS,
28882 + AVR32_OPC_ORVC,
28883 + AVR32_OPC_ORQS,
28884 + AVR32_OPC_ORAL,
28885 + AVR32_OPC_EOREQ,
28886 + AVR32_OPC_EORNE,
28887 + AVR32_OPC_EORCC,
28888 + AVR32_OPC_EORCS,
28889 + AVR32_OPC_EORGE,
28890 + AVR32_OPC_EORLT,
28891 + AVR32_OPC_EORMI,
28892 + AVR32_OPC_EORPL,
28893 + AVR32_OPC_EORLS,
28894 + AVR32_OPC_EORGT,
28895 + AVR32_OPC_EORLE,
28896 + AVR32_OPC_EORHI,
28897 + AVR32_OPC_EORVS,
28898 + AVR32_OPC_EORVC,
28899 + AVR32_OPC_EORQS,
28900 + AVR32_OPC_EORAL,
28901 + AVR32_OPC_LD_WEQ,
28902 + AVR32_OPC_LD_WNE,
28903 + AVR32_OPC_LD_WCC,
28904 + AVR32_OPC_LD_WCS,
28905 + AVR32_OPC_LD_WGE,
28906 + AVR32_OPC_LD_WLT,
28907 + AVR32_OPC_LD_WMI,
28908 + AVR32_OPC_LD_WPL,
28909 + AVR32_OPC_LD_WLS,
28910 + AVR32_OPC_LD_WGT,
28911 + AVR32_OPC_LD_WLE,
28912 + AVR32_OPC_LD_WHI,
28913 + AVR32_OPC_LD_WVS,
28914 + AVR32_OPC_LD_WVC,
28915 + AVR32_OPC_LD_WQS,
28916 + AVR32_OPC_LD_WAL,
28917 + AVR32_OPC_LD_SHEQ,
28918 + AVR32_OPC_LD_SHNE,
28919 + AVR32_OPC_LD_SHCC,
28920 + AVR32_OPC_LD_SHCS,
28921 + AVR32_OPC_LD_SHGE,
28922 + AVR32_OPC_LD_SHLT,
28923 + AVR32_OPC_LD_SHMI,
28924 + AVR32_OPC_LD_SHPL,
28925 + AVR32_OPC_LD_SHLS,
28926 + AVR32_OPC_LD_SHGT,
28927 + AVR32_OPC_LD_SHLE,
28928 + AVR32_OPC_LD_SHHI,
28929 + AVR32_OPC_LD_SHVS,
28930 + AVR32_OPC_LD_SHVC,
28931 + AVR32_OPC_LD_SHQS,
28932 + AVR32_OPC_LD_SHAL,
28933 + AVR32_OPC_LD_UHEQ,
28934 + AVR32_OPC_LD_UHNE,
28935 + AVR32_OPC_LD_UHCC,
28936 + AVR32_OPC_LD_UHCS,
28937 + AVR32_OPC_LD_UHGE,
28938 + AVR32_OPC_LD_UHLT,
28939 + AVR32_OPC_LD_UHMI,
28940 + AVR32_OPC_LD_UHPL,
28941 + AVR32_OPC_LD_UHLS,
28942 + AVR32_OPC_LD_UHGT,
28943 + AVR32_OPC_LD_UHLE,
28944 + AVR32_OPC_LD_UHHI,
28945 + AVR32_OPC_LD_UHVS,
28946 + AVR32_OPC_LD_UHVC,
28947 + AVR32_OPC_LD_UHQS,
28948 + AVR32_OPC_LD_UHAL,
28949 + AVR32_OPC_LD_SBEQ,
28950 + AVR32_OPC_LD_SBNE,
28951 + AVR32_OPC_LD_SBCC,
28952 + AVR32_OPC_LD_SBCS,
28953 + AVR32_OPC_LD_SBGE,
28954 + AVR32_OPC_LD_SBLT,
28955 + AVR32_OPC_LD_SBMI,
28956 + AVR32_OPC_LD_SBPL,
28957 + AVR32_OPC_LD_SBLS,
28958 + AVR32_OPC_LD_SBGT,
28959 + AVR32_OPC_LD_SBLE,
28960 + AVR32_OPC_LD_SBHI,
28961 + AVR32_OPC_LD_SBVS,
28962 + AVR32_OPC_LD_SBVC,
28963 + AVR32_OPC_LD_SBQS,
28964 + AVR32_OPC_LD_SBAL,
28965 + AVR32_OPC_LD_UBEQ,
28966 + AVR32_OPC_LD_UBNE,
28967 + AVR32_OPC_LD_UBCC,
28968 + AVR32_OPC_LD_UBCS,
28969 + AVR32_OPC_LD_UBGE,
28970 + AVR32_OPC_LD_UBLT,
28971 + AVR32_OPC_LD_UBMI,
28972 + AVR32_OPC_LD_UBPL,
28973 + AVR32_OPC_LD_UBLS,
28974 + AVR32_OPC_LD_UBGT,
28975 + AVR32_OPC_LD_UBLE,
28976 + AVR32_OPC_LD_UBHI,
28977 + AVR32_OPC_LD_UBVS,
28978 + AVR32_OPC_LD_UBVC,
28979 + AVR32_OPC_LD_UBQS,
28980 + AVR32_OPC_LD_UBAL,
28981 + AVR32_OPC_ST_WEQ,
28982 + AVR32_OPC_ST_WNE,
28983 + AVR32_OPC_ST_WCC,
28984 + AVR32_OPC_ST_WCS,
28985 + AVR32_OPC_ST_WGE,
28986 + AVR32_OPC_ST_WLT,
28987 + AVR32_OPC_ST_WMI,
28988 + AVR32_OPC_ST_WPL,
28989 + AVR32_OPC_ST_WLS,
28990 + AVR32_OPC_ST_WGT,
28991 + AVR32_OPC_ST_WLE,
28992 + AVR32_OPC_ST_WHI,
28993 + AVR32_OPC_ST_WVS,
28994 + AVR32_OPC_ST_WVC,
28995 + AVR32_OPC_ST_WQS,
28996 + AVR32_OPC_ST_WAL,
28997 + AVR32_OPC_ST_HEQ,
28998 + AVR32_OPC_ST_HNE,
28999 + AVR32_OPC_ST_HCC,
29000 + AVR32_OPC_ST_HCS,
29001 + AVR32_OPC_ST_HGE,
29002 + AVR32_OPC_ST_HLT,
29003 + AVR32_OPC_ST_HMI,
29004 + AVR32_OPC_ST_HPL,
29005 + AVR32_OPC_ST_HLS,
29006 + AVR32_OPC_ST_HGT,
29007 + AVR32_OPC_ST_HLE,
29008 + AVR32_OPC_ST_HHI,
29009 + AVR32_OPC_ST_HVS,
29010 + AVR32_OPC_ST_HVC,
29011 + AVR32_OPC_ST_HQS,
29012 + AVR32_OPC_ST_HAL,
29013 + AVR32_OPC_ST_BEQ,
29014 + AVR32_OPC_ST_BNE,
29015 + AVR32_OPC_ST_BCC,
29016 + AVR32_OPC_ST_BCS,
29017 + AVR32_OPC_ST_BGE,
29018 + AVR32_OPC_ST_BLT,
29019 + AVR32_OPC_ST_BMI,
29020 + AVR32_OPC_ST_BPL,
29021 + AVR32_OPC_ST_BLS,
29022 + AVR32_OPC_ST_BGT,
29023 + AVR32_OPC_ST_BLE,
29024 + AVR32_OPC_ST_BHI,
29025 + AVR32_OPC_ST_BVS,
29026 + AVR32_OPC_ST_BVC,
29027 + AVR32_OPC_ST_BQS,
29028 + AVR32_OPC_ST_BAL,
29029 + AVR32_OPC_MOVH,
29030 + AVR32_OPC__END_
29031 +};
29032 +#define AVR32_NR_OPCODES AVR32_OPC__END_
29033 +
29034 +enum avr32_syntax_type
29035 +{
29036 + AVR32_SYNTAX_ABS,
29037 + AVR32_SYNTAX_ACALL,
29038 + AVR32_SYNTAX_ACR,
29039 + AVR32_SYNTAX_ADC,
29040 + AVR32_SYNTAX_ADD1,
29041 + AVR32_SYNTAX_ADD2,
29042 + AVR32_SYNTAX_ADDABS,
29043 + AVR32_SYNTAX_ADDHH_W,
29044 + AVR32_SYNTAX_AND1,
29045 + AVR32_SYNTAX_AND2,
29046 + AVR32_SYNTAX_AND3,
29047 + AVR32_SYNTAX_ANDH,
29048 + AVR32_SYNTAX_ANDH_COH,
29049 + AVR32_SYNTAX_ANDL,
29050 + AVR32_SYNTAX_ANDL_COH,
29051 + AVR32_SYNTAX_ANDN,
29052 + AVR32_SYNTAX_ASR1,
29053 + AVR32_SYNTAX_ASR3,
29054 + AVR32_SYNTAX_ASR2,
29055 + AVR32_SYNTAX_BFEXTS,
29056 + AVR32_SYNTAX_BFEXTU,
29057 + AVR32_SYNTAX_BFINS,
29058 + AVR32_SYNTAX_BLD,
29059 + AVR32_SYNTAX_BREQ1,
29060 + AVR32_SYNTAX_BRNE1,
29061 + AVR32_SYNTAX_BRCC1,
29062 + AVR32_SYNTAX_BRCS1,
29063 + AVR32_SYNTAX_BRGE1,
29064 + AVR32_SYNTAX_BRLT1,
29065 + AVR32_SYNTAX_BRMI1,
29066 + AVR32_SYNTAX_BRPL1,
29067 + AVR32_SYNTAX_BRHS1,
29068 + AVR32_SYNTAX_BRLO1,
29069 + AVR32_SYNTAX_BREQ2,
29070 + AVR32_SYNTAX_BRNE2,
29071 + AVR32_SYNTAX_BRCC2,
29072 + AVR32_SYNTAX_BRCS2,
29073 + AVR32_SYNTAX_BRGE2,
29074 + AVR32_SYNTAX_BRLT2,
29075 + AVR32_SYNTAX_BRMI2,
29076 + AVR32_SYNTAX_BRPL2,
29077 + AVR32_SYNTAX_BRLS,
29078 + AVR32_SYNTAX_BRGT,
29079 + AVR32_SYNTAX_BRLE,
29080 + AVR32_SYNTAX_BRHI,
29081 + AVR32_SYNTAX_BRVS,
29082 + AVR32_SYNTAX_BRVC,
29083 + AVR32_SYNTAX_BRQS,
29084 + AVR32_SYNTAX_BRAL,
29085 + AVR32_SYNTAX_BRHS2,
29086 + AVR32_SYNTAX_BRLO2,
29087 + AVR32_SYNTAX_BREAKPOINT,
29088 + AVR32_SYNTAX_BREV,
29089 + AVR32_SYNTAX_BST,
29090 + AVR32_SYNTAX_CACHE,
29091 + AVR32_SYNTAX_CASTS_B,
29092 + AVR32_SYNTAX_CASTS_H,
29093 + AVR32_SYNTAX_CASTU_B,
29094 + AVR32_SYNTAX_CASTU_H,
29095 + AVR32_SYNTAX_CBR,
29096 + AVR32_SYNTAX_CLZ,
29097 + AVR32_SYNTAX_COM,
29098 + AVR32_SYNTAX_COP,
29099 + AVR32_SYNTAX_CP_B,
29100 + AVR32_SYNTAX_CP_H,
29101 + AVR32_SYNTAX_CP_W1,
29102 + AVR32_SYNTAX_CP_W2,
29103 + AVR32_SYNTAX_CP_W3,
29104 + AVR32_SYNTAX_CPC1,
29105 + AVR32_SYNTAX_CPC2,
29106 + AVR32_SYNTAX_CSRF,
29107 + AVR32_SYNTAX_CSRFCZ,
29108 + AVR32_SYNTAX_DIVS,
29109 + AVR32_SYNTAX_DIVU,
29110 + AVR32_SYNTAX_EOR1,
29111 + AVR32_SYNTAX_EOR2,
29112 + AVR32_SYNTAX_EOR3,
29113 + AVR32_SYNTAX_EORL,
29114 + AVR32_SYNTAX_EORH,
29115 + AVR32_SYNTAX_FRS,
29116 + AVR32_SYNTAX_ICALL,
29117 + AVR32_SYNTAX_INCJOSP,
29118 + AVR32_SYNTAX_LD_D1,
29119 + AVR32_SYNTAX_LD_D2,
29120 + AVR32_SYNTAX_LD_D3,
29121 + AVR32_SYNTAX_LD_D5,
29122 + AVR32_SYNTAX_LD_D4,
29123 + AVR32_SYNTAX_LD_SB2,
29124 + AVR32_SYNTAX_LD_SB1,
29125 + AVR32_SYNTAX_LD_UB1,
29126 + AVR32_SYNTAX_LD_UB2,
29127 + AVR32_SYNTAX_LD_UB5,
29128 + AVR32_SYNTAX_LD_UB3,
29129 + AVR32_SYNTAX_LD_UB4,
29130 + AVR32_SYNTAX_LD_SH1,
29131 + AVR32_SYNTAX_LD_SH2,
29132 + AVR32_SYNTAX_LD_SH5,
29133 + AVR32_SYNTAX_LD_SH3,
29134 + AVR32_SYNTAX_LD_SH4,
29135 + AVR32_SYNTAX_LD_UH1,
29136 + AVR32_SYNTAX_LD_UH2,
29137 + AVR32_SYNTAX_LD_UH5,
29138 + AVR32_SYNTAX_LD_UH3,
29139 + AVR32_SYNTAX_LD_UH4,
29140 + AVR32_SYNTAX_LD_W1,
29141 + AVR32_SYNTAX_LD_W2,
29142 + AVR32_SYNTAX_LD_W5,
29143 + AVR32_SYNTAX_LD_W6,
29144 + AVR32_SYNTAX_LD_W3,
29145 + AVR32_SYNTAX_LD_W4,
29146 + AVR32_SYNTAX_LDC_D1,
29147 + AVR32_SYNTAX_LDC_D2,
29148 + AVR32_SYNTAX_LDC_D3,
29149 + AVR32_SYNTAX_LDC_W1,
29150 + AVR32_SYNTAX_LDC_W2,
29151 + AVR32_SYNTAX_LDC_W3,
29152 + AVR32_SYNTAX_LDC0_D,
29153 + AVR32_SYNTAX_LDC0_W,
29154 + AVR32_SYNTAX_LDCM_D,
29155 + AVR32_SYNTAX_LDCM_D_PU,
29156 + AVR32_SYNTAX_LDCM_W,
29157 + AVR32_SYNTAX_LDCM_W_PU,
29158 + AVR32_SYNTAX_LDDPC,
29159 + AVR32_SYNTAX_LDDPC_EXT,
29160 + AVR32_SYNTAX_LDDSP,
29161 + AVR32_SYNTAX_LDINS_B,
29162 + AVR32_SYNTAX_LDINS_H,
29163 + AVR32_SYNTAX_LDM,
29164 + AVR32_SYNTAX_LDMTS,
29165 + AVR32_SYNTAX_LDMTS_PU,
29166 + AVR32_SYNTAX_LDSWP_SH,
29167 + AVR32_SYNTAX_LDSWP_UH,
29168 + AVR32_SYNTAX_LDSWP_W,
29169 + AVR32_SYNTAX_LSL1,
29170 + AVR32_SYNTAX_LSL3,
29171 + AVR32_SYNTAX_LSL2,
29172 + AVR32_SYNTAX_LSR1,
29173 + AVR32_SYNTAX_LSR3,
29174 + AVR32_SYNTAX_LSR2,
29175 + AVR32_SYNTAX_MAC,
29176 + AVR32_SYNTAX_MACHH_D,
29177 + AVR32_SYNTAX_MACHH_W,
29178 + AVR32_SYNTAX_MACS_D,
29179 + AVR32_SYNTAX_MACSATHH_W,
29180 + AVR32_SYNTAX_MACUD,
29181 + AVR32_SYNTAX_MACWH_D,
29182 + AVR32_SYNTAX_MAX,
29183 + AVR32_SYNTAX_MCALL,
29184 + AVR32_SYNTAX_MFDR,
29185 + AVR32_SYNTAX_MFSR,
29186 + AVR32_SYNTAX_MIN,
29187 + AVR32_SYNTAX_MOV3,
29188 + AVR32_SYNTAX_MOV1,
29189 + AVR32_SYNTAX_MOV2,
29190 + AVR32_SYNTAX_MOVEQ1,
29191 + AVR32_SYNTAX_MOVNE1,
29192 + AVR32_SYNTAX_MOVCC1,
29193 + AVR32_SYNTAX_MOVCS1,
29194 + AVR32_SYNTAX_MOVGE1,
29195 + AVR32_SYNTAX_MOVLT1,
29196 + AVR32_SYNTAX_MOVMI1,
29197 + AVR32_SYNTAX_MOVPL1,
29198 + AVR32_SYNTAX_MOVLS1,
29199 + AVR32_SYNTAX_MOVGT1,
29200 + AVR32_SYNTAX_MOVLE1,
29201 + AVR32_SYNTAX_MOVHI1,
29202 + AVR32_SYNTAX_MOVVS1,
29203 + AVR32_SYNTAX_MOVVC1,
29204 + AVR32_SYNTAX_MOVQS1,
29205 + AVR32_SYNTAX_MOVAL1,
29206 + AVR32_SYNTAX_MOVHS1,
29207 + AVR32_SYNTAX_MOVLO1,
29208 + AVR32_SYNTAX_MOVEQ2,
29209 + AVR32_SYNTAX_MOVNE2,
29210 + AVR32_SYNTAX_MOVCC2,
29211 + AVR32_SYNTAX_MOVCS2,
29212 + AVR32_SYNTAX_MOVGE2,
29213 + AVR32_SYNTAX_MOVLT2,
29214 + AVR32_SYNTAX_MOVMI2,
29215 + AVR32_SYNTAX_MOVPL2,
29216 + AVR32_SYNTAX_MOVLS2,
29217 + AVR32_SYNTAX_MOVGT2,
29218 + AVR32_SYNTAX_MOVLE2,
29219 + AVR32_SYNTAX_MOVHI2,
29220 + AVR32_SYNTAX_MOVVS2,
29221 + AVR32_SYNTAX_MOVVC2,
29222 + AVR32_SYNTAX_MOVQS2,
29223 + AVR32_SYNTAX_MOVAL2,
29224 + AVR32_SYNTAX_MOVHS2,
29225 + AVR32_SYNTAX_MOVLO2,
29226 + AVR32_SYNTAX_MTDR,
29227 + AVR32_SYNTAX_MTSR,
29228 + AVR32_SYNTAX_MUL1,
29229 + AVR32_SYNTAX_MUL2,
29230 + AVR32_SYNTAX_MUL3,
29231 + AVR32_SYNTAX_MULHH_W,
29232 + AVR32_SYNTAX_MULNHH_W,
29233 + AVR32_SYNTAX_MULNWH_D,
29234 + AVR32_SYNTAX_MULSD,
29235 + AVR32_SYNTAX_MULSATHH_H,
29236 + AVR32_SYNTAX_MULSATHH_W,
29237 + AVR32_SYNTAX_MULSATRNDHH_H,
29238 + AVR32_SYNTAX_MULSATRNDWH_W,
29239 + AVR32_SYNTAX_MULSATWH_W,
29240 + AVR32_SYNTAX_MULU_D,
29241 + AVR32_SYNTAX_MULWH_D,
29242 + AVR32_SYNTAX_MUSFR,
29243 + AVR32_SYNTAX_MUSTR,
29244 + AVR32_SYNTAX_MVCR_D,
29245 + AVR32_SYNTAX_MVCR_W,
29246 + AVR32_SYNTAX_MVRC_D,
29247 + AVR32_SYNTAX_MVRC_W,
29248 + AVR32_SYNTAX_NEG,
29249 + AVR32_SYNTAX_NOP,
29250 + AVR32_SYNTAX_OR1,
29251 + AVR32_SYNTAX_OR2,
29252 + AVR32_SYNTAX_OR3,
29253 + AVR32_SYNTAX_ORH,
29254 + AVR32_SYNTAX_ORL,
29255 + AVR32_SYNTAX_PABS_SB,
29256 + AVR32_SYNTAX_PABS_SH,
29257 + AVR32_SYNTAX_PACKSH_SB,
29258 + AVR32_SYNTAX_PACKSH_UB,
29259 + AVR32_SYNTAX_PACKW_SH,
29260 + AVR32_SYNTAX_PADD_B,
29261 + AVR32_SYNTAX_PADD_H,
29262 + AVR32_SYNTAX_PADDH_SH,
29263 + AVR32_SYNTAX_PADDH_UB,
29264 + AVR32_SYNTAX_PADDS_SB,
29265 + AVR32_SYNTAX_PADDS_SH,
29266 + AVR32_SYNTAX_PADDS_UB,
29267 + AVR32_SYNTAX_PADDS_UH,
29268 + AVR32_SYNTAX_PADDSUB_H,
29269 + AVR32_SYNTAX_PADDSUBH_SH,
29270 + AVR32_SYNTAX_PADDSUBS_SH,
29271 + AVR32_SYNTAX_PADDSUBS_UH,
29272 + AVR32_SYNTAX_PADDX_H,
29273 + AVR32_SYNTAX_PADDXH_SH,
29274 + AVR32_SYNTAX_PADDXS_SH,
29275 + AVR32_SYNTAX_PADDXS_UH,
29276 + AVR32_SYNTAX_PASR_B,
29277 + AVR32_SYNTAX_PASR_H,
29278 + AVR32_SYNTAX_PAVG_SH,
29279 + AVR32_SYNTAX_PAVG_UB,
29280 + AVR32_SYNTAX_PLSL_B,
29281 + AVR32_SYNTAX_PLSL_H,
29282 + AVR32_SYNTAX_PLSR_B,
29283 + AVR32_SYNTAX_PLSR_H,
29284 + AVR32_SYNTAX_PMAX_SH,
29285 + AVR32_SYNTAX_PMAX_UB,
29286 + AVR32_SYNTAX_PMIN_SH,
29287 + AVR32_SYNTAX_PMIN_UB,
29288 + AVR32_SYNTAX_POPJC,
29289 + AVR32_SYNTAX_POPM,
29290 + AVR32_SYNTAX_POPM_E,
29291 + AVR32_SYNTAX_PREF,
29292 + AVR32_SYNTAX_PSAD,
29293 + AVR32_SYNTAX_PSUB_B,
29294 + AVR32_SYNTAX_PSUB_H,
29295 + AVR32_SYNTAX_PSUBADD_H,
29296 + AVR32_SYNTAX_PSUBADDH_SH,
29297 + AVR32_SYNTAX_PSUBADDS_SH,
29298 + AVR32_SYNTAX_PSUBADDS_UH,
29299 + AVR32_SYNTAX_PSUBH_SH,
29300 + AVR32_SYNTAX_PSUBH_UB,
29301 + AVR32_SYNTAX_PSUBS_SB,
29302 + AVR32_SYNTAX_PSUBS_SH,
29303 + AVR32_SYNTAX_PSUBS_UB,
29304 + AVR32_SYNTAX_PSUBS_UH,
29305 + AVR32_SYNTAX_PSUBX_H,
29306 + AVR32_SYNTAX_PSUBXH_SH,
29307 + AVR32_SYNTAX_PSUBXS_SH,
29308 + AVR32_SYNTAX_PSUBXS_UH,
29309 + AVR32_SYNTAX_PUNPCKSB_H,
29310 + AVR32_SYNTAX_PUNPCKUB_H,
29311 + AVR32_SYNTAX_PUSHJC,
29312 + AVR32_SYNTAX_PUSHM,
29313 + AVR32_SYNTAX_PUSHM_E,
29314 + AVR32_SYNTAX_RCALL1,
29315 + AVR32_SYNTAX_RCALL2,
29316 + AVR32_SYNTAX_RETEQ,
29317 + AVR32_SYNTAX_RETNE,
29318 + AVR32_SYNTAX_RETCC,
29319 + AVR32_SYNTAX_RETCS,
29320 + AVR32_SYNTAX_RETGE,
29321 + AVR32_SYNTAX_RETLT,
29322 + AVR32_SYNTAX_RETMI,
29323 + AVR32_SYNTAX_RETPL,
29324 + AVR32_SYNTAX_RETLS,
29325 + AVR32_SYNTAX_RETGT,
29326 + AVR32_SYNTAX_RETLE,
29327 + AVR32_SYNTAX_RETHI,
29328 + AVR32_SYNTAX_RETVS,
29329 + AVR32_SYNTAX_RETVC,
29330 + AVR32_SYNTAX_RETQS,
29331 + AVR32_SYNTAX_RETAL,
29332 + AVR32_SYNTAX_RETHS,
29333 + AVR32_SYNTAX_RETLO,
29334 + AVR32_SYNTAX_RETD,
29335 + AVR32_SYNTAX_RETE,
29336 + AVR32_SYNTAX_RETJ,
29337 + AVR32_SYNTAX_RETS,
29338 + AVR32_SYNTAX_RJMP,
29339 + AVR32_SYNTAX_ROL,
29340 + AVR32_SYNTAX_ROR,
29341 + AVR32_SYNTAX_RSUB1,
29342 + AVR32_SYNTAX_RSUB2,
29343 + AVR32_SYNTAX_SATADD_H,
29344 + AVR32_SYNTAX_SATADD_W,
29345 + AVR32_SYNTAX_SATRNDS,
29346 + AVR32_SYNTAX_SATRNDU,
29347 + AVR32_SYNTAX_SATS,
29348 + AVR32_SYNTAX_SATSUB_H,
29349 + AVR32_SYNTAX_SATSUB_W1,
29350 + AVR32_SYNTAX_SATSUB_W2,
29351 + AVR32_SYNTAX_SATU,
29352 + AVR32_SYNTAX_SBC,
29353 + AVR32_SYNTAX_SBR,
29354 + AVR32_SYNTAX_SCALL,
29355 + AVR32_SYNTAX_SCR,
29356 + AVR32_SYNTAX_SLEEP,
29357 + AVR32_SYNTAX_SREQ,
29358 + AVR32_SYNTAX_SRNE,
29359 + AVR32_SYNTAX_SRCC,
29360 + AVR32_SYNTAX_SRCS,
29361 + AVR32_SYNTAX_SRGE,
29362 + AVR32_SYNTAX_SRLT,
29363 + AVR32_SYNTAX_SRMI,
29364 + AVR32_SYNTAX_SRPL,
29365 + AVR32_SYNTAX_SRLS,
29366 + AVR32_SYNTAX_SRGT,
29367 + AVR32_SYNTAX_SRLE,
29368 + AVR32_SYNTAX_SRHI,
29369 + AVR32_SYNTAX_SRVS,
29370 + AVR32_SYNTAX_SRVC,
29371 + AVR32_SYNTAX_SRQS,
29372 + AVR32_SYNTAX_SRAL,
29373 + AVR32_SYNTAX_SRHS,
29374 + AVR32_SYNTAX_SRLO,
29375 + AVR32_SYNTAX_SSRF,
29376 + AVR32_SYNTAX_ST_B1,
29377 + AVR32_SYNTAX_ST_B2,
29378 + AVR32_SYNTAX_ST_B5,
29379 + AVR32_SYNTAX_ST_B3,
29380 + AVR32_SYNTAX_ST_B4,
29381 + AVR32_SYNTAX_ST_D1,
29382 + AVR32_SYNTAX_ST_D2,
29383 + AVR32_SYNTAX_ST_D3,
29384 + AVR32_SYNTAX_ST_D5,
29385 + AVR32_SYNTAX_ST_D4,
29386 + AVR32_SYNTAX_ST_H1,
29387 + AVR32_SYNTAX_ST_H2,
29388 + AVR32_SYNTAX_ST_H5,
29389 + AVR32_SYNTAX_ST_H3,
29390 + AVR32_SYNTAX_ST_H4,
29391 + AVR32_SYNTAX_ST_W1,
29392 + AVR32_SYNTAX_ST_W2,
29393 + AVR32_SYNTAX_ST_W5,
29394 + AVR32_SYNTAX_ST_W3,
29395 + AVR32_SYNTAX_ST_W4,
29396 + AVR32_SYNTAX_STC_D1,
29397 + AVR32_SYNTAX_STC_D2,
29398 + AVR32_SYNTAX_STC_D3,
29399 + AVR32_SYNTAX_STC_W1,
29400 + AVR32_SYNTAX_STC_W2,
29401 + AVR32_SYNTAX_STC_W3,
29402 + AVR32_SYNTAX_STC0_D,
29403 + AVR32_SYNTAX_STC0_W,
29404 + AVR32_SYNTAX_STCM_D,
29405 + AVR32_SYNTAX_STCM_D_PU,
29406 + AVR32_SYNTAX_STCM_W,
29407 + AVR32_SYNTAX_STCM_W_PU,
29408 + AVR32_SYNTAX_STCOND,
29409 + AVR32_SYNTAX_STDSP,
29410 + AVR32_SYNTAX_STHH_W2,
29411 + AVR32_SYNTAX_STHH_W1,
29412 + AVR32_SYNTAX_STM,
29413 + AVR32_SYNTAX_STM_PU,
29414 + AVR32_SYNTAX_STMTS,
29415 + AVR32_SYNTAX_STMTS_PU,
29416 + AVR32_SYNTAX_STSWP_H,
29417 + AVR32_SYNTAX_STSWP_W,
29418 + AVR32_SYNTAX_SUB1,
29419 + AVR32_SYNTAX_SUB2,
29420 + AVR32_SYNTAX_SUB5,
29421 + AVR32_SYNTAX_SUB3_SP,
29422 + AVR32_SYNTAX_SUB3,
29423 + AVR32_SYNTAX_SUB4,
29424 + AVR32_SYNTAX_SUBEQ,
29425 + AVR32_SYNTAX_SUBNE,
29426 + AVR32_SYNTAX_SUBCC,
29427 + AVR32_SYNTAX_SUBCS,
29428 + AVR32_SYNTAX_SUBGE,
29429 + AVR32_SYNTAX_SUBLT,
29430 + AVR32_SYNTAX_SUBMI,
29431 + AVR32_SYNTAX_SUBPL,
29432 + AVR32_SYNTAX_SUBLS,
29433 + AVR32_SYNTAX_SUBGT,
29434 + AVR32_SYNTAX_SUBLE,
29435 + AVR32_SYNTAX_SUBHI,
29436 + AVR32_SYNTAX_SUBVS,
29437 + AVR32_SYNTAX_SUBVC,
29438 + AVR32_SYNTAX_SUBQS,
29439 + AVR32_SYNTAX_SUBAL,
29440 + AVR32_SYNTAX_SUBHS,
29441 + AVR32_SYNTAX_SUBLO,
29442 + AVR32_SYNTAX_SUBFEQ,
29443 + AVR32_SYNTAX_SUBFNE,
29444 + AVR32_SYNTAX_SUBFCC,
29445 + AVR32_SYNTAX_SUBFCS,
29446 + AVR32_SYNTAX_SUBFGE,
29447 + AVR32_SYNTAX_SUBFLT,
29448 + AVR32_SYNTAX_SUBFMI,
29449 + AVR32_SYNTAX_SUBFPL,
29450 + AVR32_SYNTAX_SUBFLS,
29451 + AVR32_SYNTAX_SUBFGT,
29452 + AVR32_SYNTAX_SUBFLE,
29453 + AVR32_SYNTAX_SUBFHI,
29454 + AVR32_SYNTAX_SUBFVS,
29455 + AVR32_SYNTAX_SUBFVC,
29456 + AVR32_SYNTAX_SUBFQS,
29457 + AVR32_SYNTAX_SUBFAL,
29458 + AVR32_SYNTAX_SUBFHS,
29459 + AVR32_SYNTAX_SUBFLO,
29460 + AVR32_SYNTAX_SUBHH_W,
29461 + AVR32_SYNTAX_SWAP_B,
29462 + AVR32_SYNTAX_SWAP_BH,
29463 + AVR32_SYNTAX_SWAP_H,
29464 + AVR32_SYNTAX_SYNC,
29465 + AVR32_SYNTAX_TLBR,
29466 + AVR32_SYNTAX_TLBS,
29467 + AVR32_SYNTAX_TLBW,
29468 + AVR32_SYNTAX_TNBZ,
29469 + AVR32_SYNTAX_TST,
29470 + AVR32_SYNTAX_XCHG,
29471 + AVR32_SYNTAX_MEMC,
29472 + AVR32_SYNTAX_MEMS,
29473 + AVR32_SYNTAX_MEMT,
29474 + AVR32_SYNTAX_FADD_S,
29475 + AVR32_SYNTAX_FADD_D,
29476 + AVR32_SYNTAX_FSUB_S,
29477 + AVR32_SYNTAX_FSUB_D,
29478 + AVR32_SYNTAX_FMAC_S,
29479 + AVR32_SYNTAX_FMAC_D,
29480 + AVR32_SYNTAX_FNMAC_S,
29481 + AVR32_SYNTAX_FNMAC_D,
29482 + AVR32_SYNTAX_FMSC_S,
29483 + AVR32_SYNTAX_FMSC_D,
29484 + AVR32_SYNTAX_FNMSC_S,
29485 + AVR32_SYNTAX_FNMSC_D,
29486 + AVR32_SYNTAX_FMUL_S,
29487 + AVR32_SYNTAX_FMUL_D,
29488 + AVR32_SYNTAX_FNMUL_S,
29489 + AVR32_SYNTAX_FNMUL_D,
29490 + AVR32_SYNTAX_FNEG_S,
29491 + AVR32_SYNTAX_FNEG_D,
29492 + AVR32_SYNTAX_FABS_S,
29493 + AVR32_SYNTAX_FABS_D,
29494 + AVR32_SYNTAX_FCMP_S,
29495 + AVR32_SYNTAX_FCMP_D,
29496 + AVR32_SYNTAX_FMOV1_S,
29497 + AVR32_SYNTAX_FMOV1_D,
29498 + AVR32_SYNTAX_FMOV2_S,
29499 + AVR32_SYNTAX_FMOV2_D,
29500 + AVR32_SYNTAX_FMOV3_S,
29501 + AVR32_SYNTAX_FMOV3_D,
29502 + AVR32_SYNTAX_FCASTS_D,
29503 + AVR32_SYNTAX_FCASTD_S,
29504 + AVR32_SYNTAX_LDA_W,
29505 + AVR32_SYNTAX_CALL,
29506 + AVR32_SYNTAX_PICOSVMAC0,
29507 + AVR32_SYNTAX_PICOSVMAC1,
29508 + AVR32_SYNTAX_PICOSVMAC2,
29509 + AVR32_SYNTAX_PICOSVMAC3,
29510 + AVR32_SYNTAX_PICOSVMUL0,
29511 + AVR32_SYNTAX_PICOSVMUL1,
29512 + AVR32_SYNTAX_PICOSVMUL2,
29513 + AVR32_SYNTAX_PICOSVMUL3,
29514 + AVR32_SYNTAX_PICOVMAC0,
29515 + AVR32_SYNTAX_PICOVMAC1,
29516 + AVR32_SYNTAX_PICOVMAC2,
29517 + AVR32_SYNTAX_PICOVMAC3,
29518 + AVR32_SYNTAX_PICOVMUL0,
29519 + AVR32_SYNTAX_PICOVMUL1,
29520 + AVR32_SYNTAX_PICOVMUL2,
29521 + AVR32_SYNTAX_PICOVMUL3,
29522 + AVR32_SYNTAX_PICOLD_D2,
29523 + AVR32_SYNTAX_PICOLD_D3,
29524 + AVR32_SYNTAX_PICOLD_D1,
29525 + AVR32_SYNTAX_PICOLD_W2,
29526 + AVR32_SYNTAX_PICOLD_W3,
29527 + AVR32_SYNTAX_PICOLD_W1,
29528 + AVR32_SYNTAX_PICOLDM_D,
29529 + AVR32_SYNTAX_PICOLDM_D_PU,
29530 + AVR32_SYNTAX_PICOLDM_W,
29531 + AVR32_SYNTAX_PICOLDM_W_PU,
29532 + AVR32_SYNTAX_PICOMV_D1,
29533 + AVR32_SYNTAX_PICOMV_D2,
29534 + AVR32_SYNTAX_PICOMV_W1,
29535 + AVR32_SYNTAX_PICOMV_W2,
29536 + AVR32_SYNTAX_PICOST_D2,
29537 + AVR32_SYNTAX_PICOST_D3,
29538 + AVR32_SYNTAX_PICOST_D1,
29539 + AVR32_SYNTAX_PICOST_W2,
29540 + AVR32_SYNTAX_PICOST_W3,
29541 + AVR32_SYNTAX_PICOST_W1,
29542 + AVR32_SYNTAX_PICOSTM_D,
29543 + AVR32_SYNTAX_PICOSTM_D_PU,
29544 + AVR32_SYNTAX_PICOSTM_W,
29545 + AVR32_SYNTAX_PICOSTM_W_PU,
29546 + AVR32_SYNTAX_RSUBEQ,
29547 + AVR32_SYNTAX_RSUBNE,
29548 + AVR32_SYNTAX_RSUBCC,
29549 + AVR32_SYNTAX_RSUBCS,
29550 + AVR32_SYNTAX_RSUBGE,
29551 + AVR32_SYNTAX_RSUBLT,
29552 + AVR32_SYNTAX_RSUBMI,
29553 + AVR32_SYNTAX_RSUBPL,
29554 + AVR32_SYNTAX_RSUBLS,
29555 + AVR32_SYNTAX_RSUBGT,
29556 + AVR32_SYNTAX_RSUBLE,
29557 + AVR32_SYNTAX_RSUBHI,
29558 + AVR32_SYNTAX_RSUBVS,
29559 + AVR32_SYNTAX_RSUBVC,
29560 + AVR32_SYNTAX_RSUBQS,
29561 + AVR32_SYNTAX_RSUBAL,
29562 + AVR32_SYNTAX_RSUBHS,
29563 + AVR32_SYNTAX_RSUBLO,
29564 + AVR32_SYNTAX_ADDEQ,
29565 + AVR32_SYNTAX_ADDNE,
29566 + AVR32_SYNTAX_ADDCC,
29567 + AVR32_SYNTAX_ADDCS,
29568 + AVR32_SYNTAX_ADDGE,
29569 + AVR32_SYNTAX_ADDLT,
29570 + AVR32_SYNTAX_ADDMI,
29571 + AVR32_SYNTAX_ADDPL,
29572 + AVR32_SYNTAX_ADDLS,
29573 + AVR32_SYNTAX_ADDGT,
29574 + AVR32_SYNTAX_ADDLE,
29575 + AVR32_SYNTAX_ADDHI,
29576 + AVR32_SYNTAX_ADDVS,
29577 + AVR32_SYNTAX_ADDVC,
29578 + AVR32_SYNTAX_ADDQS,
29579 + AVR32_SYNTAX_ADDAL,
29580 + AVR32_SYNTAX_ADDHS,
29581 + AVR32_SYNTAX_ADDLO,
29582 + AVR32_SYNTAX_SUB2EQ,
29583 + AVR32_SYNTAX_SUB2NE,
29584 + AVR32_SYNTAX_SUB2CC,
29585 + AVR32_SYNTAX_SUB2CS,
29586 + AVR32_SYNTAX_SUB2GE,
29587 + AVR32_SYNTAX_SUB2LT,
29588 + AVR32_SYNTAX_SUB2MI,
29589 + AVR32_SYNTAX_SUB2PL,
29590 + AVR32_SYNTAX_SUB2LS,
29591 + AVR32_SYNTAX_SUB2GT,
29592 + AVR32_SYNTAX_SUB2LE,
29593 + AVR32_SYNTAX_SUB2HI,
29594 + AVR32_SYNTAX_SUB2VS,
29595 + AVR32_SYNTAX_SUB2VC,
29596 + AVR32_SYNTAX_SUB2QS,
29597 + AVR32_SYNTAX_SUB2AL,
29598 + AVR32_SYNTAX_SUB2HS,
29599 + AVR32_SYNTAX_SUB2LO,
29600 + AVR32_SYNTAX_ANDEQ,
29601 + AVR32_SYNTAX_ANDNE,
29602 + AVR32_SYNTAX_ANDCC,
29603 + AVR32_SYNTAX_ANDCS,
29604 + AVR32_SYNTAX_ANDGE,
29605 + AVR32_SYNTAX_ANDLT,
29606 + AVR32_SYNTAX_ANDMI,
29607 + AVR32_SYNTAX_ANDPL,
29608 + AVR32_SYNTAX_ANDLS,
29609 + AVR32_SYNTAX_ANDGT,
29610 + AVR32_SYNTAX_ANDLE,
29611 + AVR32_SYNTAX_ANDHI,
29612 + AVR32_SYNTAX_ANDVS,
29613 + AVR32_SYNTAX_ANDVC,
29614 + AVR32_SYNTAX_ANDQS,
29615 + AVR32_SYNTAX_ANDAL,
29616 + AVR32_SYNTAX_ANDHS,
29617 + AVR32_SYNTAX_ANDLO,
29618 + AVR32_SYNTAX_OREQ,
29619 + AVR32_SYNTAX_ORNE,
29620 + AVR32_SYNTAX_ORCC,
29621 + AVR32_SYNTAX_ORCS,
29622 + AVR32_SYNTAX_ORGE,
29623 + AVR32_SYNTAX_ORLT,
29624 + AVR32_SYNTAX_ORMI,
29625 + AVR32_SYNTAX_ORPL,
29626 + AVR32_SYNTAX_ORLS,
29627 + AVR32_SYNTAX_ORGT,
29628 + AVR32_SYNTAX_ORLE,
29629 + AVR32_SYNTAX_ORHI,
29630 + AVR32_SYNTAX_ORVS,
29631 + AVR32_SYNTAX_ORVC,
29632 + AVR32_SYNTAX_ORQS,
29633 + AVR32_SYNTAX_ORAL,
29634 + AVR32_SYNTAX_ORHS,
29635 + AVR32_SYNTAX_ORLO,
29636 + AVR32_SYNTAX_EOREQ,
29637 + AVR32_SYNTAX_EORNE,
29638 + AVR32_SYNTAX_EORCC,
29639 + AVR32_SYNTAX_EORCS,
29640 + AVR32_SYNTAX_EORGE,
29641 + AVR32_SYNTAX_EORLT,
29642 + AVR32_SYNTAX_EORMI,
29643 + AVR32_SYNTAX_EORPL,
29644 + AVR32_SYNTAX_EORLS,
29645 + AVR32_SYNTAX_EORGT,
29646 + AVR32_SYNTAX_EORLE,
29647 + AVR32_SYNTAX_EORHI,
29648 + AVR32_SYNTAX_EORVS,
29649 + AVR32_SYNTAX_EORVC,
29650 + AVR32_SYNTAX_EORQS,
29651 + AVR32_SYNTAX_EORAL,
29652 + AVR32_SYNTAX_EORHS,
29653 + AVR32_SYNTAX_EORLO,
29654 + AVR32_SYNTAX_LD_WEQ,
29655 + AVR32_SYNTAX_LD_WNE,
29656 + AVR32_SYNTAX_LD_WCC,
29657 + AVR32_SYNTAX_LD_WCS,
29658 + AVR32_SYNTAX_LD_WGE,
29659 + AVR32_SYNTAX_LD_WLT,
29660 + AVR32_SYNTAX_LD_WMI,
29661 + AVR32_SYNTAX_LD_WPL,
29662 + AVR32_SYNTAX_LD_WLS,
29663 + AVR32_SYNTAX_LD_WGT,
29664 + AVR32_SYNTAX_LD_WLE,
29665 + AVR32_SYNTAX_LD_WHI,
29666 + AVR32_SYNTAX_LD_WVS,
29667 + AVR32_SYNTAX_LD_WVC,
29668 + AVR32_SYNTAX_LD_WQS,
29669 + AVR32_SYNTAX_LD_WAL,
29670 + AVR32_SYNTAX_LD_WHS,
29671 + AVR32_SYNTAX_LD_WLO,
29672 + AVR32_SYNTAX_LD_SHEQ,
29673 + AVR32_SYNTAX_LD_SHNE,
29674 + AVR32_SYNTAX_LD_SHCC,
29675 + AVR32_SYNTAX_LD_SHCS,
29676 + AVR32_SYNTAX_LD_SHGE,
29677 + AVR32_SYNTAX_LD_SHLT,
29678 + AVR32_SYNTAX_LD_SHMI,
29679 + AVR32_SYNTAX_LD_SHPL,
29680 + AVR32_SYNTAX_LD_SHLS,
29681 + AVR32_SYNTAX_LD_SHGT,
29682 + AVR32_SYNTAX_LD_SHLE,
29683 + AVR32_SYNTAX_LD_SHHI,
29684 + AVR32_SYNTAX_LD_SHVS,
29685 + AVR32_SYNTAX_LD_SHVC,
29686 + AVR32_SYNTAX_LD_SHQS,
29687 + AVR32_SYNTAX_LD_SHAL,
29688 + AVR32_SYNTAX_LD_SHHS,
29689 + AVR32_SYNTAX_LD_SHLO,
29690 + AVR32_SYNTAX_LD_UHEQ,
29691 + AVR32_SYNTAX_LD_UHNE,
29692 + AVR32_SYNTAX_LD_UHCC,
29693 + AVR32_SYNTAX_LD_UHCS,
29694 + AVR32_SYNTAX_LD_UHGE,
29695 + AVR32_SYNTAX_LD_UHLT,
29696 + AVR32_SYNTAX_LD_UHMI,
29697 + AVR32_SYNTAX_LD_UHPL,
29698 + AVR32_SYNTAX_LD_UHLS,
29699 + AVR32_SYNTAX_LD_UHGT,
29700 + AVR32_SYNTAX_LD_UHLE,
29701 + AVR32_SYNTAX_LD_UHHI,
29702 + AVR32_SYNTAX_LD_UHVS,
29703 + AVR32_SYNTAX_LD_UHVC,
29704 + AVR32_SYNTAX_LD_UHQS,
29705 + AVR32_SYNTAX_LD_UHAL,
29706 + AVR32_SYNTAX_LD_UHHS,
29707 + AVR32_SYNTAX_LD_UHLO,
29708 + AVR32_SYNTAX_LD_SBEQ,
29709 + AVR32_SYNTAX_LD_SBNE,
29710 + AVR32_SYNTAX_LD_SBCC,
29711 + AVR32_SYNTAX_LD_SBCS,
29712 + AVR32_SYNTAX_LD_SBGE,
29713 + AVR32_SYNTAX_LD_SBLT,
29714 + AVR32_SYNTAX_LD_SBMI,
29715 + AVR32_SYNTAX_LD_SBPL,
29716 + AVR32_SYNTAX_LD_SBLS,
29717 + AVR32_SYNTAX_LD_SBGT,
29718 + AVR32_SYNTAX_LD_SBLE,
29719 + AVR32_SYNTAX_LD_SBHI,
29720 + AVR32_SYNTAX_LD_SBVS,
29721 + AVR32_SYNTAX_LD_SBVC,
29722 + AVR32_SYNTAX_LD_SBQS,
29723 + AVR32_SYNTAX_LD_SBAL,
29724 + AVR32_SYNTAX_LD_SBHS,
29725 + AVR32_SYNTAX_LD_SBLO,
29726 + AVR32_SYNTAX_LD_UBEQ,
29727 + AVR32_SYNTAX_LD_UBNE,
29728 + AVR32_SYNTAX_LD_UBCC,
29729 + AVR32_SYNTAX_LD_UBCS,
29730 + AVR32_SYNTAX_LD_UBGE,
29731 + AVR32_SYNTAX_LD_UBLT,
29732 + AVR32_SYNTAX_LD_UBMI,
29733 + AVR32_SYNTAX_LD_UBPL,
29734 + AVR32_SYNTAX_LD_UBLS,
29735 + AVR32_SYNTAX_LD_UBGT,
29736 + AVR32_SYNTAX_LD_UBLE,
29737 + AVR32_SYNTAX_LD_UBHI,
29738 + AVR32_SYNTAX_LD_UBVS,
29739 + AVR32_SYNTAX_LD_UBVC,
29740 + AVR32_SYNTAX_LD_UBQS,
29741 + AVR32_SYNTAX_LD_UBAL,
29742 + AVR32_SYNTAX_LD_UBHS,
29743 + AVR32_SYNTAX_LD_UBLO,
29744 + AVR32_SYNTAX_ST_WEQ,
29745 + AVR32_SYNTAX_ST_WNE,
29746 + AVR32_SYNTAX_ST_WCC,
29747 + AVR32_SYNTAX_ST_WCS,
29748 + AVR32_SYNTAX_ST_WGE,
29749 + AVR32_SYNTAX_ST_WLT,
29750 + AVR32_SYNTAX_ST_WMI,
29751 + AVR32_SYNTAX_ST_WPL,
29752 + AVR32_SYNTAX_ST_WLS,
29753 + AVR32_SYNTAX_ST_WGT,
29754 + AVR32_SYNTAX_ST_WLE,
29755 + AVR32_SYNTAX_ST_WHI,
29756 + AVR32_SYNTAX_ST_WVS,
29757 + AVR32_SYNTAX_ST_WVC,
29758 + AVR32_SYNTAX_ST_WQS,
29759 + AVR32_SYNTAX_ST_WAL,
29760 + AVR32_SYNTAX_ST_WHS,
29761 + AVR32_SYNTAX_ST_WLO,
29762 + AVR32_SYNTAX_ST_HEQ,
29763 + AVR32_SYNTAX_ST_HNE,
29764 + AVR32_SYNTAX_ST_HCC,
29765 + AVR32_SYNTAX_ST_HCS,
29766 + AVR32_SYNTAX_ST_HGE,
29767 + AVR32_SYNTAX_ST_HLT,
29768 + AVR32_SYNTAX_ST_HMI,
29769 + AVR32_SYNTAX_ST_HPL,
29770 + AVR32_SYNTAX_ST_HLS,
29771 + AVR32_SYNTAX_ST_HGT,
29772 + AVR32_SYNTAX_ST_HLE,
29773 + AVR32_SYNTAX_ST_HHI,
29774 + AVR32_SYNTAX_ST_HVS,
29775 + AVR32_SYNTAX_ST_HVC,
29776 + AVR32_SYNTAX_ST_HQS,
29777 + AVR32_SYNTAX_ST_HAL,
29778 + AVR32_SYNTAX_ST_HHS,
29779 + AVR32_SYNTAX_ST_HLO,
29780 + AVR32_SYNTAX_ST_BEQ,
29781 + AVR32_SYNTAX_ST_BNE,
29782 + AVR32_SYNTAX_ST_BCC,
29783 + AVR32_SYNTAX_ST_BCS,
29784 + AVR32_SYNTAX_ST_BGE,
29785 + AVR32_SYNTAX_ST_BLT,
29786 + AVR32_SYNTAX_ST_BMI,
29787 + AVR32_SYNTAX_ST_BPL,
29788 + AVR32_SYNTAX_ST_BLS,
29789 + AVR32_SYNTAX_ST_BGT,
29790 + AVR32_SYNTAX_ST_BLE,
29791 + AVR32_SYNTAX_ST_BHI,
29792 + AVR32_SYNTAX_ST_BVS,
29793 + AVR32_SYNTAX_ST_BVC,
29794 + AVR32_SYNTAX_ST_BQS,
29795 + AVR32_SYNTAX_ST_BAL,
29796 + AVR32_SYNTAX_ST_BHS,
29797 + AVR32_SYNTAX_ST_BLO,
29798 + AVR32_SYNTAX_MOVH,
29799 + AVR32_SYNTAX__END_
29800 +};
29801 +#define AVR32_NR_SYNTAX AVR32_SYNTAX__END_
29802 +
29803 +enum avr32_alias_type
29804 + {
29805 + AVR32_ALIAS_FMAC_S,
29806 + AVR32_ALIAS_FMAC_D,
29807 + AVR32_ALIAS_FNMAC_S,
29808 + AVR32_ALIAS_FNMAC_D,
29809 + AVR32_ALIAS_FMSC_S,
29810 + AVR32_ALIAS_FMSC_D,
29811 + AVR32_ALIAS_FNMSC_S,
29812 + AVR32_ALIAS_FNMSC_D,
29813 + AVR32_ALIAS_FADD_S,
29814 + AVR32_ALIAS_FADD_D,
29815 + AVR32_ALIAS_FSUB_S,
29816 + AVR32_ALIAS_FSUB_D,
29817 + AVR32_ALIAS_FMUL_S,
29818 + AVR32_ALIAS_FMUL_D,
29819 + AVR32_ALIAS_FNMUL_S,
29820 + AVR32_ALIAS_FNMUL_D,
29821 + AVR32_ALIAS_FNEG_S,
29822 + AVR32_ALIAS_FNEG_D,
29823 + AVR32_ALIAS_FABS_S,
29824 + AVR32_ALIAS_FABS_D,
29825 + AVR32_ALIAS_FCMP_S,
29826 + AVR32_ALIAS_FCMP_D,
29827 + AVR32_ALIAS_FMOV1_S,
29828 + AVR32_ALIAS_FMOV1_D,
29829 + AVR32_ALIAS_FMOV2_S,
29830 + AVR32_ALIAS_FMOV2_D,
29831 + AVR32_ALIAS_FMOV3_S,
29832 + AVR32_ALIAS_FMOV3_D,
29833 + AVR32_ALIAS_FCASTS_D,
29834 + AVR32_ALIAS_FCASTD_S,
29835 + AVR32_ALIAS_PICOSVMAC0,
29836 + AVR32_ALIAS_PICOSVMAC1,
29837 + AVR32_ALIAS_PICOSVMAC2,
29838 + AVR32_ALIAS_PICOSVMAC3,
29839 + AVR32_ALIAS_PICOSVMUL0,
29840 + AVR32_ALIAS_PICOSVMUL1,
29841 + AVR32_ALIAS_PICOSVMUL2,
29842 + AVR32_ALIAS_PICOSVMUL3,
29843 + AVR32_ALIAS_PICOVMAC0,
29844 + AVR32_ALIAS_PICOVMAC1,
29845 + AVR32_ALIAS_PICOVMAC2,
29846 + AVR32_ALIAS_PICOVMAC3,
29847 + AVR32_ALIAS_PICOVMUL0,
29848 + AVR32_ALIAS_PICOVMUL1,
29849 + AVR32_ALIAS_PICOVMUL2,
29850 + AVR32_ALIAS_PICOVMUL3,
29851 + AVR32_ALIAS_PICOLD_D1,
29852 + AVR32_ALIAS_PICOLD_D2,
29853 + AVR32_ALIAS_PICOLD_D3,
29854 + AVR32_ALIAS_PICOLD_W1,
29855 + AVR32_ALIAS_PICOLD_W2,
29856 + AVR32_ALIAS_PICOLD_W3,
29857 + AVR32_ALIAS_PICOLDM_D,
29858 + AVR32_ALIAS_PICOLDM_D_PU,
29859 + AVR32_ALIAS_PICOLDM_W,
29860 + AVR32_ALIAS_PICOLDM_W_PU,
29861 + AVR32_ALIAS_PICOMV_D1,
29862 + AVR32_ALIAS_PICOMV_D2,
29863 + AVR32_ALIAS_PICOMV_W1,
29864 + AVR32_ALIAS_PICOMV_W2,
29865 + AVR32_ALIAS_PICOST_D1,
29866 + AVR32_ALIAS_PICOST_D2,
29867 + AVR32_ALIAS_PICOST_D3,
29868 + AVR32_ALIAS_PICOST_W1,
29869 + AVR32_ALIAS_PICOST_W2,
29870 + AVR32_ALIAS_PICOST_W3,
29871 + AVR32_ALIAS_PICOSTM_D,
29872 + AVR32_ALIAS_PICOSTM_D_PU,
29873 + AVR32_ALIAS_PICOSTM_W,
29874 + AVR32_ALIAS_PICOSTM_W_PU,
29875 + AVR32_ALIAS__END_
29876 + };
29877 +#define AVR32_NR_ALIAS AVR32_ALIAS__END_
29878 +
29879 +enum avr32_mnemonic_type
29880 +{
29881 + AVR32_MNEMONIC_ABS,
29882 + AVR32_MNEMONIC_ACALL,
29883 + AVR32_MNEMONIC_ACR,
29884 + AVR32_MNEMONIC_ADC,
29885 + AVR32_MNEMONIC_ADD,
29886 + AVR32_MNEMONIC_ADDABS,
29887 + AVR32_MNEMONIC_ADDHH_W,
29888 + AVR32_MNEMONIC_AND,
29889 + AVR32_MNEMONIC_ANDH,
29890 + AVR32_MNEMONIC_ANDL,
29891 + AVR32_MNEMONIC_ANDN,
29892 + AVR32_MNEMONIC_ASR,
29893 + AVR32_MNEMONIC_BFEXTS,
29894 + AVR32_MNEMONIC_BFEXTU,
29895 + AVR32_MNEMONIC_BFINS,
29896 + AVR32_MNEMONIC_BLD,
29897 + AVR32_MNEMONIC_BREQ,
29898 + AVR32_MNEMONIC_BRNE,
29899 + AVR32_MNEMONIC_BRCC,
29900 + AVR32_MNEMONIC_BRCS,
29901 + AVR32_MNEMONIC_BRGE,
29902 + AVR32_MNEMONIC_BRLT,
29903 + AVR32_MNEMONIC_BRMI,
29904 + AVR32_MNEMONIC_BRPL,
29905 + AVR32_MNEMONIC_BRHS,
29906 + AVR32_MNEMONIC_BRLO,
29907 + AVR32_MNEMONIC_BRLS,
29908 + AVR32_MNEMONIC_BRGT,
29909 + AVR32_MNEMONIC_BRLE,
29910 + AVR32_MNEMONIC_BRHI,
29911 + AVR32_MNEMONIC_BRVS,
29912 + AVR32_MNEMONIC_BRVC,
29913 + AVR32_MNEMONIC_BRQS,
29914 + AVR32_MNEMONIC_BRAL,
29915 + AVR32_MNEMONIC_BREAKPOINT,
29916 + AVR32_MNEMONIC_BREV,
29917 + AVR32_MNEMONIC_BST,
29918 + AVR32_MNEMONIC_CACHE,
29919 + AVR32_MNEMONIC_CASTS_B,
29920 + AVR32_MNEMONIC_CASTS_H,
29921 + AVR32_MNEMONIC_CASTU_B,
29922 + AVR32_MNEMONIC_CASTU_H,
29923 + AVR32_MNEMONIC_CBR,
29924 + AVR32_MNEMONIC_CLZ,
29925 + AVR32_MNEMONIC_COM,
29926 + AVR32_MNEMONIC_COP,
29927 + AVR32_MNEMONIC_CP_B,
29928 + AVR32_MNEMONIC_CP_H,
29929 + AVR32_MNEMONIC_CP_W,
29930 + AVR32_MNEMONIC_CP,
29931 + AVR32_MNEMONIC_CPC,
29932 + AVR32_MNEMONIC_CSRF,
29933 + AVR32_MNEMONIC_CSRFCZ,
29934 + AVR32_MNEMONIC_DIVS,
29935 + AVR32_MNEMONIC_DIVU,
29936 + AVR32_MNEMONIC_EOR,
29937 + AVR32_MNEMONIC_EORL,
29938 + AVR32_MNEMONIC_EORH,
29939 + AVR32_MNEMONIC_FRS,
29940 + AVR32_MNEMONIC_ICALL,
29941 + AVR32_MNEMONIC_INCJOSP,
29942 + AVR32_MNEMONIC_LD_D,
29943 + AVR32_MNEMONIC_LD_SB,
29944 + AVR32_MNEMONIC_LD_UB,
29945 + AVR32_MNEMONIC_LD_SH,
29946 + AVR32_MNEMONIC_LD_UH,
29947 + AVR32_MNEMONIC_LD_W,
29948 + AVR32_MNEMONIC_LDC_D,
29949 + AVR32_MNEMONIC_LDC_W,
29950 + AVR32_MNEMONIC_LDC0_D,
29951 + AVR32_MNEMONIC_LDC0_W,
29952 + AVR32_MNEMONIC_LDCM_D,
29953 + AVR32_MNEMONIC_LDCM_W,
29954 + AVR32_MNEMONIC_LDDPC,
29955 + AVR32_MNEMONIC_LDDSP,
29956 + AVR32_MNEMONIC_LDINS_B,
29957 + AVR32_MNEMONIC_LDINS_H,
29958 + AVR32_MNEMONIC_LDM,
29959 + AVR32_MNEMONIC_LDMTS,
29960 + AVR32_MNEMONIC_LDSWP_SH,
29961 + AVR32_MNEMONIC_LDSWP_UH,
29962 + AVR32_MNEMONIC_LDSWP_W,
29963 + AVR32_MNEMONIC_LSL,
29964 + AVR32_MNEMONIC_LSR,
29965 + AVR32_MNEMONIC_MAC,
29966 + AVR32_MNEMONIC_MACHH_D,
29967 + AVR32_MNEMONIC_MACHH_W,
29968 + AVR32_MNEMONIC_MACS_D,
29969 + AVR32_MNEMONIC_MACSATHH_W,
29970 + AVR32_MNEMONIC_MACU_D,
29971 + AVR32_MNEMONIC_MACWH_D,
29972 + AVR32_MNEMONIC_MAX,
29973 + AVR32_MNEMONIC_MCALL,
29974 + AVR32_MNEMONIC_MFDR,
29975 + AVR32_MNEMONIC_MFSR,
29976 + AVR32_MNEMONIC_MIN,
29977 + AVR32_MNEMONIC_MOV,
29978 + AVR32_MNEMONIC_MOVEQ,
29979 + AVR32_MNEMONIC_MOVNE,
29980 + AVR32_MNEMONIC_MOVCC,
29981 + AVR32_MNEMONIC_MOVCS,
29982 + AVR32_MNEMONIC_MOVGE,
29983 + AVR32_MNEMONIC_MOVLT,
29984 + AVR32_MNEMONIC_MOVMI,
29985 + AVR32_MNEMONIC_MOVPL,
29986 + AVR32_MNEMONIC_MOVLS,
29987 + AVR32_MNEMONIC_MOVGT,
29988 + AVR32_MNEMONIC_MOVLE,
29989 + AVR32_MNEMONIC_MOVHI,
29990 + AVR32_MNEMONIC_MOVVS,
29991 + AVR32_MNEMONIC_MOVVC,
29992 + AVR32_MNEMONIC_MOVQS,
29993 + AVR32_MNEMONIC_MOVAL,
29994 + AVR32_MNEMONIC_MOVHS,
29995 + AVR32_MNEMONIC_MOVLO,
29996 + AVR32_MNEMONIC_MTDR,
29997 + AVR32_MNEMONIC_MTSR,
29998 + AVR32_MNEMONIC_MUL,
29999 + AVR32_MNEMONIC_MULHH_W,
30000 + AVR32_MNEMONIC_MULNHH_W,
30001 + AVR32_MNEMONIC_MULNWH_D,
30002 + AVR32_MNEMONIC_MULS_D,
30003 + AVR32_MNEMONIC_MULSATHH_H,
30004 + AVR32_MNEMONIC_MULSATHH_W,
30005 + AVR32_MNEMONIC_MULSATRNDHH_H,
30006 + AVR32_MNEMONIC_MULSATRNDWH_W,
30007 + AVR32_MNEMONIC_MULSATWH_W,
30008 + AVR32_MNEMONIC_MULU_D,
30009 + AVR32_MNEMONIC_MULWH_D,
30010 + AVR32_MNEMONIC_MUSFR,
30011 + AVR32_MNEMONIC_MUSTR,
30012 + AVR32_MNEMONIC_MVCR_D,
30013 + AVR32_MNEMONIC_MVCR_W,
30014 + AVR32_MNEMONIC_MVRC_D,
30015 + AVR32_MNEMONIC_MVRC_W,
30016 + AVR32_MNEMONIC_NEG,
30017 + AVR32_MNEMONIC_NOP,
30018 + AVR32_MNEMONIC_OR,
30019 + AVR32_MNEMONIC_ORH,
30020 + AVR32_MNEMONIC_ORL,
30021 + AVR32_MNEMONIC_PABS_SB,
30022 + AVR32_MNEMONIC_PABS_SH,
30023 + AVR32_MNEMONIC_PACKSH_SB,
30024 + AVR32_MNEMONIC_PACKSH_UB,
30025 + AVR32_MNEMONIC_PACKW_SH,
30026 + AVR32_MNEMONIC_PADD_B,
30027 + AVR32_MNEMONIC_PADD_H,
30028 + AVR32_MNEMONIC_PADDH_SH,
30029 + AVR32_MNEMONIC_PADDH_UB,
30030 + AVR32_MNEMONIC_PADDS_SB,
30031 + AVR32_MNEMONIC_PADDS_SH,
30032 + AVR32_MNEMONIC_PADDS_UB,
30033 + AVR32_MNEMONIC_PADDS_UH,
30034 + AVR32_MNEMONIC_PADDSUB_H,
30035 + AVR32_MNEMONIC_PADDSUBH_SH,
30036 + AVR32_MNEMONIC_PADDSUBS_SH,
30037 + AVR32_MNEMONIC_PADDSUBS_UH,
30038 + AVR32_MNEMONIC_PADDX_H,
30039 + AVR32_MNEMONIC_PADDXH_SH,
30040 + AVR32_MNEMONIC_PADDXS_SH,
30041 + AVR32_MNEMONIC_PADDXS_UH,
30042 + AVR32_MNEMONIC_PASR_B,
30043 + AVR32_MNEMONIC_PASR_H,
30044 + AVR32_MNEMONIC_PAVG_SH,
30045 + AVR32_MNEMONIC_PAVG_UB,
30046 + AVR32_MNEMONIC_PLSL_B,
30047 + AVR32_MNEMONIC_PLSL_H,
30048 + AVR32_MNEMONIC_PLSR_B,
30049 + AVR32_MNEMONIC_PLSR_H,
30050 + AVR32_MNEMONIC_PMAX_SH,
30051 + AVR32_MNEMONIC_PMAX_UB,
30052 + AVR32_MNEMONIC_PMIN_SH,
30053 + AVR32_MNEMONIC_PMIN_UB,
30054 + AVR32_MNEMONIC_POPJC,
30055 + AVR32_MNEMONIC_POPM,
30056 + AVR32_MNEMONIC_PREF,
30057 + AVR32_MNEMONIC_PSAD,
30058 + AVR32_MNEMONIC_PSUB_B,
30059 + AVR32_MNEMONIC_PSUB_H,
30060 + AVR32_MNEMONIC_PSUBADD_H,
30061 + AVR32_MNEMONIC_PSUBADDH_SH,
30062 + AVR32_MNEMONIC_PSUBADDS_SH,
30063 + AVR32_MNEMONIC_PSUBADDS_UH,
30064 + AVR32_MNEMONIC_PSUBH_SH,
30065 + AVR32_MNEMONIC_PSUBH_UB,
30066 + AVR32_MNEMONIC_PSUBS_SB,
30067 + AVR32_MNEMONIC_PSUBS_SH,
30068 + AVR32_MNEMONIC_PSUBS_UB,
30069 + AVR32_MNEMONIC_PSUBS_UH,
30070 + AVR32_MNEMONIC_PSUBX_H,
30071 + AVR32_MNEMONIC_PSUBXH_SH,
30072 + AVR32_MNEMONIC_PSUBXS_SH,
30073 + AVR32_MNEMONIC_PSUBXS_UH,
30074 + AVR32_MNEMONIC_PUNPCKSB_H,
30075 + AVR32_MNEMONIC_PUNPCKUB_H,
30076 + AVR32_MNEMONIC_PUSHJC,
30077 + AVR32_MNEMONIC_PUSHM,
30078 + AVR32_MNEMONIC_RCALL,
30079 + AVR32_MNEMONIC_RETEQ,
30080 + AVR32_MNEMONIC_RETNE,
30081 + AVR32_MNEMONIC_RETCC,
30082 + AVR32_MNEMONIC_RETCS,
30083 + AVR32_MNEMONIC_RETGE,
30084 + AVR32_MNEMONIC_RETLT,
30085 + AVR32_MNEMONIC_RETMI,
30086 + AVR32_MNEMONIC_RETPL,
30087 + AVR32_MNEMONIC_RETLS,
30088 + AVR32_MNEMONIC_RETGT,
30089 + AVR32_MNEMONIC_RETLE,
30090 + AVR32_MNEMONIC_RETHI,
30091 + AVR32_MNEMONIC_RETVS,
30092 + AVR32_MNEMONIC_RETVC,
30093 + AVR32_MNEMONIC_RETQS,
30094 + AVR32_MNEMONIC_RETAL,
30095 + AVR32_MNEMONIC_RETHS,
30096 + AVR32_MNEMONIC_RETLO,
30097 + AVR32_MNEMONIC_RET,
30098 + AVR32_MNEMONIC_RETD,
30099 + AVR32_MNEMONIC_RETE,
30100 + AVR32_MNEMONIC_RETJ,
30101 + AVR32_MNEMONIC_RETS,
30102 + AVR32_MNEMONIC_RJMP,
30103 + AVR32_MNEMONIC_ROL,
30104 + AVR32_MNEMONIC_ROR,
30105 + AVR32_MNEMONIC_RSUB,
30106 + AVR32_MNEMONIC_SATADD_H,
30107 + AVR32_MNEMONIC_SATADD_W,
30108 + AVR32_MNEMONIC_SATRNDS,
30109 + AVR32_MNEMONIC_SATRNDU,
30110 + AVR32_MNEMONIC_SATS,
30111 + AVR32_MNEMONIC_SATSUB_H,
30112 + AVR32_MNEMONIC_SATSUB_W,
30113 + AVR32_MNEMONIC_SATU,
30114 + AVR32_MNEMONIC_SBC,
30115 + AVR32_MNEMONIC_SBR,
30116 + AVR32_MNEMONIC_SCALL,
30117 + AVR32_MNEMONIC_SCR,
30118 + AVR32_MNEMONIC_SLEEP,
30119 + AVR32_MNEMONIC_SREQ,
30120 + AVR32_MNEMONIC_SRNE,
30121 + AVR32_MNEMONIC_SRCC,
30122 + AVR32_MNEMONIC_SRCS,
30123 + AVR32_MNEMONIC_SRGE,
30124 + AVR32_MNEMONIC_SRLT,
30125 + AVR32_MNEMONIC_SRMI,
30126 + AVR32_MNEMONIC_SRPL,
30127 + AVR32_MNEMONIC_SRLS,
30128 + AVR32_MNEMONIC_SRGT,
30129 + AVR32_MNEMONIC_SRLE,
30130 + AVR32_MNEMONIC_SRHI,
30131 + AVR32_MNEMONIC_SRVS,
30132 + AVR32_MNEMONIC_SRVC,
30133 + AVR32_MNEMONIC_SRQS,
30134 + AVR32_MNEMONIC_SRAL,
30135 + AVR32_MNEMONIC_SRHS,
30136 + AVR32_MNEMONIC_SRLO,
30137 + AVR32_MNEMONIC_SSRF,
30138 + AVR32_MNEMONIC_ST_B,
30139 + AVR32_MNEMONIC_ST_D,
30140 + AVR32_MNEMONIC_ST_H,
30141 + AVR32_MNEMONIC_ST_W,
30142 + AVR32_MNEMONIC_STC_D,
30143 + AVR32_MNEMONIC_STC_W,
30144 + AVR32_MNEMONIC_STC0_D,
30145 + AVR32_MNEMONIC_STC0_W,
30146 + AVR32_MNEMONIC_STCM_D,
30147 + AVR32_MNEMONIC_STCM_W,
30148 + AVR32_MNEMONIC_STCOND,
30149 + AVR32_MNEMONIC_STDSP,
30150 + AVR32_MNEMONIC_STHH_W,
30151 + AVR32_MNEMONIC_STM,
30152 + AVR32_MNEMONIC_STMTS,
30153 + AVR32_MNEMONIC_STSWP_H,
30154 + AVR32_MNEMONIC_STSWP_W,
30155 + AVR32_MNEMONIC_SUB,
30156 + AVR32_MNEMONIC_SUBEQ,
30157 + AVR32_MNEMONIC_SUBNE,
30158 + AVR32_MNEMONIC_SUBCC,
30159 + AVR32_MNEMONIC_SUBCS,
30160 + AVR32_MNEMONIC_SUBGE,
30161 + AVR32_MNEMONIC_SUBLT,
30162 + AVR32_MNEMONIC_SUBMI,
30163 + AVR32_MNEMONIC_SUBPL,
30164 + AVR32_MNEMONIC_SUBLS,
30165 + AVR32_MNEMONIC_SUBGT,
30166 + AVR32_MNEMONIC_SUBLE,
30167 + AVR32_MNEMONIC_SUBHI,
30168 + AVR32_MNEMONIC_SUBVS,
30169 + AVR32_MNEMONIC_SUBVC,
30170 + AVR32_MNEMONIC_SUBQS,
30171 + AVR32_MNEMONIC_SUBAL,
30172 + AVR32_MNEMONIC_SUBHS,
30173 + AVR32_MNEMONIC_SUBLO,
30174 + AVR32_MNEMONIC_SUBFEQ,
30175 + AVR32_MNEMONIC_SUBFNE,
30176 + AVR32_MNEMONIC_SUBFCC,
30177 + AVR32_MNEMONIC_SUBFCS,
30178 + AVR32_MNEMONIC_SUBFGE,
30179 + AVR32_MNEMONIC_SUBFLT,
30180 + AVR32_MNEMONIC_SUBFMI,
30181 + AVR32_MNEMONIC_SUBFPL,
30182 + AVR32_MNEMONIC_SUBFLS,
30183 + AVR32_MNEMONIC_SUBFGT,
30184 + AVR32_MNEMONIC_SUBFLE,
30185 + AVR32_MNEMONIC_SUBFHI,
30186 + AVR32_MNEMONIC_SUBFVS,
30187 + AVR32_MNEMONIC_SUBFVC,
30188 + AVR32_MNEMONIC_SUBFQS,
30189 + AVR32_MNEMONIC_SUBFAL,
30190 + AVR32_MNEMONIC_SUBFHS,
30191 + AVR32_MNEMONIC_SUBFLO,
30192 + AVR32_MNEMONIC_SUBHH_W,
30193 + AVR32_MNEMONIC_SWAP_B,
30194 + AVR32_MNEMONIC_SWAP_BH,
30195 + AVR32_MNEMONIC_SWAP_H,
30196 + AVR32_MNEMONIC_SYNC,
30197 + AVR32_MNEMONIC_TLBR,
30198 + AVR32_MNEMONIC_TLBS,
30199 + AVR32_MNEMONIC_TLBW,
30200 + AVR32_MNEMONIC_TNBZ,
30201 + AVR32_MNEMONIC_TST,
30202 + AVR32_MNEMONIC_XCHG,
30203 + AVR32_MNEMONIC_MEMC,
30204 + AVR32_MNEMONIC_MEMS,
30205 + AVR32_MNEMONIC_MEMT,
30206 + AVR32_MNEMONIC_FADD_S,
30207 + AVR32_MNEMONIC_FADD_D,
30208 + AVR32_MNEMONIC_FSUB_S,
30209 + AVR32_MNEMONIC_FSUB_D,
30210 + AVR32_MNEMONIC_FMAC_S,
30211 + AVR32_MNEMONIC_FMAC_D,
30212 + AVR32_MNEMONIC_FNMAC_S,
30213 + AVR32_MNEMONIC_FNMAC_D,
30214 + AVR32_MNEMONIC_FMSC_S,
30215 + AVR32_MNEMONIC_FMSC_D,
30216 + AVR32_MNEMONIC_FNMSC_S,
30217 + AVR32_MNEMONIC_FNMSC_D,
30218 + AVR32_MNEMONIC_FMUL_S,
30219 + AVR32_MNEMONIC_FMUL_D,
30220 + AVR32_MNEMONIC_FNMUL_S,
30221 + AVR32_MNEMONIC_FNMUL_D,
30222 + AVR32_MNEMONIC_FNEG_S,
30223 + AVR32_MNEMONIC_FNEG_D,
30224 + AVR32_MNEMONIC_FABS_S,
30225 + AVR32_MNEMONIC_FABS_D,
30226 + AVR32_MNEMONIC_FCMP_S,
30227 + AVR32_MNEMONIC_FCMP_D,
30228 + AVR32_MNEMONIC_FMOV_S,
30229 + AVR32_MNEMONIC_FMOV_D,
30230 + AVR32_MNEMONIC_FCASTS_D,
30231 + AVR32_MNEMONIC_FCASTD_S,
30232 + /* AVR32_MNEMONIC_FLD_S,
30233 + AVR32_MNEMONIC_FLD_D,
30234 + AVR32_MNEMONIC_FST_S,
30235 + AVR32_MNEMONIC_FST_D, */
30236 + AVR32_MNEMONIC_LDA_W,
30237 + AVR32_MNEMONIC_CALL,
30238 + AVR32_MNEMONIC_PICOSVMAC,
30239 + AVR32_MNEMONIC_PICOSVMUL,
30240 + AVR32_MNEMONIC_PICOVMAC,
30241 + AVR32_MNEMONIC_PICOVMUL,
30242 + AVR32_MNEMONIC_PICOLD_D,
30243 + AVR32_MNEMONIC_PICOLD_W,
30244 + AVR32_MNEMONIC_PICOLDM_D,
30245 + AVR32_MNEMONIC_PICOLDM_W,
30246 + AVR32_MNEMONIC_PICOMV_D,
30247 + AVR32_MNEMONIC_PICOMV_W,
30248 + AVR32_MNEMONIC_PICOST_D,
30249 + AVR32_MNEMONIC_PICOST_W,
30250 + AVR32_MNEMONIC_PICOSTM_D,
30251 + AVR32_MNEMONIC_PICOSTM_W,
30252 + AVR32_MNEMONIC_RSUBEQ,
30253 + AVR32_MNEMONIC_RSUBNE,
30254 + AVR32_MNEMONIC_RSUBCC,
30255 + AVR32_MNEMONIC_RSUBCS,
30256 + AVR32_MNEMONIC_RSUBGE,
30257 + AVR32_MNEMONIC_RSUBLT,
30258 + AVR32_MNEMONIC_RSUBMI,
30259 + AVR32_MNEMONIC_RSUBPL,
30260 + AVR32_MNEMONIC_RSUBLS,
30261 + AVR32_MNEMONIC_RSUBGT,
30262 + AVR32_MNEMONIC_RSUBLE,
30263 + AVR32_MNEMONIC_RSUBHI,
30264 + AVR32_MNEMONIC_RSUBVS,
30265 + AVR32_MNEMONIC_RSUBVC,
30266 + AVR32_MNEMONIC_RSUBQS,
30267 + AVR32_MNEMONIC_RSUBAL,
30268 + AVR32_MNEMONIC_RSUBHS,
30269 + AVR32_MNEMONIC_RSUBLO,
30270 + AVR32_MNEMONIC_ADDEQ,
30271 + AVR32_MNEMONIC_ADDNE,
30272 + AVR32_MNEMONIC_ADDCC,
30273 + AVR32_MNEMONIC_ADDCS,
30274 + AVR32_MNEMONIC_ADDGE,
30275 + AVR32_MNEMONIC_ADDLT,
30276 + AVR32_MNEMONIC_ADDMI,
30277 + AVR32_MNEMONIC_ADDPL,
30278 + AVR32_MNEMONIC_ADDLS,
30279 + AVR32_MNEMONIC_ADDGT,
30280 + AVR32_MNEMONIC_ADDLE,
30281 + AVR32_MNEMONIC_ADDHI,
30282 + AVR32_MNEMONIC_ADDVS,
30283 + AVR32_MNEMONIC_ADDVC,
30284 + AVR32_MNEMONIC_ADDQS,
30285 + AVR32_MNEMONIC_ADDAL,
30286 + AVR32_MNEMONIC_ADDHS,
30287 + AVR32_MNEMONIC_ADDLO,
30288 + AVR32_MNEMONIC_ANDEQ,
30289 + AVR32_MNEMONIC_ANDNE,
30290 + AVR32_MNEMONIC_ANDCC,
30291 + AVR32_MNEMONIC_ANDCS,
30292 + AVR32_MNEMONIC_ANDGE,
30293 + AVR32_MNEMONIC_ANDLT,
30294 + AVR32_MNEMONIC_ANDMI,
30295 + AVR32_MNEMONIC_ANDPL,
30296 + AVR32_MNEMONIC_ANDLS,
30297 + AVR32_MNEMONIC_ANDGT,
30298 + AVR32_MNEMONIC_ANDLE,
30299 + AVR32_MNEMONIC_ANDHI,
30300 + AVR32_MNEMONIC_ANDVS,
30301 + AVR32_MNEMONIC_ANDVC,
30302 + AVR32_MNEMONIC_ANDQS,
30303 + AVR32_MNEMONIC_ANDAL,
30304 + AVR32_MNEMONIC_ANDHS,
30305 + AVR32_MNEMONIC_ANDLO,
30306 + AVR32_MNEMONIC_OREQ,
30307 + AVR32_MNEMONIC_ORNE,
30308 + AVR32_MNEMONIC_ORCC,
30309 + AVR32_MNEMONIC_ORCS,
30310 + AVR32_MNEMONIC_ORGE,
30311 + AVR32_MNEMONIC_ORLT,
30312 + AVR32_MNEMONIC_ORMI,
30313 + AVR32_MNEMONIC_ORPL,
30314 + AVR32_MNEMONIC_ORLS,
30315 + AVR32_MNEMONIC_ORGT,
30316 + AVR32_MNEMONIC_ORLE,
30317 + AVR32_MNEMONIC_ORHI,
30318 + AVR32_MNEMONIC_ORVS,
30319 + AVR32_MNEMONIC_ORVC,
30320 + AVR32_MNEMONIC_ORQS,
30321 + AVR32_MNEMONIC_ORAL,
30322 + AVR32_MNEMONIC_ORHS,
30323 + AVR32_MNEMONIC_ORLO,
30324 + AVR32_MNEMONIC_EOREQ,
30325 + AVR32_MNEMONIC_EORNE,
30326 + AVR32_MNEMONIC_EORCC,
30327 + AVR32_MNEMONIC_EORCS,
30328 + AVR32_MNEMONIC_EORGE,
30329 + AVR32_MNEMONIC_EORLT,
30330 + AVR32_MNEMONIC_EORMI,
30331 + AVR32_MNEMONIC_EORPL,
30332 + AVR32_MNEMONIC_EORLS,
30333 + AVR32_MNEMONIC_EORGT,
30334 + AVR32_MNEMONIC_EORLE,
30335 + AVR32_MNEMONIC_EORHI,
30336 + AVR32_MNEMONIC_EORVS,
30337 + AVR32_MNEMONIC_EORVC,
30338 + AVR32_MNEMONIC_EORQS,
30339 + AVR32_MNEMONIC_EORAL,
30340 + AVR32_MNEMONIC_EORHS,
30341 + AVR32_MNEMONIC_EORLO,
30342 + AVR32_MNEMONIC_LD_WEQ,
30343 + AVR32_MNEMONIC_LD_WNE,
30344 + AVR32_MNEMONIC_LD_WCC,
30345 + AVR32_MNEMONIC_LD_WCS,
30346 + AVR32_MNEMONIC_LD_WGE,
30347 + AVR32_MNEMONIC_LD_WLT,
30348 + AVR32_MNEMONIC_LD_WMI,
30349 + AVR32_MNEMONIC_LD_WPL,
30350 + AVR32_MNEMONIC_LD_WLS,
30351 + AVR32_MNEMONIC_LD_WGT,
30352 + AVR32_MNEMONIC_LD_WLE,
30353 + AVR32_MNEMONIC_LD_WHI,
30354 + AVR32_MNEMONIC_LD_WVS,
30355 + AVR32_MNEMONIC_LD_WVC,
30356 + AVR32_MNEMONIC_LD_WQS,
30357 + AVR32_MNEMONIC_LD_WAL,
30358 + AVR32_MNEMONIC_LD_WHS,
30359 + AVR32_MNEMONIC_LD_WLO,
30360 + AVR32_MNEMONIC_LD_SHEQ,
30361 + AVR32_MNEMONIC_LD_SHNE,
30362 + AVR32_MNEMONIC_LD_SHCC,
30363 + AVR32_MNEMONIC_LD_SHCS,
30364 + AVR32_MNEMONIC_LD_SHGE,
30365 + AVR32_MNEMONIC_LD_SHLT,
30366 + AVR32_MNEMONIC_LD_SHMI,
30367 + AVR32_MNEMONIC_LD_SHPL,
30368 + AVR32_MNEMONIC_LD_SHLS,
30369 + AVR32_MNEMONIC_LD_SHGT,
30370 + AVR32_MNEMONIC_LD_SHLE,
30371 + AVR32_MNEMONIC_LD_SHHI,
30372 + AVR32_MNEMONIC_LD_SHVS,
30373 + AVR32_MNEMONIC_LD_SHVC,
30374 + AVR32_MNEMONIC_LD_SHQS,
30375 + AVR32_MNEMONIC_LD_SHAL,
30376 + AVR32_MNEMONIC_LD_SHHS,
30377 + AVR32_MNEMONIC_LD_SHLO,
30378 + AVR32_MNEMONIC_LD_UHEQ,
30379 + AVR32_MNEMONIC_LD_UHNE,
30380 + AVR32_MNEMONIC_LD_UHCC,
30381 + AVR32_MNEMONIC_LD_UHCS,
30382 + AVR32_MNEMONIC_LD_UHGE,
30383 + AVR32_MNEMONIC_LD_UHLT,
30384 + AVR32_MNEMONIC_LD_UHMI,
30385 + AVR32_MNEMONIC_LD_UHPL,
30386 + AVR32_MNEMONIC_LD_UHLS,
30387 + AVR32_MNEMONIC_LD_UHGT,
30388 + AVR32_MNEMONIC_LD_UHLE,
30389 + AVR32_MNEMONIC_LD_UHHI,
30390 + AVR32_MNEMONIC_LD_UHVS,
30391 + AVR32_MNEMONIC_LD_UHVC,
30392 + AVR32_MNEMONIC_LD_UHQS,
30393 + AVR32_MNEMONIC_LD_UHAL,
30394 + AVR32_MNEMONIC_LD_UHHS,
30395 + AVR32_MNEMONIC_LD_UHLO,
30396 + AVR32_MNEMONIC_LD_SBEQ,
30397 + AVR32_MNEMONIC_LD_SBNE,
30398 + AVR32_MNEMONIC_LD_SBCC,
30399 + AVR32_MNEMONIC_LD_SBCS,
30400 + AVR32_MNEMONIC_LD_SBGE,
30401 + AVR32_MNEMONIC_LD_SBLT,
30402 + AVR32_MNEMONIC_LD_SBMI,
30403 + AVR32_MNEMONIC_LD_SBPL,
30404 + AVR32_MNEMONIC_LD_SBLS,
30405 + AVR32_MNEMONIC_LD_SBGT,
30406 + AVR32_MNEMONIC_LD_SBLE,
30407 + AVR32_MNEMONIC_LD_SBHI,
30408 + AVR32_MNEMONIC_LD_SBVS,
30409 + AVR32_MNEMONIC_LD_SBVC,
30410 + AVR32_MNEMONIC_LD_SBQS,
30411 + AVR32_MNEMONIC_LD_SBAL,
30412 + AVR32_MNEMONIC_LD_SBHS,
30413 + AVR32_MNEMONIC_LD_SBLO,
30414 + AVR32_MNEMONIC_LD_UBEQ,
30415 + AVR32_MNEMONIC_LD_UBNE,
30416 + AVR32_MNEMONIC_LD_UBCC,
30417 + AVR32_MNEMONIC_LD_UBCS,
30418 + AVR32_MNEMONIC_LD_UBGE,
30419 + AVR32_MNEMONIC_LD_UBLT,
30420 + AVR32_MNEMONIC_LD_UBMI,
30421 + AVR32_MNEMONIC_LD_UBPL,
30422 + AVR32_MNEMONIC_LD_UBLS,
30423 + AVR32_MNEMONIC_LD_UBGT,
30424 + AVR32_MNEMONIC_LD_UBLE,
30425 + AVR32_MNEMONIC_LD_UBHI,
30426 + AVR32_MNEMONIC_LD_UBVS,
30427 + AVR32_MNEMONIC_LD_UBVC,
30428 + AVR32_MNEMONIC_LD_UBQS,
30429 + AVR32_MNEMONIC_LD_UBAL,
30430 + AVR32_MNEMONIC_LD_UBHS,
30431 + AVR32_MNEMONIC_LD_UBLO,
30432 + AVR32_MNEMONIC_ST_WEQ,
30433 + AVR32_MNEMONIC_ST_WNE,
30434 + AVR32_MNEMONIC_ST_WCC,
30435 + AVR32_MNEMONIC_ST_WCS,
30436 + AVR32_MNEMONIC_ST_WGE,
30437 + AVR32_MNEMONIC_ST_WLT,
30438 + AVR32_MNEMONIC_ST_WMI,
30439 + AVR32_MNEMONIC_ST_WPL,
30440 + AVR32_MNEMONIC_ST_WLS,
30441 + AVR32_MNEMONIC_ST_WGT,
30442 + AVR32_MNEMONIC_ST_WLE,
30443 + AVR32_MNEMONIC_ST_WHI,
30444 + AVR32_MNEMONIC_ST_WVS,
30445 + AVR32_MNEMONIC_ST_WVC,
30446 + AVR32_MNEMONIC_ST_WQS,
30447 + AVR32_MNEMONIC_ST_WAL,
30448 + AVR32_MNEMONIC_ST_WHS,
30449 + AVR32_MNEMONIC_ST_WLO,
30450 + AVR32_MNEMONIC_ST_HEQ,
30451 + AVR32_MNEMONIC_ST_HNE,
30452 + AVR32_MNEMONIC_ST_HCC,
30453 + AVR32_MNEMONIC_ST_HCS,
30454 + AVR32_MNEMONIC_ST_HGE,
30455 + AVR32_MNEMONIC_ST_HLT,
30456 + AVR32_MNEMONIC_ST_HMI,
30457 + AVR32_MNEMONIC_ST_HPL,
30458 + AVR32_MNEMONIC_ST_HLS,
30459 + AVR32_MNEMONIC_ST_HGT,
30460 + AVR32_MNEMONIC_ST_HLE,
30461 + AVR32_MNEMONIC_ST_HHI,
30462 + AVR32_MNEMONIC_ST_HVS,
30463 + AVR32_MNEMONIC_ST_HVC,
30464 + AVR32_MNEMONIC_ST_HQS,
30465 + AVR32_MNEMONIC_ST_HAL,
30466 + AVR32_MNEMONIC_ST_HHS,
30467 + AVR32_MNEMONIC_ST_HLO,
30468 + AVR32_MNEMONIC_ST_BEQ,
30469 + AVR32_MNEMONIC_ST_BNE,
30470 + AVR32_MNEMONIC_ST_BCC,
30471 + AVR32_MNEMONIC_ST_BCS,
30472 + AVR32_MNEMONIC_ST_BGE,
30473 + AVR32_MNEMONIC_ST_BLT,
30474 + AVR32_MNEMONIC_ST_BMI,
30475 + AVR32_MNEMONIC_ST_BPL,
30476 + AVR32_MNEMONIC_ST_BLS,
30477 + AVR32_MNEMONIC_ST_BGT,
30478 + AVR32_MNEMONIC_ST_BLE,
30479 + AVR32_MNEMONIC_ST_BHI,
30480 + AVR32_MNEMONIC_ST_BVS,
30481 + AVR32_MNEMONIC_ST_BVC,
30482 + AVR32_MNEMONIC_ST_BQS,
30483 + AVR32_MNEMONIC_ST_BAL,
30484 + AVR32_MNEMONIC_ST_BHS,
30485 + AVR32_MNEMONIC_ST_BLO,
30486 + AVR32_MNEMONIC_MOVH,
30487 + AVR32_MNEMONIC__END_
30488 +};
30489 +#define AVR32_NR_MNEMONICS AVR32_MNEMONIC__END_
30490 +
30491 +enum avr32_syntax_parser
30492 + {
30493 + AVR32_PARSER_NORMAL,
30494 + AVR32_PARSER_ALIAS,
30495 + AVR32_PARSER_LDA,
30496 + AVR32_PARSER_CALL,
30497 + AVR32_PARSER__END_
30498 + };
30499 +#define AVR32_NR_PARSERS AVR32_PARSER__END_
30500 --- a/opcodes/configure.in
30501 +++ b/opcodes/configure.in
30502 @@ -158,6 +158,7 @@ if test x${all_targets} = xfalse ; then
30503 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
30504 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
30505 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
30506 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
30507 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
30508 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
30509 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
30510 @@ -216,7 +217,7 @@ if test x${all_targets} = xfalse ; then
30511 ta="$ta sh64-dis.lo sh64-opc.lo"
30512 archdefs="$archdefs -DINCLUDE_SHMEDIA"
30513 break;;
30514 - esac;
30515 + esac
30516 done
30517 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
30518 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
30519 --- a/opcodes/disassemble.c
30520 +++ b/opcodes/disassemble.c
30521 @@ -27,6 +27,7 @@
30522 #define ARCH_arc
30523 #define ARCH_arm
30524 #define ARCH_avr
30525 +#define ARCH_avr32
30526 #define ARCH_bfin
30527 #define ARCH_cr16
30528 #define ARCH_cris
30529 @@ -128,6 +129,11 @@ disassembler (abfd)
30530 disassemble = print_insn_avr;
30531 break;
30532 #endif
30533 +#ifdef ARCH_avr32
30534 + case bfd_arch_avr32:
30535 + disassemble = print_insn_avr32;
30536 + break;
30537 +#endif
30538 #ifdef ARCH_bfin
30539 case bfd_arch_bfin:
30540 disassemble = print_insn_bfin;
30541 @@ -346,9 +352,9 @@ disassembler (abfd)
30542 #ifdef ARCH_score
30543 case bfd_arch_score:
30544 if (bfd_big_endian (abfd))
30545 - disassemble = print_insn_big_score;
30546 + disassemble = print_insn_big_score;
30547 else
30548 - disassemble = print_insn_little_score;
30549 + disassemble = print_insn_little_score;
30550 break;
30551 #endif
30552 #ifdef ARCH_sh
30553 @@ -466,6 +472,9 @@ disassembler_usage (stream)
30554 #ifdef ARCH_i386
30555 print_i386_disassembler_options (stream);
30556 #endif
30557 +#ifdef ARCH_avr32
30558 + print_avr32_disassembler_options (stream);
30559 +#endif
30560
30561 return;
30562 }
30563 --- a/opcodes/Makefile.am
30564 +++ b/opcodes/Makefile.am
30565 @@ -30,6 +30,7 @@ LIBIBERTY = ../libiberty/libiberty.a
30566 # Header files.
30567 HFILES = \
30568 cgen-ops.h cgen-types.h \
30569 + avr32-asm.h avr32-opc.h \
30570 fr30-desc.h fr30-opc.h \
30571 frv-desc.h frv-opc.h \
30572 h8500-opc.h \
30573 @@ -63,6 +64,9 @@ CFILES = \
30574 arc-ext.c \
30575 arm-dis.c \
30576 avr-dis.c \
30577 + avr32-asm.c \
30578 + avr32-dis.c \
30579 + avr32-opc.c \
30580 bfin-dis.c \
30581 cgen-asm.c \
30582 cgen-bitset.c \
30583 @@ -217,6 +221,9 @@ ALL_MACHINES = \
30584 arc-ext.lo \
30585 arm-dis.lo \
30586 avr-dis.lo \
30587 + avr32-asm.lo \
30588 + avr32-dis.lo \
30589 + avr32-opc.lo \
30590 bfin-dis.lo \
30591 cgen-asm.lo \
30592 cgen-bitset.lo \
30593 @@ -674,6 +681,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
30594 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
30595 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
30596 $(INCDIR)/opcode/avr.h
30597 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30598 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
30599 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
30600 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
30601 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30602 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
30603 + avr32-opc.h opintl.h
30604 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30605 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
30606 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
30607 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
30608 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
30609 --- a/bfd/bfd-in2.h
30610 +++ b/bfd/bfd-in2.h
30611 @@ -2017,6 +2017,11 @@ enum bfd_architecture
30612 #define bfd_mach_avr4 4
30613 #define bfd_mach_avr5 5
30614 #define bfd_mach_avr6 6
30615 + bfd_arch_avr32, /* Atmel AVR32 */
30616 +#define bfd_mach_avr32_ap 7000
30617 +#define bfd_mach_avr32_uc 3000
30618 +#define bfd_mach_avr32_ucr1 3001
30619 +#define bfd_mach_avr32_ucr2 3002
30620 bfd_arch_bfin, /* ADI Blackfin */
30621 #define bfd_mach_bfin 1
30622 bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
30623 @@ -3758,6 +3763,88 @@ instructions */
30624 instructions */
30625 BFD_RELOC_AVR_6_ADIW,
30626
30627 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
30628 +as sym + addend, while the initial difference after assembly is
30629 +inserted into the object file by the assembler. */
30630 + BFD_RELOC_AVR32_DIFF32,
30631 + BFD_RELOC_AVR32_DIFF16,
30632 + BFD_RELOC_AVR32_DIFF8,
30633 +
30634 +/* Reference to a symbol through the Global Offset Table. The linker
30635 +will allocate an entry for symbol in the GOT and insert the offset
30636 +of this entry as the relocation value. */
30637 + BFD_RELOC_AVR32_GOT32,
30638 + BFD_RELOC_AVR32_GOT16,
30639 + BFD_RELOC_AVR32_GOT8,
30640 +
30641 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
30642 +is indicated by the suffixes. S means signed, U means unsigned. W
30643 +means word-aligned, H means halfword-aligned, neither means
30644 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
30645 + BFD_RELOC_AVR32_21S,
30646 + BFD_RELOC_AVR32_16U,
30647 + BFD_RELOC_AVR32_16S,
30648 + BFD_RELOC_AVR32_SUB5,
30649 + BFD_RELOC_AVR32_8S_EXT,
30650 + BFD_RELOC_AVR32_8S,
30651 + BFD_RELOC_AVR32_15S,
30652 +
30653 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
30654 +specified. However, we explicitly tack on a 'B' to indicate no
30655 +alignment, to avoid confusion with data relocs. All of these resolve
30656 +to sym + addend - offset, except the one with 'N' (negated) suffix.
30657 +This particular one resolves to offset - sym - addend. */
30658 + BFD_RELOC_AVR32_22H_PCREL,
30659 + BFD_RELOC_AVR32_18W_PCREL,
30660 + BFD_RELOC_AVR32_16B_PCREL,
30661 + BFD_RELOC_AVR32_16N_PCREL,
30662 + BFD_RELOC_AVR32_14UW_PCREL,
30663 + BFD_RELOC_AVR32_11H_PCREL,
30664 + BFD_RELOC_AVR32_10UW_PCREL,
30665 + BFD_RELOC_AVR32_9H_PCREL,
30666 + BFD_RELOC_AVR32_9UW_PCREL,
30667 +
30668 +/* Subtract the link-time address of the GOT from (symbol + addend)
30669 +and insert the result. */
30670 + BFD_RELOC_AVR32_GOTPC,
30671 +
30672 +/* Reference to a symbol through the GOT. The linker will allocate an
30673 +entry for symbol in the GOT and insert the offset of this entry as
30674 +the relocation value. addend must be zero. As usual, 'S' means
30675 +signed, 'W' means word-aligned, etc. */
30676 + BFD_RELOC_AVR32_GOTCALL,
30677 + BFD_RELOC_AVR32_LDA_GOT,
30678 + BFD_RELOC_AVR32_GOT21S,
30679 + BFD_RELOC_AVR32_GOT18SW,
30680 + BFD_RELOC_AVR32_GOT16S,
30681 +
30682 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
30683 +a whole lot of sense. */
30684 + BFD_RELOC_AVR32_32_CPENT,
30685 +
30686 +/* Constant pool references. Some of these relocations are signed,
30687 +others are unsigned. It doesn't really matter, since the constant
30688 +pool always comes after the code that references it. */
30689 + BFD_RELOC_AVR32_CPCALL,
30690 + BFD_RELOC_AVR32_16_CP,
30691 + BFD_RELOC_AVR32_9W_CP,
30692 +
30693 +/* sym must be the absolute symbol. The addend specifies the alignment
30694 +order, e.g. if addend is 2, the linker must add padding so that the
30695 +next address is aligned to a 4-byte boundary. */
30696 + BFD_RELOC_AVR32_ALIGN,
30697 +
30698 +/* Code relocations that will never make it to the output file. */
30699 + BFD_RELOC_AVR32_14UW,
30700 + BFD_RELOC_AVR32_10UW,
30701 + BFD_RELOC_AVR32_10SW,
30702 + BFD_RELOC_AVR32_STHH_W,
30703 + BFD_RELOC_AVR32_7UW,
30704 + BFD_RELOC_AVR32_6S,
30705 + BFD_RELOC_AVR32_6UW,
30706 + BFD_RELOC_AVR32_4UH,
30707 + BFD_RELOC_AVR32_3U,
30708 +
30709 /* Direct 12 bit. */
30710 BFD_RELOC_390_12,
30711
30712 --- /dev/null
30713 +++ b/bfd/bfd-in3.h
30714 @@ -0,0 +1,5406 @@
30715 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
30716 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
30717 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
30718 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
30719 + "linker.c" and "simple.c".
30720 + Run "make headers" in your build bfd/ to regenerate. */
30721 +
30722 +/* Main header file for the bfd library -- portable access to object files.
30723 +
30724 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
30725 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
30726 + Free Software Foundation, Inc.
30727 +
30728 + Contributed by Cygnus Support.
30729 +
30730 + This file is part of BFD, the Binary File Descriptor library.
30731 +
30732 + This program is free software; you can redistribute it and/or modify
30733 + it under the terms of the GNU General Public License as published by
30734 + the Free Software Foundation; either version 3 of the License, or
30735 + (at your option) any later version.
30736 +
30737 + This program is distributed in the hope that it will be useful,
30738 + but WITHOUT ANY WARRANTY; without even the implied warranty of
30739 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30740 + GNU General Public License for more details.
30741 +
30742 + You should have received a copy of the GNU General Public License
30743 + along with this program; if not, write to the Free Software
30744 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
30745 +
30746 +#ifndef __BFD_H_SEEN__
30747 +#define __BFD_H_SEEN__
30748 +
30749 +#ifdef __cplusplus
30750 +extern "C" {
30751 +#endif
30752 +
30753 +#include "ansidecl.h"
30754 +#include "symcat.h"
30755 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
30756 +#ifndef SABER
30757 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
30758 + The problem is, "32_" is not a valid preprocessing token, and we don't
30759 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
30760 + cause the inner CONCAT2 macros to be evaluated first, producing
30761 + still-valid pp-tokens. Then the final concatenation can be done. */
30762 +#undef CONCAT4
30763 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
30764 +#endif
30765 +#endif
30766 +
30767 +/* This is a utility macro to handle the situation where the code
30768 + wants to place a constant string into the code, followed by a
30769 + comma and then the length of the string. Doing this by hand
30770 + is error prone, so using this macro is safer. The macro will
30771 + also safely handle the case where a NULL is passed as the arg. */
30772 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
30773 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
30774 + to create the arguments to another macro, since the preprocessor
30775 + will mis-count the number of arguments to the outer macro (by not
30776 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
30777 + problem for example when trying to use STRING_COMMA_LEN to build
30778 + the arguments to the strncmp() macro. Hence this alternative
30779 + definition of strncmp is provided here.
30780 +
30781 + Note - these macros do NOT work if STR2 is not a constant string. */
30782 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
30783 + /* strcpy() can have a similar problem, but since we know we are
30784 + copying a constant string, we can use memcpy which will be faster
30785 + since there is no need to check for a NUL byte inside STR. We
30786 + can also save time if we do not need to copy the terminating NUL. */
30787 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
30788 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
30789 +
30790 +
30791 +/* The word size used by BFD on the host. This may be 64 with a 32
30792 + bit target if the host is 64 bit, or if other 64 bit targets have
30793 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
30794 +#define BFD_ARCH_SIZE 32
30795 +
30796 +/* The word size of the default bfd target. */
30797 +#define BFD_DEFAULT_TARGET_SIZE 32
30798 +
30799 +#define BFD_HOST_64BIT_LONG 0
30800 +#define BFD_HOST_64BIT_LONG_LONG 0
30801 +#define BFD_HOST_LONG_LONG 1
30802 +#if 1
30803 +#define BFD_HOST_64_BIT long long
30804 +#define BFD_HOST_U_64_BIT unsigned long long
30805 +typedef BFD_HOST_64_BIT bfd_int64_t;
30806 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
30807 +#endif
30808 +
30809 +#if BFD_ARCH_SIZE >= 64
30810 +#define BFD64
30811 +#endif
30812 +
30813 +#ifndef INLINE
30814 +#if __GNUC__ >= 2
30815 +#define INLINE __inline__
30816 +#else
30817 +#define INLINE
30818 +#endif
30819 +#endif
30820 +
30821 +/* Declaring a type wide enough to hold a host long and a host pointer. */
30822 +#define BFD_HOSTPTR_T unsigned long
30823 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
30824 +
30825 +/* Forward declaration. */
30826 +typedef struct bfd bfd;
30827 +
30828 +/* Boolean type used in bfd. Too many systems define their own
30829 + versions of "boolean" for us to safely typedef a "boolean" of
30830 + our own. Using an enum for "bfd_boolean" has its own set of
30831 + problems, with strange looking casts required to avoid warnings
30832 + on some older compilers. Thus we just use an int.
30833 +
30834 + General rule: Functions which are bfd_boolean return TRUE on
30835 + success and FALSE on failure (unless they're a predicate). */
30836 +
30837 +typedef int bfd_boolean;
30838 +#undef FALSE
30839 +#undef TRUE
30840 +#define FALSE 0
30841 +#define TRUE 1
30842 +
30843 +#ifdef BFD64
30844 +
30845 +#ifndef BFD_HOST_64_BIT
30846 + #error No 64 bit integer type available
30847 +#endif /* ! defined (BFD_HOST_64_BIT) */
30848 +
30849 +typedef BFD_HOST_U_64_BIT bfd_vma;
30850 +typedef BFD_HOST_64_BIT bfd_signed_vma;
30851 +typedef BFD_HOST_U_64_BIT bfd_size_type;
30852 +typedef BFD_HOST_U_64_BIT symvalue;
30853 +
30854 +#ifndef fprintf_vma
30855 +#if BFD_HOST_64BIT_LONG
30856 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
30857 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
30858 +#elif BFD_HOST_64BIT_LONG_LONG
30859 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
30860 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
30861 +#else
30862 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
30863 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
30864 +#define fprintf_vma(s,x) \
30865 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
30866 +#define sprintf_vma(s,x) \
30867 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
30868 +#endif
30869 +#endif
30870 +
30871 +#else /* not BFD64 */
30872 +
30873 +/* Represent a target address. Also used as a generic unsigned type
30874 + which is guaranteed to be big enough to hold any arithmetic types
30875 + we need to deal with. */
30876 +typedef unsigned long bfd_vma;
30877 +
30878 +/* A generic signed type which is guaranteed to be big enough to hold any
30879 + arithmetic types we need to deal with. Can be assumed to be compatible
30880 + with bfd_vma in the same way that signed and unsigned ints are compatible
30881 + (as parameters, in assignment, etc). */
30882 +typedef long bfd_signed_vma;
30883 +
30884 +typedef unsigned long symvalue;
30885 +typedef unsigned long bfd_size_type;
30886 +
30887 +/* Print a bfd_vma x on stream s. */
30888 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
30889 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
30890 +
30891 +#endif /* not BFD64 */
30892 +
30893 +#define HALF_BFD_SIZE_TYPE \
30894 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
30895 +
30896 +#ifndef BFD_HOST_64_BIT
30897 +/* Fall back on a 32 bit type. The idea is to make these types always
30898 + available for function return types, but in the case that
30899 + BFD_HOST_64_BIT is undefined such a function should abort or
30900 + otherwise signal an error. */
30901 +typedef bfd_signed_vma bfd_int64_t;
30902 +typedef bfd_vma bfd_uint64_t;
30903 +#endif
30904 +
30905 +/* An offset into a file. BFD always uses the largest possible offset
30906 + based on the build time availability of fseek, fseeko, or fseeko64. */
30907 +typedef BFD_HOST_64_BIT file_ptr;
30908 +typedef unsigned BFD_HOST_64_BIT ufile_ptr;
30909 +
30910 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
30911 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
30912 +
30913 +#define printf_vma(x) fprintf_vma(stdout,x)
30914 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
30915 +
30916 +typedef unsigned int flagword; /* 32 bits of flags */
30917 +typedef unsigned char bfd_byte;
30918 +\f
30919 +/* File formats. */
30920 +
30921 +typedef enum bfd_format
30922 +{
30923 + bfd_unknown = 0, /* File format is unknown. */
30924 + bfd_object, /* Linker/assembler/compiler output. */
30925 + bfd_archive, /* Object archive file. */
30926 + bfd_core, /* Core dump. */
30927 + bfd_type_end /* Marks the end; don't use it! */
30928 +}
30929 +bfd_format;
30930 +
30931 +/* Values that may appear in the flags field of a BFD. These also
30932 + appear in the object_flags field of the bfd_target structure, where
30933 + they indicate the set of flags used by that backend (not all flags
30934 + are meaningful for all object file formats) (FIXME: at the moment,
30935 + the object_flags values have mostly just been copied from backend
30936 + to another, and are not necessarily correct). */
30937 +
30938 +/* No flags. */
30939 +#define BFD_NO_FLAGS 0x00
30940 +
30941 +/* BFD contains relocation entries. */
30942 +#define HAS_RELOC 0x01
30943 +
30944 +/* BFD is directly executable. */
30945 +#define EXEC_P 0x02
30946 +
30947 +/* BFD has line number information (basically used for F_LNNO in a
30948 + COFF header). */
30949 +#define HAS_LINENO 0x04
30950 +
30951 +/* BFD has debugging information. */
30952 +#define HAS_DEBUG 0x08
30953 +
30954 +/* BFD has symbols. */
30955 +#define HAS_SYMS 0x10
30956 +
30957 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
30958 + header). */
30959 +#define HAS_LOCALS 0x20
30960 +
30961 +/* BFD is a dynamic object. */
30962 +#define DYNAMIC 0x40
30963 +
30964 +/* Text section is write protected (if D_PAGED is not set, this is
30965 + like an a.out NMAGIC file) (the linker sets this by default, but
30966 + clears it for -r or -N). */
30967 +#define WP_TEXT 0x80
30968 +
30969 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
30970 + linker sets this by default, but clears it for -r or -n or -N). */
30971 +#define D_PAGED 0x100
30972 +
30973 +/* BFD is relaxable (this means that bfd_relax_section may be able to
30974 + do something) (sometimes bfd_relax_section can do something even if
30975 + this is not set). */
30976 +#define BFD_IS_RELAXABLE 0x200
30977 +
30978 +/* This may be set before writing out a BFD to request using a
30979 + traditional format. For example, this is used to request that when
30980 + writing out an a.out object the symbols not be hashed to eliminate
30981 + duplicates. */
30982 +#define BFD_TRADITIONAL_FORMAT 0x400
30983 +
30984 +/* This flag indicates that the BFD contents are actually cached in
30985 + memory. If this is set, iostream points to a bfd_in_memory struct. */
30986 +#define BFD_IN_MEMORY 0x800
30987 +
30988 +/* The sections in this BFD specify a memory page. */
30989 +#define HAS_LOAD_PAGE 0x1000
30990 +
30991 +/* This BFD has been created by the linker and doesn't correspond
30992 + to any input file. */
30993 +#define BFD_LINKER_CREATED 0x2000
30994 +\f
30995 +/* Symbols and relocation. */
30996 +
30997 +/* A count of carsyms (canonical archive symbols). */
30998 +typedef unsigned long symindex;
30999 +
31000 +/* How to perform a relocation. */
31001 +typedef const struct reloc_howto_struct reloc_howto_type;
31002 +
31003 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
31004 +
31005 +/* General purpose part of a symbol X;
31006 + target specific parts are in libcoff.h, libaout.h, etc. */
31007 +
31008 +#define bfd_get_section(x) ((x)->section)
31009 +#define bfd_get_output_section(x) ((x)->section->output_section)
31010 +#define bfd_set_section(x,y) ((x)->section) = (y)
31011 +#define bfd_asymbol_base(x) ((x)->section->vma)
31012 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
31013 +#define bfd_asymbol_name(x) ((x)->name)
31014 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
31015 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
31016 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
31017 +
31018 +/* A canonical archive symbol. */
31019 +/* This is a type pun with struct ranlib on purpose! */
31020 +typedef struct carsym
31021 +{
31022 + char *name;
31023 + file_ptr file_offset; /* Look here to find the file. */
31024 +}
31025 +carsym; /* To make these you call a carsymogen. */
31026 +
31027 +/* Used in generating armaps (archive tables of contents).
31028 + Perhaps just a forward definition would do? */
31029 +struct orl /* Output ranlib. */
31030 +{
31031 + char **name; /* Symbol name. */
31032 + union
31033 + {
31034 + file_ptr pos;
31035 + bfd *abfd;
31036 + } u; /* bfd* or file position. */
31037 + int namidx; /* Index into string table. */
31038 +};
31039 +\f
31040 +/* Linenumber stuff. */
31041 +typedef struct lineno_cache_entry
31042 +{
31043 + unsigned int line_number; /* Linenumber from start of function. */
31044 + union
31045 + {
31046 + struct bfd_symbol *sym; /* Function name. */
31047 + bfd_vma offset; /* Offset into section. */
31048 + } u;
31049 +}
31050 +alent;
31051 +\f
31052 +/* Object and core file sections. */
31053 +
31054 +#define align_power(addr, align) \
31055 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
31056 +
31057 +typedef struct bfd_section *sec_ptr;
31058 +
31059 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
31060 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
31061 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
31062 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
31063 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
31064 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
31065 +#define bfd_get_section_size(ptr) ((ptr)->size)
31066 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
31067 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
31068 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
31069 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
31070 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
31071 +
31072 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
31073 +
31074 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
31075 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
31076 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
31077 +/* Find the address one past the end of SEC. */
31078 +#define bfd_get_section_limit(bfd, sec) \
31079 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
31080 + / bfd_octets_per_byte (bfd))
31081 +
31082 +/* Return TRUE if section has been discarded. */
31083 +#define elf_discarded_section(sec) \
31084 + (!bfd_is_abs_section (sec) \
31085 + && bfd_is_abs_section ((sec)->output_section) \
31086 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
31087 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
31088 +
31089 +/* Forward define. */
31090 +struct stat;
31091 +\f
31092 +typedef enum bfd_print_symbol
31093 +{
31094 + bfd_print_symbol_name,
31095 + bfd_print_symbol_more,
31096 + bfd_print_symbol_all
31097 +} bfd_print_symbol_type;
31098 +
31099 +/* Information about a symbol that nm needs. */
31100 +
31101 +typedef struct _symbol_info
31102 +{
31103 + symvalue value;
31104 + char type;
31105 + const char *name; /* Symbol name. */
31106 + unsigned char stab_type; /* Stab type. */
31107 + char stab_other; /* Stab other. */
31108 + short stab_desc; /* Stab desc. */
31109 + const char *stab_name; /* String for stab type. */
31110 +} symbol_info;
31111 +
31112 +/* Get the name of a stabs type code. */
31113 +
31114 +extern const char *bfd_get_stab_name (int);
31115 +\f
31116 +/* Hash table routines. There is no way to free up a hash table. */
31117 +
31118 +/* An element in the hash table. Most uses will actually use a larger
31119 + structure, and an instance of this will be the first field. */
31120 +
31121 +struct bfd_hash_entry
31122 +{
31123 + /* Next entry for this hash code. */
31124 + struct bfd_hash_entry *next;
31125 + /* String being hashed. */
31126 + const char *string;
31127 + /* Hash code. This is the full hash code, not the index into the
31128 + table. */
31129 + unsigned long hash;
31130 +};
31131 +
31132 +/* A hash table. */
31133 +
31134 +struct bfd_hash_table
31135 +{
31136 + /* The hash array. */
31137 + struct bfd_hash_entry **table;
31138 + /* A function used to create new elements in the hash table. The
31139 + first entry is itself a pointer to an element. When this
31140 + function is first invoked, this pointer will be NULL. However,
31141 + having the pointer permits a hierarchy of method functions to be
31142 + built each of which calls the function in the superclass. Thus
31143 + each function should be written to allocate a new block of memory
31144 + only if the argument is NULL. */
31145 + struct bfd_hash_entry *(*newfunc)
31146 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
31147 + /* An objalloc for this hash table. This is a struct objalloc *,
31148 + but we use void * to avoid requiring the inclusion of objalloc.h. */
31149 + void *memory;
31150 + /* The number of slots in the hash table. */
31151 + unsigned int size;
31152 + /* The number of entries in the hash table. */
31153 + unsigned int count;
31154 + /* The size of elements. */
31155 + unsigned int entsize;
31156 + /* If non-zero, don't grow the hash table. */
31157 + unsigned int frozen:1;
31158 +};
31159 +
31160 +/* Initialize a hash table. */
31161 +extern bfd_boolean bfd_hash_table_init
31162 + (struct bfd_hash_table *,
31163 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
31164 + struct bfd_hash_table *,
31165 + const char *),
31166 + unsigned int);
31167 +
31168 +/* Initialize a hash table specifying a size. */
31169 +extern bfd_boolean bfd_hash_table_init_n
31170 + (struct bfd_hash_table *,
31171 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
31172 + struct bfd_hash_table *,
31173 + const char *),
31174 + unsigned int, unsigned int);
31175 +
31176 +/* Free up a hash table. */
31177 +extern void bfd_hash_table_free
31178 + (struct bfd_hash_table *);
31179 +
31180 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
31181 + will be created for this string if one does not already exist. The
31182 + COPY argument must be TRUE if this routine should copy the string
31183 + into newly allocated memory when adding an entry. */
31184 +extern struct bfd_hash_entry *bfd_hash_lookup
31185 + (struct bfd_hash_table *, const char *, bfd_boolean create,
31186 + bfd_boolean copy);
31187 +
31188 +/* Replace an entry in a hash table. */
31189 +extern void bfd_hash_replace
31190 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
31191 + struct bfd_hash_entry *nw);
31192 +
31193 +/* Base method for creating a hash table entry. */
31194 +extern struct bfd_hash_entry *bfd_hash_newfunc
31195 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
31196 +
31197 +/* Grab some space for a hash table entry. */
31198 +extern void *bfd_hash_allocate
31199 + (struct bfd_hash_table *, unsigned int);
31200 +
31201 +/* Traverse a hash table in a random order, calling a function on each
31202 + element. If the function returns FALSE, the traversal stops. The
31203 + INFO argument is passed to the function. */
31204 +extern void bfd_hash_traverse
31205 + (struct bfd_hash_table *,
31206 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
31207 + void *info);
31208 +
31209 +/* Allows the default size of a hash table to be configured. New hash
31210 + tables allocated using bfd_hash_table_init will be created with
31211 + this size. */
31212 +extern void bfd_hash_set_default_size (bfd_size_type);
31213 +
31214 +/* This structure is used to keep track of stabs in sections
31215 + information while linking. */
31216 +
31217 +struct stab_info
31218 +{
31219 + /* A hash table used to hold stabs strings. */
31220 + struct bfd_strtab_hash *strings;
31221 + /* The header file hash table. */
31222 + struct bfd_hash_table includes;
31223 + /* The first .stabstr section. */
31224 + struct bfd_section *stabstr;
31225 +};
31226 +
31227 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
31228 +
31229 +/* User program access to BFD facilities. */
31230 +
31231 +/* Direct I/O routines, for programs which know more about the object
31232 + file than BFD does. Use higher level routines if possible. */
31233 +
31234 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
31235 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
31236 +extern int bfd_seek (bfd *, file_ptr, int);
31237 +extern file_ptr bfd_tell (bfd *);
31238 +extern int bfd_flush (bfd *);
31239 +extern int bfd_stat (bfd *, struct stat *);
31240 +
31241 +/* Deprecated old routines. */
31242 +#if __GNUC__
31243 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
31244 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
31245 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31246 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
31247 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
31248 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31249 +#else
31250 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
31251 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
31252 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31253 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
31254 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
31255 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
31256 +#endif
31257 +extern void warn_deprecated (const char *, const char *, int, const char *);
31258 +
31259 +/* Cast from const char * to char * so that caller can assign to
31260 + a char * without a warning. */
31261 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
31262 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
31263 +#define bfd_get_format(abfd) ((abfd)->format)
31264 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
31265 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
31266 +#define bfd_family_coff(abfd) \
31267 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
31268 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
31269 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
31270 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
31271 +#define bfd_header_big_endian(abfd) \
31272 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
31273 +#define bfd_header_little_endian(abfd) \
31274 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
31275 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
31276 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
31277 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
31278 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
31279 +#define bfd_has_map(abfd) ((abfd)->has_armap)
31280 +
31281 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
31282 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
31283 +
31284 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
31285 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
31286 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
31287 +#define bfd_count_sections(abfd) ((abfd)->section_count)
31288 +
31289 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
31290 +
31291 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
31292 +
31293 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
31294 +
31295 +extern bfd_boolean bfd_cache_close
31296 + (bfd *abfd);
31297 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
31298 +
31299 +extern bfd_boolean bfd_cache_close_all (void);
31300 +
31301 +extern bfd_boolean bfd_record_phdr
31302 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
31303 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
31304 +
31305 +/* Byte swapping routines. */
31306 +
31307 +bfd_uint64_t bfd_getb64 (const void *);
31308 +bfd_uint64_t bfd_getl64 (const void *);
31309 +bfd_int64_t bfd_getb_signed_64 (const void *);
31310 +bfd_int64_t bfd_getl_signed_64 (const void *);
31311 +bfd_vma bfd_getb32 (const void *);
31312 +bfd_vma bfd_getl32 (const void *);
31313 +bfd_signed_vma bfd_getb_signed_32 (const void *);
31314 +bfd_signed_vma bfd_getl_signed_32 (const void *);
31315 +bfd_vma bfd_getb16 (const void *);
31316 +bfd_vma bfd_getl16 (const void *);
31317 +bfd_signed_vma bfd_getb_signed_16 (const void *);
31318 +bfd_signed_vma bfd_getl_signed_16 (const void *);
31319 +void bfd_putb64 (bfd_uint64_t, void *);
31320 +void bfd_putl64 (bfd_uint64_t, void *);
31321 +void bfd_putb32 (bfd_vma, void *);
31322 +void bfd_putl32 (bfd_vma, void *);
31323 +void bfd_putb16 (bfd_vma, void *);
31324 +void bfd_putl16 (bfd_vma, void *);
31325 +
31326 +/* Byte swapping routines which take size and endiannes as arguments. */
31327 +
31328 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
31329 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
31330 +
31331 +extern bfd_boolean bfd_section_already_linked_table_init (void);
31332 +extern void bfd_section_already_linked_table_free (void);
31333 +\f
31334 +/* Externally visible ECOFF routines. */
31335 +
31336 +#if defined(__STDC__) || defined(ALMOST_STDC)
31337 +struct ecoff_debug_info;
31338 +struct ecoff_debug_swap;
31339 +struct ecoff_extr;
31340 +struct bfd_symbol;
31341 +struct bfd_link_info;
31342 +struct bfd_link_hash_entry;
31343 +struct bfd_elf_version_tree;
31344 +#endif
31345 +extern bfd_vma bfd_ecoff_get_gp_value
31346 + (bfd * abfd);
31347 +extern bfd_boolean bfd_ecoff_set_gp_value
31348 + (bfd *abfd, bfd_vma gp_value);
31349 +extern bfd_boolean bfd_ecoff_set_regmasks
31350 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
31351 + unsigned long *cprmask);
31352 +extern void *bfd_ecoff_debug_init
31353 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
31354 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
31355 +extern void bfd_ecoff_debug_free
31356 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31357 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
31358 +extern bfd_boolean bfd_ecoff_debug_accumulate
31359 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31360 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
31361 + struct ecoff_debug_info *input_debug,
31362 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
31363 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
31364 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
31365 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
31366 + struct bfd_link_info *);
31367 +extern bfd_boolean bfd_ecoff_debug_externals
31368 + (bfd *abfd, struct ecoff_debug_info *debug,
31369 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
31370 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
31371 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
31372 +extern bfd_boolean bfd_ecoff_debug_one_external
31373 + (bfd *abfd, struct ecoff_debug_info *debug,
31374 + const struct ecoff_debug_swap *swap, const char *name,
31375 + struct ecoff_extr *esym);
31376 +extern bfd_size_type bfd_ecoff_debug_size
31377 + (bfd *abfd, struct ecoff_debug_info *debug,
31378 + const struct ecoff_debug_swap *swap);
31379 +extern bfd_boolean bfd_ecoff_write_debug
31380 + (bfd *abfd, struct ecoff_debug_info *debug,
31381 + const struct ecoff_debug_swap *swap, file_ptr where);
31382 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
31383 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
31384 + const struct ecoff_debug_swap *swap,
31385 + struct bfd_link_info *info, file_ptr where);
31386 +
31387 +/* Externally visible ELF routines. */
31388 +
31389 +struct bfd_link_needed_list
31390 +{
31391 + struct bfd_link_needed_list *next;
31392 + bfd *by;
31393 + const char *name;
31394 +};
31395 +
31396 +enum dynamic_lib_link_class {
31397 + DYN_NORMAL = 0,
31398 + DYN_AS_NEEDED = 1,
31399 + DYN_DT_NEEDED = 2,
31400 + DYN_NO_ADD_NEEDED = 4,
31401 + DYN_NO_NEEDED = 8
31402 +};
31403 +
31404 +enum notice_asneeded_action {
31405 + notice_as_needed,
31406 + notice_not_needed,
31407 + notice_needed
31408 +};
31409 +
31410 +extern bfd_boolean bfd_elf_record_link_assignment
31411 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
31412 + bfd_boolean);
31413 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
31414 + (bfd *, struct bfd_link_info *);
31415 +extern bfd_boolean bfd_elf_get_bfd_needed_list
31416 + (bfd *, struct bfd_link_needed_list **);
31417 +extern bfd_boolean bfd_elf_size_dynamic_sections
31418 + (bfd *, const char *, const char *, const char *, const char * const *,
31419 + struct bfd_link_info *, struct bfd_section **,
31420 + struct bfd_elf_version_tree *);
31421 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
31422 + (bfd *, struct bfd_link_info *);
31423 +extern void bfd_elf_set_dt_needed_name
31424 + (bfd *, const char *);
31425 +extern const char *bfd_elf_get_dt_soname
31426 + (bfd *);
31427 +extern void bfd_elf_set_dyn_lib_class
31428 + (bfd *, enum dynamic_lib_link_class);
31429 +extern int bfd_elf_get_dyn_lib_class
31430 + (bfd *);
31431 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
31432 + (bfd *, struct bfd_link_info *);
31433 +extern bfd_boolean bfd_elf_discard_info
31434 + (bfd *, struct bfd_link_info *);
31435 +extern unsigned int _bfd_elf_default_action_discarded
31436 + (struct bfd_section *);
31437 +
31438 +/* Return an upper bound on the number of bytes required to store a
31439 + copy of ABFD's program header table entries. Return -1 if an error
31440 + occurs; bfd_get_error will return an appropriate code. */
31441 +extern long bfd_get_elf_phdr_upper_bound
31442 + (bfd *abfd);
31443 +
31444 +/* Copy ABFD's program header table entries to *PHDRS. The entries
31445 + will be stored as an array of Elf_Internal_Phdr structures, as
31446 + defined in include/elf/internal.h. To find out how large the
31447 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
31448 +
31449 + Return the number of program header table entries read, or -1 if an
31450 + error occurs; bfd_get_error will return an appropriate code. */
31451 +extern int bfd_get_elf_phdrs
31452 + (bfd *abfd, void *phdrs);
31453 +
31454 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
31455 + reconstruct an ELF file by reading the segments out of remote memory
31456 + based on the ELF file header at EHDR_VMA and the ELF program headers it
31457 + points to. If not null, *LOADBASEP is filled in with the difference
31458 + between the VMAs from which the segments were read, and the VMAs the
31459 + file headers (and hence BFD's idea of each section's VMA) put them at.
31460 +
31461 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
31462 + remote memory at target address VMA into the local buffer at MYADDR; it
31463 + should return zero on success or an `errno' code on failure. TEMPL must
31464 + be a BFD for an ELF target with the word size and byte order found in
31465 + the remote memory. */
31466 +extern bfd *bfd_elf_bfd_from_remote_memory
31467 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
31468 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
31469 +
31470 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
31471 +extern int bfd_get_arch_size
31472 + (bfd *);
31473 +
31474 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
31475 +extern int bfd_get_sign_extend_vma
31476 + (bfd *);
31477 +
31478 +extern struct bfd_section *_bfd_elf_tls_setup
31479 + (bfd *, struct bfd_link_info *);
31480 +
31481 +extern void _bfd_fix_excluded_sec_syms
31482 + (bfd *, struct bfd_link_info *);
31483 +
31484 +extern unsigned bfd_m68k_mach_to_features (int);
31485 +
31486 +extern int bfd_m68k_features_to_mach (unsigned);
31487 +
31488 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
31489 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31490 + char **);
31491 +
31492 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
31493 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
31494 + char **);
31495 +
31496 +/* SunOS shared library support routines for the linker. */
31497 +
31498 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
31499 + (bfd *, struct bfd_link_info *);
31500 +extern bfd_boolean bfd_sunos_record_link_assignment
31501 + (bfd *, struct bfd_link_info *, const char *);
31502 +extern bfd_boolean bfd_sunos_size_dynamic_sections
31503 + (bfd *, struct bfd_link_info *, struct bfd_section **,
31504 + struct bfd_section **, struct bfd_section **);
31505 +
31506 +/* Linux shared library support routines for the linker. */
31507 +
31508 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
31509 + (bfd *, struct bfd_link_info *);
31510 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
31511 + (bfd *, struct bfd_link_info *);
31512 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
31513 + (bfd *, struct bfd_link_info *);
31514 +
31515 +/* mmap hacks */
31516 +
31517 +struct _bfd_window_internal;
31518 +typedef struct _bfd_window_internal bfd_window_internal;
31519 +
31520 +typedef struct _bfd_window
31521 +{
31522 + /* What the user asked for. */
31523 + void *data;
31524 + bfd_size_type size;
31525 + /* The actual window used by BFD. Small user-requested read-only
31526 + regions sharing a page may share a single window into the object
31527 + file. Read-write versions shouldn't until I've fixed things to
31528 + keep track of which portions have been claimed by the
31529 + application; don't want to give the same region back when the
31530 + application wants two writable copies! */
31531 + struct _bfd_window_internal *i;
31532 +}
31533 +bfd_window;
31534 +
31535 +extern void bfd_init_window
31536 + (bfd_window *);
31537 +extern void bfd_free_window
31538 + (bfd_window *);
31539 +extern bfd_boolean bfd_get_file_window
31540 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
31541 +
31542 +/* XCOFF support routines for the linker. */
31543 +
31544 +extern bfd_boolean bfd_xcoff_link_record_set
31545 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
31546 +extern bfd_boolean bfd_xcoff_import_symbol
31547 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
31548 + const char *, const char *, const char *, unsigned int);
31549 +extern bfd_boolean bfd_xcoff_export_symbol
31550 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
31551 +extern bfd_boolean bfd_xcoff_link_count_reloc
31552 + (bfd *, struct bfd_link_info *, const char *);
31553 +extern bfd_boolean bfd_xcoff_record_link_assignment
31554 + (bfd *, struct bfd_link_info *, const char *);
31555 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
31556 + (bfd *, struct bfd_link_info *, const char *, const char *,
31557 + unsigned long, unsigned long, unsigned long, bfd_boolean,
31558 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
31559 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
31560 + (bfd *, const char *, const char *, bfd_boolean);
31561 +
31562 +/* XCOFF support routines for ar. */
31563 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
31564 + (bfd *, char *);
31565 +
31566 +/* Externally visible COFF routines. */
31567 +
31568 +#if defined(__STDC__) || defined(ALMOST_STDC)
31569 +struct internal_syment;
31570 +union internal_auxent;
31571 +#endif
31572 +
31573 +extern bfd_boolean bfd_coff_get_syment
31574 + (bfd *, struct bfd_symbol *, struct internal_syment *);
31575 +
31576 +extern bfd_boolean bfd_coff_get_auxent
31577 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
31578 +
31579 +extern bfd_boolean bfd_coff_set_symbol_class
31580 + (bfd *, struct bfd_symbol *, unsigned int);
31581 +
31582 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
31583 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
31584 +
31585 +/* ARM VFP11 erratum workaround support. */
31586 +typedef enum
31587 +{
31588 + BFD_ARM_VFP11_FIX_DEFAULT,
31589 + BFD_ARM_VFP11_FIX_NONE,
31590 + BFD_ARM_VFP11_FIX_SCALAR,
31591 + BFD_ARM_VFP11_FIX_VECTOR
31592 +} bfd_arm_vfp11_fix;
31593 +
31594 +extern void bfd_elf32_arm_init_maps
31595 + (bfd *);
31596 +
31597 +extern void bfd_elf32_arm_set_vfp11_fix
31598 + (bfd *, struct bfd_link_info *);
31599 +
31600 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
31601 + (bfd *, struct bfd_link_info *);
31602 +
31603 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
31604 + (bfd *, struct bfd_link_info *);
31605 +
31606 +/* ARM Interworking support. Called from linker. */
31607 +extern bfd_boolean bfd_arm_allocate_interworking_sections
31608 + (struct bfd_link_info *);
31609 +
31610 +extern bfd_boolean bfd_arm_process_before_allocation
31611 + (bfd *, struct bfd_link_info *, int);
31612 +
31613 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
31614 + (bfd *, struct bfd_link_info *);
31615 +
31616 +/* PE ARM Interworking support. Called from linker. */
31617 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
31618 + (struct bfd_link_info *);
31619 +
31620 +extern bfd_boolean bfd_arm_pe_process_before_allocation
31621 + (bfd *, struct bfd_link_info *, int);
31622 +
31623 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
31624 + (bfd *, struct bfd_link_info *);
31625 +
31626 +/* ELF ARM Interworking support. Called from linker. */
31627 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
31628 + (struct bfd_link_info *);
31629 +
31630 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
31631 + (bfd *, struct bfd_link_info *);
31632 +
31633 +void bfd_elf32_arm_set_target_relocs
31634 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
31635 + int, int);
31636 +
31637 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
31638 + (bfd *, struct bfd_link_info *);
31639 +
31640 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
31641 + (bfd *, struct bfd_link_info *);
31642 +
31643 +/* ELF ARM mapping symbol support */
31644 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
31645 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
31646 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
31647 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
31648 +extern bfd_boolean bfd_is_arm_special_symbol_name
31649 + (const char * name, int type);
31650 +
31651 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
31652 +
31653 +/* ARM Note section processing. */
31654 +extern bfd_boolean bfd_arm_merge_machines
31655 + (bfd *, bfd *);
31656 +
31657 +extern bfd_boolean bfd_arm_update_notes
31658 + (bfd *, const char *);
31659 +
31660 +extern unsigned int bfd_arm_get_mach_from_notes
31661 + (bfd *, const char *);
31662 +
31663 +/* TI COFF load page support. */
31664 +extern void bfd_ticoff_set_section_load_page
31665 + (struct bfd_section *, int);
31666 +
31667 +extern int bfd_ticoff_get_section_load_page
31668 + (struct bfd_section *);
31669 +
31670 +/* H8/300 functions. */
31671 +extern bfd_vma bfd_h8300_pad_address
31672 + (bfd *, bfd_vma);
31673 +
31674 +/* IA64 Itanium code generation. Called from linker. */
31675 +extern void bfd_elf32_ia64_after_parse
31676 + (int);
31677 +
31678 +extern void bfd_elf64_ia64_after_parse
31679 + (int);
31680 +
31681 +/* This structure is used for a comdat section, as in PE. A comdat
31682 + section is associated with a particular symbol. When the linker
31683 + sees a comdat section, it keeps only one of the sections with a
31684 + given name and associated with a given symbol. */
31685 +
31686 +struct coff_comdat_info
31687 +{
31688 + /* The name of the symbol associated with a comdat section. */
31689 + const char *name;
31690 +
31691 + /* The local symbol table index of the symbol associated with a
31692 + comdat section. This is only meaningful to the object file format
31693 + specific code; it is not an index into the list returned by
31694 + bfd_canonicalize_symtab. */
31695 + long symbol;
31696 +};
31697 +
31698 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
31699 + (bfd *, struct bfd_section *);
31700 +
31701 +/* Extracted from init.c. */
31702 +void bfd_init (void);
31703 +
31704 +/* Extracted from opncls.c. */
31705 +bfd *bfd_fopen (const char *filename, const char *target,
31706 + const char *mode, int fd);
31707 +
31708 +bfd *bfd_openr (const char *filename, const char *target);
31709 +
31710 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
31711 +
31712 +bfd *bfd_openstreamr (const char *, const char *, void *);
31713 +
31714 +bfd *bfd_openr_iovec (const char *filename, const char *target,
31715 + void *(*open) (struct bfd *nbfd,
31716 + void *open_closure),
31717 + void *open_closure,
31718 + file_ptr (*pread) (struct bfd *nbfd,
31719 + void *stream,
31720 + void *buf,
31721 + file_ptr nbytes,
31722 + file_ptr offset),
31723 + int (*close) (struct bfd *nbfd,
31724 + void *stream),
31725 + int (*stat) (struct bfd *abfd,
31726 + void *stream,
31727 + struct stat *sb));
31728 +
31729 +bfd *bfd_openw (const char *filename, const char *target);
31730 +
31731 +bfd_boolean bfd_close (bfd *abfd);
31732 +
31733 +bfd_boolean bfd_close_all_done (bfd *);
31734 +
31735 +bfd *bfd_create (const char *filename, bfd *templ);
31736 +
31737 +bfd_boolean bfd_make_writable (bfd *abfd);
31738 +
31739 +bfd_boolean bfd_make_readable (bfd *abfd);
31740 +
31741 +unsigned long bfd_calc_gnu_debuglink_crc32
31742 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
31743 +
31744 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
31745 +
31746 +struct bfd_section *bfd_create_gnu_debuglink_section
31747 + (bfd *abfd, const char *filename);
31748 +
31749 +bfd_boolean bfd_fill_in_gnu_debuglink_section
31750 + (bfd *abfd, struct bfd_section *sect, const char *filename);
31751 +
31752 +/* Extracted from libbfd.c. */
31753 +
31754 +/* Byte swapping macros for user section data. */
31755 +
31756 +#define bfd_put_8(abfd, val, ptr) \
31757 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
31758 +#define bfd_put_signed_8 \
31759 + bfd_put_8
31760 +#define bfd_get_8(abfd, ptr) \
31761 + (*(unsigned char *) (ptr) & 0xff)
31762 +#define bfd_get_signed_8(abfd, ptr) \
31763 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
31764 +
31765 +#define bfd_put_16(abfd, val, ptr) \
31766 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
31767 +#define bfd_put_signed_16 \
31768 + bfd_put_16
31769 +#define bfd_get_16(abfd, ptr) \
31770 + BFD_SEND (abfd, bfd_getx16, (ptr))
31771 +#define bfd_get_signed_16(abfd, ptr) \
31772 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
31773 +
31774 +#define bfd_put_32(abfd, val, ptr) \
31775 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
31776 +#define bfd_put_signed_32 \
31777 + bfd_put_32
31778 +#define bfd_get_32(abfd, ptr) \
31779 + BFD_SEND (abfd, bfd_getx32, (ptr))
31780 +#define bfd_get_signed_32(abfd, ptr) \
31781 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
31782 +
31783 +#define bfd_put_64(abfd, val, ptr) \
31784 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
31785 +#define bfd_put_signed_64 \
31786 + bfd_put_64
31787 +#define bfd_get_64(abfd, ptr) \
31788 + BFD_SEND (abfd, bfd_getx64, (ptr))
31789 +#define bfd_get_signed_64(abfd, ptr) \
31790 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
31791 +
31792 +#define bfd_get(bits, abfd, ptr) \
31793 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
31794 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
31795 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
31796 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
31797 + : (abort (), (bfd_vma) - 1))
31798 +
31799 +#define bfd_put(bits, abfd, val, ptr) \
31800 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
31801 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
31802 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
31803 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
31804 + : (abort (), (void) 0))
31805 +
31806 +
31807 +/* Byte swapping macros for file header data. */
31808 +
31809 +#define bfd_h_put_8(abfd, val, ptr) \
31810 + bfd_put_8 (abfd, val, ptr)
31811 +#define bfd_h_put_signed_8(abfd, val, ptr) \
31812 + bfd_put_8 (abfd, val, ptr)
31813 +#define bfd_h_get_8(abfd, ptr) \
31814 + bfd_get_8 (abfd, ptr)
31815 +#define bfd_h_get_signed_8(abfd, ptr) \
31816 + bfd_get_signed_8 (abfd, ptr)
31817 +
31818 +#define bfd_h_put_16(abfd, val, ptr) \
31819 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
31820 +#define bfd_h_put_signed_16 \
31821 + bfd_h_put_16
31822 +#define bfd_h_get_16(abfd, ptr) \
31823 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
31824 +#define bfd_h_get_signed_16(abfd, ptr) \
31825 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
31826 +
31827 +#define bfd_h_put_32(abfd, val, ptr) \
31828 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
31829 +#define bfd_h_put_signed_32 \
31830 + bfd_h_put_32
31831 +#define bfd_h_get_32(abfd, ptr) \
31832 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
31833 +#define bfd_h_get_signed_32(abfd, ptr) \
31834 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
31835 +
31836 +#define bfd_h_put_64(abfd, val, ptr) \
31837 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
31838 +#define bfd_h_put_signed_64 \
31839 + bfd_h_put_64
31840 +#define bfd_h_get_64(abfd, ptr) \
31841 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
31842 +#define bfd_h_get_signed_64(abfd, ptr) \
31843 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
31844 +
31845 +/* Aliases for the above, which should eventually go away. */
31846 +
31847 +#define H_PUT_64 bfd_h_put_64
31848 +#define H_PUT_32 bfd_h_put_32
31849 +#define H_PUT_16 bfd_h_put_16
31850 +#define H_PUT_8 bfd_h_put_8
31851 +#define H_PUT_S64 bfd_h_put_signed_64
31852 +#define H_PUT_S32 bfd_h_put_signed_32
31853 +#define H_PUT_S16 bfd_h_put_signed_16
31854 +#define H_PUT_S8 bfd_h_put_signed_8
31855 +#define H_GET_64 bfd_h_get_64
31856 +#define H_GET_32 bfd_h_get_32
31857 +#define H_GET_16 bfd_h_get_16
31858 +#define H_GET_8 bfd_h_get_8
31859 +#define H_GET_S64 bfd_h_get_signed_64
31860 +#define H_GET_S32 bfd_h_get_signed_32
31861 +#define H_GET_S16 bfd_h_get_signed_16
31862 +#define H_GET_S8 bfd_h_get_signed_8
31863 +
31864 +
31865 +/* Extracted from bfdio.c. */
31866 +long bfd_get_mtime (bfd *abfd);
31867 +
31868 +file_ptr bfd_get_size (bfd *abfd);
31869 +
31870 +/* Extracted from bfdwin.c. */
31871 +/* Extracted from section.c. */
31872 +typedef struct bfd_section
31873 +{
31874 + /* The name of the section; the name isn't a copy, the pointer is
31875 + the same as that passed to bfd_make_section. */
31876 + const char *name;
31877 +
31878 + /* A unique sequence number. */
31879 + int id;
31880 +
31881 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
31882 + int index;
31883 +
31884 + /* The next section in the list belonging to the BFD, or NULL. */
31885 + struct bfd_section *next;
31886 +
31887 + /* The previous section in the list belonging to the BFD, or NULL. */
31888 + struct bfd_section *prev;
31889 +
31890 + /* The field flags contains attributes of the section. Some
31891 + flags are read in from the object file, and some are
31892 + synthesized from other information. */
31893 + flagword flags;
31894 +
31895 +#define SEC_NO_FLAGS 0x000
31896 +
31897 + /* Tells the OS to allocate space for this section when loading.
31898 + This is clear for a section containing debug information only. */
31899 +#define SEC_ALLOC 0x001
31900 +
31901 + /* Tells the OS to load the section from the file when loading.
31902 + This is clear for a .bss section. */
31903 +#define SEC_LOAD 0x002
31904 +
31905 + /* The section contains data still to be relocated, so there is
31906 + some relocation information too. */
31907 +#define SEC_RELOC 0x004
31908 +
31909 + /* A signal to the OS that the section contains read only data. */
31910 +#define SEC_READONLY 0x008
31911 +
31912 + /* The section contains code only. */
31913 +#define SEC_CODE 0x010
31914 +
31915 + /* The section contains data only. */
31916 +#define SEC_DATA 0x020
31917 +
31918 + /* The section will reside in ROM. */
31919 +#define SEC_ROM 0x040
31920 +
31921 + /* The section contains constructor information. This section
31922 + type is used by the linker to create lists of constructors and
31923 + destructors used by <<g++>>. When a back end sees a symbol
31924 + which should be used in a constructor list, it creates a new
31925 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
31926 + the symbol to it, and builds a relocation. To build the lists
31927 + of constructors, all the linker has to do is catenate all the
31928 + sections called <<__CTOR_LIST__>> and relocate the data
31929 + contained within - exactly the operations it would peform on
31930 + standard data. */
31931 +#define SEC_CONSTRUCTOR 0x080
31932 +
31933 + /* The section has contents - a data section could be
31934 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
31935 + <<SEC_HAS_CONTENTS>> */
31936 +#define SEC_HAS_CONTENTS 0x100
31937 +
31938 + /* An instruction to the linker to not output the section
31939 + even if it has information which would normally be written. */
31940 +#define SEC_NEVER_LOAD 0x200
31941 +
31942 + /* The section contains thread local data. */
31943 +#define SEC_THREAD_LOCAL 0x400
31944 +
31945 + /* The section has GOT references. This flag is only for the
31946 + linker, and is currently only used by the elf32-hppa back end.
31947 + It will be set if global offset table references were detected
31948 + in this section, which indicate to the linker that the section
31949 + contains PIC code, and must be handled specially when doing a
31950 + static link. */
31951 +#define SEC_HAS_GOT_REF 0x800
31952 +
31953 + /* The section contains common symbols (symbols may be defined
31954 + multiple times, the value of a symbol is the amount of
31955 + space it requires, and the largest symbol value is the one
31956 + used). Most targets have exactly one of these (which we
31957 + translate to bfd_com_section_ptr), but ECOFF has two. */
31958 +#define SEC_IS_COMMON 0x1000
31959 +
31960 + /* The section contains only debugging information. For
31961 + example, this is set for ELF .debug and .stab sections.
31962 + strip tests this flag to see if a section can be
31963 + discarded. */
31964 +#define SEC_DEBUGGING 0x2000
31965 +
31966 + /* The contents of this section are held in memory pointed to
31967 + by the contents field. This is checked by bfd_get_section_contents,
31968 + and the data is retrieved from memory if appropriate. */
31969 +#define SEC_IN_MEMORY 0x4000
31970 +
31971 + /* The contents of this section are to be excluded by the
31972 + linker for executable and shared objects unless those
31973 + objects are to be further relocated. */
31974 +#define SEC_EXCLUDE 0x8000
31975 +
31976 + /* The contents of this section are to be sorted based on the sum of
31977 + the symbol and addend values specified by the associated relocation
31978 + entries. Entries without associated relocation entries will be
31979 + appended to the end of the section in an unspecified order. */
31980 +#define SEC_SORT_ENTRIES 0x10000
31981 +
31982 + /* When linking, duplicate sections of the same name should be
31983 + discarded, rather than being combined into a single section as
31984 + is usually done. This is similar to how common symbols are
31985 + handled. See SEC_LINK_DUPLICATES below. */
31986 +#define SEC_LINK_ONCE 0x20000
31987 +
31988 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
31989 + should handle duplicate sections. */
31990 +#define SEC_LINK_DUPLICATES 0x40000
31991 +
31992 + /* This value for SEC_LINK_DUPLICATES means that duplicate
31993 + sections with the same name should simply be discarded. */
31994 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
31995 +
31996 + /* This value for SEC_LINK_DUPLICATES means that the linker
31997 + should warn if there are any duplicate sections, although
31998 + it should still only link one copy. */
31999 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
32000 +
32001 + /* This value for SEC_LINK_DUPLICATES means that the linker
32002 + should warn if any duplicate sections are a different size. */
32003 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
32004 +
32005 + /* This value for SEC_LINK_DUPLICATES means that the linker
32006 + should warn if any duplicate sections contain different
32007 + contents. */
32008 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
32009 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
32010 +
32011 + /* This section was created by the linker as part of dynamic
32012 + relocation or other arcane processing. It is skipped when
32013 + going through the first-pass output, trusting that someone
32014 + else up the line will take care of it later. */
32015 +#define SEC_LINKER_CREATED 0x200000
32016 +
32017 + /* This section should not be subject to garbage collection.
32018 + Also set to inform the linker that this section should not be
32019 + listed in the link map as discarded. */
32020 +#define SEC_KEEP 0x400000
32021 +
32022 + /* This section contains "short" data, and should be placed
32023 + "near" the GP. */
32024 +#define SEC_SMALL_DATA 0x800000
32025 +
32026 + /* Attempt to merge identical entities in the section.
32027 + Entity size is given in the entsize field. */
32028 +#define SEC_MERGE 0x1000000
32029 +
32030 + /* If given with SEC_MERGE, entities to merge are zero terminated
32031 + strings where entsize specifies character size instead of fixed
32032 + size entries. */
32033 +#define SEC_STRINGS 0x2000000
32034 +
32035 + /* This section contains data about section groups. */
32036 +#define SEC_GROUP 0x4000000
32037 +
32038 + /* The section is a COFF shared library section. This flag is
32039 + only for the linker. If this type of section appears in
32040 + the input file, the linker must copy it to the output file
32041 + without changing the vma or size. FIXME: Although this
32042 + was originally intended to be general, it really is COFF
32043 + specific (and the flag was renamed to indicate this). It
32044 + might be cleaner to have some more general mechanism to
32045 + allow the back end to control what the linker does with
32046 + sections. */
32047 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
32048 +
32049 + /* This section contains data which may be shared with other
32050 + executables or shared objects. This is for COFF only. */
32051 +#define SEC_COFF_SHARED 0x20000000
32052 +
32053 + /* When a section with this flag is being linked, then if the size of
32054 + the input section is less than a page, it should not cross a page
32055 + boundary. If the size of the input section is one page or more,
32056 + it should be aligned on a page boundary. This is for TI
32057 + TMS320C54X only. */
32058 +#define SEC_TIC54X_BLOCK 0x40000000
32059 +
32060 + /* Conditionally link this section; do not link if there are no
32061 + references found to any symbol in the section. This is for TI
32062 + TMS320C54X only. */
32063 +#define SEC_TIC54X_CLINK 0x80000000
32064 +
32065 + /* End of section flags. */
32066 +
32067 + /* Some internal packed boolean fields. */
32068 +
32069 + /* See the vma field. */
32070 + unsigned int user_set_vma : 1;
32071 +
32072 + /* A mark flag used by some of the linker backends. */
32073 + unsigned int linker_mark : 1;
32074 +
32075 + /* Another mark flag used by some of the linker backends. Set for
32076 + output sections that have an input section. */
32077 + unsigned int linker_has_input : 1;
32078 +
32079 + /* Mark flags used by some linker backends for garbage collection. */
32080 + unsigned int gc_mark : 1;
32081 + unsigned int gc_mark_from_eh : 1;
32082 +
32083 + /* The following flags are used by the ELF linker. */
32084 +
32085 + /* Mark sections which have been allocated to segments. */
32086 + unsigned int segment_mark : 1;
32087 +
32088 + /* Type of sec_info information. */
32089 + unsigned int sec_info_type:3;
32090 +#define ELF_INFO_TYPE_NONE 0
32091 +#define ELF_INFO_TYPE_STABS 1
32092 +#define ELF_INFO_TYPE_MERGE 2
32093 +#define ELF_INFO_TYPE_EH_FRAME 3
32094 +#define ELF_INFO_TYPE_JUST_SYMS 4
32095 +
32096 + /* Nonzero if this section uses RELA relocations, rather than REL. */
32097 + unsigned int use_rela_p:1;
32098 +
32099 + /* Bits used by various backends. The generic code doesn't touch
32100 + these fields. */
32101 +
32102 + /* Nonzero if this section has TLS related relocations. */
32103 + unsigned int has_tls_reloc:1;
32104 +
32105 + /* Nonzero if this section has a gp reloc. */
32106 + unsigned int has_gp_reloc:1;
32107 +
32108 + /* Nonzero if this section needs the relax finalize pass. */
32109 + unsigned int need_finalize_relax:1;
32110 +
32111 + /* Whether relocations have been processed. */
32112 + unsigned int reloc_done : 1;
32113 +
32114 + /* End of internal packed boolean fields. */
32115 +
32116 + /* The virtual memory address of the section - where it will be
32117 + at run time. The symbols are relocated against this. The
32118 + user_set_vma flag is maintained by bfd; if it's not set, the
32119 + backend can assign addresses (for example, in <<a.out>>, where
32120 + the default address for <<.data>> is dependent on the specific
32121 + target and various flags). */
32122 + bfd_vma vma;
32123 +
32124 + /* The load address of the section - where it would be in a
32125 + rom image; really only used for writing section header
32126 + information. */
32127 + bfd_vma lma;
32128 +
32129 + /* The size of the section in octets, as it will be output.
32130 + Contains a value even if the section has no contents (e.g., the
32131 + size of <<.bss>>). */
32132 + bfd_size_type size;
32133 +
32134 + /* For input sections, the original size on disk of the section, in
32135 + octets. This field is used by the linker relaxation code. It is
32136 + currently only set for sections where the linker relaxation scheme
32137 + doesn't cache altered section and reloc contents (stabs, eh_frame,
32138 + SEC_MERGE, some coff relaxing targets), and thus the original size
32139 + needs to be kept to read the section multiple times.
32140 + For output sections, rawsize holds the section size calculated on
32141 + a previous linker relaxation pass. */
32142 + bfd_size_type rawsize;
32143 +
32144 + /* If this section is going to be output, then this value is the
32145 + offset in *bytes* into the output section of the first byte in the
32146 + input section (byte ==> smallest addressable unit on the
32147 + target). In most cases, if this was going to start at the
32148 + 100th octet (8-bit quantity) in the output section, this value
32149 + would be 100. However, if the target byte size is 16 bits
32150 + (bfd_octets_per_byte is "2"), this value would be 50. */
32151 + bfd_vma output_offset;
32152 +
32153 + /* The output section through which to map on output. */
32154 + struct bfd_section *output_section;
32155 +
32156 + /* The alignment requirement of the section, as an exponent of 2 -
32157 + e.g., 3 aligns to 2^3 (or 8). */
32158 + unsigned int alignment_power;
32159 +
32160 + /* If an input section, a pointer to a vector of relocation
32161 + records for the data in this section. */
32162 + struct reloc_cache_entry *relocation;
32163 +
32164 + /* If an output section, a pointer to a vector of pointers to
32165 + relocation records for the data in this section. */
32166 + struct reloc_cache_entry **orelocation;
32167 +
32168 + /* The number of relocation records in one of the above. */
32169 + unsigned reloc_count;
32170 +
32171 + /* Information below is back end specific - and not always used
32172 + or updated. */
32173 +
32174 + /* File position of section data. */
32175 + file_ptr filepos;
32176 +
32177 + /* File position of relocation info. */
32178 + file_ptr rel_filepos;
32179 +
32180 + /* File position of line data. */
32181 + file_ptr line_filepos;
32182 +
32183 + /* Pointer to data for applications. */
32184 + void *userdata;
32185 +
32186 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
32187 + contents. */
32188 + unsigned char *contents;
32189 +
32190 + /* Attached line number information. */
32191 + alent *lineno;
32192 +
32193 + /* Number of line number records. */
32194 + unsigned int lineno_count;
32195 +
32196 + /* Entity size for merging purposes. */
32197 + unsigned int entsize;
32198 +
32199 + /* Points to the kept section if this section is a link-once section,
32200 + and is discarded. */
32201 + struct bfd_section *kept_section;
32202 +
32203 + /* When a section is being output, this value changes as more
32204 + linenumbers are written out. */
32205 + file_ptr moving_line_filepos;
32206 +
32207 + /* What the section number is in the target world. */
32208 + int target_index;
32209 +
32210 + void *used_by_bfd;
32211 +
32212 + /* If this is a constructor section then here is a list of the
32213 + relocations created to relocate items within it. */
32214 + struct relent_chain *constructor_chain;
32215 +
32216 + /* The BFD which owns the section. */
32217 + bfd *owner;
32218 +
32219 + /* A symbol which points at this section only. */
32220 + struct bfd_symbol *symbol;
32221 + struct bfd_symbol **symbol_ptr_ptr;
32222 +
32223 + /* Early in the link process, map_head and map_tail are used to build
32224 + a list of input sections attached to an output section. Later,
32225 + output sections use these fields for a list of bfd_link_order
32226 + structs. */
32227 + union {
32228 + struct bfd_link_order *link_order;
32229 + struct bfd_section *s;
32230 + } map_head, map_tail;
32231 +} asection;
32232 +
32233 +/* These sections are global, and are managed by BFD. The application
32234 + and target back end are not permitted to change the values in
32235 + these sections. New code should use the section_ptr macros rather
32236 + than referring directly to the const sections. The const sections
32237 + may eventually vanish. */
32238 +#define BFD_ABS_SECTION_NAME "*ABS*"
32239 +#define BFD_UND_SECTION_NAME "*UND*"
32240 +#define BFD_COM_SECTION_NAME "*COM*"
32241 +#define BFD_IND_SECTION_NAME "*IND*"
32242 +
32243 +/* The absolute section. */
32244 +extern asection bfd_abs_section;
32245 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
32246 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
32247 +/* Pointer to the undefined section. */
32248 +extern asection bfd_und_section;
32249 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
32250 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
32251 +/* Pointer to the common section. */
32252 +extern asection bfd_com_section;
32253 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
32254 +/* Pointer to the indirect section. */
32255 +extern asection bfd_ind_section;
32256 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
32257 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
32258 +
32259 +#define bfd_is_const_section(SEC) \
32260 + ( ((SEC) == bfd_abs_section_ptr) \
32261 + || ((SEC) == bfd_und_section_ptr) \
32262 + || ((SEC) == bfd_com_section_ptr) \
32263 + || ((SEC) == bfd_ind_section_ptr))
32264 +
32265 +/* Macros to handle insertion and deletion of a bfd's sections. These
32266 + only handle the list pointers, ie. do not adjust section_count,
32267 + target_index etc. */
32268 +#define bfd_section_list_remove(ABFD, S) \
32269 + do \
32270 + { \
32271 + asection *_s = S; \
32272 + asection *_next = _s->next; \
32273 + asection *_prev = _s->prev; \
32274 + if (_prev) \
32275 + _prev->next = _next; \
32276 + else \
32277 + (ABFD)->sections = _next; \
32278 + if (_next) \
32279 + _next->prev = _prev; \
32280 + else \
32281 + (ABFD)->section_last = _prev; \
32282 + } \
32283 + while (0)
32284 +#define bfd_section_list_append(ABFD, S) \
32285 + do \
32286 + { \
32287 + asection *_s = S; \
32288 + bfd *_abfd = ABFD; \
32289 + _s->next = NULL; \
32290 + if (_abfd->section_last) \
32291 + { \
32292 + _s->prev = _abfd->section_last; \
32293 + _abfd->section_last->next = _s; \
32294 + } \
32295 + else \
32296 + { \
32297 + _s->prev = NULL; \
32298 + _abfd->sections = _s; \
32299 + } \
32300 + _abfd->section_last = _s; \
32301 + } \
32302 + while (0)
32303 +#define bfd_section_list_prepend(ABFD, S) \
32304 + do \
32305 + { \
32306 + asection *_s = S; \
32307 + bfd *_abfd = ABFD; \
32308 + _s->prev = NULL; \
32309 + if (_abfd->sections) \
32310 + { \
32311 + _s->next = _abfd->sections; \
32312 + _abfd->sections->prev = _s; \
32313 + } \
32314 + else \
32315 + { \
32316 + _s->next = NULL; \
32317 + _abfd->section_last = _s; \
32318 + } \
32319 + _abfd->sections = _s; \
32320 + } \
32321 + while (0)
32322 +#define bfd_section_list_insert_after(ABFD, A, S) \
32323 + do \
32324 + { \
32325 + asection *_a = A; \
32326 + asection *_s = S; \
32327 + asection *_next = _a->next; \
32328 + _s->next = _next; \
32329 + _s->prev = _a; \
32330 + _a->next = _s; \
32331 + if (_next) \
32332 + _next->prev = _s; \
32333 + else \
32334 + (ABFD)->section_last = _s; \
32335 + } \
32336 + while (0)
32337 +#define bfd_section_list_insert_before(ABFD, B, S) \
32338 + do \
32339 + { \
32340 + asection *_b = B; \
32341 + asection *_s = S; \
32342 + asection *_prev = _b->prev; \
32343 + _s->prev = _prev; \
32344 + _s->next = _b; \
32345 + _b->prev = _s; \
32346 + if (_prev) \
32347 + _prev->next = _s; \
32348 + else \
32349 + (ABFD)->sections = _s; \
32350 + } \
32351 + while (0)
32352 +#define bfd_section_removed_from_list(ABFD, S) \
32353 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
32354 +
32355 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
32356 + /* name, id, index, next, prev, flags, user_set_vma, */ \
32357 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
32358 + \
32359 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
32360 + 0, 0, 1, 0, \
32361 + \
32362 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
32363 + 0, 0, 0, 0, \
32364 + \
32365 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
32366 + 0, 0, 0, \
32367 + \
32368 + /* vma, lma, size, rawsize */ \
32369 + 0, 0, 0, 0, \
32370 + \
32371 + /* output_offset, output_section, alignment_power, */ \
32372 + 0, (struct bfd_section *) &SEC, 0, \
32373 + \
32374 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
32375 + NULL, NULL, 0, 0, 0, \
32376 + \
32377 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
32378 + 0, NULL, NULL, NULL, 0, \
32379 + \
32380 + /* entsize, kept_section, moving_line_filepos, */ \
32381 + 0, NULL, 0, \
32382 + \
32383 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
32384 + 0, NULL, NULL, NULL, \
32385 + \
32386 + /* symbol, symbol_ptr_ptr, */ \
32387 + (struct bfd_symbol *) SYM, &SEC.symbol, \
32388 + \
32389 + /* map_head, map_tail */ \
32390 + { NULL }, { NULL } \
32391 + }
32392 +
32393 +void bfd_section_list_clear (bfd *);
32394 +
32395 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
32396 +
32397 +asection *bfd_get_section_by_name_if
32398 + (bfd *abfd,
32399 + const char *name,
32400 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
32401 + void *obj);
32402 +
32403 +char *bfd_get_unique_section_name
32404 + (bfd *abfd, const char *templat, int *count);
32405 +
32406 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
32407 +
32408 +asection *bfd_make_section_anyway_with_flags
32409 + (bfd *abfd, const char *name, flagword flags);
32410 +
32411 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
32412 +
32413 +asection *bfd_make_section_with_flags
32414 + (bfd *, const char *name, flagword flags);
32415 +
32416 +asection *bfd_make_section (bfd *, const char *name);
32417 +
32418 +bfd_boolean bfd_set_section_flags
32419 + (bfd *abfd, asection *sec, flagword flags);
32420 +
32421 +void bfd_map_over_sections
32422 + (bfd *abfd,
32423 + void (*func) (bfd *abfd, asection *sect, void *obj),
32424 + void *obj);
32425 +
32426 +asection *bfd_sections_find_if
32427 + (bfd *abfd,
32428 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
32429 + void *obj);
32430 +
32431 +bfd_boolean bfd_set_section_size
32432 + (bfd *abfd, asection *sec, bfd_size_type val);
32433 +
32434 +bfd_boolean bfd_set_section_contents
32435 + (bfd *abfd, asection *section, const void *data,
32436 + file_ptr offset, bfd_size_type count);
32437 +
32438 +bfd_boolean bfd_get_section_contents
32439 + (bfd *abfd, asection *section, void *location, file_ptr offset,
32440 + bfd_size_type count);
32441 +
32442 +bfd_boolean bfd_malloc_and_get_section
32443 + (bfd *abfd, asection *section, bfd_byte **buf);
32444 +
32445 +bfd_boolean bfd_copy_private_section_data
32446 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
32447 +
32448 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
32449 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
32450 + (ibfd, isection, obfd, osection))
32451 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
32452 +
32453 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
32454 +
32455 +/* Extracted from archures.c. */
32456 +enum bfd_architecture
32457 +{
32458 + bfd_arch_unknown, /* File arch not known. */
32459 + bfd_arch_obscure, /* Arch known, not one of these. */
32460 + bfd_arch_m68k, /* Motorola 68xxx */
32461 +#define bfd_mach_m68000 1
32462 +#define bfd_mach_m68008 2
32463 +#define bfd_mach_m68010 3
32464 +#define bfd_mach_m68020 4
32465 +#define bfd_mach_m68030 5
32466 +#define bfd_mach_m68040 6
32467 +#define bfd_mach_m68060 7
32468 +#define bfd_mach_cpu32 8
32469 +#define bfd_mach_fido 9
32470 +#define bfd_mach_mcf_isa_a_nodiv 10
32471 +#define bfd_mach_mcf_isa_a 11
32472 +#define bfd_mach_mcf_isa_a_mac 12
32473 +#define bfd_mach_mcf_isa_a_emac 13
32474 +#define bfd_mach_mcf_isa_aplus 14
32475 +#define bfd_mach_mcf_isa_aplus_mac 15
32476 +#define bfd_mach_mcf_isa_aplus_emac 16
32477 +#define bfd_mach_mcf_isa_b_nousp 17
32478 +#define bfd_mach_mcf_isa_b_nousp_mac 18
32479 +#define bfd_mach_mcf_isa_b_nousp_emac 19
32480 +#define bfd_mach_mcf_isa_b 20
32481 +#define bfd_mach_mcf_isa_b_mac 21
32482 +#define bfd_mach_mcf_isa_b_emac 22
32483 +#define bfd_mach_mcf_isa_b_float 23
32484 +#define bfd_mach_mcf_isa_b_float_mac 24
32485 +#define bfd_mach_mcf_isa_b_float_emac 25
32486 +#define bfd_mach_mcf_isa_c 26
32487 +#define bfd_mach_mcf_isa_c_mac 27
32488 +#define bfd_mach_mcf_isa_c_emac 28
32489 + bfd_arch_vax, /* DEC Vax */
32490 + bfd_arch_i960, /* Intel 960 */
32491 + /* The order of the following is important.
32492 + lower number indicates a machine type that
32493 + only accepts a subset of the instructions
32494 + available to machines with higher numbers.
32495 + The exception is the "ca", which is
32496 + incompatible with all other machines except
32497 + "core". */
32498 +
32499 +#define bfd_mach_i960_core 1
32500 +#define bfd_mach_i960_ka_sa 2
32501 +#define bfd_mach_i960_kb_sb 3
32502 +#define bfd_mach_i960_mc 4
32503 +#define bfd_mach_i960_xa 5
32504 +#define bfd_mach_i960_ca 6
32505 +#define bfd_mach_i960_jx 7
32506 +#define bfd_mach_i960_hx 8
32507 +
32508 + bfd_arch_or32, /* OpenRISC 32 */
32509 +
32510 + bfd_arch_sparc, /* SPARC */
32511 +#define bfd_mach_sparc 1
32512 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
32513 +#define bfd_mach_sparc_sparclet 2
32514 +#define bfd_mach_sparc_sparclite 3
32515 +#define bfd_mach_sparc_v8plus 4
32516 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
32517 +#define bfd_mach_sparc_sparclite_le 6
32518 +#define bfd_mach_sparc_v9 7
32519 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
32520 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
32521 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
32522 +/* Nonzero if MACH has the v9 instruction set. */
32523 +#define bfd_mach_sparc_v9_p(mach) \
32524 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
32525 + && (mach) != bfd_mach_sparc_sparclite_le)
32526 +/* Nonzero if MACH is a 64 bit sparc architecture. */
32527 +#define bfd_mach_sparc_64bit_p(mach) \
32528 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
32529 + bfd_arch_spu, /* PowerPC SPU */
32530 +#define bfd_mach_spu 256
32531 + bfd_arch_mips, /* MIPS Rxxxx */
32532 +#define bfd_mach_mips3000 3000
32533 +#define bfd_mach_mips3900 3900
32534 +#define bfd_mach_mips4000 4000
32535 +#define bfd_mach_mips4010 4010
32536 +#define bfd_mach_mips4100 4100
32537 +#define bfd_mach_mips4111 4111
32538 +#define bfd_mach_mips4120 4120
32539 +#define bfd_mach_mips4300 4300
32540 +#define bfd_mach_mips4400 4400
32541 +#define bfd_mach_mips4600 4600
32542 +#define bfd_mach_mips4650 4650
32543 +#define bfd_mach_mips5000 5000
32544 +#define bfd_mach_mips5400 5400
32545 +#define bfd_mach_mips5500 5500
32546 +#define bfd_mach_mips6000 6000
32547 +#define bfd_mach_mips7000 7000
32548 +#define bfd_mach_mips8000 8000
32549 +#define bfd_mach_mips9000 9000
32550 +#define bfd_mach_mips10000 10000
32551 +#define bfd_mach_mips12000 12000
32552 +#define bfd_mach_mips16 16
32553 +#define bfd_mach_mips5 5
32554 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
32555 +#define bfd_mach_mipsisa32 32
32556 +#define bfd_mach_mipsisa32r2 33
32557 +#define bfd_mach_mipsisa64 64
32558 +#define bfd_mach_mipsisa64r2 65
32559 + bfd_arch_i386, /* Intel 386 */
32560 +#define bfd_mach_i386_i386 1
32561 +#define bfd_mach_i386_i8086 2
32562 +#define bfd_mach_i386_i386_intel_syntax 3
32563 +#define bfd_mach_x86_64 64
32564 +#define bfd_mach_x86_64_intel_syntax 65
32565 + bfd_arch_we32k, /* AT&T WE32xxx */
32566 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
32567 + bfd_arch_i860, /* Intel 860 */
32568 + bfd_arch_i370, /* IBM 360/370 Mainframes */
32569 + bfd_arch_romp, /* IBM ROMP PC/RT */
32570 + bfd_arch_convex, /* Convex */
32571 + bfd_arch_m88k, /* Motorola 88xxx */
32572 + bfd_arch_m98k, /* Motorola 98xxx */
32573 + bfd_arch_pyramid, /* Pyramid Technology */
32574 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
32575 +#define bfd_mach_h8300 1
32576 +#define bfd_mach_h8300h 2
32577 +#define bfd_mach_h8300s 3
32578 +#define bfd_mach_h8300hn 4
32579 +#define bfd_mach_h8300sn 5
32580 +#define bfd_mach_h8300sx 6
32581 +#define bfd_mach_h8300sxn 7
32582 + bfd_arch_pdp11, /* DEC PDP-11 */
32583 + bfd_arch_powerpc, /* PowerPC */
32584 +#define bfd_mach_ppc 32
32585 +#define bfd_mach_ppc64 64
32586 +#define bfd_mach_ppc_403 403
32587 +#define bfd_mach_ppc_403gc 4030
32588 +#define bfd_mach_ppc_505 505
32589 +#define bfd_mach_ppc_601 601
32590 +#define bfd_mach_ppc_602 602
32591 +#define bfd_mach_ppc_603 603
32592 +#define bfd_mach_ppc_ec603e 6031
32593 +#define bfd_mach_ppc_604 604
32594 +#define bfd_mach_ppc_620 620
32595 +#define bfd_mach_ppc_630 630
32596 +#define bfd_mach_ppc_750 750
32597 +#define bfd_mach_ppc_860 860
32598 +#define bfd_mach_ppc_a35 35
32599 +#define bfd_mach_ppc_rs64ii 642
32600 +#define bfd_mach_ppc_rs64iii 643
32601 +#define bfd_mach_ppc_7400 7400
32602 +#define bfd_mach_ppc_e500 500
32603 + bfd_arch_rs6000, /* IBM RS/6000 */
32604 +#define bfd_mach_rs6k 6000
32605 +#define bfd_mach_rs6k_rs1 6001
32606 +#define bfd_mach_rs6k_rsc 6003
32607 +#define bfd_mach_rs6k_rs2 6002
32608 + bfd_arch_hppa, /* HP PA RISC */
32609 +#define bfd_mach_hppa10 10
32610 +#define bfd_mach_hppa11 11
32611 +#define bfd_mach_hppa20 20
32612 +#define bfd_mach_hppa20w 25
32613 + bfd_arch_d10v, /* Mitsubishi D10V */
32614 +#define bfd_mach_d10v 1
32615 +#define bfd_mach_d10v_ts2 2
32616 +#define bfd_mach_d10v_ts3 3
32617 + bfd_arch_d30v, /* Mitsubishi D30V */
32618 + bfd_arch_dlx, /* DLX */
32619 + bfd_arch_m68hc11, /* Motorola 68HC11 */
32620 + bfd_arch_m68hc12, /* Motorola 68HC12 */
32621 +#define bfd_mach_m6812_default 0
32622 +#define bfd_mach_m6812 1
32623 +#define bfd_mach_m6812s 2
32624 + bfd_arch_z8k, /* Zilog Z8000 */
32625 +#define bfd_mach_z8001 1
32626 +#define bfd_mach_z8002 2
32627 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
32628 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
32629 +#define bfd_mach_sh 1
32630 +#define bfd_mach_sh2 0x20
32631 +#define bfd_mach_sh_dsp 0x2d
32632 +#define bfd_mach_sh2a 0x2a
32633 +#define bfd_mach_sh2a_nofpu 0x2b
32634 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
32635 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
32636 +#define bfd_mach_sh2a_or_sh4 0x2a3
32637 +#define bfd_mach_sh2a_or_sh3e 0x2a4
32638 +#define bfd_mach_sh2e 0x2e
32639 +#define bfd_mach_sh3 0x30
32640 +#define bfd_mach_sh3_nommu 0x31
32641 +#define bfd_mach_sh3_dsp 0x3d
32642 +#define bfd_mach_sh3e 0x3e
32643 +#define bfd_mach_sh4 0x40
32644 +#define bfd_mach_sh4_nofpu 0x41
32645 +#define bfd_mach_sh4_nommu_nofpu 0x42
32646 +#define bfd_mach_sh4a 0x4a
32647 +#define bfd_mach_sh4a_nofpu 0x4b
32648 +#define bfd_mach_sh4al_dsp 0x4d
32649 +#define bfd_mach_sh5 0x50
32650 + bfd_arch_alpha, /* Dec Alpha */
32651 +#define bfd_mach_alpha_ev4 0x10
32652 +#define bfd_mach_alpha_ev5 0x20
32653 +#define bfd_mach_alpha_ev6 0x30
32654 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
32655 +#define bfd_mach_arm_unknown 0
32656 +#define bfd_mach_arm_2 1
32657 +#define bfd_mach_arm_2a 2
32658 +#define bfd_mach_arm_3 3
32659 +#define bfd_mach_arm_3M 4
32660 +#define bfd_mach_arm_4 5
32661 +#define bfd_mach_arm_4T 6
32662 +#define bfd_mach_arm_5 7
32663 +#define bfd_mach_arm_5T 8
32664 +#define bfd_mach_arm_5TE 9
32665 +#define bfd_mach_arm_XScale 10
32666 +#define bfd_mach_arm_ep9312 11
32667 +#define bfd_mach_arm_iWMMXt 12
32668 +#define bfd_mach_arm_iWMMXt2 13
32669 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
32670 + bfd_arch_w65, /* WDC 65816 */
32671 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
32672 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
32673 +#define bfd_mach_tic3x 30
32674 +#define bfd_mach_tic4x 40
32675 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
32676 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
32677 + bfd_arch_v850, /* NEC V850 */
32678 +#define bfd_mach_v850 1
32679 +#define bfd_mach_v850e 'E'
32680 +#define bfd_mach_v850e1 '1'
32681 + bfd_arch_arc, /* ARC Cores */
32682 +#define bfd_mach_arc_5 5
32683 +#define bfd_mach_arc_6 6
32684 +#define bfd_mach_arc_7 7
32685 +#define bfd_mach_arc_8 8
32686 + bfd_arch_m32c, /* Renesas M16C/M32C. */
32687 +#define bfd_mach_m16c 0x75
32688 +#define bfd_mach_m32c 0x78
32689 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
32690 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
32691 +#define bfd_mach_m32rx 'x'
32692 +#define bfd_mach_m32r2 '2'
32693 + bfd_arch_mn10200, /* Matsushita MN10200 */
32694 + bfd_arch_mn10300, /* Matsushita MN10300 */
32695 +#define bfd_mach_mn10300 300
32696 +#define bfd_mach_am33 330
32697 +#define bfd_mach_am33_2 332
32698 + bfd_arch_fr30,
32699 +#define bfd_mach_fr30 0x46523330
32700 + bfd_arch_frv,
32701 +#define bfd_mach_frv 1
32702 +#define bfd_mach_frvsimple 2
32703 +#define bfd_mach_fr300 300
32704 +#define bfd_mach_fr400 400
32705 +#define bfd_mach_fr450 450
32706 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
32707 +#define bfd_mach_fr500 500
32708 +#define bfd_mach_fr550 550
32709 + bfd_arch_mcore,
32710 + bfd_arch_mep,
32711 +#define bfd_mach_mep 1
32712 +#define bfd_mach_mep_h1 0x6831
32713 + bfd_arch_ia64, /* HP/Intel ia64 */
32714 +#define bfd_mach_ia64_elf64 64
32715 +#define bfd_mach_ia64_elf32 32
32716 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
32717 +#define bfd_mach_ip2022 1
32718 +#define bfd_mach_ip2022ext 2
32719 + bfd_arch_iq2000, /* Vitesse IQ2000. */
32720 +#define bfd_mach_iq2000 1
32721 +#define bfd_mach_iq10 2
32722 + bfd_arch_mt,
32723 +#define bfd_mach_ms1 1
32724 +#define bfd_mach_mrisc2 2
32725 +#define bfd_mach_ms2 3
32726 + bfd_arch_pj,
32727 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
32728 +#define bfd_mach_avr1 1
32729 +#define bfd_mach_avr2 2
32730 +#define bfd_mach_avr3 3
32731 +#define bfd_mach_avr4 4
32732 +#define bfd_mach_avr5 5
32733 +#define bfd_mach_avr6 6
32734 + bfd_arch_bfin, /* ADI Blackfin */
32735 +#define bfd_mach_bfin 1
32736 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
32737 +#define bfd_mach_cr16 1
32738 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
32739 +#define bfd_mach_cr16c 1
32740 + bfd_arch_crx, /* National Semiconductor CRX. */
32741 +#define bfd_mach_crx 1
32742 + bfd_arch_cris, /* Axis CRIS */
32743 +#define bfd_mach_cris_v0_v10 255
32744 +#define bfd_mach_cris_v32 32
32745 +#define bfd_mach_cris_v10_v32 1032
32746 + bfd_arch_s390, /* IBM s390 */
32747 +#define bfd_mach_s390_31 31
32748 +#define bfd_mach_s390_64 64
32749 + bfd_arch_score, /* Sunplus score */
32750 + bfd_arch_openrisc, /* OpenRISC */
32751 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
32752 + bfd_arch_xstormy16,
32753 +#define bfd_mach_xstormy16 1
32754 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
32755 +#define bfd_mach_msp11 11
32756 +#define bfd_mach_msp110 110
32757 +#define bfd_mach_msp12 12
32758 +#define bfd_mach_msp13 13
32759 +#define bfd_mach_msp14 14
32760 +#define bfd_mach_msp15 15
32761 +#define bfd_mach_msp16 16
32762 +#define bfd_mach_msp21 21
32763 +#define bfd_mach_msp31 31
32764 +#define bfd_mach_msp32 32
32765 +#define bfd_mach_msp33 33
32766 +#define bfd_mach_msp41 41
32767 +#define bfd_mach_msp42 42
32768 +#define bfd_mach_msp43 43
32769 +#define bfd_mach_msp44 44
32770 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
32771 +#define bfd_mach_xc16x 1
32772 +#define bfd_mach_xc16xl 2
32773 +#define bfd_mach_xc16xs 3
32774 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
32775 +#define bfd_mach_xtensa 1
32776 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
32777 +#define bfd_mach_maxq10 10
32778 +#define bfd_mach_maxq20 20
32779 + bfd_arch_z80,
32780 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
32781 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
32782 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
32783 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
32784 + bfd_arch_last
32785 + };
32786 +
32787 +typedef struct bfd_arch_info
32788 +{
32789 + int bits_per_word;
32790 + int bits_per_address;
32791 + int bits_per_byte;
32792 + enum bfd_architecture arch;
32793 + unsigned long mach;
32794 + const char *arch_name;
32795 + const char *printable_name;
32796 + unsigned int section_align_power;
32797 + /* TRUE if this is the default machine for the architecture.
32798 + The default arch should be the first entry for an arch so that
32799 + all the entries for that arch can be accessed via <<next>>. */
32800 + bfd_boolean the_default;
32801 + const struct bfd_arch_info * (*compatible)
32802 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
32803 +
32804 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
32805 +
32806 + const struct bfd_arch_info *next;
32807 +}
32808 +bfd_arch_info_type;
32809 +
32810 +const char *bfd_printable_name (bfd *abfd);
32811 +
32812 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
32813 +
32814 +const char **bfd_arch_list (void);
32815 +
32816 +const bfd_arch_info_type *bfd_arch_get_compatible
32817 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
32818 +
32819 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
32820 +
32821 +enum bfd_architecture bfd_get_arch (bfd *abfd);
32822 +
32823 +unsigned long bfd_get_mach (bfd *abfd);
32824 +
32825 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
32826 +
32827 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
32828 +
32829 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
32830 +
32831 +const bfd_arch_info_type *bfd_lookup_arch
32832 + (enum bfd_architecture arch, unsigned long machine);
32833 +
32834 +const char *bfd_printable_arch_mach
32835 + (enum bfd_architecture arch, unsigned long machine);
32836 +
32837 +unsigned int bfd_octets_per_byte (bfd *abfd);
32838 +
32839 +unsigned int bfd_arch_mach_octets_per_byte
32840 + (enum bfd_architecture arch, unsigned long machine);
32841 +
32842 +/* Extracted from reloc.c. */
32843 +typedef enum bfd_reloc_status
32844 +{
32845 + /* No errors detected. */
32846 + bfd_reloc_ok,
32847 +
32848 + /* The relocation was performed, but there was an overflow. */
32849 + bfd_reloc_overflow,
32850 +
32851 + /* The address to relocate was not within the section supplied. */
32852 + bfd_reloc_outofrange,
32853 +
32854 + /* Used by special functions. */
32855 + bfd_reloc_continue,
32856 +
32857 + /* Unsupported relocation size requested. */
32858 + bfd_reloc_notsupported,
32859 +
32860 + /* Unused. */
32861 + bfd_reloc_other,
32862 +
32863 + /* The symbol to relocate against was undefined. */
32864 + bfd_reloc_undefined,
32865 +
32866 + /* The relocation was performed, but may not be ok - presently
32867 + generated only when linking i960 coff files with i960 b.out
32868 + symbols. If this type is returned, the error_message argument
32869 + to bfd_perform_relocation will be set. */
32870 + bfd_reloc_dangerous
32871 + }
32872 + bfd_reloc_status_type;
32873 +
32874 +
32875 +typedef struct reloc_cache_entry
32876 +{
32877 + /* A pointer into the canonical table of pointers. */
32878 + struct bfd_symbol **sym_ptr_ptr;
32879 +
32880 + /* offset in section. */
32881 + bfd_size_type address;
32882 +
32883 + /* addend for relocation value. */
32884 + bfd_vma addend;
32885 +
32886 + /* Pointer to how to perform the required relocation. */
32887 + reloc_howto_type *howto;
32888 +
32889 +}
32890 +arelent;
32891 +
32892 +enum complain_overflow
32893 +{
32894 + /* Do not complain on overflow. */
32895 + complain_overflow_dont,
32896 +
32897 + /* Complain if the value overflows when considered as a signed
32898 + number one bit larger than the field. ie. A bitfield of N bits
32899 + is allowed to represent -2**n to 2**n-1. */
32900 + complain_overflow_bitfield,
32901 +
32902 + /* Complain if the value overflows when considered as a signed
32903 + number. */
32904 + complain_overflow_signed,
32905 +
32906 + /* Complain if the value overflows when considered as an
32907 + unsigned number. */
32908 + complain_overflow_unsigned
32909 +};
32910 +
32911 +struct reloc_howto_struct
32912 +{
32913 + /* The type field has mainly a documentary use - the back end can
32914 + do what it wants with it, though normally the back end's
32915 + external idea of what a reloc number is stored
32916 + in this field. For example, a PC relative word relocation
32917 + in a coff environment has the type 023 - because that's
32918 + what the outside world calls a R_PCRWORD reloc. */
32919 + unsigned int type;
32920 +
32921 + /* The value the final relocation is shifted right by. This drops
32922 + unwanted data from the relocation. */
32923 + unsigned int rightshift;
32924 +
32925 + /* The size of the item to be relocated. This is *not* a
32926 + power-of-two measure. To get the number of bytes operated
32927 + on by a type of relocation, use bfd_get_reloc_size. */
32928 + int size;
32929 +
32930 + /* The number of bits in the item to be relocated. This is used
32931 + when doing overflow checking. */
32932 + unsigned int bitsize;
32933 +
32934 + /* Notes that the relocation is relative to the location in the
32935 + data section of the addend. The relocation function will
32936 + subtract from the relocation value the address of the location
32937 + being relocated. */
32938 + bfd_boolean pc_relative;
32939 +
32940 + /* The bit position of the reloc value in the destination.
32941 + The relocated value is left shifted by this amount. */
32942 + unsigned int bitpos;
32943 +
32944 + /* What type of overflow error should be checked for when
32945 + relocating. */
32946 + enum complain_overflow complain_on_overflow;
32947 +
32948 + /* If this field is non null, then the supplied function is
32949 + called rather than the normal function. This allows really
32950 + strange relocation methods to be accommodated (e.g., i960 callj
32951 + instructions). */
32952 + bfd_reloc_status_type (*special_function)
32953 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
32954 + bfd *, char **);
32955 +
32956 + /* The textual name of the relocation type. */
32957 + char *name;
32958 +
32959 + /* Some formats record a relocation addend in the section contents
32960 + rather than with the relocation. For ELF formats this is the
32961 + distinction between USE_REL and USE_RELA (though the code checks
32962 + for USE_REL == 1/0). The value of this field is TRUE if the
32963 + addend is recorded with the section contents; when performing a
32964 + partial link (ld -r) the section contents (the data) will be
32965 + modified. The value of this field is FALSE if addends are
32966 + recorded with the relocation (in arelent.addend); when performing
32967 + a partial link the relocation will be modified.
32968 + All relocations for all ELF USE_RELA targets should set this field
32969 + to FALSE (values of TRUE should be looked on with suspicion).
32970 + However, the converse is not true: not all relocations of all ELF
32971 + USE_REL targets set this field to TRUE. Why this is so is peculiar
32972 + to each particular target. For relocs that aren't used in partial
32973 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
32974 + bfd_boolean partial_inplace;
32975 +
32976 + /* src_mask selects the part of the instruction (or data) to be used
32977 + in the relocation sum. If the target relocations don't have an
32978 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
32979 + dst_mask to extract the addend from the section contents. If
32980 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
32981 + field should be zero. Non-zero values for ELF USE_RELA targets are
32982 + bogus as in those cases the value in the dst_mask part of the
32983 + section contents should be treated as garbage. */
32984 + bfd_vma src_mask;
32985 +
32986 + /* dst_mask selects which parts of the instruction (or data) are
32987 + replaced with a relocated value. */
32988 + bfd_vma dst_mask;
32989 +
32990 + /* When some formats create PC relative instructions, they leave
32991 + the value of the pc of the place being relocated in the offset
32992 + slot of the instruction, so that a PC relative relocation can
32993 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
32994 + Some formats leave the displacement part of an instruction
32995 + empty (e.g., m88k bcs); this flag signals the fact. */
32996 + bfd_boolean pcrel_offset;
32997 +};
32998 +
32999 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
33000 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
33001 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
33002 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
33003 + NAME, FALSE, 0, 0, IN)
33004 +
33005 +#define EMPTY_HOWTO(C) \
33006 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
33007 + NULL, FALSE, 0, 0, FALSE)
33008 +
33009 +#define HOWTO_PREPARE(relocation, symbol) \
33010 + { \
33011 + if (symbol != NULL) \
33012 + { \
33013 + if (bfd_is_com_section (symbol->section)) \
33014 + { \
33015 + relocation = 0; \
33016 + } \
33017 + else \
33018 + { \
33019 + relocation = symbol->value; \
33020 + } \
33021 + } \
33022 + }
33023 +
33024 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
33025 +
33026 +typedef struct relent_chain
33027 +{
33028 + arelent relent;
33029 + struct relent_chain *next;
33030 +}
33031 +arelent_chain;
33032 +
33033 +bfd_reloc_status_type bfd_check_overflow
33034 + (enum complain_overflow how,
33035 + unsigned int bitsize,
33036 + unsigned int rightshift,
33037 + unsigned int addrsize,
33038 + bfd_vma relocation);
33039 +
33040 +bfd_reloc_status_type bfd_perform_relocation
33041 + (bfd *abfd,
33042 + arelent *reloc_entry,
33043 + void *data,
33044 + asection *input_section,
33045 + bfd *output_bfd,
33046 + char **error_message);
33047 +
33048 +bfd_reloc_status_type bfd_install_relocation
33049 + (bfd *abfd,
33050 + arelent *reloc_entry,
33051 + void *data, bfd_vma data_start,
33052 + asection *input_section,
33053 + char **error_message);
33054 +
33055 +enum bfd_reloc_code_real {
33056 + _dummy_first_bfd_reloc_code_real,
33057 +
33058 +
33059 +/* Basic absolute relocations of N bits. */
33060 + BFD_RELOC_64,
33061 + BFD_RELOC_32,
33062 + BFD_RELOC_26,
33063 + BFD_RELOC_24,
33064 + BFD_RELOC_16,
33065 + BFD_RELOC_14,
33066 + BFD_RELOC_8,
33067 +
33068 +/* PC-relative relocations. Sometimes these are relative to the address
33069 +of the relocation itself; sometimes they are relative to the start of
33070 +the section containing the relocation. It depends on the specific target.
33071 +
33072 +The 24-bit relocation is used in some Intel 960 configurations. */
33073 + BFD_RELOC_64_PCREL,
33074 + BFD_RELOC_32_PCREL,
33075 + BFD_RELOC_24_PCREL,
33076 + BFD_RELOC_16_PCREL,
33077 + BFD_RELOC_12_PCREL,
33078 + BFD_RELOC_8_PCREL,
33079 +
33080 +/* Section relative relocations. Some targets need this for DWARF2. */
33081 + BFD_RELOC_32_SECREL,
33082 +
33083 +/* For ELF. */
33084 + BFD_RELOC_32_GOT_PCREL,
33085 + BFD_RELOC_16_GOT_PCREL,
33086 + BFD_RELOC_8_GOT_PCREL,
33087 + BFD_RELOC_32_GOTOFF,
33088 + BFD_RELOC_16_GOTOFF,
33089 + BFD_RELOC_LO16_GOTOFF,
33090 + BFD_RELOC_HI16_GOTOFF,
33091 + BFD_RELOC_HI16_S_GOTOFF,
33092 + BFD_RELOC_8_GOTOFF,
33093 + BFD_RELOC_64_PLT_PCREL,
33094 + BFD_RELOC_32_PLT_PCREL,
33095 + BFD_RELOC_24_PLT_PCREL,
33096 + BFD_RELOC_16_PLT_PCREL,
33097 + BFD_RELOC_8_PLT_PCREL,
33098 + BFD_RELOC_64_PLTOFF,
33099 + BFD_RELOC_32_PLTOFF,
33100 + BFD_RELOC_16_PLTOFF,
33101 + BFD_RELOC_LO16_PLTOFF,
33102 + BFD_RELOC_HI16_PLTOFF,
33103 + BFD_RELOC_HI16_S_PLTOFF,
33104 + BFD_RELOC_8_PLTOFF,
33105 +
33106 +/* Relocations used by 68K ELF. */
33107 + BFD_RELOC_68K_GLOB_DAT,
33108 + BFD_RELOC_68K_JMP_SLOT,
33109 + BFD_RELOC_68K_RELATIVE,
33110 +
33111 +/* Linkage-table relative. */
33112 + BFD_RELOC_32_BASEREL,
33113 + BFD_RELOC_16_BASEREL,
33114 + BFD_RELOC_LO16_BASEREL,
33115 + BFD_RELOC_HI16_BASEREL,
33116 + BFD_RELOC_HI16_S_BASEREL,
33117 + BFD_RELOC_8_BASEREL,
33118 + BFD_RELOC_RVA,
33119 +
33120 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
33121 + BFD_RELOC_8_FFnn,
33122 +
33123 +/* These PC-relative relocations are stored as word displacements --
33124 +i.e., byte displacements shifted right two bits. The 30-bit word
33125 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
33126 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
33127 +signed 16-bit displacement is used on the MIPS, and the 23-bit
33128 +displacement is used on the Alpha. */
33129 + BFD_RELOC_32_PCREL_S2,
33130 + BFD_RELOC_16_PCREL_S2,
33131 + BFD_RELOC_23_PCREL_S2,
33132 +
33133 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
33134 +the target word. These are used on the SPARC. */
33135 + BFD_RELOC_HI22,
33136 + BFD_RELOC_LO10,
33137 +
33138 +/* For systems that allocate a Global Pointer register, these are
33139 +displacements off that register. These relocation types are
33140 +handled specially, because the value the register will have is
33141 +decided relatively late. */
33142 + BFD_RELOC_GPREL16,
33143 + BFD_RELOC_GPREL32,
33144 +
33145 +/* Reloc types used for i960/b.out. */
33146 + BFD_RELOC_I960_CALLJ,
33147 +
33148 +/* SPARC ELF relocations. There is probably some overlap with other
33149 +relocation types already defined. */
33150 + BFD_RELOC_NONE,
33151 + BFD_RELOC_SPARC_WDISP22,
33152 + BFD_RELOC_SPARC22,
33153 + BFD_RELOC_SPARC13,
33154 + BFD_RELOC_SPARC_GOT10,
33155 + BFD_RELOC_SPARC_GOT13,
33156 + BFD_RELOC_SPARC_GOT22,
33157 + BFD_RELOC_SPARC_PC10,
33158 + BFD_RELOC_SPARC_PC22,
33159 + BFD_RELOC_SPARC_WPLT30,
33160 + BFD_RELOC_SPARC_COPY,
33161 + BFD_RELOC_SPARC_GLOB_DAT,
33162 + BFD_RELOC_SPARC_JMP_SLOT,
33163 + BFD_RELOC_SPARC_RELATIVE,
33164 + BFD_RELOC_SPARC_UA16,
33165 + BFD_RELOC_SPARC_UA32,
33166 + BFD_RELOC_SPARC_UA64,
33167 +
33168 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
33169 + BFD_RELOC_SPARC_BASE13,
33170 + BFD_RELOC_SPARC_BASE22,
33171 +
33172 +/* SPARC64 relocations */
33173 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
33174 + BFD_RELOC_SPARC_10,
33175 + BFD_RELOC_SPARC_11,
33176 + BFD_RELOC_SPARC_OLO10,
33177 + BFD_RELOC_SPARC_HH22,
33178 + BFD_RELOC_SPARC_HM10,
33179 + BFD_RELOC_SPARC_LM22,
33180 + BFD_RELOC_SPARC_PC_HH22,
33181 + BFD_RELOC_SPARC_PC_HM10,
33182 + BFD_RELOC_SPARC_PC_LM22,
33183 + BFD_RELOC_SPARC_WDISP16,
33184 + BFD_RELOC_SPARC_WDISP19,
33185 + BFD_RELOC_SPARC_7,
33186 + BFD_RELOC_SPARC_6,
33187 + BFD_RELOC_SPARC_5,
33188 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
33189 + BFD_RELOC_SPARC_PLT32,
33190 + BFD_RELOC_SPARC_PLT64,
33191 + BFD_RELOC_SPARC_HIX22,
33192 + BFD_RELOC_SPARC_LOX10,
33193 + BFD_RELOC_SPARC_H44,
33194 + BFD_RELOC_SPARC_M44,
33195 + BFD_RELOC_SPARC_L44,
33196 + BFD_RELOC_SPARC_REGISTER,
33197 +
33198 +/* SPARC little endian relocation */
33199 + BFD_RELOC_SPARC_REV32,
33200 +
33201 +/* SPARC TLS relocations */
33202 + BFD_RELOC_SPARC_TLS_GD_HI22,
33203 + BFD_RELOC_SPARC_TLS_GD_LO10,
33204 + BFD_RELOC_SPARC_TLS_GD_ADD,
33205 + BFD_RELOC_SPARC_TLS_GD_CALL,
33206 + BFD_RELOC_SPARC_TLS_LDM_HI22,
33207 + BFD_RELOC_SPARC_TLS_LDM_LO10,
33208 + BFD_RELOC_SPARC_TLS_LDM_ADD,
33209 + BFD_RELOC_SPARC_TLS_LDM_CALL,
33210 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
33211 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
33212 + BFD_RELOC_SPARC_TLS_LDO_ADD,
33213 + BFD_RELOC_SPARC_TLS_IE_HI22,
33214 + BFD_RELOC_SPARC_TLS_IE_LO10,
33215 + BFD_RELOC_SPARC_TLS_IE_LD,
33216 + BFD_RELOC_SPARC_TLS_IE_LDX,
33217 + BFD_RELOC_SPARC_TLS_IE_ADD,
33218 + BFD_RELOC_SPARC_TLS_LE_HIX22,
33219 + BFD_RELOC_SPARC_TLS_LE_LOX10,
33220 + BFD_RELOC_SPARC_TLS_DTPMOD32,
33221 + BFD_RELOC_SPARC_TLS_DTPMOD64,
33222 + BFD_RELOC_SPARC_TLS_DTPOFF32,
33223 + BFD_RELOC_SPARC_TLS_DTPOFF64,
33224 + BFD_RELOC_SPARC_TLS_TPOFF32,
33225 + BFD_RELOC_SPARC_TLS_TPOFF64,
33226 +
33227 +/* SPU Relocations. */
33228 + BFD_RELOC_SPU_IMM7,
33229 + BFD_RELOC_SPU_IMM8,
33230 + BFD_RELOC_SPU_IMM10,
33231 + BFD_RELOC_SPU_IMM10W,
33232 + BFD_RELOC_SPU_IMM16,
33233 + BFD_RELOC_SPU_IMM16W,
33234 + BFD_RELOC_SPU_IMM18,
33235 + BFD_RELOC_SPU_PCREL9a,
33236 + BFD_RELOC_SPU_PCREL9b,
33237 + BFD_RELOC_SPU_PCREL16,
33238 + BFD_RELOC_SPU_LO16,
33239 + BFD_RELOC_SPU_HI16,
33240 + BFD_RELOC_SPU_PPU32,
33241 + BFD_RELOC_SPU_PPU64,
33242 +
33243 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
33244 +"addend" in some special way.
33245 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
33246 +writing; when reading, it will be the absolute section symbol. The
33247 +addend is the displacement in bytes of the "lda" instruction from
33248 +the "ldah" instruction (which is at the address of this reloc). */
33249 + BFD_RELOC_ALPHA_GPDISP_HI16,
33250 +
33251 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
33252 +with GPDISP_HI16 relocs. The addend is ignored when writing the
33253 +relocations out, and is filled in with the file's GP value on
33254 +reading, for convenience. */
33255 + BFD_RELOC_ALPHA_GPDISP_LO16,
33256 +
33257 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
33258 +relocation except that there is no accompanying GPDISP_LO16
33259 +relocation. */
33260 + BFD_RELOC_ALPHA_GPDISP,
33261 +
33262 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
33263 +the assembler turns it into a LDQ instruction to load the address of
33264 +the symbol, and then fills in a register in the real instruction.
33265 +
33266 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
33267 +section symbol. The addend is ignored when writing, but is filled
33268 +in with the file's GP value on reading, for convenience, as with the
33269 +GPDISP_LO16 reloc.
33270 +
33271 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
33272 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
33273 +but it generates output not based on the position within the .got
33274 +section, but relative to the GP value chosen for the file during the
33275 +final link stage.
33276 +
33277 +The LITUSE reloc, on the instruction using the loaded address, gives
33278 +information to the linker that it might be able to use to optimize
33279 +away some literal section references. The symbol is ignored (read
33280 +as the absolute section symbol), and the "addend" indicates the type
33281 +of instruction using the register:
33282 +1 - "memory" fmt insn
33283 +2 - byte-manipulation (byte offset reg)
33284 +3 - jsr (target of branch) */
33285 + BFD_RELOC_ALPHA_LITERAL,
33286 + BFD_RELOC_ALPHA_ELF_LITERAL,
33287 + BFD_RELOC_ALPHA_LITUSE,
33288 +
33289 +/* The HINT relocation indicates a value that should be filled into the
33290 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
33291 +prediction logic which may be provided on some processors. */
33292 + BFD_RELOC_ALPHA_HINT,
33293 +
33294 +/* The LINKAGE relocation outputs a linkage pair in the object file,
33295 +which is filled by the linker. */
33296 + BFD_RELOC_ALPHA_LINKAGE,
33297 +
33298 +/* The CODEADDR relocation outputs a STO_CA in the object file,
33299 +which is filled by the linker. */
33300 + BFD_RELOC_ALPHA_CODEADDR,
33301 +
33302 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
33303 +GP register. */
33304 + BFD_RELOC_ALPHA_GPREL_HI16,
33305 + BFD_RELOC_ALPHA_GPREL_LO16,
33306 +
33307 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
33308 +share a common GP, and the target address is adjusted for
33309 +STO_ALPHA_STD_GPLOAD. */
33310 + BFD_RELOC_ALPHA_BRSGP,
33311 +
33312 +/* Alpha thread-local storage relocations. */
33313 + BFD_RELOC_ALPHA_TLSGD,
33314 + BFD_RELOC_ALPHA_TLSLDM,
33315 + BFD_RELOC_ALPHA_DTPMOD64,
33316 + BFD_RELOC_ALPHA_GOTDTPREL16,
33317 + BFD_RELOC_ALPHA_DTPREL64,
33318 + BFD_RELOC_ALPHA_DTPREL_HI16,
33319 + BFD_RELOC_ALPHA_DTPREL_LO16,
33320 + BFD_RELOC_ALPHA_DTPREL16,
33321 + BFD_RELOC_ALPHA_GOTTPREL16,
33322 + BFD_RELOC_ALPHA_TPREL64,
33323 + BFD_RELOC_ALPHA_TPREL_HI16,
33324 + BFD_RELOC_ALPHA_TPREL_LO16,
33325 + BFD_RELOC_ALPHA_TPREL16,
33326 +
33327 +/* Bits 27..2 of the relocation address shifted right 2 bits;
33328 +simple reloc otherwise. */
33329 + BFD_RELOC_MIPS_JMP,
33330 +
33331 +/* The MIPS16 jump instruction. */
33332 + BFD_RELOC_MIPS16_JMP,
33333 +
33334 +/* MIPS16 GP relative reloc. */
33335 + BFD_RELOC_MIPS16_GPREL,
33336 +
33337 +/* High 16 bits of 32-bit value; simple reloc. */
33338 + BFD_RELOC_HI16,
33339 +
33340 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
33341 +extended and added to form the final result. If the low 16
33342 +bits form a negative number, we need to add one to the high value
33343 +to compensate for the borrow when the low bits are added. */
33344 + BFD_RELOC_HI16_S,
33345 +
33346 +/* Low 16 bits. */
33347 + BFD_RELOC_LO16,
33348 +
33349 +/* High 16 bits of 32-bit pc-relative value */
33350 + BFD_RELOC_HI16_PCREL,
33351 +
33352 +/* High 16 bits of 32-bit pc-relative value, adjusted */
33353 + BFD_RELOC_HI16_S_PCREL,
33354 +
33355 +/* Low 16 bits of pc-relative value */
33356 + BFD_RELOC_LO16_PCREL,
33357 +
33358 +/* MIPS16 high 16 bits of 32-bit value. */
33359 + BFD_RELOC_MIPS16_HI16,
33360 +
33361 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
33362 +extended and added to form the final result. If the low 16
33363 +bits form a negative number, we need to add one to the high value
33364 +to compensate for the borrow when the low bits are added. */
33365 + BFD_RELOC_MIPS16_HI16_S,
33366 +
33367 +/* MIPS16 low 16 bits. */
33368 + BFD_RELOC_MIPS16_LO16,
33369 +
33370 +/* Relocation against a MIPS literal section. */
33371 + BFD_RELOC_MIPS_LITERAL,
33372 +
33373 +/* MIPS ELF relocations. */
33374 + BFD_RELOC_MIPS_GOT16,
33375 + BFD_RELOC_MIPS_CALL16,
33376 + BFD_RELOC_MIPS_GOT_HI16,
33377 + BFD_RELOC_MIPS_GOT_LO16,
33378 + BFD_RELOC_MIPS_CALL_HI16,
33379 + BFD_RELOC_MIPS_CALL_LO16,
33380 + BFD_RELOC_MIPS_SUB,
33381 + BFD_RELOC_MIPS_GOT_PAGE,
33382 + BFD_RELOC_MIPS_GOT_OFST,
33383 + BFD_RELOC_MIPS_GOT_DISP,
33384 + BFD_RELOC_MIPS_SHIFT5,
33385 + BFD_RELOC_MIPS_SHIFT6,
33386 + BFD_RELOC_MIPS_INSERT_A,
33387 + BFD_RELOC_MIPS_INSERT_B,
33388 + BFD_RELOC_MIPS_DELETE,
33389 + BFD_RELOC_MIPS_HIGHEST,
33390 + BFD_RELOC_MIPS_HIGHER,
33391 + BFD_RELOC_MIPS_SCN_DISP,
33392 + BFD_RELOC_MIPS_REL16,
33393 + BFD_RELOC_MIPS_RELGOT,
33394 + BFD_RELOC_MIPS_JALR,
33395 + BFD_RELOC_MIPS_TLS_DTPMOD32,
33396 + BFD_RELOC_MIPS_TLS_DTPREL32,
33397 + BFD_RELOC_MIPS_TLS_DTPMOD64,
33398 + BFD_RELOC_MIPS_TLS_DTPREL64,
33399 + BFD_RELOC_MIPS_TLS_GD,
33400 + BFD_RELOC_MIPS_TLS_LDM,
33401 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
33402 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
33403 + BFD_RELOC_MIPS_TLS_GOTTPREL,
33404 + BFD_RELOC_MIPS_TLS_TPREL32,
33405 + BFD_RELOC_MIPS_TLS_TPREL64,
33406 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
33407 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
33408 +
33409 +
33410 +/* MIPS ELF relocations (VxWorks extensions). */
33411 + BFD_RELOC_MIPS_COPY,
33412 + BFD_RELOC_MIPS_JUMP_SLOT,
33413 +
33414 +
33415 +/* Fujitsu Frv Relocations. */
33416 + BFD_RELOC_FRV_LABEL16,
33417 + BFD_RELOC_FRV_LABEL24,
33418 + BFD_RELOC_FRV_LO16,
33419 + BFD_RELOC_FRV_HI16,
33420 + BFD_RELOC_FRV_GPREL12,
33421 + BFD_RELOC_FRV_GPRELU12,
33422 + BFD_RELOC_FRV_GPREL32,
33423 + BFD_RELOC_FRV_GPRELHI,
33424 + BFD_RELOC_FRV_GPRELLO,
33425 + BFD_RELOC_FRV_GOT12,
33426 + BFD_RELOC_FRV_GOTHI,
33427 + BFD_RELOC_FRV_GOTLO,
33428 + BFD_RELOC_FRV_FUNCDESC,
33429 + BFD_RELOC_FRV_FUNCDESC_GOT12,
33430 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
33431 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
33432 + BFD_RELOC_FRV_FUNCDESC_VALUE,
33433 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
33434 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
33435 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
33436 + BFD_RELOC_FRV_GOTOFF12,
33437 + BFD_RELOC_FRV_GOTOFFHI,
33438 + BFD_RELOC_FRV_GOTOFFLO,
33439 + BFD_RELOC_FRV_GETTLSOFF,
33440 + BFD_RELOC_FRV_TLSDESC_VALUE,
33441 + BFD_RELOC_FRV_GOTTLSDESC12,
33442 + BFD_RELOC_FRV_GOTTLSDESCHI,
33443 + BFD_RELOC_FRV_GOTTLSDESCLO,
33444 + BFD_RELOC_FRV_TLSMOFF12,
33445 + BFD_RELOC_FRV_TLSMOFFHI,
33446 + BFD_RELOC_FRV_TLSMOFFLO,
33447 + BFD_RELOC_FRV_GOTTLSOFF12,
33448 + BFD_RELOC_FRV_GOTTLSOFFHI,
33449 + BFD_RELOC_FRV_GOTTLSOFFLO,
33450 + BFD_RELOC_FRV_TLSOFF,
33451 + BFD_RELOC_FRV_TLSDESC_RELAX,
33452 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
33453 + BFD_RELOC_FRV_TLSOFF_RELAX,
33454 + BFD_RELOC_FRV_TLSMOFF,
33455 +
33456 +
33457 +/* This is a 24bit GOT-relative reloc for the mn10300. */
33458 + BFD_RELOC_MN10300_GOTOFF24,
33459 +
33460 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
33461 +in the instruction. */
33462 + BFD_RELOC_MN10300_GOT32,
33463 +
33464 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
33465 +in the instruction. */
33466 + BFD_RELOC_MN10300_GOT24,
33467 +
33468 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
33469 +in the instruction. */
33470 + BFD_RELOC_MN10300_GOT16,
33471 +
33472 +/* Copy symbol at runtime. */
33473 + BFD_RELOC_MN10300_COPY,
33474 +
33475 +/* Create GOT entry. */
33476 + BFD_RELOC_MN10300_GLOB_DAT,
33477 +
33478 +/* Create PLT entry. */
33479 + BFD_RELOC_MN10300_JMP_SLOT,
33480 +
33481 +/* Adjust by program base. */
33482 + BFD_RELOC_MN10300_RELATIVE,
33483 +
33484 +
33485 +/* i386/elf relocations */
33486 + BFD_RELOC_386_GOT32,
33487 + BFD_RELOC_386_PLT32,
33488 + BFD_RELOC_386_COPY,
33489 + BFD_RELOC_386_GLOB_DAT,
33490 + BFD_RELOC_386_JUMP_SLOT,
33491 + BFD_RELOC_386_RELATIVE,
33492 + BFD_RELOC_386_GOTOFF,
33493 + BFD_RELOC_386_GOTPC,
33494 + BFD_RELOC_386_TLS_TPOFF,
33495 + BFD_RELOC_386_TLS_IE,
33496 + BFD_RELOC_386_TLS_GOTIE,
33497 + BFD_RELOC_386_TLS_LE,
33498 + BFD_RELOC_386_TLS_GD,
33499 + BFD_RELOC_386_TLS_LDM,
33500 + BFD_RELOC_386_TLS_LDO_32,
33501 + BFD_RELOC_386_TLS_IE_32,
33502 + BFD_RELOC_386_TLS_LE_32,
33503 + BFD_RELOC_386_TLS_DTPMOD32,
33504 + BFD_RELOC_386_TLS_DTPOFF32,
33505 + BFD_RELOC_386_TLS_TPOFF32,
33506 + BFD_RELOC_386_TLS_GOTDESC,
33507 + BFD_RELOC_386_TLS_DESC_CALL,
33508 + BFD_RELOC_386_TLS_DESC,
33509 +
33510 +/* x86-64/elf relocations */
33511 + BFD_RELOC_X86_64_GOT32,
33512 + BFD_RELOC_X86_64_PLT32,
33513 + BFD_RELOC_X86_64_COPY,
33514 + BFD_RELOC_X86_64_GLOB_DAT,
33515 + BFD_RELOC_X86_64_JUMP_SLOT,
33516 + BFD_RELOC_X86_64_RELATIVE,
33517 + BFD_RELOC_X86_64_GOTPCREL,
33518 + BFD_RELOC_X86_64_32S,
33519 + BFD_RELOC_X86_64_DTPMOD64,
33520 + BFD_RELOC_X86_64_DTPOFF64,
33521 + BFD_RELOC_X86_64_TPOFF64,
33522 + BFD_RELOC_X86_64_TLSGD,
33523 + BFD_RELOC_X86_64_TLSLD,
33524 + BFD_RELOC_X86_64_DTPOFF32,
33525 + BFD_RELOC_X86_64_GOTTPOFF,
33526 + BFD_RELOC_X86_64_TPOFF32,
33527 + BFD_RELOC_X86_64_GOTOFF64,
33528 + BFD_RELOC_X86_64_GOTPC32,
33529 + BFD_RELOC_X86_64_GOT64,
33530 + BFD_RELOC_X86_64_GOTPCREL64,
33531 + BFD_RELOC_X86_64_GOTPC64,
33532 + BFD_RELOC_X86_64_GOTPLT64,
33533 + BFD_RELOC_X86_64_PLTOFF64,
33534 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
33535 + BFD_RELOC_X86_64_TLSDESC_CALL,
33536 + BFD_RELOC_X86_64_TLSDESC,
33537 +
33538 +/* ns32k relocations */
33539 + BFD_RELOC_NS32K_IMM_8,
33540 + BFD_RELOC_NS32K_IMM_16,
33541 + BFD_RELOC_NS32K_IMM_32,
33542 + BFD_RELOC_NS32K_IMM_8_PCREL,
33543 + BFD_RELOC_NS32K_IMM_16_PCREL,
33544 + BFD_RELOC_NS32K_IMM_32_PCREL,
33545 + BFD_RELOC_NS32K_DISP_8,
33546 + BFD_RELOC_NS32K_DISP_16,
33547 + BFD_RELOC_NS32K_DISP_32,
33548 + BFD_RELOC_NS32K_DISP_8_PCREL,
33549 + BFD_RELOC_NS32K_DISP_16_PCREL,
33550 + BFD_RELOC_NS32K_DISP_32_PCREL,
33551 +
33552 +/* PDP11 relocations */
33553 + BFD_RELOC_PDP11_DISP_8_PCREL,
33554 + BFD_RELOC_PDP11_DISP_6_PCREL,
33555 +
33556 +/* Picojava relocs. Not all of these appear in object files. */
33557 + BFD_RELOC_PJ_CODE_HI16,
33558 + BFD_RELOC_PJ_CODE_LO16,
33559 + BFD_RELOC_PJ_CODE_DIR16,
33560 + BFD_RELOC_PJ_CODE_DIR32,
33561 + BFD_RELOC_PJ_CODE_REL16,
33562 + BFD_RELOC_PJ_CODE_REL32,
33563 +
33564 +/* Power(rs6000) and PowerPC relocations. */
33565 + BFD_RELOC_PPC_B26,
33566 + BFD_RELOC_PPC_BA26,
33567 + BFD_RELOC_PPC_TOC16,
33568 + BFD_RELOC_PPC_B16,
33569 + BFD_RELOC_PPC_B16_BRTAKEN,
33570 + BFD_RELOC_PPC_B16_BRNTAKEN,
33571 + BFD_RELOC_PPC_BA16,
33572 + BFD_RELOC_PPC_BA16_BRTAKEN,
33573 + BFD_RELOC_PPC_BA16_BRNTAKEN,
33574 + BFD_RELOC_PPC_COPY,
33575 + BFD_RELOC_PPC_GLOB_DAT,
33576 + BFD_RELOC_PPC_JMP_SLOT,
33577 + BFD_RELOC_PPC_RELATIVE,
33578 + BFD_RELOC_PPC_LOCAL24PC,
33579 + BFD_RELOC_PPC_EMB_NADDR32,
33580 + BFD_RELOC_PPC_EMB_NADDR16,
33581 + BFD_RELOC_PPC_EMB_NADDR16_LO,
33582 + BFD_RELOC_PPC_EMB_NADDR16_HI,
33583 + BFD_RELOC_PPC_EMB_NADDR16_HA,
33584 + BFD_RELOC_PPC_EMB_SDAI16,
33585 + BFD_RELOC_PPC_EMB_SDA2I16,
33586 + BFD_RELOC_PPC_EMB_SDA2REL,
33587 + BFD_RELOC_PPC_EMB_SDA21,
33588 + BFD_RELOC_PPC_EMB_MRKREF,
33589 + BFD_RELOC_PPC_EMB_RELSEC16,
33590 + BFD_RELOC_PPC_EMB_RELST_LO,
33591 + BFD_RELOC_PPC_EMB_RELST_HI,
33592 + BFD_RELOC_PPC_EMB_RELST_HA,
33593 + BFD_RELOC_PPC_EMB_BIT_FLD,
33594 + BFD_RELOC_PPC_EMB_RELSDA,
33595 + BFD_RELOC_PPC64_HIGHER,
33596 + BFD_RELOC_PPC64_HIGHER_S,
33597 + BFD_RELOC_PPC64_HIGHEST,
33598 + BFD_RELOC_PPC64_HIGHEST_S,
33599 + BFD_RELOC_PPC64_TOC16_LO,
33600 + BFD_RELOC_PPC64_TOC16_HI,
33601 + BFD_RELOC_PPC64_TOC16_HA,
33602 + BFD_RELOC_PPC64_TOC,
33603 + BFD_RELOC_PPC64_PLTGOT16,
33604 + BFD_RELOC_PPC64_PLTGOT16_LO,
33605 + BFD_RELOC_PPC64_PLTGOT16_HI,
33606 + BFD_RELOC_PPC64_PLTGOT16_HA,
33607 + BFD_RELOC_PPC64_ADDR16_DS,
33608 + BFD_RELOC_PPC64_ADDR16_LO_DS,
33609 + BFD_RELOC_PPC64_GOT16_DS,
33610 + BFD_RELOC_PPC64_GOT16_LO_DS,
33611 + BFD_RELOC_PPC64_PLT16_LO_DS,
33612 + BFD_RELOC_PPC64_SECTOFF_DS,
33613 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
33614 + BFD_RELOC_PPC64_TOC16_DS,
33615 + BFD_RELOC_PPC64_TOC16_LO_DS,
33616 + BFD_RELOC_PPC64_PLTGOT16_DS,
33617 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
33618 +
33619 +/* PowerPC and PowerPC64 thread-local storage relocations. */
33620 + BFD_RELOC_PPC_TLS,
33621 + BFD_RELOC_PPC_DTPMOD,
33622 + BFD_RELOC_PPC_TPREL16,
33623 + BFD_RELOC_PPC_TPREL16_LO,
33624 + BFD_RELOC_PPC_TPREL16_HI,
33625 + BFD_RELOC_PPC_TPREL16_HA,
33626 + BFD_RELOC_PPC_TPREL,
33627 + BFD_RELOC_PPC_DTPREL16,
33628 + BFD_RELOC_PPC_DTPREL16_LO,
33629 + BFD_RELOC_PPC_DTPREL16_HI,
33630 + BFD_RELOC_PPC_DTPREL16_HA,
33631 + BFD_RELOC_PPC_DTPREL,
33632 + BFD_RELOC_PPC_GOT_TLSGD16,
33633 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
33634 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
33635 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
33636 + BFD_RELOC_PPC_GOT_TLSLD16,
33637 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
33638 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
33639 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
33640 + BFD_RELOC_PPC_GOT_TPREL16,
33641 + BFD_RELOC_PPC_GOT_TPREL16_LO,
33642 + BFD_RELOC_PPC_GOT_TPREL16_HI,
33643 + BFD_RELOC_PPC_GOT_TPREL16_HA,
33644 + BFD_RELOC_PPC_GOT_DTPREL16,
33645 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
33646 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
33647 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
33648 + BFD_RELOC_PPC64_TPREL16_DS,
33649 + BFD_RELOC_PPC64_TPREL16_LO_DS,
33650 + BFD_RELOC_PPC64_TPREL16_HIGHER,
33651 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
33652 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
33653 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
33654 + BFD_RELOC_PPC64_DTPREL16_DS,
33655 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
33656 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
33657 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
33658 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
33659 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
33660 +
33661 +/* IBM 370/390 relocations */
33662 + BFD_RELOC_I370_D12,
33663 +
33664 +/* The type of reloc used to build a constructor table - at the moment
33665 +probably a 32 bit wide absolute relocation, but the target can choose.
33666 +It generally does map to one of the other relocation types. */
33667 + BFD_RELOC_CTOR,
33668 +
33669 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
33670 +not stored in the instruction. */
33671 + BFD_RELOC_ARM_PCREL_BRANCH,
33672 +
33673 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
33674 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33675 +field in the instruction. */
33676 + BFD_RELOC_ARM_PCREL_BLX,
33677 +
33678 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
33679 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
33680 +field in the instruction. */
33681 + BFD_RELOC_THUMB_PCREL_BLX,
33682 +
33683 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
33684 + BFD_RELOC_ARM_PCREL_CALL,
33685 +
33686 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
33687 + BFD_RELOC_ARM_PCREL_JUMP,
33688 +
33689 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
33690 +The lowest bit must be zero and is not stored in the instruction.
33691 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
33692 +"nn" one smaller in all cases. Note further that BRANCH23
33693 +corresponds to R_ARM_THM_CALL. */
33694 + BFD_RELOC_THUMB_PCREL_BRANCH7,
33695 + BFD_RELOC_THUMB_PCREL_BRANCH9,
33696 + BFD_RELOC_THUMB_PCREL_BRANCH12,
33697 + BFD_RELOC_THUMB_PCREL_BRANCH20,
33698 + BFD_RELOC_THUMB_PCREL_BRANCH23,
33699 + BFD_RELOC_THUMB_PCREL_BRANCH25,
33700 +
33701 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
33702 + BFD_RELOC_ARM_OFFSET_IMM,
33703 +
33704 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
33705 + BFD_RELOC_ARM_THUMB_OFFSET,
33706 +
33707 +/* Pc-relative or absolute relocation depending on target. Used for
33708 +entries in .init_array sections. */
33709 + BFD_RELOC_ARM_TARGET1,
33710 +
33711 +/* Read-only segment base relative address. */
33712 + BFD_RELOC_ARM_ROSEGREL32,
33713 +
33714 +/* Data segment base relative address. */
33715 + BFD_RELOC_ARM_SBREL32,
33716 +
33717 +/* This reloc is used for references to RTTI data from exception handling
33718 +tables. The actual definition depends on the target. It may be a
33719 +pc-relative or some form of GOT-indirect relocation. */
33720 + BFD_RELOC_ARM_TARGET2,
33721 +
33722 +/* 31-bit PC relative address. */
33723 + BFD_RELOC_ARM_PREL31,
33724 +
33725 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
33726 + BFD_RELOC_ARM_MOVW,
33727 + BFD_RELOC_ARM_MOVT,
33728 + BFD_RELOC_ARM_MOVW_PCREL,
33729 + BFD_RELOC_ARM_MOVT_PCREL,
33730 + BFD_RELOC_ARM_THUMB_MOVW,
33731 + BFD_RELOC_ARM_THUMB_MOVT,
33732 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
33733 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
33734 +
33735 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
33736 + BFD_RELOC_ARM_JUMP_SLOT,
33737 + BFD_RELOC_ARM_GLOB_DAT,
33738 + BFD_RELOC_ARM_GOT32,
33739 + BFD_RELOC_ARM_PLT32,
33740 + BFD_RELOC_ARM_RELATIVE,
33741 + BFD_RELOC_ARM_GOTOFF,
33742 + BFD_RELOC_ARM_GOTPC,
33743 +
33744 +/* ARM thread-local storage relocations. */
33745 + BFD_RELOC_ARM_TLS_GD32,
33746 + BFD_RELOC_ARM_TLS_LDO32,
33747 + BFD_RELOC_ARM_TLS_LDM32,
33748 + BFD_RELOC_ARM_TLS_DTPOFF32,
33749 + BFD_RELOC_ARM_TLS_DTPMOD32,
33750 + BFD_RELOC_ARM_TLS_TPOFF32,
33751 + BFD_RELOC_ARM_TLS_IE32,
33752 + BFD_RELOC_ARM_TLS_LE32,
33753 +
33754 +/* ARM group relocations. */
33755 + BFD_RELOC_ARM_ALU_PC_G0_NC,
33756 + BFD_RELOC_ARM_ALU_PC_G0,
33757 + BFD_RELOC_ARM_ALU_PC_G1_NC,
33758 + BFD_RELOC_ARM_ALU_PC_G1,
33759 + BFD_RELOC_ARM_ALU_PC_G2,
33760 + BFD_RELOC_ARM_LDR_PC_G0,
33761 + BFD_RELOC_ARM_LDR_PC_G1,
33762 + BFD_RELOC_ARM_LDR_PC_G2,
33763 + BFD_RELOC_ARM_LDRS_PC_G0,
33764 + BFD_RELOC_ARM_LDRS_PC_G1,
33765 + BFD_RELOC_ARM_LDRS_PC_G2,
33766 + BFD_RELOC_ARM_LDC_PC_G0,
33767 + BFD_RELOC_ARM_LDC_PC_G1,
33768 + BFD_RELOC_ARM_LDC_PC_G2,
33769 + BFD_RELOC_ARM_ALU_SB_G0_NC,
33770 + BFD_RELOC_ARM_ALU_SB_G0,
33771 + BFD_RELOC_ARM_ALU_SB_G1_NC,
33772 + BFD_RELOC_ARM_ALU_SB_G1,
33773 + BFD_RELOC_ARM_ALU_SB_G2,
33774 + BFD_RELOC_ARM_LDR_SB_G0,
33775 + BFD_RELOC_ARM_LDR_SB_G1,
33776 + BFD_RELOC_ARM_LDR_SB_G2,
33777 + BFD_RELOC_ARM_LDRS_SB_G0,
33778 + BFD_RELOC_ARM_LDRS_SB_G1,
33779 + BFD_RELOC_ARM_LDRS_SB_G2,
33780 + BFD_RELOC_ARM_LDC_SB_G0,
33781 + BFD_RELOC_ARM_LDC_SB_G1,
33782 + BFD_RELOC_ARM_LDC_SB_G2,
33783 +
33784 +/* These relocs are only used within the ARM assembler. They are not
33785 +(at present) written to any object files. */
33786 + BFD_RELOC_ARM_IMMEDIATE,
33787 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
33788 + BFD_RELOC_ARM_T32_IMMEDIATE,
33789 + BFD_RELOC_ARM_T32_ADD_IMM,
33790 + BFD_RELOC_ARM_T32_IMM12,
33791 + BFD_RELOC_ARM_T32_ADD_PC12,
33792 + BFD_RELOC_ARM_SHIFT_IMM,
33793 + BFD_RELOC_ARM_SMC,
33794 + BFD_RELOC_ARM_SWI,
33795 + BFD_RELOC_ARM_MULTI,
33796 + BFD_RELOC_ARM_CP_OFF_IMM,
33797 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
33798 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
33799 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
33800 + BFD_RELOC_ARM_ADR_IMM,
33801 + BFD_RELOC_ARM_LDR_IMM,
33802 + BFD_RELOC_ARM_LITERAL,
33803 + BFD_RELOC_ARM_IN_POOL,
33804 + BFD_RELOC_ARM_OFFSET_IMM8,
33805 + BFD_RELOC_ARM_T32_OFFSET_U8,
33806 + BFD_RELOC_ARM_T32_OFFSET_IMM,
33807 + BFD_RELOC_ARM_HWLITERAL,
33808 + BFD_RELOC_ARM_THUMB_ADD,
33809 + BFD_RELOC_ARM_THUMB_IMM,
33810 + BFD_RELOC_ARM_THUMB_SHIFT,
33811 +
33812 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
33813 + BFD_RELOC_SH_PCDISP8BY2,
33814 + BFD_RELOC_SH_PCDISP12BY2,
33815 + BFD_RELOC_SH_IMM3,
33816 + BFD_RELOC_SH_IMM3U,
33817 + BFD_RELOC_SH_DISP12,
33818 + BFD_RELOC_SH_DISP12BY2,
33819 + BFD_RELOC_SH_DISP12BY4,
33820 + BFD_RELOC_SH_DISP12BY8,
33821 + BFD_RELOC_SH_DISP20,
33822 + BFD_RELOC_SH_DISP20BY8,
33823 + BFD_RELOC_SH_IMM4,
33824 + BFD_RELOC_SH_IMM4BY2,
33825 + BFD_RELOC_SH_IMM4BY4,
33826 + BFD_RELOC_SH_IMM8,
33827 + BFD_RELOC_SH_IMM8BY2,
33828 + BFD_RELOC_SH_IMM8BY4,
33829 + BFD_RELOC_SH_PCRELIMM8BY2,
33830 + BFD_RELOC_SH_PCRELIMM8BY4,
33831 + BFD_RELOC_SH_SWITCH16,
33832 + BFD_RELOC_SH_SWITCH32,
33833 + BFD_RELOC_SH_USES,
33834 + BFD_RELOC_SH_COUNT,
33835 + BFD_RELOC_SH_ALIGN,
33836 + BFD_RELOC_SH_CODE,
33837 + BFD_RELOC_SH_DATA,
33838 + BFD_RELOC_SH_LABEL,
33839 + BFD_RELOC_SH_LOOP_START,
33840 + BFD_RELOC_SH_LOOP_END,
33841 + BFD_RELOC_SH_COPY,
33842 + BFD_RELOC_SH_GLOB_DAT,
33843 + BFD_RELOC_SH_JMP_SLOT,
33844 + BFD_RELOC_SH_RELATIVE,
33845 + BFD_RELOC_SH_GOTPC,
33846 + BFD_RELOC_SH_GOT_LOW16,
33847 + BFD_RELOC_SH_GOT_MEDLOW16,
33848 + BFD_RELOC_SH_GOT_MEDHI16,
33849 + BFD_RELOC_SH_GOT_HI16,
33850 + BFD_RELOC_SH_GOTPLT_LOW16,
33851 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
33852 + BFD_RELOC_SH_GOTPLT_MEDHI16,
33853 + BFD_RELOC_SH_GOTPLT_HI16,
33854 + BFD_RELOC_SH_PLT_LOW16,
33855 + BFD_RELOC_SH_PLT_MEDLOW16,
33856 + BFD_RELOC_SH_PLT_MEDHI16,
33857 + BFD_RELOC_SH_PLT_HI16,
33858 + BFD_RELOC_SH_GOTOFF_LOW16,
33859 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
33860 + BFD_RELOC_SH_GOTOFF_MEDHI16,
33861 + BFD_RELOC_SH_GOTOFF_HI16,
33862 + BFD_RELOC_SH_GOTPC_LOW16,
33863 + BFD_RELOC_SH_GOTPC_MEDLOW16,
33864 + BFD_RELOC_SH_GOTPC_MEDHI16,
33865 + BFD_RELOC_SH_GOTPC_HI16,
33866 + BFD_RELOC_SH_COPY64,
33867 + BFD_RELOC_SH_GLOB_DAT64,
33868 + BFD_RELOC_SH_JMP_SLOT64,
33869 + BFD_RELOC_SH_RELATIVE64,
33870 + BFD_RELOC_SH_GOT10BY4,
33871 + BFD_RELOC_SH_GOT10BY8,
33872 + BFD_RELOC_SH_GOTPLT10BY4,
33873 + BFD_RELOC_SH_GOTPLT10BY8,
33874 + BFD_RELOC_SH_GOTPLT32,
33875 + BFD_RELOC_SH_SHMEDIA_CODE,
33876 + BFD_RELOC_SH_IMMU5,
33877 + BFD_RELOC_SH_IMMS6,
33878 + BFD_RELOC_SH_IMMS6BY32,
33879 + BFD_RELOC_SH_IMMU6,
33880 + BFD_RELOC_SH_IMMS10,
33881 + BFD_RELOC_SH_IMMS10BY2,
33882 + BFD_RELOC_SH_IMMS10BY4,
33883 + BFD_RELOC_SH_IMMS10BY8,
33884 + BFD_RELOC_SH_IMMS16,
33885 + BFD_RELOC_SH_IMMU16,
33886 + BFD_RELOC_SH_IMM_LOW16,
33887 + BFD_RELOC_SH_IMM_LOW16_PCREL,
33888 + BFD_RELOC_SH_IMM_MEDLOW16,
33889 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
33890 + BFD_RELOC_SH_IMM_MEDHI16,
33891 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
33892 + BFD_RELOC_SH_IMM_HI16,
33893 + BFD_RELOC_SH_IMM_HI16_PCREL,
33894 + BFD_RELOC_SH_PT_16,
33895 + BFD_RELOC_SH_TLS_GD_32,
33896 + BFD_RELOC_SH_TLS_LD_32,
33897 + BFD_RELOC_SH_TLS_LDO_32,
33898 + BFD_RELOC_SH_TLS_IE_32,
33899 + BFD_RELOC_SH_TLS_LE_32,
33900 + BFD_RELOC_SH_TLS_DTPMOD32,
33901 + BFD_RELOC_SH_TLS_DTPOFF32,
33902 + BFD_RELOC_SH_TLS_TPOFF32,
33903 +
33904 +/* ARC Cores relocs.
33905 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
33906 +not stored in the instruction. The high 20 bits are installed in bits 26
33907 +through 7 of the instruction. */
33908 + BFD_RELOC_ARC_B22_PCREL,
33909 +
33910 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
33911 +stored in the instruction. The high 24 bits are installed in bits 23
33912 +through 0. */
33913 + BFD_RELOC_ARC_B26,
33914 +
33915 +/* ADI Blackfin 16 bit immediate absolute reloc. */
33916 + BFD_RELOC_BFIN_16_IMM,
33917 +
33918 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
33919 + BFD_RELOC_BFIN_16_HIGH,
33920 +
33921 +/* ADI Blackfin 'a' part of LSETUP. */
33922 + BFD_RELOC_BFIN_4_PCREL,
33923 +
33924 +/* ADI Blackfin. */
33925 + BFD_RELOC_BFIN_5_PCREL,
33926 +
33927 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
33928 + BFD_RELOC_BFIN_16_LOW,
33929 +
33930 +/* ADI Blackfin. */
33931 + BFD_RELOC_BFIN_10_PCREL,
33932 +
33933 +/* ADI Blackfin 'b' part of LSETUP. */
33934 + BFD_RELOC_BFIN_11_PCREL,
33935 +
33936 +/* ADI Blackfin. */
33937 + BFD_RELOC_BFIN_12_PCREL_JUMP,
33938 +
33939 +/* ADI Blackfin Short jump, pcrel. */
33940 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
33941 +
33942 +/* ADI Blackfin Call.x not implemented. */
33943 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
33944 +
33945 +/* ADI Blackfin Long Jump pcrel. */
33946 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
33947 +
33948 +/* ADI Blackfin FD-PIC relocations. */
33949 + BFD_RELOC_BFIN_GOT17M4,
33950 + BFD_RELOC_BFIN_GOTHI,
33951 + BFD_RELOC_BFIN_GOTLO,
33952 + BFD_RELOC_BFIN_FUNCDESC,
33953 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
33954 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
33955 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
33956 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
33957 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
33958 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
33959 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
33960 + BFD_RELOC_BFIN_GOTOFF17M4,
33961 + BFD_RELOC_BFIN_GOTOFFHI,
33962 + BFD_RELOC_BFIN_GOTOFFLO,
33963 +
33964 +/* ADI Blackfin GOT relocation. */
33965 + BFD_RELOC_BFIN_GOT,
33966 +
33967 +/* ADI Blackfin PLTPC relocation. */
33968 + BFD_RELOC_BFIN_PLTPC,
33969 +
33970 +/* ADI Blackfin arithmetic relocation. */
33971 + BFD_ARELOC_BFIN_PUSH,
33972 +
33973 +/* ADI Blackfin arithmetic relocation. */
33974 + BFD_ARELOC_BFIN_CONST,
33975 +
33976 +/* ADI Blackfin arithmetic relocation. */
33977 + BFD_ARELOC_BFIN_ADD,
33978 +
33979 +/* ADI Blackfin arithmetic relocation. */
33980 + BFD_ARELOC_BFIN_SUB,
33981 +
33982 +/* ADI Blackfin arithmetic relocation. */
33983 + BFD_ARELOC_BFIN_MULT,
33984 +
33985 +/* ADI Blackfin arithmetic relocation. */
33986 + BFD_ARELOC_BFIN_DIV,
33987 +
33988 +/* ADI Blackfin arithmetic relocation. */
33989 + BFD_ARELOC_BFIN_MOD,
33990 +
33991 +/* ADI Blackfin arithmetic relocation. */
33992 + BFD_ARELOC_BFIN_LSHIFT,
33993 +
33994 +/* ADI Blackfin arithmetic relocation. */
33995 + BFD_ARELOC_BFIN_RSHIFT,
33996 +
33997 +/* ADI Blackfin arithmetic relocation. */
33998 + BFD_ARELOC_BFIN_AND,
33999 +
34000 +/* ADI Blackfin arithmetic relocation. */
34001 + BFD_ARELOC_BFIN_OR,
34002 +
34003 +/* ADI Blackfin arithmetic relocation. */
34004 + BFD_ARELOC_BFIN_XOR,
34005 +
34006 +/* ADI Blackfin arithmetic relocation. */
34007 + BFD_ARELOC_BFIN_LAND,
34008 +
34009 +/* ADI Blackfin arithmetic relocation. */
34010 + BFD_ARELOC_BFIN_LOR,
34011 +
34012 +/* ADI Blackfin arithmetic relocation. */
34013 + BFD_ARELOC_BFIN_LEN,
34014 +
34015 +/* ADI Blackfin arithmetic relocation. */
34016 + BFD_ARELOC_BFIN_NEG,
34017 +
34018 +/* ADI Blackfin arithmetic relocation. */
34019 + BFD_ARELOC_BFIN_COMP,
34020 +
34021 +/* ADI Blackfin arithmetic relocation. */
34022 + BFD_ARELOC_BFIN_PAGE,
34023 +
34024 +/* ADI Blackfin arithmetic relocation. */
34025 + BFD_ARELOC_BFIN_HWPAGE,
34026 +
34027 +/* ADI Blackfin arithmetic relocation. */
34028 + BFD_ARELOC_BFIN_ADDR,
34029 +
34030 +/* Mitsubishi D10V relocs.
34031 +This is a 10-bit reloc with the right 2 bits
34032 +assumed to be 0. */
34033 + BFD_RELOC_D10V_10_PCREL_R,
34034 +
34035 +/* Mitsubishi D10V relocs.
34036 +This is a 10-bit reloc with the right 2 bits
34037 +assumed to be 0. This is the same as the previous reloc
34038 +except it is in the left container, i.e.,
34039 +shifted left 15 bits. */
34040 + BFD_RELOC_D10V_10_PCREL_L,
34041 +
34042 +/* This is an 18-bit reloc with the right 2 bits
34043 +assumed to be 0. */
34044 + BFD_RELOC_D10V_18,
34045 +
34046 +/* This is an 18-bit reloc with the right 2 bits
34047 +assumed to be 0. */
34048 + BFD_RELOC_D10V_18_PCREL,
34049 +
34050 +/* Mitsubishi D30V relocs.
34051 +This is a 6-bit absolute reloc. */
34052 + BFD_RELOC_D30V_6,
34053 +
34054 +/* This is a 6-bit pc-relative reloc with
34055 +the right 3 bits assumed to be 0. */
34056 + BFD_RELOC_D30V_9_PCREL,
34057 +
34058 +/* This is a 6-bit pc-relative reloc with
34059 +the right 3 bits assumed to be 0. Same
34060 +as the previous reloc but on the right side
34061 +of the container. */
34062 + BFD_RELOC_D30V_9_PCREL_R,
34063 +
34064 +/* This is a 12-bit absolute reloc with the
34065 +right 3 bitsassumed to be 0. */
34066 + BFD_RELOC_D30V_15,
34067 +
34068 +/* This is a 12-bit pc-relative reloc with
34069 +the right 3 bits assumed to be 0. */
34070 + BFD_RELOC_D30V_15_PCREL,
34071 +
34072 +/* This is a 12-bit pc-relative reloc with
34073 +the right 3 bits assumed to be 0. Same
34074 +as the previous reloc but on the right side
34075 +of the container. */
34076 + BFD_RELOC_D30V_15_PCREL_R,
34077 +
34078 +/* This is an 18-bit absolute reloc with
34079 +the right 3 bits assumed to be 0. */
34080 + BFD_RELOC_D30V_21,
34081 +
34082 +/* This is an 18-bit pc-relative reloc with
34083 +the right 3 bits assumed to be 0. */
34084 + BFD_RELOC_D30V_21_PCREL,
34085 +
34086 +/* This is an 18-bit pc-relative reloc with
34087 +the right 3 bits assumed to be 0. Same
34088 +as the previous reloc but on the right side
34089 +of the container. */
34090 + BFD_RELOC_D30V_21_PCREL_R,
34091 +
34092 +/* This is a 32-bit absolute reloc. */
34093 + BFD_RELOC_D30V_32,
34094 +
34095 +/* This is a 32-bit pc-relative reloc. */
34096 + BFD_RELOC_D30V_32_PCREL,
34097 +
34098 +/* DLX relocs */
34099 + BFD_RELOC_DLX_HI16_S,
34100 +
34101 +/* DLX relocs */
34102 + BFD_RELOC_DLX_LO16,
34103 +
34104 +/* DLX relocs */
34105 + BFD_RELOC_DLX_JMP26,
34106 +
34107 +/* Renesas M16C/M32C Relocations. */
34108 + BFD_RELOC_M32C_HI8,
34109 + BFD_RELOC_M32C_RL_JUMP,
34110 + BFD_RELOC_M32C_RL_1ADDR,
34111 + BFD_RELOC_M32C_RL_2ADDR,
34112 +
34113 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
34114 +This is a 24 bit absolute address. */
34115 + BFD_RELOC_M32R_24,
34116 +
34117 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
34118 + BFD_RELOC_M32R_10_PCREL,
34119 +
34120 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
34121 + BFD_RELOC_M32R_18_PCREL,
34122 +
34123 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
34124 + BFD_RELOC_M32R_26_PCREL,
34125 +
34126 +/* This is a 16-bit reloc containing the high 16 bits of an address
34127 +used when the lower 16 bits are treated as unsigned. */
34128 + BFD_RELOC_M32R_HI16_ULO,
34129 +
34130 +/* This is a 16-bit reloc containing the high 16 bits of an address
34131 +used when the lower 16 bits are treated as signed. */
34132 + BFD_RELOC_M32R_HI16_SLO,
34133 +
34134 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
34135 + BFD_RELOC_M32R_LO16,
34136 +
34137 +/* This is a 16-bit reloc containing the small data area offset for use in
34138 +add3, load, and store instructions. */
34139 + BFD_RELOC_M32R_SDA16,
34140 +
34141 +/* For PIC. */
34142 + BFD_RELOC_M32R_GOT24,
34143 + BFD_RELOC_M32R_26_PLTREL,
34144 + BFD_RELOC_M32R_COPY,
34145 + BFD_RELOC_M32R_GLOB_DAT,
34146 + BFD_RELOC_M32R_JMP_SLOT,
34147 + BFD_RELOC_M32R_RELATIVE,
34148 + BFD_RELOC_M32R_GOTOFF,
34149 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
34150 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
34151 + BFD_RELOC_M32R_GOTOFF_LO,
34152 + BFD_RELOC_M32R_GOTPC24,
34153 + BFD_RELOC_M32R_GOT16_HI_ULO,
34154 + BFD_RELOC_M32R_GOT16_HI_SLO,
34155 + BFD_RELOC_M32R_GOT16_LO,
34156 + BFD_RELOC_M32R_GOTPC_HI_ULO,
34157 + BFD_RELOC_M32R_GOTPC_HI_SLO,
34158 + BFD_RELOC_M32R_GOTPC_LO,
34159 +
34160 +/* This is a 9-bit reloc */
34161 + BFD_RELOC_V850_9_PCREL,
34162 +
34163 +/* This is a 22-bit reloc */
34164 + BFD_RELOC_V850_22_PCREL,
34165 +
34166 +/* This is a 16 bit offset from the short data area pointer. */
34167 + BFD_RELOC_V850_SDA_16_16_OFFSET,
34168 +
34169 +/* This is a 16 bit offset (of which only 15 bits are used) from the
34170 +short data area pointer. */
34171 + BFD_RELOC_V850_SDA_15_16_OFFSET,
34172 +
34173 +/* This is a 16 bit offset from the zero data area pointer. */
34174 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
34175 +
34176 +/* This is a 16 bit offset (of which only 15 bits are used) from the
34177 +zero data area pointer. */
34178 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
34179 +
34180 +/* This is an 8 bit offset (of which only 6 bits are used) from the
34181 +tiny data area pointer. */
34182 + BFD_RELOC_V850_TDA_6_8_OFFSET,
34183 +
34184 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
34185 +data area pointer. */
34186 + BFD_RELOC_V850_TDA_7_8_OFFSET,
34187 +
34188 +/* This is a 7 bit offset from the tiny data area pointer. */
34189 + BFD_RELOC_V850_TDA_7_7_OFFSET,
34190 +
34191 +/* This is a 16 bit offset from the tiny data area pointer. */
34192 + BFD_RELOC_V850_TDA_16_16_OFFSET,
34193 +
34194 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
34195 +data area pointer. */
34196 + BFD_RELOC_V850_TDA_4_5_OFFSET,
34197 +
34198 +/* This is a 4 bit offset from the tiny data area pointer. */
34199 + BFD_RELOC_V850_TDA_4_4_OFFSET,
34200 +
34201 +/* This is a 16 bit offset from the short data area pointer, with the
34202 +bits placed non-contiguously in the instruction. */
34203 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
34204 +
34205 +/* This is a 16 bit offset from the zero data area pointer, with the
34206 +bits placed non-contiguously in the instruction. */
34207 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
34208 +
34209 +/* This is a 6 bit offset from the call table base pointer. */
34210 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
34211 +
34212 +/* This is a 16 bit offset from the call table base pointer. */
34213 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
34214 +
34215 +/* Used for relaxing indirect function calls. */
34216 + BFD_RELOC_V850_LONGCALL,
34217 +
34218 +/* Used for relaxing indirect jumps. */
34219 + BFD_RELOC_V850_LONGJUMP,
34220 +
34221 +/* Used to maintain alignment whilst relaxing. */
34222 + BFD_RELOC_V850_ALIGN,
34223 +
34224 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
34225 +instructions. */
34226 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
34227 +
34228 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
34229 +instruction. */
34230 + BFD_RELOC_MN10300_32_PCREL,
34231 +
34232 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
34233 +instruction. */
34234 + BFD_RELOC_MN10300_16_PCREL,
34235 +
34236 +/* This is a 8bit DP reloc for the tms320c30, where the most
34237 +significant 8 bits of a 24 bit word are placed into the least
34238 +significant 8 bits of the opcode. */
34239 + BFD_RELOC_TIC30_LDP,
34240 +
34241 +/* This is a 7bit reloc for the tms320c54x, where the least
34242 +significant 7 bits of a 16 bit word are placed into the least
34243 +significant 7 bits of the opcode. */
34244 + BFD_RELOC_TIC54X_PARTLS7,
34245 +
34246 +/* This is a 9bit DP reloc for the tms320c54x, where the most
34247 +significant 9 bits of a 16 bit word are placed into the least
34248 +significant 9 bits of the opcode. */
34249 + BFD_RELOC_TIC54X_PARTMS9,
34250 +
34251 +/* This is an extended address 23-bit reloc for the tms320c54x. */
34252 + BFD_RELOC_TIC54X_23,
34253 +
34254 +/* This is a 16-bit reloc for the tms320c54x, where the least
34255 +significant 16 bits of a 23-bit extended address are placed into
34256 +the opcode. */
34257 + BFD_RELOC_TIC54X_16_OF_23,
34258 +
34259 +/* This is a reloc for the tms320c54x, where the most
34260 +significant 7 bits of a 23-bit extended address are placed into
34261 +the opcode. */
34262 + BFD_RELOC_TIC54X_MS7_OF_23,
34263 +
34264 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
34265 + BFD_RELOC_FR30_48,
34266 +
34267 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
34268 +two sections. */
34269 + BFD_RELOC_FR30_20,
34270 +
34271 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
34272 +4 bits. */
34273 + BFD_RELOC_FR30_6_IN_4,
34274 +
34275 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
34276 +into 8 bits. */
34277 + BFD_RELOC_FR30_8_IN_8,
34278 +
34279 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
34280 +into 8 bits. */
34281 + BFD_RELOC_FR30_9_IN_8,
34282 +
34283 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
34284 +into 8 bits. */
34285 + BFD_RELOC_FR30_10_IN_8,
34286 +
34287 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
34288 +short offset into 8 bits. */
34289 + BFD_RELOC_FR30_9_PCREL,
34290 +
34291 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
34292 +short offset into 11 bits. */
34293 + BFD_RELOC_FR30_12_PCREL,
34294 +
34295 +/* Motorola Mcore relocations. */
34296 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
34297 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
34298 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
34299 + BFD_RELOC_MCORE_PCREL_32,
34300 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
34301 + BFD_RELOC_MCORE_RVA,
34302 +
34303 +/* Toshiba Media Processor Relocations. */
34304 + BFD_RELOC_MEP_8,
34305 + BFD_RELOC_MEP_16,
34306 + BFD_RELOC_MEP_32,
34307 + BFD_RELOC_MEP_PCREL8A2,
34308 + BFD_RELOC_MEP_PCREL12A2,
34309 + BFD_RELOC_MEP_PCREL17A2,
34310 + BFD_RELOC_MEP_PCREL24A2,
34311 + BFD_RELOC_MEP_PCABS24A2,
34312 + BFD_RELOC_MEP_LOW16,
34313 + BFD_RELOC_MEP_HI16U,
34314 + BFD_RELOC_MEP_HI16S,
34315 + BFD_RELOC_MEP_GPREL,
34316 + BFD_RELOC_MEP_TPREL,
34317 + BFD_RELOC_MEP_TPREL7,
34318 + BFD_RELOC_MEP_TPREL7A2,
34319 + BFD_RELOC_MEP_TPREL7A4,
34320 + BFD_RELOC_MEP_UIMM24,
34321 + BFD_RELOC_MEP_ADDR24A4,
34322 + BFD_RELOC_MEP_GNU_VTINHERIT,
34323 + BFD_RELOC_MEP_GNU_VTENTRY,
34324 +
34325 +
34326 +/* These are relocations for the GETA instruction. */
34327 + BFD_RELOC_MMIX_GETA,
34328 + BFD_RELOC_MMIX_GETA_1,
34329 + BFD_RELOC_MMIX_GETA_2,
34330 + BFD_RELOC_MMIX_GETA_3,
34331 +
34332 +/* These are relocations for a conditional branch instruction. */
34333 + BFD_RELOC_MMIX_CBRANCH,
34334 + BFD_RELOC_MMIX_CBRANCH_J,
34335 + BFD_RELOC_MMIX_CBRANCH_1,
34336 + BFD_RELOC_MMIX_CBRANCH_2,
34337 + BFD_RELOC_MMIX_CBRANCH_3,
34338 +
34339 +/* These are relocations for the PUSHJ instruction. */
34340 + BFD_RELOC_MMIX_PUSHJ,
34341 + BFD_RELOC_MMIX_PUSHJ_1,
34342 + BFD_RELOC_MMIX_PUSHJ_2,
34343 + BFD_RELOC_MMIX_PUSHJ_3,
34344 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
34345 +
34346 +/* These are relocations for the JMP instruction. */
34347 + BFD_RELOC_MMIX_JMP,
34348 + BFD_RELOC_MMIX_JMP_1,
34349 + BFD_RELOC_MMIX_JMP_2,
34350 + BFD_RELOC_MMIX_JMP_3,
34351 +
34352 +/* This is a relocation for a relative address as in a GETA instruction or
34353 +a branch. */
34354 + BFD_RELOC_MMIX_ADDR19,
34355 +
34356 +/* This is a relocation for a relative address as in a JMP instruction. */
34357 + BFD_RELOC_MMIX_ADDR27,
34358 +
34359 +/* This is a relocation for an instruction field that may be a general
34360 +register or a value 0..255. */
34361 + BFD_RELOC_MMIX_REG_OR_BYTE,
34362 +
34363 +/* This is a relocation for an instruction field that may be a general
34364 +register. */
34365 + BFD_RELOC_MMIX_REG,
34366 +
34367 +/* This is a relocation for two instruction fields holding a register and
34368 +an offset, the equivalent of the relocation. */
34369 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
34370 +
34371 +/* This relocation is an assertion that the expression is not allocated as
34372 +a global register. It does not modify contents. */
34373 + BFD_RELOC_MMIX_LOCAL,
34374 +
34375 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
34376 +short offset into 7 bits. */
34377 + BFD_RELOC_AVR_7_PCREL,
34378 +
34379 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
34380 +short offset into 12 bits. */
34381 + BFD_RELOC_AVR_13_PCREL,
34382 +
34383 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
34384 +program memory address) into 16 bits. */
34385 + BFD_RELOC_AVR_16_PM,
34386 +
34387 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
34388 +data memory address) into 8 bit immediate value of LDI insn. */
34389 + BFD_RELOC_AVR_LO8_LDI,
34390 +
34391 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34392 +of data memory address) into 8 bit immediate value of LDI insn. */
34393 + BFD_RELOC_AVR_HI8_LDI,
34394 +
34395 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34396 +of program memory address) into 8 bit immediate value of LDI insn. */
34397 + BFD_RELOC_AVR_HH8_LDI,
34398 +
34399 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34400 +of 32 bit value) into 8 bit immediate value of LDI insn. */
34401 + BFD_RELOC_AVR_MS8_LDI,
34402 +
34403 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34404 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
34405 + BFD_RELOC_AVR_LO8_LDI_NEG,
34406 +
34407 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34408 +(high 8 bit of data memory address) into 8 bit immediate value of
34409 +SUBI insn. */
34410 + BFD_RELOC_AVR_HI8_LDI_NEG,
34411 +
34412 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34413 +(most high 8 bit of program memory address) into 8 bit immediate value
34414 +of LDI or SUBI insn. */
34415 + BFD_RELOC_AVR_HH8_LDI_NEG,
34416 +
34417 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
34418 +of 32 bit value) into 8 bit immediate value of LDI insn. */
34419 + BFD_RELOC_AVR_MS8_LDI_NEG,
34420 +
34421 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
34422 +command address) into 8 bit immediate value of LDI insn. */
34423 + BFD_RELOC_AVR_LO8_LDI_PM,
34424 +
34425 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
34426 +(command address) into 8 bit immediate value of LDI insn. If the address
34427 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
34428 +in the lower 128k. */
34429 + BFD_RELOC_AVR_LO8_LDI_GS,
34430 +
34431 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34432 +of command address) into 8 bit immediate value of LDI insn. */
34433 + BFD_RELOC_AVR_HI8_LDI_PM,
34434 +
34435 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
34436 +of command address) into 8 bit immediate value of LDI insn. If the address
34437 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
34438 +below 128k. */
34439 + BFD_RELOC_AVR_HI8_LDI_GS,
34440 +
34441 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
34442 +of command address) into 8 bit immediate value of LDI insn. */
34443 + BFD_RELOC_AVR_HH8_LDI_PM,
34444 +
34445 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34446 +(usually command address) into 8 bit immediate value of SUBI insn. */
34447 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
34448 +
34449 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34450 +(high 8 bit of 16 bit command address) into 8 bit immediate value
34451 +of SUBI insn. */
34452 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
34453 +
34454 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
34455 +(high 6 bit of 22 bit command address) into 8 bit immediate
34456 +value of SUBI insn. */
34457 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
34458 +
34459 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
34460 +into 22 bits. */
34461 + BFD_RELOC_AVR_CALL,
34462 +
34463 +/* This is a 16 bit reloc for the AVR that stores all needed bits
34464 +for absolute addressing with ldi with overflow check to linktime */
34465 + BFD_RELOC_AVR_LDI,
34466 +
34467 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
34468 +instructions */
34469 + BFD_RELOC_AVR_6,
34470 +
34471 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
34472 +instructions */
34473 + BFD_RELOC_AVR_6_ADIW,
34474 +
34475 +/* Direct 12 bit. */
34476 + BFD_RELOC_390_12,
34477 +
34478 +/* 12 bit GOT offset. */
34479 + BFD_RELOC_390_GOT12,
34480 +
34481 +/* 32 bit PC relative PLT address. */
34482 + BFD_RELOC_390_PLT32,
34483 +
34484 +/* Copy symbol at runtime. */
34485 + BFD_RELOC_390_COPY,
34486 +
34487 +/* Create GOT entry. */
34488 + BFD_RELOC_390_GLOB_DAT,
34489 +
34490 +/* Create PLT entry. */
34491 + BFD_RELOC_390_JMP_SLOT,
34492 +
34493 +/* Adjust by program base. */
34494 + BFD_RELOC_390_RELATIVE,
34495 +
34496 +/* 32 bit PC relative offset to GOT. */
34497 + BFD_RELOC_390_GOTPC,
34498 +
34499 +/* 16 bit GOT offset. */
34500 + BFD_RELOC_390_GOT16,
34501 +
34502 +/* PC relative 16 bit shifted by 1. */
34503 + BFD_RELOC_390_PC16DBL,
34504 +
34505 +/* 16 bit PC rel. PLT shifted by 1. */
34506 + BFD_RELOC_390_PLT16DBL,
34507 +
34508 +/* PC relative 32 bit shifted by 1. */
34509 + BFD_RELOC_390_PC32DBL,
34510 +
34511 +/* 32 bit PC rel. PLT shifted by 1. */
34512 + BFD_RELOC_390_PLT32DBL,
34513 +
34514 +/* 32 bit PC rel. GOT shifted by 1. */
34515 + BFD_RELOC_390_GOTPCDBL,
34516 +
34517 +/* 64 bit GOT offset. */
34518 + BFD_RELOC_390_GOT64,
34519 +
34520 +/* 64 bit PC relative PLT address. */
34521 + BFD_RELOC_390_PLT64,
34522 +
34523 +/* 32 bit rel. offset to GOT entry. */
34524 + BFD_RELOC_390_GOTENT,
34525 +
34526 +/* 64 bit offset to GOT. */
34527 + BFD_RELOC_390_GOTOFF64,
34528 +
34529 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
34530 + BFD_RELOC_390_GOTPLT12,
34531 +
34532 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
34533 + BFD_RELOC_390_GOTPLT16,
34534 +
34535 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
34536 + BFD_RELOC_390_GOTPLT32,
34537 +
34538 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
34539 + BFD_RELOC_390_GOTPLT64,
34540 +
34541 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
34542 + BFD_RELOC_390_GOTPLTENT,
34543 +
34544 +/* 16-bit rel. offset from the GOT to a PLT entry. */
34545 + BFD_RELOC_390_PLTOFF16,
34546 +
34547 +/* 32-bit rel. offset from the GOT to a PLT entry. */
34548 + BFD_RELOC_390_PLTOFF32,
34549 +
34550 +/* 64-bit rel. offset from the GOT to a PLT entry. */
34551 + BFD_RELOC_390_PLTOFF64,
34552 +
34553 +/* s390 tls relocations. */
34554 + BFD_RELOC_390_TLS_LOAD,
34555 + BFD_RELOC_390_TLS_GDCALL,
34556 + BFD_RELOC_390_TLS_LDCALL,
34557 + BFD_RELOC_390_TLS_GD32,
34558 + BFD_RELOC_390_TLS_GD64,
34559 + BFD_RELOC_390_TLS_GOTIE12,
34560 + BFD_RELOC_390_TLS_GOTIE32,
34561 + BFD_RELOC_390_TLS_GOTIE64,
34562 + BFD_RELOC_390_TLS_LDM32,
34563 + BFD_RELOC_390_TLS_LDM64,
34564 + BFD_RELOC_390_TLS_IE32,
34565 + BFD_RELOC_390_TLS_IE64,
34566 + BFD_RELOC_390_TLS_IEENT,
34567 + BFD_RELOC_390_TLS_LE32,
34568 + BFD_RELOC_390_TLS_LE64,
34569 + BFD_RELOC_390_TLS_LDO32,
34570 + BFD_RELOC_390_TLS_LDO64,
34571 + BFD_RELOC_390_TLS_DTPMOD,
34572 + BFD_RELOC_390_TLS_DTPOFF,
34573 + BFD_RELOC_390_TLS_TPOFF,
34574 +
34575 +/* Long displacement extension. */
34576 + BFD_RELOC_390_20,
34577 + BFD_RELOC_390_GOT20,
34578 + BFD_RELOC_390_GOTPLT20,
34579 + BFD_RELOC_390_TLS_GOTIE20,
34580 +
34581 +/* Score relocations */
34582 + BFD_RELOC_SCORE_DUMMY1,
34583 +
34584 +/* Low 16 bit for load/store */
34585 + BFD_RELOC_SCORE_GPREL15,
34586 +
34587 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
34588 + BFD_RELOC_SCORE_DUMMY2,
34589 + BFD_RELOC_SCORE_JMP,
34590 +
34591 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
34592 + BFD_RELOC_SCORE_BRANCH,
34593 +
34594 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
34595 + BFD_RELOC_SCORE16_JMP,
34596 +
34597 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
34598 + BFD_RELOC_SCORE16_BRANCH,
34599 +
34600 +/* Undocumented Score relocs */
34601 + BFD_RELOC_SCORE_GOT15,
34602 + BFD_RELOC_SCORE_GOT_LO16,
34603 + BFD_RELOC_SCORE_CALL15,
34604 + BFD_RELOC_SCORE_DUMMY_HI16,
34605 +
34606 +/* Scenix IP2K - 9-bit register number / data address */
34607 + BFD_RELOC_IP2K_FR9,
34608 +
34609 +/* Scenix IP2K - 4-bit register/data bank number */
34610 + BFD_RELOC_IP2K_BANK,
34611 +
34612 +/* Scenix IP2K - low 13 bits of instruction word address */
34613 + BFD_RELOC_IP2K_ADDR16CJP,
34614 +
34615 +/* Scenix IP2K - high 3 bits of instruction word address */
34616 + BFD_RELOC_IP2K_PAGE3,
34617 +
34618 +/* Scenix IP2K - ext/low/high 8 bits of data address */
34619 + BFD_RELOC_IP2K_LO8DATA,
34620 + BFD_RELOC_IP2K_HI8DATA,
34621 + BFD_RELOC_IP2K_EX8DATA,
34622 +
34623 +/* Scenix IP2K - low/high 8 bits of instruction word address */
34624 + BFD_RELOC_IP2K_LO8INSN,
34625 + BFD_RELOC_IP2K_HI8INSN,
34626 +
34627 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
34628 + BFD_RELOC_IP2K_PC_SKIP,
34629 +
34630 +/* Scenix IP2K - 16 bit word address in text section. */
34631 + BFD_RELOC_IP2K_TEXT,
34632 +
34633 +/* Scenix IP2K - 7-bit sp or dp offset */
34634 + BFD_RELOC_IP2K_FR_OFFSET,
34635 +
34636 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
34637 + BFD_RELOC_VPE4KMATH_DATA,
34638 + BFD_RELOC_VPE4KMATH_INSN,
34639 +
34640 +/* These two relocations are used by the linker to determine which of
34641 +the entries in a C++ virtual function table are actually used. When
34642 +the --gc-sections option is given, the linker will zero out the entries
34643 +that are not used, so that the code for those functions need not be
34644 +included in the output.
34645 +
34646 +VTABLE_INHERIT is a zero-space relocation used to describe to the
34647 +linker the inheritance tree of a C++ virtual function table. The
34648 +relocation's symbol should be the parent class' vtable, and the
34649 +relocation should be located at the child vtable.
34650 +
34651 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
34652 +virtual function table entry. The reloc's symbol should refer to the
34653 +table of the class mentioned in the code. Off of that base, an offset
34654 +describes the entry that is being used. For Rela hosts, this offset
34655 +is stored in the reloc's addend. For Rel hosts, we are forced to put
34656 +this offset in the reloc's section offset. */
34657 + BFD_RELOC_VTABLE_INHERIT,
34658 + BFD_RELOC_VTABLE_ENTRY,
34659 +
34660 +/* Intel IA64 Relocations. */
34661 + BFD_RELOC_IA64_IMM14,
34662 + BFD_RELOC_IA64_IMM22,
34663 + BFD_RELOC_IA64_IMM64,
34664 + BFD_RELOC_IA64_DIR32MSB,
34665 + BFD_RELOC_IA64_DIR32LSB,
34666 + BFD_RELOC_IA64_DIR64MSB,
34667 + BFD_RELOC_IA64_DIR64LSB,
34668 + BFD_RELOC_IA64_GPREL22,
34669 + BFD_RELOC_IA64_GPREL64I,
34670 + BFD_RELOC_IA64_GPREL32MSB,
34671 + BFD_RELOC_IA64_GPREL32LSB,
34672 + BFD_RELOC_IA64_GPREL64MSB,
34673 + BFD_RELOC_IA64_GPREL64LSB,
34674 + BFD_RELOC_IA64_LTOFF22,
34675 + BFD_RELOC_IA64_LTOFF64I,
34676 + BFD_RELOC_IA64_PLTOFF22,
34677 + BFD_RELOC_IA64_PLTOFF64I,
34678 + BFD_RELOC_IA64_PLTOFF64MSB,
34679 + BFD_RELOC_IA64_PLTOFF64LSB,
34680 + BFD_RELOC_IA64_FPTR64I,
34681 + BFD_RELOC_IA64_FPTR32MSB,
34682 + BFD_RELOC_IA64_FPTR32LSB,
34683 + BFD_RELOC_IA64_FPTR64MSB,
34684 + BFD_RELOC_IA64_FPTR64LSB,
34685 + BFD_RELOC_IA64_PCREL21B,
34686 + BFD_RELOC_IA64_PCREL21BI,
34687 + BFD_RELOC_IA64_PCREL21M,
34688 + BFD_RELOC_IA64_PCREL21F,
34689 + BFD_RELOC_IA64_PCREL22,
34690 + BFD_RELOC_IA64_PCREL60B,
34691 + BFD_RELOC_IA64_PCREL64I,
34692 + BFD_RELOC_IA64_PCREL32MSB,
34693 + BFD_RELOC_IA64_PCREL32LSB,
34694 + BFD_RELOC_IA64_PCREL64MSB,
34695 + BFD_RELOC_IA64_PCREL64LSB,
34696 + BFD_RELOC_IA64_LTOFF_FPTR22,
34697 + BFD_RELOC_IA64_LTOFF_FPTR64I,
34698 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
34699 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
34700 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
34701 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
34702 + BFD_RELOC_IA64_SEGREL32MSB,
34703 + BFD_RELOC_IA64_SEGREL32LSB,
34704 + BFD_RELOC_IA64_SEGREL64MSB,
34705 + BFD_RELOC_IA64_SEGREL64LSB,
34706 + BFD_RELOC_IA64_SECREL32MSB,
34707 + BFD_RELOC_IA64_SECREL32LSB,
34708 + BFD_RELOC_IA64_SECREL64MSB,
34709 + BFD_RELOC_IA64_SECREL64LSB,
34710 + BFD_RELOC_IA64_REL32MSB,
34711 + BFD_RELOC_IA64_REL32LSB,
34712 + BFD_RELOC_IA64_REL64MSB,
34713 + BFD_RELOC_IA64_REL64LSB,
34714 + BFD_RELOC_IA64_LTV32MSB,
34715 + BFD_RELOC_IA64_LTV32LSB,
34716 + BFD_RELOC_IA64_LTV64MSB,
34717 + BFD_RELOC_IA64_LTV64LSB,
34718 + BFD_RELOC_IA64_IPLTMSB,
34719 + BFD_RELOC_IA64_IPLTLSB,
34720 + BFD_RELOC_IA64_COPY,
34721 + BFD_RELOC_IA64_LTOFF22X,
34722 + BFD_RELOC_IA64_LDXMOV,
34723 + BFD_RELOC_IA64_TPREL14,
34724 + BFD_RELOC_IA64_TPREL22,
34725 + BFD_RELOC_IA64_TPREL64I,
34726 + BFD_RELOC_IA64_TPREL64MSB,
34727 + BFD_RELOC_IA64_TPREL64LSB,
34728 + BFD_RELOC_IA64_LTOFF_TPREL22,
34729 + BFD_RELOC_IA64_DTPMOD64MSB,
34730 + BFD_RELOC_IA64_DTPMOD64LSB,
34731 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
34732 + BFD_RELOC_IA64_DTPREL14,
34733 + BFD_RELOC_IA64_DTPREL22,
34734 + BFD_RELOC_IA64_DTPREL64I,
34735 + BFD_RELOC_IA64_DTPREL32MSB,
34736 + BFD_RELOC_IA64_DTPREL32LSB,
34737 + BFD_RELOC_IA64_DTPREL64MSB,
34738 + BFD_RELOC_IA64_DTPREL64LSB,
34739 + BFD_RELOC_IA64_LTOFF_DTPREL22,
34740 +
34741 +/* Motorola 68HC11 reloc.
34742 +This is the 8 bit high part of an absolute address. */
34743 + BFD_RELOC_M68HC11_HI8,
34744 +
34745 +/* Motorola 68HC11 reloc.
34746 +This is the 8 bit low part of an absolute address. */
34747 + BFD_RELOC_M68HC11_LO8,
34748 +
34749 +/* Motorola 68HC11 reloc.
34750 +This is the 3 bit of a value. */
34751 + BFD_RELOC_M68HC11_3B,
34752 +
34753 +/* Motorola 68HC11 reloc.
34754 +This reloc marks the beginning of a jump/call instruction.
34755 +It is used for linker relaxation to correctly identify beginning
34756 +of instruction and change some branches to use PC-relative
34757 +addressing mode. */
34758 + BFD_RELOC_M68HC11_RL_JUMP,
34759 +
34760 +/* Motorola 68HC11 reloc.
34761 +This reloc marks a group of several instructions that gcc generates
34762 +and for which the linker relaxation pass can modify and/or remove
34763 +some of them. */
34764 + BFD_RELOC_M68HC11_RL_GROUP,
34765 +
34766 +/* Motorola 68HC11 reloc.
34767 +This is the 16-bit lower part of an address. It is used for 'call'
34768 +instruction to specify the symbol address without any special
34769 +transformation (due to memory bank window). */
34770 + BFD_RELOC_M68HC11_LO16,
34771 +
34772 +/* Motorola 68HC11 reloc.
34773 +This is a 8-bit reloc that specifies the page number of an address.
34774 +It is used by 'call' instruction to specify the page number of
34775 +the symbol. */
34776 + BFD_RELOC_M68HC11_PAGE,
34777 +
34778 +/* Motorola 68HC11 reloc.
34779 +This is a 24-bit reloc that represents the address with a 16-bit
34780 +value and a 8-bit page number. The symbol address is transformed
34781 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
34782 + BFD_RELOC_M68HC11_24,
34783 +
34784 +/* Motorola 68HC12 reloc.
34785 +This is the 5 bits of a value. */
34786 + BFD_RELOC_M68HC12_5B,
34787 +
34788 +/* NS CR16C Relocations. */
34789 + BFD_RELOC_16C_NUM08,
34790 + BFD_RELOC_16C_NUM08_C,
34791 + BFD_RELOC_16C_NUM16,
34792 + BFD_RELOC_16C_NUM16_C,
34793 + BFD_RELOC_16C_NUM32,
34794 + BFD_RELOC_16C_NUM32_C,
34795 + BFD_RELOC_16C_DISP04,
34796 + BFD_RELOC_16C_DISP04_C,
34797 + BFD_RELOC_16C_DISP08,
34798 + BFD_RELOC_16C_DISP08_C,
34799 + BFD_RELOC_16C_DISP16,
34800 + BFD_RELOC_16C_DISP16_C,
34801 + BFD_RELOC_16C_DISP24,
34802 + BFD_RELOC_16C_DISP24_C,
34803 + BFD_RELOC_16C_DISP24a,
34804 + BFD_RELOC_16C_DISP24a_C,
34805 + BFD_RELOC_16C_REG04,
34806 + BFD_RELOC_16C_REG04_C,
34807 + BFD_RELOC_16C_REG04a,
34808 + BFD_RELOC_16C_REG04a_C,
34809 + BFD_RELOC_16C_REG14,
34810 + BFD_RELOC_16C_REG14_C,
34811 + BFD_RELOC_16C_REG16,
34812 + BFD_RELOC_16C_REG16_C,
34813 + BFD_RELOC_16C_REG20,
34814 + BFD_RELOC_16C_REG20_C,
34815 + BFD_RELOC_16C_ABS20,
34816 + BFD_RELOC_16C_ABS20_C,
34817 + BFD_RELOC_16C_ABS24,
34818 + BFD_RELOC_16C_ABS24_C,
34819 + BFD_RELOC_16C_IMM04,
34820 + BFD_RELOC_16C_IMM04_C,
34821 + BFD_RELOC_16C_IMM16,
34822 + BFD_RELOC_16C_IMM16_C,
34823 + BFD_RELOC_16C_IMM20,
34824 + BFD_RELOC_16C_IMM20_C,
34825 + BFD_RELOC_16C_IMM24,
34826 + BFD_RELOC_16C_IMM24_C,
34827 + BFD_RELOC_16C_IMM32,
34828 + BFD_RELOC_16C_IMM32_C,
34829 +
34830 +/* NS CR16 Relocations. */
34831 + BFD_RELOC_CR16_NUM8,
34832 + BFD_RELOC_CR16_NUM16,
34833 + BFD_RELOC_CR16_NUM32,
34834 + BFD_RELOC_CR16_NUM32a,
34835 + BFD_RELOC_CR16_REGREL0,
34836 + BFD_RELOC_CR16_REGREL4,
34837 + BFD_RELOC_CR16_REGREL4a,
34838 + BFD_RELOC_CR16_REGREL14,
34839 + BFD_RELOC_CR16_REGREL14a,
34840 + BFD_RELOC_CR16_REGREL16,
34841 + BFD_RELOC_CR16_REGREL20,
34842 + BFD_RELOC_CR16_REGREL20a,
34843 + BFD_RELOC_CR16_ABS20,
34844 + BFD_RELOC_CR16_ABS24,
34845 + BFD_RELOC_CR16_IMM4,
34846 + BFD_RELOC_CR16_IMM8,
34847 + BFD_RELOC_CR16_IMM16,
34848 + BFD_RELOC_CR16_IMM20,
34849 + BFD_RELOC_CR16_IMM24,
34850 + BFD_RELOC_CR16_IMM32,
34851 + BFD_RELOC_CR16_IMM32a,
34852 + BFD_RELOC_CR16_DISP4,
34853 + BFD_RELOC_CR16_DISP8,
34854 + BFD_RELOC_CR16_DISP16,
34855 + BFD_RELOC_CR16_DISP20,
34856 + BFD_RELOC_CR16_DISP24,
34857 + BFD_RELOC_CR16_DISP24a,
34858 +
34859 +/* NS CRX Relocations. */
34860 + BFD_RELOC_CRX_REL4,
34861 + BFD_RELOC_CRX_REL8,
34862 + BFD_RELOC_CRX_REL8_CMP,
34863 + BFD_RELOC_CRX_REL16,
34864 + BFD_RELOC_CRX_REL24,
34865 + BFD_RELOC_CRX_REL32,
34866 + BFD_RELOC_CRX_REGREL12,
34867 + BFD_RELOC_CRX_REGREL22,
34868 + BFD_RELOC_CRX_REGREL28,
34869 + BFD_RELOC_CRX_REGREL32,
34870 + BFD_RELOC_CRX_ABS16,
34871 + BFD_RELOC_CRX_ABS32,
34872 + BFD_RELOC_CRX_NUM8,
34873 + BFD_RELOC_CRX_NUM16,
34874 + BFD_RELOC_CRX_NUM32,
34875 + BFD_RELOC_CRX_IMM16,
34876 + BFD_RELOC_CRX_IMM32,
34877 + BFD_RELOC_CRX_SWITCH8,
34878 + BFD_RELOC_CRX_SWITCH16,
34879 + BFD_RELOC_CRX_SWITCH32,
34880 +
34881 +/* These relocs are only used within the CRIS assembler. They are not
34882 +(at present) written to any object files. */
34883 + BFD_RELOC_CRIS_BDISP8,
34884 + BFD_RELOC_CRIS_UNSIGNED_5,
34885 + BFD_RELOC_CRIS_SIGNED_6,
34886 + BFD_RELOC_CRIS_UNSIGNED_6,
34887 + BFD_RELOC_CRIS_SIGNED_8,
34888 + BFD_RELOC_CRIS_UNSIGNED_8,
34889 + BFD_RELOC_CRIS_SIGNED_16,
34890 + BFD_RELOC_CRIS_UNSIGNED_16,
34891 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
34892 + BFD_RELOC_CRIS_UNSIGNED_4,
34893 +
34894 +/* Relocs used in ELF shared libraries for CRIS. */
34895 + BFD_RELOC_CRIS_COPY,
34896 + BFD_RELOC_CRIS_GLOB_DAT,
34897 + BFD_RELOC_CRIS_JUMP_SLOT,
34898 + BFD_RELOC_CRIS_RELATIVE,
34899 +
34900 +/* 32-bit offset to symbol-entry within GOT. */
34901 + BFD_RELOC_CRIS_32_GOT,
34902 +
34903 +/* 16-bit offset to symbol-entry within GOT. */
34904 + BFD_RELOC_CRIS_16_GOT,
34905 +
34906 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
34907 + BFD_RELOC_CRIS_32_GOTPLT,
34908 +
34909 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
34910 + BFD_RELOC_CRIS_16_GOTPLT,
34911 +
34912 +/* 32-bit offset to symbol, relative to GOT. */
34913 + BFD_RELOC_CRIS_32_GOTREL,
34914 +
34915 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
34916 + BFD_RELOC_CRIS_32_PLT_GOTREL,
34917 +
34918 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
34919 + BFD_RELOC_CRIS_32_PLT_PCREL,
34920 +
34921 +/* Intel i860 Relocations. */
34922 + BFD_RELOC_860_COPY,
34923 + BFD_RELOC_860_GLOB_DAT,
34924 + BFD_RELOC_860_JUMP_SLOT,
34925 + BFD_RELOC_860_RELATIVE,
34926 + BFD_RELOC_860_PC26,
34927 + BFD_RELOC_860_PLT26,
34928 + BFD_RELOC_860_PC16,
34929 + BFD_RELOC_860_LOW0,
34930 + BFD_RELOC_860_SPLIT0,
34931 + BFD_RELOC_860_LOW1,
34932 + BFD_RELOC_860_SPLIT1,
34933 + BFD_RELOC_860_LOW2,
34934 + BFD_RELOC_860_SPLIT2,
34935 + BFD_RELOC_860_LOW3,
34936 + BFD_RELOC_860_LOGOT0,
34937 + BFD_RELOC_860_SPGOT0,
34938 + BFD_RELOC_860_LOGOT1,
34939 + BFD_RELOC_860_SPGOT1,
34940 + BFD_RELOC_860_LOGOTOFF0,
34941 + BFD_RELOC_860_SPGOTOFF0,
34942 + BFD_RELOC_860_LOGOTOFF1,
34943 + BFD_RELOC_860_SPGOTOFF1,
34944 + BFD_RELOC_860_LOGOTOFF2,
34945 + BFD_RELOC_860_LOGOTOFF3,
34946 + BFD_RELOC_860_LOPC,
34947 + BFD_RELOC_860_HIGHADJ,
34948 + BFD_RELOC_860_HAGOT,
34949 + BFD_RELOC_860_HAGOTOFF,
34950 + BFD_RELOC_860_HAPC,
34951 + BFD_RELOC_860_HIGH,
34952 + BFD_RELOC_860_HIGOT,
34953 + BFD_RELOC_860_HIGOTOFF,
34954 +
34955 +/* OpenRISC Relocations. */
34956 + BFD_RELOC_OPENRISC_ABS_26,
34957 + BFD_RELOC_OPENRISC_REL_26,
34958 +
34959 +/* H8 elf Relocations. */
34960 + BFD_RELOC_H8_DIR16A8,
34961 + BFD_RELOC_H8_DIR16R8,
34962 + BFD_RELOC_H8_DIR24A8,
34963 + BFD_RELOC_H8_DIR24R8,
34964 + BFD_RELOC_H8_DIR32A16,
34965 +
34966 +/* Sony Xstormy16 Relocations. */
34967 + BFD_RELOC_XSTORMY16_REL_12,
34968 + BFD_RELOC_XSTORMY16_12,
34969 + BFD_RELOC_XSTORMY16_24,
34970 + BFD_RELOC_XSTORMY16_FPTR16,
34971 +
34972 +/* Self-describing complex relocations. */
34973 + BFD_RELOC_RELC,
34974 +
34975 +
34976 +/* Infineon Relocations. */
34977 + BFD_RELOC_XC16X_PAG,
34978 + BFD_RELOC_XC16X_POF,
34979 + BFD_RELOC_XC16X_SEG,
34980 + BFD_RELOC_XC16X_SOF,
34981 +
34982 +/* Relocations used by VAX ELF. */
34983 + BFD_RELOC_VAX_GLOB_DAT,
34984 + BFD_RELOC_VAX_JMP_SLOT,
34985 + BFD_RELOC_VAX_RELATIVE,
34986 +
34987 +/* Morpho MT - 16 bit immediate relocation. */
34988 + BFD_RELOC_MT_PC16,
34989 +
34990 +/* Morpho MT - Hi 16 bits of an address. */
34991 + BFD_RELOC_MT_HI16,
34992 +
34993 +/* Morpho MT - Low 16 bits of an address. */
34994 + BFD_RELOC_MT_LO16,
34995 +
34996 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
34997 + BFD_RELOC_MT_GNU_VTINHERIT,
34998 +
34999 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
35000 + BFD_RELOC_MT_GNU_VTENTRY,
35001 +
35002 +/* Morpho MT - 8 bit immediate relocation. */
35003 + BFD_RELOC_MT_PCINSN8,
35004 +
35005 +/* msp430 specific relocation codes */
35006 + BFD_RELOC_MSP430_10_PCREL,
35007 + BFD_RELOC_MSP430_16_PCREL,
35008 + BFD_RELOC_MSP430_16,
35009 + BFD_RELOC_MSP430_16_PCREL_BYTE,
35010 + BFD_RELOC_MSP430_16_BYTE,
35011 + BFD_RELOC_MSP430_2X_PCREL,
35012 + BFD_RELOC_MSP430_RL_PCREL,
35013 +
35014 +/* IQ2000 Relocations. */
35015 + BFD_RELOC_IQ2000_OFFSET_16,
35016 + BFD_RELOC_IQ2000_OFFSET_21,
35017 + BFD_RELOC_IQ2000_UHI16,
35018 +
35019 +/* Special Xtensa relocation used only by PLT entries in ELF shared
35020 +objects to indicate that the runtime linker should set the value
35021 +to one of its own internal functions or data structures. */
35022 + BFD_RELOC_XTENSA_RTLD,
35023 +
35024 +/* Xtensa relocations for ELF shared objects. */
35025 + BFD_RELOC_XTENSA_GLOB_DAT,
35026 + BFD_RELOC_XTENSA_JMP_SLOT,
35027 + BFD_RELOC_XTENSA_RELATIVE,
35028 +
35029 +/* Xtensa relocation used in ELF object files for symbols that may require
35030 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
35031 + BFD_RELOC_XTENSA_PLT,
35032 +
35033 +/* Xtensa relocations to mark the difference of two local symbols.
35034 +These are only needed to support linker relaxation and can be ignored
35035 +when not relaxing. The field is set to the value of the difference
35036 +assuming no relaxation. The relocation encodes the position of the
35037 +first symbol so the linker can determine whether to adjust the field
35038 +value. */
35039 + BFD_RELOC_XTENSA_DIFF8,
35040 + BFD_RELOC_XTENSA_DIFF16,
35041 + BFD_RELOC_XTENSA_DIFF32,
35042 +
35043 +/* Generic Xtensa relocations for instruction operands. Only the slot
35044 +number is encoded in the relocation. The relocation applies to the
35045 +last PC-relative immediate operand, or if there are no PC-relative
35046 +immediates, to the last immediate operand. */
35047 + BFD_RELOC_XTENSA_SLOT0_OP,
35048 + BFD_RELOC_XTENSA_SLOT1_OP,
35049 + BFD_RELOC_XTENSA_SLOT2_OP,
35050 + BFD_RELOC_XTENSA_SLOT3_OP,
35051 + BFD_RELOC_XTENSA_SLOT4_OP,
35052 + BFD_RELOC_XTENSA_SLOT5_OP,
35053 + BFD_RELOC_XTENSA_SLOT6_OP,
35054 + BFD_RELOC_XTENSA_SLOT7_OP,
35055 + BFD_RELOC_XTENSA_SLOT8_OP,
35056 + BFD_RELOC_XTENSA_SLOT9_OP,
35057 + BFD_RELOC_XTENSA_SLOT10_OP,
35058 + BFD_RELOC_XTENSA_SLOT11_OP,
35059 + BFD_RELOC_XTENSA_SLOT12_OP,
35060 + BFD_RELOC_XTENSA_SLOT13_OP,
35061 + BFD_RELOC_XTENSA_SLOT14_OP,
35062 +
35063 +/* Alternate Xtensa relocations. Only the slot is encoded in the
35064 +relocation. The meaning of these relocations is opcode-specific. */
35065 + BFD_RELOC_XTENSA_SLOT0_ALT,
35066 + BFD_RELOC_XTENSA_SLOT1_ALT,
35067 + BFD_RELOC_XTENSA_SLOT2_ALT,
35068 + BFD_RELOC_XTENSA_SLOT3_ALT,
35069 + BFD_RELOC_XTENSA_SLOT4_ALT,
35070 + BFD_RELOC_XTENSA_SLOT5_ALT,
35071 + BFD_RELOC_XTENSA_SLOT6_ALT,
35072 + BFD_RELOC_XTENSA_SLOT7_ALT,
35073 + BFD_RELOC_XTENSA_SLOT8_ALT,
35074 + BFD_RELOC_XTENSA_SLOT9_ALT,
35075 + BFD_RELOC_XTENSA_SLOT10_ALT,
35076 + BFD_RELOC_XTENSA_SLOT11_ALT,
35077 + BFD_RELOC_XTENSA_SLOT12_ALT,
35078 + BFD_RELOC_XTENSA_SLOT13_ALT,
35079 + BFD_RELOC_XTENSA_SLOT14_ALT,
35080 +
35081 +/* Xtensa relocations for backward compatibility. These have all been
35082 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
35083 + BFD_RELOC_XTENSA_OP0,
35084 + BFD_RELOC_XTENSA_OP1,
35085 + BFD_RELOC_XTENSA_OP2,
35086 +
35087 +/* Xtensa relocation to mark that the assembler expanded the
35088 +instructions from an original target. The expansion size is
35089 +encoded in the reloc size. */
35090 + BFD_RELOC_XTENSA_ASM_EXPAND,
35091 +
35092 +/* Xtensa relocation to mark that the linker should simplify
35093 +assembler-expanded instructions. This is commonly used
35094 +internally by the linker after analysis of a
35095 +BFD_RELOC_XTENSA_ASM_EXPAND. */
35096 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
35097 +
35098 +/* 8 bit signed offset in (ix+d) or (iy+d). */
35099 + BFD_RELOC_Z80_DISP8,
35100 +
35101 +/* DJNZ offset. */
35102 + BFD_RELOC_Z8K_DISP7,
35103 +
35104 +/* CALR offset. */
35105 + BFD_RELOC_Z8K_CALLR,
35106 +
35107 +/* 4 bit value. */
35108 + BFD_RELOC_Z8K_IMM4L,
35109 + BFD_RELOC_UNUSED };
35110 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
35111 +reloc_howto_type *bfd_reloc_type_lookup
35112 + (bfd *abfd, bfd_reloc_code_real_type code);
35113 +reloc_howto_type *bfd_reloc_name_lookup
35114 + (bfd *abfd, const char *reloc_name);
35115 +
35116 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
35117 +
35118 +/* Extracted from syms.c. */
35119 +
35120 +typedef struct bfd_symbol
35121 +{
35122 + /* A pointer to the BFD which owns the symbol. This information
35123 + is necessary so that a back end can work out what additional
35124 + information (invisible to the application writer) is carried
35125 + with the symbol.
35126 +
35127 + This field is *almost* redundant, since you can use section->owner
35128 + instead, except that some symbols point to the global sections
35129 + bfd_{abs,com,und}_section. This could be fixed by making
35130 + these globals be per-bfd (or per-target-flavor). FIXME. */
35131 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
35132 +
35133 + /* The text of the symbol. The name is left alone, and not copied; the
35134 + application may not alter it. */
35135 + const char *name;
35136 +
35137 + /* The value of the symbol. This really should be a union of a
35138 + numeric value with a pointer, since some flags indicate that
35139 + a pointer to another symbol is stored here. */
35140 + symvalue value;
35141 +
35142 + /* Attributes of a symbol. */
35143 +#define BSF_NO_FLAGS 0x00
35144 +
35145 + /* The symbol has local scope; <<static>> in <<C>>. The value
35146 + is the offset into the section of the data. */
35147 +#define BSF_LOCAL 0x01
35148 +
35149 + /* The symbol has global scope; initialized data in <<C>>. The
35150 + value is the offset into the section of the data. */
35151 +#define BSF_GLOBAL 0x02
35152 +
35153 + /* The symbol has global scope and is exported. The value is
35154 + the offset into the section of the data. */
35155 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
35156 +
35157 + /* A normal C symbol would be one of:
35158 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
35159 + <<BSF_GLOBAL>>. */
35160 +
35161 + /* The symbol is a debugging record. The value has an arbitrary
35162 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
35163 +#define BSF_DEBUGGING 0x08
35164 +
35165 + /* The symbol denotes a function entry point. Used in ELF,
35166 + perhaps others someday. */
35167 +#define BSF_FUNCTION 0x10
35168 +
35169 + /* Used by the linker. */
35170 +#define BSF_KEEP 0x20
35171 +#define BSF_KEEP_G 0x40
35172 +
35173 + /* A weak global symbol, overridable without warnings by
35174 + a regular global symbol of the same name. */
35175 +#define BSF_WEAK 0x80
35176 +
35177 + /* This symbol was created to point to a section, e.g. ELF's
35178 + STT_SECTION symbols. */
35179 +#define BSF_SECTION_SYM 0x100
35180 +
35181 + /* The symbol used to be a common symbol, but now it is
35182 + allocated. */
35183 +#define BSF_OLD_COMMON 0x200
35184 +
35185 + /* The default value for common data. */
35186 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
35187 +
35188 + /* In some files the type of a symbol sometimes alters its
35189 + location in an output file - ie in coff a <<ISFCN>> symbol
35190 + which is also <<C_EXT>> symbol appears where it was
35191 + declared and not at the end of a section. This bit is set
35192 + by the target BFD part to convey this information. */
35193 +#define BSF_NOT_AT_END 0x400
35194 +
35195 + /* Signal that the symbol is the label of constructor section. */
35196 +#define BSF_CONSTRUCTOR 0x800
35197 +
35198 + /* Signal that the symbol is a warning symbol. The name is a
35199 + warning. The name of the next symbol is the one to warn about;
35200 + if a reference is made to a symbol with the same name as the next
35201 + symbol, a warning is issued by the linker. */
35202 +#define BSF_WARNING 0x1000
35203 +
35204 + /* Signal that the symbol is indirect. This symbol is an indirect
35205 + pointer to the symbol with the same name as the next symbol. */
35206 +#define BSF_INDIRECT 0x2000
35207 +
35208 + /* BSF_FILE marks symbols that contain a file name. This is used
35209 + for ELF STT_FILE symbols. */
35210 +#define BSF_FILE 0x4000
35211 +
35212 + /* Symbol is from dynamic linking information. */
35213 +#define BSF_DYNAMIC 0x8000
35214 +
35215 + /* The symbol denotes a data object. Used in ELF, and perhaps
35216 + others someday. */
35217 +#define BSF_OBJECT 0x10000
35218 +
35219 + /* This symbol is a debugging symbol. The value is the offset
35220 + into the section of the data. BSF_DEBUGGING should be set
35221 + as well. */
35222 +#define BSF_DEBUGGING_RELOC 0x20000
35223 +
35224 + /* This symbol is thread local. Used in ELF. */
35225 +#define BSF_THREAD_LOCAL 0x40000
35226 +
35227 + /* This symbol represents a complex relocation expression,
35228 + with the expression tree serialized in the symbol name. */
35229 +#define BSF_RELC 0x80000
35230 +
35231 + /* This symbol represents a signed complex relocation expression,
35232 + with the expression tree serialized in the symbol name. */
35233 +#define BSF_SRELC 0x100000
35234 +
35235 + flagword flags;
35236 +
35237 + /* A pointer to the section to which this symbol is
35238 + relative. This will always be non NULL, there are special
35239 + sections for undefined and absolute symbols. */
35240 + struct bfd_section *section;
35241 +
35242 + /* Back end special data. */
35243 + union
35244 + {
35245 + void *p;
35246 + bfd_vma i;
35247 + }
35248 + udata;
35249 +}
35250 +asymbol;
35251 +
35252 +#define bfd_get_symtab_upper_bound(abfd) \
35253 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
35254 +
35255 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
35256 +
35257 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
35258 +
35259 +#define bfd_is_local_label_name(abfd, name) \
35260 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
35261 +
35262 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
35263 +
35264 +#define bfd_is_target_special_symbol(abfd, sym) \
35265 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
35266 +
35267 +#define bfd_canonicalize_symtab(abfd, location) \
35268 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
35269 +
35270 +bfd_boolean bfd_set_symtab
35271 + (bfd *abfd, asymbol **location, unsigned int count);
35272 +
35273 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
35274 +
35275 +#define bfd_make_empty_symbol(abfd) \
35276 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
35277 +
35278 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
35279 +
35280 +#define bfd_make_debug_symbol(abfd,ptr,size) \
35281 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
35282 +
35283 +int bfd_decode_symclass (asymbol *symbol);
35284 +
35285 +bfd_boolean bfd_is_undefined_symclass (int symclass);
35286 +
35287 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
35288 +
35289 +bfd_boolean bfd_copy_private_symbol_data
35290 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
35291 +
35292 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
35293 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
35294 + (ibfd, isymbol, obfd, osymbol))
35295 +
35296 +/* Extracted from bfd.c. */
35297 +struct bfd
35298 +{
35299 + /* A unique identifier of the BFD */
35300 + unsigned int id;
35301 +
35302 + /* The filename the application opened the BFD with. */
35303 + const char *filename;
35304 +
35305 + /* A pointer to the target jump table. */
35306 + const struct bfd_target *xvec;
35307 +
35308 + /* The IOSTREAM, and corresponding IO vector that provide access
35309 + to the file backing the BFD. */
35310 + void *iostream;
35311 + const struct bfd_iovec *iovec;
35312 +
35313 + /* Is the file descriptor being cached? That is, can it be closed as
35314 + needed, and re-opened when accessed later? */
35315 + bfd_boolean cacheable;
35316 +
35317 + /* Marks whether there was a default target specified when the
35318 + BFD was opened. This is used to select which matching algorithm
35319 + to use to choose the back end. */
35320 + bfd_boolean target_defaulted;
35321 +
35322 + /* The caching routines use these to maintain a
35323 + least-recently-used list of BFDs. */
35324 + struct bfd *lru_prev, *lru_next;
35325 +
35326 + /* When a file is closed by the caching routines, BFD retains
35327 + state information on the file here... */
35328 + ufile_ptr where;
35329 +
35330 + /* ... and here: (``once'' means at least once). */
35331 + bfd_boolean opened_once;
35332 +
35333 + /* Set if we have a locally maintained mtime value, rather than
35334 + getting it from the file each time. */
35335 + bfd_boolean mtime_set;
35336 +
35337 + /* File modified time, if mtime_set is TRUE. */
35338 + long mtime;
35339 +
35340 + /* Reserved for an unimplemented file locking extension. */
35341 + int ifd;
35342 +
35343 + /* The format which belongs to the BFD. (object, core, etc.) */
35344 + bfd_format format;
35345 +
35346 + /* The direction with which the BFD was opened. */
35347 + enum bfd_direction
35348 + {
35349 + no_direction = 0,
35350 + read_direction = 1,
35351 + write_direction = 2,
35352 + both_direction = 3
35353 + }
35354 + direction;
35355 +
35356 + /* Format_specific flags. */
35357 + flagword flags;
35358 +
35359 + /* Currently my_archive is tested before adding origin to
35360 + anything. I believe that this can become always an add of
35361 + origin, with origin set to 0 for non archive files. */
35362 + ufile_ptr origin;
35363 +
35364 + /* Remember when output has begun, to stop strange things
35365 + from happening. */
35366 + bfd_boolean output_has_begun;
35367 +
35368 + /* A hash table for section names. */
35369 + struct bfd_hash_table section_htab;
35370 +
35371 + /* Pointer to linked list of sections. */
35372 + struct bfd_section *sections;
35373 +
35374 + /* The last section on the section list. */
35375 + struct bfd_section *section_last;
35376 +
35377 + /* The number of sections. */
35378 + unsigned int section_count;
35379 +
35380 + /* Stuff only useful for object files:
35381 + The start address. */
35382 + bfd_vma start_address;
35383 +
35384 + /* Used for input and output. */
35385 + unsigned int symcount;
35386 +
35387 + /* Symbol table for output BFD (with symcount entries). */
35388 + struct bfd_symbol **outsymbols;
35389 +
35390 + /* Used for slurped dynamic symbol tables. */
35391 + unsigned int dynsymcount;
35392 +
35393 + /* Pointer to structure which contains architecture information. */
35394 + const struct bfd_arch_info *arch_info;
35395 +
35396 + /* Flag set if symbols from this BFD should not be exported. */
35397 + bfd_boolean no_export;
35398 +
35399 + /* Stuff only useful for archives. */
35400 + void *arelt_data;
35401 + struct bfd *my_archive; /* The containing archive BFD. */
35402 + struct bfd *archive_next; /* The next BFD in the archive. */
35403 + struct bfd *archive_head; /* The first BFD in the archive. */
35404 + bfd_boolean has_armap;
35405 +
35406 + /* A chain of BFD structures involved in a link. */
35407 + struct bfd *link_next;
35408 +
35409 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
35410 + be used only for archive elements. */
35411 + int archive_pass;
35412 +
35413 + /* Used by the back end to hold private data. */
35414 + union
35415 + {
35416 + struct aout_data_struct *aout_data;
35417 + struct artdata *aout_ar_data;
35418 + struct _oasys_data *oasys_obj_data;
35419 + struct _oasys_ar_data *oasys_ar_data;
35420 + struct coff_tdata *coff_obj_data;
35421 + struct pe_tdata *pe_obj_data;
35422 + struct xcoff_tdata *xcoff_obj_data;
35423 + struct ecoff_tdata *ecoff_obj_data;
35424 + struct ieee_data_struct *ieee_data;
35425 + struct ieee_ar_data_struct *ieee_ar_data;
35426 + struct srec_data_struct *srec_data;
35427 + struct ihex_data_struct *ihex_data;
35428 + struct tekhex_data_struct *tekhex_data;
35429 + struct elf_obj_tdata *elf_obj_data;
35430 + struct nlm_obj_tdata *nlm_obj_data;
35431 + struct bout_data_struct *bout_data;
35432 + struct mmo_data_struct *mmo_data;
35433 + struct sun_core_struct *sun_core_data;
35434 + struct sco5_core_struct *sco5_core_data;
35435 + struct trad_core_struct *trad_core_data;
35436 + struct som_data_struct *som_data;
35437 + struct hpux_core_struct *hpux_core_data;
35438 + struct hppabsd_core_struct *hppabsd_core_data;
35439 + struct sgi_core_struct *sgi_core_data;
35440 + struct lynx_core_struct *lynx_core_data;
35441 + struct osf_core_struct *osf_core_data;
35442 + struct cisco_core_struct *cisco_core_data;
35443 + struct versados_data_struct *versados_data;
35444 + struct netbsd_core_struct *netbsd_core_data;
35445 + struct mach_o_data_struct *mach_o_data;
35446 + struct mach_o_fat_data_struct *mach_o_fat_data;
35447 + struct bfd_pef_data_struct *pef_data;
35448 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
35449 + struct bfd_sym_data_struct *sym_data;
35450 + void *any;
35451 + }
35452 + tdata;
35453 +
35454 + /* Used by the application to hold private data. */
35455 + void *usrdata;
35456 +
35457 + /* Where all the allocated stuff under this BFD goes. This is a
35458 + struct objalloc *, but we use void * to avoid requiring the inclusion
35459 + of objalloc.h. */
35460 + void *memory;
35461 +};
35462 +
35463 +typedef enum bfd_error
35464 +{
35465 + bfd_error_no_error = 0,
35466 + bfd_error_system_call,
35467 + bfd_error_invalid_target,
35468 + bfd_error_wrong_format,
35469 + bfd_error_wrong_object_format,
35470 + bfd_error_invalid_operation,
35471 + bfd_error_no_memory,
35472 + bfd_error_no_symbols,
35473 + bfd_error_no_armap,
35474 + bfd_error_no_more_archived_files,
35475 + bfd_error_malformed_archive,
35476 + bfd_error_file_not_recognized,
35477 + bfd_error_file_ambiguously_recognized,
35478 + bfd_error_no_contents,
35479 + bfd_error_nonrepresentable_section,
35480 + bfd_error_no_debug_section,
35481 + bfd_error_bad_value,
35482 + bfd_error_file_truncated,
35483 + bfd_error_file_too_big,
35484 + bfd_error_on_input,
35485 + bfd_error_invalid_error_code
35486 +}
35487 +bfd_error_type;
35488 +
35489 +bfd_error_type bfd_get_error (void);
35490 +
35491 +void bfd_set_error (bfd_error_type error_tag, ...);
35492 +
35493 +const char *bfd_errmsg (bfd_error_type error_tag);
35494 +
35495 +void bfd_perror (const char *message);
35496 +
35497 +typedef void (*bfd_error_handler_type) (const char *, ...);
35498 +
35499 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
35500 +
35501 +void bfd_set_error_program_name (const char *);
35502 +
35503 +bfd_error_handler_type bfd_get_error_handler (void);
35504 +
35505 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
35506 +
35507 +long bfd_canonicalize_reloc
35508 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
35509 +
35510 +void bfd_set_reloc
35511 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
35512 +
35513 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
35514 +
35515 +int bfd_get_arch_size (bfd *abfd);
35516 +
35517 +int bfd_get_sign_extend_vma (bfd *abfd);
35518 +
35519 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
35520 +
35521 +unsigned int bfd_get_gp_size (bfd *abfd);
35522 +
35523 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
35524 +
35525 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
35526 +
35527 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
35528 +
35529 +#define bfd_copy_private_header_data(ibfd, obfd) \
35530 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
35531 + (ibfd, obfd))
35532 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
35533 +
35534 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
35535 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
35536 + (ibfd, obfd))
35537 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
35538 +
35539 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
35540 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
35541 + (ibfd, obfd))
35542 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
35543 +
35544 +#define bfd_set_private_flags(abfd, flags) \
35545 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
35546 +#define bfd_sizeof_headers(abfd, info) \
35547 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
35548 +
35549 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
35550 + BFD_SEND (abfd, _bfd_find_nearest_line, \
35551 + (abfd, sec, syms, off, file, func, line))
35552 +
35553 +#define bfd_find_line(abfd, syms, sym, file, line) \
35554 + BFD_SEND (abfd, _bfd_find_line, \
35555 + (abfd, syms, sym, file, line))
35556 +
35557 +#define bfd_find_inliner_info(abfd, file, func, line) \
35558 + BFD_SEND (abfd, _bfd_find_inliner_info, \
35559 + (abfd, file, func, line))
35560 +
35561 +#define bfd_debug_info_start(abfd) \
35562 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
35563 +
35564 +#define bfd_debug_info_end(abfd) \
35565 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
35566 +
35567 +#define bfd_debug_info_accumulate(abfd, section) \
35568 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
35569 +
35570 +#define bfd_stat_arch_elt(abfd, stat) \
35571 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
35572 +
35573 +#define bfd_update_armap_timestamp(abfd) \
35574 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
35575 +
35576 +#define bfd_set_arch_mach(abfd, arch, mach)\
35577 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
35578 +
35579 +#define bfd_relax_section(abfd, section, link_info, again) \
35580 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
35581 +
35582 +#define bfd_gc_sections(abfd, link_info) \
35583 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
35584 +
35585 +#define bfd_merge_sections(abfd, link_info) \
35586 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
35587 +
35588 +#define bfd_is_group_section(abfd, sec) \
35589 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
35590 +
35591 +#define bfd_discard_group(abfd, sec) \
35592 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
35593 +
35594 +#define bfd_link_hash_table_create(abfd) \
35595 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
35596 +
35597 +#define bfd_link_hash_table_free(abfd, hash) \
35598 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
35599 +
35600 +#define bfd_link_add_symbols(abfd, info) \
35601 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
35602 +
35603 +#define bfd_link_just_syms(abfd, sec, info) \
35604 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
35605 +
35606 +#define bfd_final_link(abfd, info) \
35607 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
35608 +
35609 +#define bfd_free_cached_info(abfd) \
35610 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
35611 +
35612 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
35613 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
35614 +
35615 +#define bfd_print_private_bfd_data(abfd, file)\
35616 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
35617 +
35618 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
35619 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
35620 +
35621 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
35622 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
35623 + dyncount, dynsyms, ret))
35624 +
35625 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
35626 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
35627 +
35628 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
35629 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
35630 +
35631 +extern bfd_byte *bfd_get_relocated_section_contents
35632 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
35633 + bfd_boolean, asymbol **);
35634 +
35635 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
35636 +
35637 +struct bfd_preserve
35638 +{
35639 + void *marker;
35640 + void *tdata;
35641 + flagword flags;
35642 + const struct bfd_arch_info *arch_info;
35643 + struct bfd_section *sections;
35644 + struct bfd_section *section_last;
35645 + unsigned int section_count;
35646 + struct bfd_hash_table section_htab;
35647 +};
35648 +
35649 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
35650 +
35651 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
35652 +
35653 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
35654 +
35655 +bfd_vma bfd_emul_get_maxpagesize (const char *);
35656 +
35657 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
35658 +
35659 +bfd_vma bfd_emul_get_commonpagesize (const char *);
35660 +
35661 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
35662 +
35663 +char *bfd_demangle (bfd *, const char *, int);
35664 +
35665 +/* Extracted from archive.c. */
35666 +symindex bfd_get_next_mapent
35667 + (bfd *abfd, symindex previous, carsym **sym);
35668 +
35669 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
35670 +
35671 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
35672 +
35673 +/* Extracted from corefile.c. */
35674 +const char *bfd_core_file_failing_command (bfd *abfd);
35675 +
35676 +int bfd_core_file_failing_signal (bfd *abfd);
35677 +
35678 +bfd_boolean core_file_matches_executable_p
35679 + (bfd *core_bfd, bfd *exec_bfd);
35680 +
35681 +bfd_boolean generic_core_file_matches_executable_p
35682 + (bfd *core_bfd, bfd *exec_bfd);
35683 +
35684 +/* Extracted from targets.c. */
35685 +#define BFD_SEND(bfd, message, arglist) \
35686 + ((*((bfd)->xvec->message)) arglist)
35687 +
35688 +#ifdef DEBUG_BFD_SEND
35689 +#undef BFD_SEND
35690 +#define BFD_SEND(bfd, message, arglist) \
35691 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35692 + ((*((bfd)->xvec->message)) arglist) : \
35693 + (bfd_assert (__FILE__,__LINE__), NULL))
35694 +#endif
35695 +#define BFD_SEND_FMT(bfd, message, arglist) \
35696 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
35697 +
35698 +#ifdef DEBUG_BFD_SEND
35699 +#undef BFD_SEND_FMT
35700 +#define BFD_SEND_FMT(bfd, message, arglist) \
35701 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
35702 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
35703 + (bfd_assert (__FILE__,__LINE__), NULL))
35704 +#endif
35705 +
35706 +enum bfd_flavour
35707 +{
35708 + bfd_target_unknown_flavour,
35709 + bfd_target_aout_flavour,
35710 + bfd_target_coff_flavour,
35711 + bfd_target_ecoff_flavour,
35712 + bfd_target_xcoff_flavour,
35713 + bfd_target_elf_flavour,
35714 + bfd_target_ieee_flavour,
35715 + bfd_target_nlm_flavour,
35716 + bfd_target_oasys_flavour,
35717 + bfd_target_tekhex_flavour,
35718 + bfd_target_srec_flavour,
35719 + bfd_target_ihex_flavour,
35720 + bfd_target_som_flavour,
35721 + bfd_target_os9k_flavour,
35722 + bfd_target_versados_flavour,
35723 + bfd_target_msdos_flavour,
35724 + bfd_target_ovax_flavour,
35725 + bfd_target_evax_flavour,
35726 + bfd_target_mmo_flavour,
35727 + bfd_target_mach_o_flavour,
35728 + bfd_target_pef_flavour,
35729 + bfd_target_pef_xlib_flavour,
35730 + bfd_target_sym_flavour
35731 +};
35732 +
35733 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
35734 +
35735 +/* Forward declaration. */
35736 +typedef struct bfd_link_info _bfd_link_info;
35737 +
35738 +typedef struct bfd_target
35739 +{
35740 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
35741 + char *name;
35742 +
35743 + /* The "flavour" of a back end is a general indication about
35744 + the contents of a file. */
35745 + enum bfd_flavour flavour;
35746 +
35747 + /* The order of bytes within the data area of a file. */
35748 + enum bfd_endian byteorder;
35749 +
35750 + /* The order of bytes within the header parts of a file. */
35751 + enum bfd_endian header_byteorder;
35752 +
35753 + /* A mask of all the flags which an executable may have set -
35754 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
35755 + flagword object_flags;
35756 +
35757 + /* A mask of all the flags which a section may have set - from
35758 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
35759 + flagword section_flags;
35760 +
35761 + /* The character normally found at the front of a symbol.
35762 + (if any), perhaps `_'. */
35763 + char symbol_leading_char;
35764 +
35765 + /* The pad character for file names within an archive header. */
35766 + char ar_pad_char;
35767 +
35768 + /* The maximum number of characters in an archive header. */
35769 + unsigned short ar_max_namelen;
35770 +
35771 + /* Entries for byte swapping for data. These are different from the
35772 + other entry points, since they don't take a BFD as the first argument.
35773 + Certain other handlers could do the same. */
35774 + bfd_uint64_t (*bfd_getx64) (const void *);
35775 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
35776 + void (*bfd_putx64) (bfd_uint64_t, void *);
35777 + bfd_vma (*bfd_getx32) (const void *);
35778 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
35779 + void (*bfd_putx32) (bfd_vma, void *);
35780 + bfd_vma (*bfd_getx16) (const void *);
35781 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
35782 + void (*bfd_putx16) (bfd_vma, void *);
35783 +
35784 + /* Byte swapping for the headers. */
35785 + bfd_uint64_t (*bfd_h_getx64) (const void *);
35786 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
35787 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
35788 + bfd_vma (*bfd_h_getx32) (const void *);
35789 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
35790 + void (*bfd_h_putx32) (bfd_vma, void *);
35791 + bfd_vma (*bfd_h_getx16) (const void *);
35792 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
35793 + void (*bfd_h_putx16) (bfd_vma, void *);
35794 +
35795 + /* Format dependent routines: these are vectors of entry points
35796 + within the target vector structure, one for each format to check. */
35797 +
35798 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
35799 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
35800 +
35801 + /* Set the format of a file being written. */
35802 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
35803 +
35804 + /* Write cached information into a file being written, at <<bfd_close>>. */
35805 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
35806 +
35807 +
35808 + /* Generic entry points. */
35809 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
35810 + NAME##_close_and_cleanup, \
35811 + NAME##_bfd_free_cached_info, \
35812 + NAME##_new_section_hook, \
35813 + NAME##_get_section_contents, \
35814 + NAME##_get_section_contents_in_window
35815 +
35816 + /* Called when the BFD is being closed to do any necessary cleanup. */
35817 + bfd_boolean (*_close_and_cleanup) (bfd *);
35818 + /* Ask the BFD to free all cached information. */
35819 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
35820 + /* Called when a new section is created. */
35821 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
35822 + /* Read the contents of a section. */
35823 + bfd_boolean (*_bfd_get_section_contents)
35824 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
35825 + bfd_boolean (*_bfd_get_section_contents_in_window)
35826 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
35827 +
35828 + /* Entry points to copy private data. */
35829 +#define BFD_JUMP_TABLE_COPY(NAME) \
35830 + NAME##_bfd_copy_private_bfd_data, \
35831 + NAME##_bfd_merge_private_bfd_data, \
35832 + _bfd_generic_init_private_section_data, \
35833 + NAME##_bfd_copy_private_section_data, \
35834 + NAME##_bfd_copy_private_symbol_data, \
35835 + NAME##_bfd_copy_private_header_data, \
35836 + NAME##_bfd_set_private_flags, \
35837 + NAME##_bfd_print_private_bfd_data
35838 +
35839 + /* Called to copy BFD general private data from one object file
35840 + to another. */
35841 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
35842 + /* Called to merge BFD general private data from one object file
35843 + to a common output file when linking. */
35844 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
35845 + /* Called to initialize BFD private section data from one object file
35846 + to another. */
35847 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
35848 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
35849 + bfd_boolean (*_bfd_init_private_section_data)
35850 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
35851 + /* Called to copy BFD private section data from one object file
35852 + to another. */
35853 + bfd_boolean (*_bfd_copy_private_section_data)
35854 + (bfd *, sec_ptr, bfd *, sec_ptr);
35855 + /* Called to copy BFD private symbol data from one symbol
35856 + to another. */
35857 + bfd_boolean (*_bfd_copy_private_symbol_data)
35858 + (bfd *, asymbol *, bfd *, asymbol *);
35859 + /* Called to copy BFD private header data from one object file
35860 + to another. */
35861 + bfd_boolean (*_bfd_copy_private_header_data)
35862 + (bfd *, bfd *);
35863 + /* Called to set private backend flags. */
35864 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
35865 +
35866 + /* Called to print private BFD data. */
35867 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
35868 +
35869 + /* Core file entry points. */
35870 +#define BFD_JUMP_TABLE_CORE(NAME) \
35871 + NAME##_core_file_failing_command, \
35872 + NAME##_core_file_failing_signal, \
35873 + NAME##_core_file_matches_executable_p
35874 +
35875 + char * (*_core_file_failing_command) (bfd *);
35876 + int (*_core_file_failing_signal) (bfd *);
35877 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
35878 +
35879 + /* Archive entry points. */
35880 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
35881 + NAME##_slurp_armap, \
35882 + NAME##_slurp_extended_name_table, \
35883 + NAME##_construct_extended_name_table, \
35884 + NAME##_truncate_arname, \
35885 + NAME##_write_armap, \
35886 + NAME##_read_ar_hdr, \
35887 + NAME##_openr_next_archived_file, \
35888 + NAME##_get_elt_at_index, \
35889 + NAME##_generic_stat_arch_elt, \
35890 + NAME##_update_armap_timestamp
35891 +
35892 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
35893 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
35894 + bfd_boolean (*_bfd_construct_extended_name_table)
35895 + (bfd *, char **, bfd_size_type *, const char **);
35896 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
35897 + bfd_boolean (*write_armap)
35898 + (bfd *, unsigned int, struct orl *, unsigned int, int);
35899 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
35900 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
35901 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
35902 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
35903 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
35904 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
35905 +
35906 + /* Entry points used for symbols. */
35907 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
35908 + NAME##_get_symtab_upper_bound, \
35909 + NAME##_canonicalize_symtab, \
35910 + NAME##_make_empty_symbol, \
35911 + NAME##_print_symbol, \
35912 + NAME##_get_symbol_info, \
35913 + NAME##_bfd_is_local_label_name, \
35914 + NAME##_bfd_is_target_special_symbol, \
35915 + NAME##_get_lineno, \
35916 + NAME##_find_nearest_line, \
35917 + _bfd_generic_find_line, \
35918 + NAME##_find_inliner_info, \
35919 + NAME##_bfd_make_debug_symbol, \
35920 + NAME##_read_minisymbols, \
35921 + NAME##_minisymbol_to_symbol
35922 +
35923 + long (*_bfd_get_symtab_upper_bound) (bfd *);
35924 + long (*_bfd_canonicalize_symtab)
35925 + (bfd *, struct bfd_symbol **);
35926 + struct bfd_symbol *
35927 + (*_bfd_make_empty_symbol) (bfd *);
35928 + void (*_bfd_print_symbol)
35929 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
35930 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
35931 + void (*_bfd_get_symbol_info)
35932 + (bfd *, struct bfd_symbol *, symbol_info *);
35933 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
35934 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
35935 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
35936 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
35937 + bfd_boolean (*_bfd_find_nearest_line)
35938 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
35939 + const char **, const char **, unsigned int *);
35940 + bfd_boolean (*_bfd_find_line)
35941 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
35942 + const char **, unsigned int *);
35943 + bfd_boolean (*_bfd_find_inliner_info)
35944 + (bfd *, const char **, const char **, unsigned int *);
35945 + /* Back-door to allow format-aware applications to create debug symbols
35946 + while using BFD for everything else. Currently used by the assembler
35947 + when creating COFF files. */
35948 + asymbol * (*_bfd_make_debug_symbol)
35949 + (bfd *, void *, unsigned long size);
35950 +#define bfd_read_minisymbols(b, d, m, s) \
35951 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
35952 + long (*_read_minisymbols)
35953 + (bfd *, bfd_boolean, void **, unsigned int *);
35954 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
35955 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
35956 + asymbol * (*_minisymbol_to_symbol)
35957 + (bfd *, bfd_boolean, const void *, asymbol *);
35958 +
35959 + /* Routines for relocs. */
35960 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
35961 + NAME##_get_reloc_upper_bound, \
35962 + NAME##_canonicalize_reloc, \
35963 + NAME##_bfd_reloc_type_lookup, \
35964 + NAME##_bfd_reloc_name_lookup
35965 +
35966 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
35967 + long (*_bfd_canonicalize_reloc)
35968 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
35969 + /* See documentation on reloc types. */
35970 + reloc_howto_type *
35971 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
35972 + reloc_howto_type *
35973 + (*reloc_name_lookup) (bfd *, const char *);
35974 +
35975 +
35976 + /* Routines used when writing an object file. */
35977 +#define BFD_JUMP_TABLE_WRITE(NAME) \
35978 + NAME##_set_arch_mach, \
35979 + NAME##_set_section_contents
35980 +
35981 + bfd_boolean (*_bfd_set_arch_mach)
35982 + (bfd *, enum bfd_architecture, unsigned long);
35983 + bfd_boolean (*_bfd_set_section_contents)
35984 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
35985 +
35986 + /* Routines used by the linker. */
35987 +#define BFD_JUMP_TABLE_LINK(NAME) \
35988 + NAME##_sizeof_headers, \
35989 + NAME##_bfd_get_relocated_section_contents, \
35990 + NAME##_bfd_relax_section, \
35991 + NAME##_bfd_link_hash_table_create, \
35992 + NAME##_bfd_link_hash_table_free, \
35993 + NAME##_bfd_link_add_symbols, \
35994 + NAME##_bfd_link_just_syms, \
35995 + NAME##_bfd_final_link, \
35996 + NAME##_bfd_link_split_section, \
35997 + NAME##_bfd_gc_sections, \
35998 + NAME##_bfd_merge_sections, \
35999 + NAME##_bfd_is_group_section, \
36000 + NAME##_bfd_discard_group, \
36001 + NAME##_section_already_linked \
36002 +
36003 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
36004 + bfd_byte * (*_bfd_get_relocated_section_contents)
36005 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
36006 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
36007 +
36008 + bfd_boolean (*_bfd_relax_section)
36009 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
36010 +
36011 + /* Create a hash table for the linker. Different backends store
36012 + different information in this table. */
36013 + struct bfd_link_hash_table *
36014 + (*_bfd_link_hash_table_create) (bfd *);
36015 +
36016 + /* Release the memory associated with the linker hash table. */
36017 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
36018 +
36019 + /* Add symbols from this object file into the hash table. */
36020 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
36021 +
36022 + /* Indicate that we are only retrieving symbol values from this section. */
36023 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
36024 +
36025 + /* Do a link based on the link_order structures attached to each
36026 + section of the BFD. */
36027 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
36028 +
36029 + /* Should this section be split up into smaller pieces during linking. */
36030 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
36031 +
36032 + /* Remove sections that are not referenced from the output. */
36033 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
36034 +
36035 + /* Attempt to merge SEC_MERGE sections. */
36036 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
36037 +
36038 + /* Is this section a member of a group? */
36039 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
36040 +
36041 + /* Discard members of a group. */
36042 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
36043 +
36044 + /* Check if SEC has been already linked during a reloceatable or
36045 + final link. */
36046 + void (*_section_already_linked) (bfd *, struct bfd_section *,
36047 + struct bfd_link_info *);
36048 +
36049 + /* Routines to handle dynamic symbols and relocs. */
36050 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
36051 + NAME##_get_dynamic_symtab_upper_bound, \
36052 + NAME##_canonicalize_dynamic_symtab, \
36053 + NAME##_get_synthetic_symtab, \
36054 + NAME##_get_dynamic_reloc_upper_bound, \
36055 + NAME##_canonicalize_dynamic_reloc
36056 +
36057 + /* Get the amount of memory required to hold the dynamic symbols. */
36058 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
36059 + /* Read in the dynamic symbols. */
36060 + long (*_bfd_canonicalize_dynamic_symtab)
36061 + (bfd *, struct bfd_symbol **);
36062 + /* Create synthetized symbols. */
36063 + long (*_bfd_get_synthetic_symtab)
36064 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
36065 + struct bfd_symbol **);
36066 + /* Get the amount of memory required to hold the dynamic relocs. */
36067 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
36068 + /* Read in the dynamic relocs. */
36069 + long (*_bfd_canonicalize_dynamic_reloc)
36070 + (bfd *, arelent **, struct bfd_symbol **);
36071 +
36072 + /* Opposite endian version of this target. */
36073 + const struct bfd_target * alternative_target;
36074 +
36075 + /* Data for use by back-end routines, which isn't
36076 + generic enough to belong in this structure. */
36077 + const void *backend_data;
36078 +
36079 +} bfd_target;
36080 +
36081 +bfd_boolean bfd_set_default_target (const char *name);
36082 +
36083 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
36084 +
36085 +const char ** bfd_target_list (void);
36086 +
36087 +const bfd_target *bfd_search_for_target
36088 + (int (*search_func) (const bfd_target *, void *),
36089 + void *);
36090 +
36091 +/* Extracted from format.c. */
36092 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
36093 +
36094 +bfd_boolean bfd_check_format_matches
36095 + (bfd *abfd, bfd_format format, char ***matching);
36096 +
36097 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
36098 +
36099 +const char *bfd_format_string (bfd_format format);
36100 +
36101 +/* Extracted from linker.c. */
36102 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
36103 +
36104 +#define bfd_link_split_section(abfd, sec) \
36105 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
36106 +
36107 +void bfd_section_already_linked (bfd *abfd, asection *sec,
36108 + struct bfd_link_info *info);
36109 +
36110 +#define bfd_section_already_linked(abfd, sec, info) \
36111 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
36112 +
36113 +/* Extracted from simple.c. */
36114 +bfd_byte *bfd_simple_get_relocated_section_contents
36115 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
36116 +
36117 +#ifdef __cplusplus
36118 +}
36119 +#endif
36120 +#endif
36121 --- /dev/null
36122 +++ b/bfd/bfd_stdint.h
36123 @@ -0,0 +1,47 @@
36124 +/* generated for gcc (GCC) 4.2.4 (Ubuntu 4.2.4-3ubuntu4) */
36125 +
36126 +#ifndef GCC_GENERATED_STDINT_H
36127 +#define GCC_GENERATED_STDINT_H 1
36128 +
36129 +#include <sys/types.h>
36130 +#include <stdint.h>
36131 +/* glibc uses these symbols as guards to prevent redefinitions. */
36132 +#ifdef __int8_t_defined
36133 +#define _INT8_T
36134 +#define _INT16_T
36135 +#define _INT32_T
36136 +#endif
36137 +#ifdef __uint32_t_defined
36138 +#define _UINT32_T
36139 +#endif
36140 +
36141 +
36142 +/* Some systems have guard macros to prevent redefinitions, define them. */
36143 +#ifndef _INT8_T
36144 +#define _INT8_T
36145 +#endif
36146 +#ifndef _INT16_T
36147 +#define _INT16_T
36148 +#endif
36149 +#ifndef _INT32_T
36150 +#define _INT32_T
36151 +#endif
36152 +#ifndef _UINT8_T
36153 +#define _UINT8_T
36154 +#endif
36155 +#ifndef _UINT16_T
36156 +#define _UINT16_T
36157 +#endif
36158 +#ifndef _UINT32_T
36159 +#define _UINT32_T
36160 +#endif
36161 +
36162 +/* system headers have good uint64_t and int64_t */
36163 +#ifndef _INT64_T
36164 +#define _INT64_T
36165 +#endif
36166 +#ifndef _UINT64_T
36167 +#define _UINT64_T
36168 +#endif
36169 +
36170 +#endif /* GCC_GENERATED_STDINT_H */
36171 --- a/bfd/configure
36172 +++ b/bfd/configure
36173 @@ -19041,6 +19041,7 @@ do
36174 bfd_efi_app_ia64_vec) tb="$tb efi-app-ia64.lo pepigen.lo cofflink.lo"; target_size=64 ;;
36175 bfd_elf32_am33lin_vec) tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
36176 bfd_elf32_avr_vec) tb="$tb elf32-avr.lo elf32.lo $elf" ;;
36177 + bfd_elf32_avr32_vec) tb="$tb elf32-avr32.lo elf32.lo $elf" ;;
36178 bfd_elf32_bfin_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
36179 bfd_elf32_bfinfdpic_vec) tb="$tb elf32-bfin.lo elf32.lo $elf" ;;
36180 bfd_elf32_big_generic_vec) tb="$tb elf32-gen.lo elf32.lo $elf" ;;
36181 --- /dev/null
36182 +++ b/bfd/doc/bfd.h
36183 @@ -0,0 +1,5493 @@
36184 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
36185 + generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
36186 + "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
36187 + "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
36188 + "linker.c" and "simple.c".
36189 + Run "make headers" in your build bfd/ to regenerate. */
36190 +
36191 +/* Main header file for the bfd library -- portable access to object files.
36192 +
36193 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
36194 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
36195 + Free Software Foundation, Inc.
36196 +
36197 + Contributed by Cygnus Support.
36198 +
36199 + This file is part of BFD, the Binary File Descriptor library.
36200 +
36201 + This program is free software; you can redistribute it and/or modify
36202 + it under the terms of the GNU General Public License as published by
36203 + the Free Software Foundation; either version 3 of the License, or
36204 + (at your option) any later version.
36205 +
36206 + This program is distributed in the hope that it will be useful,
36207 + but WITHOUT ANY WARRANTY; without even the implied warranty of
36208 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
36209 + GNU General Public License for more details.
36210 +
36211 + You should have received a copy of the GNU General Public License
36212 + along with this program; if not, write to the Free Software
36213 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
36214 +
36215 +#ifndef __BFD_H_SEEN__
36216 +#define __BFD_H_SEEN__
36217 +
36218 +#ifdef __cplusplus
36219 +extern "C" {
36220 +#endif
36221 +
36222 +#include "ansidecl.h"
36223 +#include "symcat.h"
36224 +#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
36225 +#ifndef SABER
36226 +/* This hack is to avoid a problem with some strict ANSI C preprocessors.
36227 + The problem is, "32_" is not a valid preprocessing token, and we don't
36228 + want extra underscores (e.g., "nlm_32_"). The XCONCAT2 macro will
36229 + cause the inner CONCAT2 macros to be evaluated first, producing
36230 + still-valid pp-tokens. Then the final concatenation can be done. */
36231 +#undef CONCAT4
36232 +#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
36233 +#endif
36234 +#endif
36235 +
36236 +/* This is a utility macro to handle the situation where the code
36237 + wants to place a constant string into the code, followed by a
36238 + comma and then the length of the string. Doing this by hand
36239 + is error prone, so using this macro is safer. The macro will
36240 + also safely handle the case where a NULL is passed as the arg. */
36241 +#define STRING_COMMA_LEN(STR) (STR), ((STR) ? sizeof (STR) - 1 : 0)
36242 +/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
36243 + to create the arguments to another macro, since the preprocessor
36244 + will mis-count the number of arguments to the outer macro (by not
36245 + evaluating STRING_COMMA_LEN and so missing the comma). This is a
36246 + problem for example when trying to use STRING_COMMA_LEN to build
36247 + the arguments to the strncmp() macro. Hence this alternative
36248 + definition of strncmp is provided here.
36249 +
36250 + Note - these macros do NOT work if STR2 is not a constant string. */
36251 +#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
36252 + /* strcpy() can have a similar problem, but since we know we are
36253 + copying a constant string, we can use memcpy which will be faster
36254 + since there is no need to check for a NUL byte inside STR. We
36255 + can also save time if we do not need to copy the terminating NUL. */
36256 +#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
36257 +#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
36258 +
36259 +
36260 +/* The word size used by BFD on the host. This may be 64 with a 32
36261 + bit target if the host is 64 bit, or if other 64 bit targets have
36262 + been selected with --enable-targets, or if --enable-64-bit-bfd. */
36263 +#define BFD_ARCH_SIZE @wordsize@
36264 +
36265 +/* The word size of the default bfd target. */
36266 +#define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
36267 +
36268 +#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
36269 +#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
36270 +#define BFD_HOST_LONG_LONG @BFD_HOST_LONG_LONG@
36271 +#if @BFD_HOST_64_BIT_DEFINED@
36272 +#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
36273 +#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
36274 +typedef BFD_HOST_64_BIT bfd_int64_t;
36275 +typedef BFD_HOST_U_64_BIT bfd_uint64_t;
36276 +#endif
36277 +
36278 +#if BFD_ARCH_SIZE >= 64
36279 +#define BFD64
36280 +#endif
36281 +
36282 +#ifndef INLINE
36283 +#if __GNUC__ >= 2
36284 +#define INLINE __inline__
36285 +#else
36286 +#define INLINE
36287 +#endif
36288 +#endif
36289 +
36290 +/* Declaring a type wide enough to hold a host long and a host pointer. */
36291 +#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
36292 +typedef BFD_HOSTPTR_T bfd_hostptr_t;
36293 +
36294 +/* Forward declaration. */
36295 +typedef struct bfd bfd;
36296 +
36297 +/* Boolean type used in bfd. Too many systems define their own
36298 + versions of "boolean" for us to safely typedef a "boolean" of
36299 + our own. Using an enum for "bfd_boolean" has its own set of
36300 + problems, with strange looking casts required to avoid warnings
36301 + on some older compilers. Thus we just use an int.
36302 +
36303 + General rule: Functions which are bfd_boolean return TRUE on
36304 + success and FALSE on failure (unless they're a predicate). */
36305 +
36306 +typedef int bfd_boolean;
36307 +#undef FALSE
36308 +#undef TRUE
36309 +#define FALSE 0
36310 +#define TRUE 1
36311 +
36312 +#ifdef BFD64
36313 +
36314 +#ifndef BFD_HOST_64_BIT
36315 + #error No 64 bit integer type available
36316 +#endif /* ! defined (BFD_HOST_64_BIT) */
36317 +
36318 +typedef BFD_HOST_U_64_BIT bfd_vma;
36319 +typedef BFD_HOST_64_BIT bfd_signed_vma;
36320 +typedef BFD_HOST_U_64_BIT bfd_size_type;
36321 +typedef BFD_HOST_U_64_BIT symvalue;
36322 +
36323 +#ifndef fprintf_vma
36324 +#if BFD_HOST_64BIT_LONG
36325 +#define sprintf_vma(s,x) sprintf (s, "%016lx", x)
36326 +#define fprintf_vma(f,x) fprintf (f, "%016lx", x)
36327 +#elif BFD_HOST_64BIT_LONG_LONG
36328 +#define sprintf_vma(s,x) sprintf (s, "%016llx", x)
36329 +#define fprintf_vma(f,x) fprintf (f, "%016llx", x)
36330 +#else
36331 +#define _bfd_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
36332 +#define _bfd_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
36333 +#define fprintf_vma(s,x) \
36334 + fprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
36335 +#define sprintf_vma(s,x) \
36336 + sprintf ((s), "%08lx%08lx", _bfd_int64_high (x), _bfd_int64_low (x))
36337 +#endif
36338 +#endif
36339 +
36340 +#else /* not BFD64 */
36341 +
36342 +/* Represent a target address. Also used as a generic unsigned type
36343 + which is guaranteed to be big enough to hold any arithmetic types
36344 + we need to deal with. */
36345 +typedef unsigned long bfd_vma;
36346 +
36347 +/* A generic signed type which is guaranteed to be big enough to hold any
36348 + arithmetic types we need to deal with. Can be assumed to be compatible
36349 + with bfd_vma in the same way that signed and unsigned ints are compatible
36350 + (as parameters, in assignment, etc). */
36351 +typedef long bfd_signed_vma;
36352 +
36353 +typedef unsigned long symvalue;
36354 +typedef unsigned long bfd_size_type;
36355 +
36356 +/* Print a bfd_vma x on stream s. */
36357 +#define fprintf_vma(s,x) fprintf (s, "%08lx", x)
36358 +#define sprintf_vma(s,x) sprintf (s, "%08lx", x)
36359 +
36360 +#endif /* not BFD64 */
36361 +
36362 +#define HALF_BFD_SIZE_TYPE \
36363 + (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
36364 +
36365 +#ifndef BFD_HOST_64_BIT
36366 +/* Fall back on a 32 bit type. The idea is to make these types always
36367 + available for function return types, but in the case that
36368 + BFD_HOST_64_BIT is undefined such a function should abort or
36369 + otherwise signal an error. */
36370 +typedef bfd_signed_vma bfd_int64_t;
36371 +typedef bfd_vma bfd_uint64_t;
36372 +#endif
36373 +
36374 +/* An offset into a file. BFD always uses the largest possible offset
36375 + based on the build time availability of fseek, fseeko, or fseeko64. */
36376 +typedef @bfd_file_ptr@ file_ptr;
36377 +typedef unsigned @bfd_file_ptr@ ufile_ptr;
36378 +
36379 +extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
36380 +extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
36381 +
36382 +#define printf_vma(x) fprintf_vma(stdout,x)
36383 +#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
36384 +
36385 +typedef unsigned int flagword; /* 32 bits of flags */
36386 +typedef unsigned char bfd_byte;
36387 +\f
36388 +/* File formats. */
36389 +
36390 +typedef enum bfd_format
36391 +{
36392 + bfd_unknown = 0, /* File format is unknown. */
36393 + bfd_object, /* Linker/assembler/compiler output. */
36394 + bfd_archive, /* Object archive file. */
36395 + bfd_core, /* Core dump. */
36396 + bfd_type_end /* Marks the end; don't use it! */
36397 +}
36398 +bfd_format;
36399 +
36400 +/* Values that may appear in the flags field of a BFD. These also
36401 + appear in the object_flags field of the bfd_target structure, where
36402 + they indicate the set of flags used by that backend (not all flags
36403 + are meaningful for all object file formats) (FIXME: at the moment,
36404 + the object_flags values have mostly just been copied from backend
36405 + to another, and are not necessarily correct). */
36406 +
36407 +/* No flags. */
36408 +#define BFD_NO_FLAGS 0x00
36409 +
36410 +/* BFD contains relocation entries. */
36411 +#define HAS_RELOC 0x01
36412 +
36413 +/* BFD is directly executable. */
36414 +#define EXEC_P 0x02
36415 +
36416 +/* BFD has line number information (basically used for F_LNNO in a
36417 + COFF header). */
36418 +#define HAS_LINENO 0x04
36419 +
36420 +/* BFD has debugging information. */
36421 +#define HAS_DEBUG 0x08
36422 +
36423 +/* BFD has symbols. */
36424 +#define HAS_SYMS 0x10
36425 +
36426 +/* BFD has local symbols (basically used for F_LSYMS in a COFF
36427 + header). */
36428 +#define HAS_LOCALS 0x20
36429 +
36430 +/* BFD is a dynamic object. */
36431 +#define DYNAMIC 0x40
36432 +
36433 +/* Text section is write protected (if D_PAGED is not set, this is
36434 + like an a.out NMAGIC file) (the linker sets this by default, but
36435 + clears it for -r or -N). */
36436 +#define WP_TEXT 0x80
36437 +
36438 +/* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
36439 + linker sets this by default, but clears it for -r or -n or -N). */
36440 +#define D_PAGED 0x100
36441 +
36442 +/* BFD is relaxable (this means that bfd_relax_section may be able to
36443 + do something) (sometimes bfd_relax_section can do something even if
36444 + this is not set). */
36445 +#define BFD_IS_RELAXABLE 0x200
36446 +
36447 +/* This may be set before writing out a BFD to request using a
36448 + traditional format. For example, this is used to request that when
36449 + writing out an a.out object the symbols not be hashed to eliminate
36450 + duplicates. */
36451 +#define BFD_TRADITIONAL_FORMAT 0x400
36452 +
36453 +/* This flag indicates that the BFD contents are actually cached in
36454 + memory. If this is set, iostream points to a bfd_in_memory struct. */
36455 +#define BFD_IN_MEMORY 0x800
36456 +
36457 +/* The sections in this BFD specify a memory page. */
36458 +#define HAS_LOAD_PAGE 0x1000
36459 +
36460 +/* This BFD has been created by the linker and doesn't correspond
36461 + to any input file. */
36462 +#define BFD_LINKER_CREATED 0x2000
36463 +\f
36464 +/* Symbols and relocation. */
36465 +
36466 +/* A count of carsyms (canonical archive symbols). */
36467 +typedef unsigned long symindex;
36468 +
36469 +/* How to perform a relocation. */
36470 +typedef const struct reloc_howto_struct reloc_howto_type;
36471 +
36472 +#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
36473 +
36474 +/* General purpose part of a symbol X;
36475 + target specific parts are in libcoff.h, libaout.h, etc. */
36476 +
36477 +#define bfd_get_section(x) ((x)->section)
36478 +#define bfd_get_output_section(x) ((x)->section->output_section)
36479 +#define bfd_set_section(x,y) ((x)->section) = (y)
36480 +#define bfd_asymbol_base(x) ((x)->section->vma)
36481 +#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
36482 +#define bfd_asymbol_name(x) ((x)->name)
36483 +/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
36484 +#define bfd_asymbol_bfd(x) ((x)->the_bfd)
36485 +#define bfd_asymbol_flavour(x) (bfd_asymbol_bfd(x)->xvec->flavour)
36486 +
36487 +/* A canonical archive symbol. */
36488 +/* This is a type pun with struct ranlib on purpose! */
36489 +typedef struct carsym
36490 +{
36491 + char *name;
36492 + file_ptr file_offset; /* Look here to find the file. */
36493 +}
36494 +carsym; /* To make these you call a carsymogen. */
36495 +
36496 +/* Used in generating armaps (archive tables of contents).
36497 + Perhaps just a forward definition would do? */
36498 +struct orl /* Output ranlib. */
36499 +{
36500 + char **name; /* Symbol name. */
36501 + union
36502 + {
36503 + file_ptr pos;
36504 + bfd *abfd;
36505 + } u; /* bfd* or file position. */
36506 + int namidx; /* Index into string table. */
36507 +};
36508 +\f
36509 +/* Linenumber stuff. */
36510 +typedef struct lineno_cache_entry
36511 +{
36512 + unsigned int line_number; /* Linenumber from start of function. */
36513 + union
36514 + {
36515 + struct bfd_symbol *sym; /* Function name. */
36516 + bfd_vma offset; /* Offset into section. */
36517 + } u;
36518 +}
36519 +alent;
36520 +\f
36521 +/* Object and core file sections. */
36522 +
36523 +#define align_power(addr, align) \
36524 + (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
36525 +
36526 +typedef struct bfd_section *sec_ptr;
36527 +
36528 +#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
36529 +#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
36530 +#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
36531 +#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
36532 +#define bfd_section_name(bfd, ptr) ((ptr)->name)
36533 +#define bfd_section_size(bfd, ptr) ((ptr)->size)
36534 +#define bfd_get_section_size(ptr) ((ptr)->size)
36535 +#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
36536 +#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
36537 +#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
36538 +#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
36539 +#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
36540 +
36541 +#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
36542 +
36543 +#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
36544 +#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
36545 +#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
36546 +/* Find the address one past the end of SEC. */
36547 +#define bfd_get_section_limit(bfd, sec) \
36548 + (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
36549 + / bfd_octets_per_byte (bfd))
36550 +
36551 +/* Return TRUE if section has been discarded. */
36552 +#define elf_discarded_section(sec) \
36553 + (!bfd_is_abs_section (sec) \
36554 + && bfd_is_abs_section ((sec)->output_section) \
36555 + && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE \
36556 + && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
36557 +
36558 +/* Forward define. */
36559 +struct stat;
36560 +\f
36561 +typedef enum bfd_print_symbol
36562 +{
36563 + bfd_print_symbol_name,
36564 + bfd_print_symbol_more,
36565 + bfd_print_symbol_all
36566 +} bfd_print_symbol_type;
36567 +
36568 +/* Information about a symbol that nm needs. */
36569 +
36570 +typedef struct _symbol_info
36571 +{
36572 + symvalue value;
36573 + char type;
36574 + const char *name; /* Symbol name. */
36575 + unsigned char stab_type; /* Stab type. */
36576 + char stab_other; /* Stab other. */
36577 + short stab_desc; /* Stab desc. */
36578 + const char *stab_name; /* String for stab type. */
36579 +} symbol_info;
36580 +
36581 +/* Get the name of a stabs type code. */
36582 +
36583 +extern const char *bfd_get_stab_name (int);
36584 +\f
36585 +/* Hash table routines. There is no way to free up a hash table. */
36586 +
36587 +/* An element in the hash table. Most uses will actually use a larger
36588 + structure, and an instance of this will be the first field. */
36589 +
36590 +struct bfd_hash_entry
36591 +{
36592 + /* Next entry for this hash code. */
36593 + struct bfd_hash_entry *next;
36594 + /* String being hashed. */
36595 + const char *string;
36596 + /* Hash code. This is the full hash code, not the index into the
36597 + table. */
36598 + unsigned long hash;
36599 +};
36600 +
36601 +/* A hash table. */
36602 +
36603 +struct bfd_hash_table
36604 +{
36605 + /* The hash array. */
36606 + struct bfd_hash_entry **table;
36607 + /* A function used to create new elements in the hash table. The
36608 + first entry is itself a pointer to an element. When this
36609 + function is first invoked, this pointer will be NULL. However,
36610 + having the pointer permits a hierarchy of method functions to be
36611 + built each of which calls the function in the superclass. Thus
36612 + each function should be written to allocate a new block of memory
36613 + only if the argument is NULL. */
36614 + struct bfd_hash_entry *(*newfunc)
36615 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36616 + /* An objalloc for this hash table. This is a struct objalloc *,
36617 + but we use void * to avoid requiring the inclusion of objalloc.h. */
36618 + void *memory;
36619 + /* The number of slots in the hash table. */
36620 + unsigned int size;
36621 + /* The number of entries in the hash table. */
36622 + unsigned int count;
36623 + /* The size of elements. */
36624 + unsigned int entsize;
36625 + /* If non-zero, don't grow the hash table. */
36626 + unsigned int frozen:1;
36627 +};
36628 +
36629 +/* Initialize a hash table. */
36630 +extern bfd_boolean bfd_hash_table_init
36631 + (struct bfd_hash_table *,
36632 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36633 + struct bfd_hash_table *,
36634 + const char *),
36635 + unsigned int);
36636 +
36637 +/* Initialize a hash table specifying a size. */
36638 +extern bfd_boolean bfd_hash_table_init_n
36639 + (struct bfd_hash_table *,
36640 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
36641 + struct bfd_hash_table *,
36642 + const char *),
36643 + unsigned int, unsigned int);
36644 +
36645 +/* Free up a hash table. */
36646 +extern void bfd_hash_table_free
36647 + (struct bfd_hash_table *);
36648 +
36649 +/* Look up a string in a hash table. If CREATE is TRUE, a new entry
36650 + will be created for this string if one does not already exist. The
36651 + COPY argument must be TRUE if this routine should copy the string
36652 + into newly allocated memory when adding an entry. */
36653 +extern struct bfd_hash_entry *bfd_hash_lookup
36654 + (struct bfd_hash_table *, const char *, bfd_boolean create,
36655 + bfd_boolean copy);
36656 +
36657 +/* Replace an entry in a hash table. */
36658 +extern void bfd_hash_replace
36659 + (struct bfd_hash_table *, struct bfd_hash_entry *old,
36660 + struct bfd_hash_entry *nw);
36661 +
36662 +/* Base method for creating a hash table entry. */
36663 +extern struct bfd_hash_entry *bfd_hash_newfunc
36664 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
36665 +
36666 +/* Grab some space for a hash table entry. */
36667 +extern void *bfd_hash_allocate
36668 + (struct bfd_hash_table *, unsigned int);
36669 +
36670 +/* Traverse a hash table in a random order, calling a function on each
36671 + element. If the function returns FALSE, the traversal stops. The
36672 + INFO argument is passed to the function. */
36673 +extern void bfd_hash_traverse
36674 + (struct bfd_hash_table *,
36675 + bfd_boolean (*) (struct bfd_hash_entry *, void *),
36676 + void *info);
36677 +
36678 +/* Allows the default size of a hash table to be configured. New hash
36679 + tables allocated using bfd_hash_table_init will be created with
36680 + this size. */
36681 +extern void bfd_hash_set_default_size (bfd_size_type);
36682 +
36683 +/* This structure is used to keep track of stabs in sections
36684 + information while linking. */
36685 +
36686 +struct stab_info
36687 +{
36688 + /* A hash table used to hold stabs strings. */
36689 + struct bfd_strtab_hash *strings;
36690 + /* The header file hash table. */
36691 + struct bfd_hash_table includes;
36692 + /* The first .stabstr section. */
36693 + struct bfd_section *stabstr;
36694 +};
36695 +
36696 +#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
36697 +
36698 +/* User program access to BFD facilities. */
36699 +
36700 +/* Direct I/O routines, for programs which know more about the object
36701 + file than BFD does. Use higher level routines if possible. */
36702 +
36703 +extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
36704 +extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
36705 +extern int bfd_seek (bfd *, file_ptr, int);
36706 +extern file_ptr bfd_tell (bfd *);
36707 +extern int bfd_flush (bfd *);
36708 +extern int bfd_stat (bfd *, struct stat *);
36709 +
36710 +/* Deprecated old routines. */
36711 +#if __GNUC__
36712 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36713 + (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__), \
36714 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36715 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36716 + (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
36717 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36718 +#else
36719 +#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD) \
36720 + (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
36721 + bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36722 +#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD) \
36723 + (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
36724 + bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
36725 +#endif
36726 +extern void warn_deprecated (const char *, const char *, int, const char *);
36727 +
36728 +/* Cast from const char * to char * so that caller can assign to
36729 + a char * without a warning. */
36730 +#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
36731 +#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
36732 +#define bfd_get_format(abfd) ((abfd)->format)
36733 +#define bfd_get_target(abfd) ((abfd)->xvec->name)
36734 +#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
36735 +#define bfd_family_coff(abfd) \
36736 + (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
36737 + bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
36738 +#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
36739 +#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
36740 +#define bfd_header_big_endian(abfd) \
36741 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
36742 +#define bfd_header_little_endian(abfd) \
36743 + ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
36744 +#define bfd_get_file_flags(abfd) ((abfd)->flags)
36745 +#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
36746 +#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
36747 +#define bfd_my_archive(abfd) ((abfd)->my_archive)
36748 +#define bfd_has_map(abfd) ((abfd)->has_armap)
36749 +
36750 +#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
36751 +#define bfd_usrdata(abfd) ((abfd)->usrdata)
36752 +
36753 +#define bfd_get_start_address(abfd) ((abfd)->start_address)
36754 +#define bfd_get_symcount(abfd) ((abfd)->symcount)
36755 +#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
36756 +#define bfd_count_sections(abfd) ((abfd)->section_count)
36757 +
36758 +#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
36759 +
36760 +#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
36761 +
36762 +#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
36763 +
36764 +extern bfd_boolean bfd_cache_close
36765 + (bfd *abfd);
36766 +/* NB: This declaration should match the autogenerated one in libbfd.h. */
36767 +
36768 +extern bfd_boolean bfd_cache_close_all (void);
36769 +
36770 +extern bfd_boolean bfd_record_phdr
36771 + (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
36772 + bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
36773 +
36774 +/* Byte swapping routines. */
36775 +
36776 +bfd_uint64_t bfd_getb64 (const void *);
36777 +bfd_uint64_t bfd_getl64 (const void *);
36778 +bfd_int64_t bfd_getb_signed_64 (const void *);
36779 +bfd_int64_t bfd_getl_signed_64 (const void *);
36780 +bfd_vma bfd_getb32 (const void *);
36781 +bfd_vma bfd_getl32 (const void *);
36782 +bfd_signed_vma bfd_getb_signed_32 (const void *);
36783 +bfd_signed_vma bfd_getl_signed_32 (const void *);
36784 +bfd_vma bfd_getb16 (const void *);
36785 +bfd_vma bfd_getl16 (const void *);
36786 +bfd_signed_vma bfd_getb_signed_16 (const void *);
36787 +bfd_signed_vma bfd_getl_signed_16 (const void *);
36788 +void bfd_putb64 (bfd_uint64_t, void *);
36789 +void bfd_putl64 (bfd_uint64_t, void *);
36790 +void bfd_putb32 (bfd_vma, void *);
36791 +void bfd_putl32 (bfd_vma, void *);
36792 +void bfd_putb16 (bfd_vma, void *);
36793 +void bfd_putl16 (bfd_vma, void *);
36794 +
36795 +/* Byte swapping routines which take size and endiannes as arguments. */
36796 +
36797 +bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
36798 +void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
36799 +
36800 +extern bfd_boolean bfd_section_already_linked_table_init (void);
36801 +extern void bfd_section_already_linked_table_free (void);
36802 +\f
36803 +/* Externally visible ECOFF routines. */
36804 +
36805 +#if defined(__STDC__) || defined(ALMOST_STDC)
36806 +struct ecoff_debug_info;
36807 +struct ecoff_debug_swap;
36808 +struct ecoff_extr;
36809 +struct bfd_symbol;
36810 +struct bfd_link_info;
36811 +struct bfd_link_hash_entry;
36812 +struct bfd_elf_version_tree;
36813 +#endif
36814 +extern bfd_vma bfd_ecoff_get_gp_value
36815 + (bfd * abfd);
36816 +extern bfd_boolean bfd_ecoff_set_gp_value
36817 + (bfd *abfd, bfd_vma gp_value);
36818 +extern bfd_boolean bfd_ecoff_set_regmasks
36819 + (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
36820 + unsigned long *cprmask);
36821 +extern void *bfd_ecoff_debug_init
36822 + (bfd *output_bfd, struct ecoff_debug_info *output_debug,
36823 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
36824 +extern void bfd_ecoff_debug_free
36825 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36826 + const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
36827 +extern bfd_boolean bfd_ecoff_debug_accumulate
36828 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36829 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
36830 + struct ecoff_debug_info *input_debug,
36831 + const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
36832 +extern bfd_boolean bfd_ecoff_debug_accumulate_other
36833 + (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
36834 + const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
36835 + struct bfd_link_info *);
36836 +extern bfd_boolean bfd_ecoff_debug_externals
36837 + (bfd *abfd, struct ecoff_debug_info *debug,
36838 + const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
36839 + bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
36840 + void (*set_index) (struct bfd_symbol *, bfd_size_type));
36841 +extern bfd_boolean bfd_ecoff_debug_one_external
36842 + (bfd *abfd, struct ecoff_debug_info *debug,
36843 + const struct ecoff_debug_swap *swap, const char *name,
36844 + struct ecoff_extr *esym);
36845 +extern bfd_size_type bfd_ecoff_debug_size
36846 + (bfd *abfd, struct ecoff_debug_info *debug,
36847 + const struct ecoff_debug_swap *swap);
36848 +extern bfd_boolean bfd_ecoff_write_debug
36849 + (bfd *abfd, struct ecoff_debug_info *debug,
36850 + const struct ecoff_debug_swap *swap, file_ptr where);
36851 +extern bfd_boolean bfd_ecoff_write_accumulated_debug
36852 + (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
36853 + const struct ecoff_debug_swap *swap,
36854 + struct bfd_link_info *info, file_ptr where);
36855 +
36856 +/* Externally visible ELF routines. */
36857 +
36858 +struct bfd_link_needed_list
36859 +{
36860 + struct bfd_link_needed_list *next;
36861 + bfd *by;
36862 + const char *name;
36863 +};
36864 +
36865 +enum dynamic_lib_link_class {
36866 + DYN_NORMAL = 0,
36867 + DYN_AS_NEEDED = 1,
36868 + DYN_DT_NEEDED = 2,
36869 + DYN_NO_ADD_NEEDED = 4,
36870 + DYN_NO_NEEDED = 8
36871 +};
36872 +
36873 +enum notice_asneeded_action {
36874 + notice_as_needed,
36875 + notice_not_needed,
36876 + notice_needed
36877 +};
36878 +
36879 +extern bfd_boolean bfd_elf_record_link_assignment
36880 + (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
36881 + bfd_boolean);
36882 +extern struct bfd_link_needed_list *bfd_elf_get_needed_list
36883 + (bfd *, struct bfd_link_info *);
36884 +extern bfd_boolean bfd_elf_get_bfd_needed_list
36885 + (bfd *, struct bfd_link_needed_list **);
36886 +extern bfd_boolean bfd_elf_size_dynamic_sections
36887 + (bfd *, const char *, const char *, const char *, const char * const *,
36888 + struct bfd_link_info *, struct bfd_section **,
36889 + struct bfd_elf_version_tree *);
36890 +extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
36891 + (bfd *, struct bfd_link_info *);
36892 +extern void bfd_elf_set_dt_needed_name
36893 + (bfd *, const char *);
36894 +extern const char *bfd_elf_get_dt_soname
36895 + (bfd *);
36896 +extern void bfd_elf_set_dyn_lib_class
36897 + (bfd *, enum dynamic_lib_link_class);
36898 +extern int bfd_elf_get_dyn_lib_class
36899 + (bfd *);
36900 +extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
36901 + (bfd *, struct bfd_link_info *);
36902 +extern bfd_boolean bfd_elf_discard_info
36903 + (bfd *, struct bfd_link_info *);
36904 +extern unsigned int _bfd_elf_default_action_discarded
36905 + (struct bfd_section *);
36906 +
36907 +/* Return an upper bound on the number of bytes required to store a
36908 + copy of ABFD's program header table entries. Return -1 if an error
36909 + occurs; bfd_get_error will return an appropriate code. */
36910 +extern long bfd_get_elf_phdr_upper_bound
36911 + (bfd *abfd);
36912 +
36913 +/* Copy ABFD's program header table entries to *PHDRS. The entries
36914 + will be stored as an array of Elf_Internal_Phdr structures, as
36915 + defined in include/elf/internal.h. To find out how large the
36916 + buffer needs to be, call bfd_get_elf_phdr_upper_bound.
36917 +
36918 + Return the number of program header table entries read, or -1 if an
36919 + error occurs; bfd_get_error will return an appropriate code. */
36920 +extern int bfd_get_elf_phdrs
36921 + (bfd *abfd, void *phdrs);
36922 +
36923 +/* Create a new BFD as if by bfd_openr. Rather than opening a file,
36924 + reconstruct an ELF file by reading the segments out of remote memory
36925 + based on the ELF file header at EHDR_VMA and the ELF program headers it
36926 + points to. If not null, *LOADBASEP is filled in with the difference
36927 + between the VMAs from which the segments were read, and the VMAs the
36928 + file headers (and hence BFD's idea of each section's VMA) put them at.
36929 +
36930 + The function TARGET_READ_MEMORY is called to copy LEN bytes from the
36931 + remote memory at target address VMA into the local buffer at MYADDR; it
36932 + should return zero on success or an `errno' code on failure. TEMPL must
36933 + be a BFD for an ELF target with the word size and byte order found in
36934 + the remote memory. */
36935 +extern bfd *bfd_elf_bfd_from_remote_memory
36936 + (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
36937 + int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
36938 +
36939 +/* Return the arch_size field of an elf bfd, or -1 if not elf. */
36940 +extern int bfd_get_arch_size
36941 + (bfd *);
36942 +
36943 +/* Return TRUE if address "naturally" sign extends, or -1 if not elf. */
36944 +extern int bfd_get_sign_extend_vma
36945 + (bfd *);
36946 +
36947 +extern struct bfd_section *_bfd_elf_tls_setup
36948 + (bfd *, struct bfd_link_info *);
36949 +
36950 +extern void _bfd_fix_excluded_sec_syms
36951 + (bfd *, struct bfd_link_info *);
36952 +
36953 +extern unsigned bfd_m68k_mach_to_features (int);
36954 +
36955 +extern int bfd_m68k_features_to_mach (unsigned);
36956 +
36957 +extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
36958 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
36959 + char **);
36960 +
36961 +extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
36962 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
36963 + char **);
36964 +
36965 +/* SunOS shared library support routines for the linker. */
36966 +
36967 +extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
36968 + (bfd *, struct bfd_link_info *);
36969 +extern bfd_boolean bfd_sunos_record_link_assignment
36970 + (bfd *, struct bfd_link_info *, const char *);
36971 +extern bfd_boolean bfd_sunos_size_dynamic_sections
36972 + (bfd *, struct bfd_link_info *, struct bfd_section **,
36973 + struct bfd_section **, struct bfd_section **);
36974 +
36975 +/* Linux shared library support routines for the linker. */
36976 +
36977 +extern bfd_boolean bfd_i386linux_size_dynamic_sections
36978 + (bfd *, struct bfd_link_info *);
36979 +extern bfd_boolean bfd_m68klinux_size_dynamic_sections
36980 + (bfd *, struct bfd_link_info *);
36981 +extern bfd_boolean bfd_sparclinux_size_dynamic_sections
36982 + (bfd *, struct bfd_link_info *);
36983 +
36984 +/* mmap hacks */
36985 +
36986 +struct _bfd_window_internal;
36987 +typedef struct _bfd_window_internal bfd_window_internal;
36988 +
36989 +typedef struct _bfd_window
36990 +{
36991 + /* What the user asked for. */
36992 + void *data;
36993 + bfd_size_type size;
36994 + /* The actual window used by BFD. Small user-requested read-only
36995 + regions sharing a page may share a single window into the object
36996 + file. Read-write versions shouldn't until I've fixed things to
36997 + keep track of which portions have been claimed by the
36998 + application; don't want to give the same region back when the
36999 + application wants two writable copies! */
37000 + struct _bfd_window_internal *i;
37001 +}
37002 +bfd_window;
37003 +
37004 +extern void bfd_init_window
37005 + (bfd_window *);
37006 +extern void bfd_free_window
37007 + (bfd_window *);
37008 +extern bfd_boolean bfd_get_file_window
37009 + (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
37010 +
37011 +/* XCOFF support routines for the linker. */
37012 +
37013 +extern bfd_boolean bfd_xcoff_link_record_set
37014 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
37015 +extern bfd_boolean bfd_xcoff_import_symbol
37016 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
37017 + const char *, const char *, const char *, unsigned int);
37018 +extern bfd_boolean bfd_xcoff_export_symbol
37019 + (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
37020 +extern bfd_boolean bfd_xcoff_link_count_reloc
37021 + (bfd *, struct bfd_link_info *, const char *);
37022 +extern bfd_boolean bfd_xcoff_record_link_assignment
37023 + (bfd *, struct bfd_link_info *, const char *);
37024 +extern bfd_boolean bfd_xcoff_size_dynamic_sections
37025 + (bfd *, struct bfd_link_info *, const char *, const char *,
37026 + unsigned long, unsigned long, unsigned long, bfd_boolean,
37027 + int, bfd_boolean, bfd_boolean, struct bfd_section **, bfd_boolean);
37028 +extern bfd_boolean bfd_xcoff_link_generate_rtinit
37029 + (bfd *, const char *, const char *, bfd_boolean);
37030 +
37031 +/* XCOFF support routines for ar. */
37032 +extern bfd_boolean bfd_xcoff_ar_archive_set_magic
37033 + (bfd *, char *);
37034 +
37035 +/* Externally visible COFF routines. */
37036 +
37037 +#if defined(__STDC__) || defined(ALMOST_STDC)
37038 +struct internal_syment;
37039 +union internal_auxent;
37040 +#endif
37041 +
37042 +extern bfd_boolean bfd_coff_get_syment
37043 + (bfd *, struct bfd_symbol *, struct internal_syment *);
37044 +
37045 +extern bfd_boolean bfd_coff_get_auxent
37046 + (bfd *, struct bfd_symbol *, int, union internal_auxent *);
37047 +
37048 +extern bfd_boolean bfd_coff_set_symbol_class
37049 + (bfd *, struct bfd_symbol *, unsigned int);
37050 +
37051 +extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
37052 + (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
37053 +
37054 +/* ARM VFP11 erratum workaround support. */
37055 +typedef enum
37056 +{
37057 + BFD_ARM_VFP11_FIX_DEFAULT,
37058 + BFD_ARM_VFP11_FIX_NONE,
37059 + BFD_ARM_VFP11_FIX_SCALAR,
37060 + BFD_ARM_VFP11_FIX_VECTOR
37061 +} bfd_arm_vfp11_fix;
37062 +
37063 +extern void bfd_elf32_arm_init_maps
37064 + (bfd *);
37065 +
37066 +extern void bfd_elf32_arm_set_vfp11_fix
37067 + (bfd *, struct bfd_link_info *);
37068 +
37069 +extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
37070 + (bfd *, struct bfd_link_info *);
37071 +
37072 +extern void bfd_elf32_arm_vfp11_fix_veneer_locations
37073 + (bfd *, struct bfd_link_info *);
37074 +
37075 +/* ARM Interworking support. Called from linker. */
37076 +extern bfd_boolean bfd_arm_allocate_interworking_sections
37077 + (struct bfd_link_info *);
37078 +
37079 +extern bfd_boolean bfd_arm_process_before_allocation
37080 + (bfd *, struct bfd_link_info *, int);
37081 +
37082 +extern bfd_boolean bfd_arm_get_bfd_for_interworking
37083 + (bfd *, struct bfd_link_info *);
37084 +
37085 +/* PE ARM Interworking support. Called from linker. */
37086 +extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
37087 + (struct bfd_link_info *);
37088 +
37089 +extern bfd_boolean bfd_arm_pe_process_before_allocation
37090 + (bfd *, struct bfd_link_info *, int);
37091 +
37092 +extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
37093 + (bfd *, struct bfd_link_info *);
37094 +
37095 +/* ELF ARM Interworking support. Called from linker. */
37096 +extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
37097 + (struct bfd_link_info *);
37098 +
37099 +extern bfd_boolean bfd_elf32_arm_process_before_allocation
37100 + (bfd *, struct bfd_link_info *);
37101 +
37102 +void bfd_elf32_arm_set_target_relocs
37103 + (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
37104 + int, int);
37105 +
37106 +extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
37107 + (bfd *, struct bfd_link_info *);
37108 +
37109 +extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
37110 + (bfd *, struct bfd_link_info *);
37111 +
37112 +/* ELF ARM mapping symbol support */
37113 +#define BFD_ARM_SPECIAL_SYM_TYPE_MAP (1 << 0)
37114 +#define BFD_ARM_SPECIAL_SYM_TYPE_TAG (1 << 1)
37115 +#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER (1 << 2)
37116 +#define BFD_ARM_SPECIAL_SYM_TYPE_ANY (~0)
37117 +extern bfd_boolean bfd_is_arm_special_symbol_name
37118 + (const char * name, int type);
37119 +
37120 +extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
37121 +
37122 +/* ARM Note section processing. */
37123 +extern bfd_boolean bfd_arm_merge_machines
37124 + (bfd *, bfd *);
37125 +
37126 +extern bfd_boolean bfd_arm_update_notes
37127 + (bfd *, const char *);
37128 +
37129 +extern unsigned int bfd_arm_get_mach_from_notes
37130 + (bfd *, const char *);
37131 +
37132 +/* TI COFF load page support. */
37133 +extern void bfd_ticoff_set_section_load_page
37134 + (struct bfd_section *, int);
37135 +
37136 +extern int bfd_ticoff_get_section_load_page
37137 + (struct bfd_section *);
37138 +
37139 +/* H8/300 functions. */
37140 +extern bfd_vma bfd_h8300_pad_address
37141 + (bfd *, bfd_vma);
37142 +
37143 +/* IA64 Itanium code generation. Called from linker. */
37144 +extern void bfd_elf32_ia64_after_parse
37145 + (int);
37146 +
37147 +extern void bfd_elf64_ia64_after_parse
37148 + (int);
37149 +
37150 +/* This structure is used for a comdat section, as in PE. A comdat
37151 + section is associated with a particular symbol. When the linker
37152 + sees a comdat section, it keeps only one of the sections with a
37153 + given name and associated with a given symbol. */
37154 +
37155 +struct coff_comdat_info
37156 +{
37157 + /* The name of the symbol associated with a comdat section. */
37158 + const char *name;
37159 +
37160 + /* The local symbol table index of the symbol associated with a
37161 + comdat section. This is only meaningful to the object file format
37162 + specific code; it is not an index into the list returned by
37163 + bfd_canonicalize_symtab. */
37164 + long symbol;
37165 +};
37166 +
37167 +extern struct coff_comdat_info *bfd_coff_get_comdat_section
37168 + (bfd *, struct bfd_section *);
37169 +
37170 +/* Extracted from init.c. */
37171 +void bfd_init (void);
37172 +
37173 +/* Extracted from opncls.c. */
37174 +bfd *bfd_fopen (const char *filename, const char *target,
37175 + const char *mode, int fd);
37176 +
37177 +bfd *bfd_openr (const char *filename, const char *target);
37178 +
37179 +bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
37180 +
37181 +bfd *bfd_openstreamr (const char *, const char *, void *);
37182 +
37183 +bfd *bfd_openr_iovec (const char *filename, const char *target,
37184 + void *(*open) (struct bfd *nbfd,
37185 + void *open_closure),
37186 + void *open_closure,
37187 + file_ptr (*pread) (struct bfd *nbfd,
37188 + void *stream,
37189 + void *buf,
37190 + file_ptr nbytes,
37191 + file_ptr offset),
37192 + int (*close) (struct bfd *nbfd,
37193 + void *stream),
37194 + int (*stat) (struct bfd *abfd,
37195 + void *stream,
37196 + struct stat *sb));
37197 +
37198 +bfd *bfd_openw (const char *filename, const char *target);
37199 +
37200 +bfd_boolean bfd_close (bfd *abfd);
37201 +
37202 +bfd_boolean bfd_close_all_done (bfd *);
37203 +
37204 +bfd *bfd_create (const char *filename, bfd *templ);
37205 +
37206 +bfd_boolean bfd_make_writable (bfd *abfd);
37207 +
37208 +bfd_boolean bfd_make_readable (bfd *abfd);
37209 +
37210 +unsigned long bfd_calc_gnu_debuglink_crc32
37211 + (unsigned long crc, const unsigned char *buf, bfd_size_type len);
37212 +
37213 +char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
37214 +
37215 +struct bfd_section *bfd_create_gnu_debuglink_section
37216 + (bfd *abfd, const char *filename);
37217 +
37218 +bfd_boolean bfd_fill_in_gnu_debuglink_section
37219 + (bfd *abfd, struct bfd_section *sect, const char *filename);
37220 +
37221 +/* Extracted from libbfd.c. */
37222 +
37223 +/* Byte swapping macros for user section data. */
37224 +
37225 +#define bfd_put_8(abfd, val, ptr) \
37226 + ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
37227 +#define bfd_put_signed_8 \
37228 + bfd_put_8
37229 +#define bfd_get_8(abfd, ptr) \
37230 + (*(unsigned char *) (ptr) & 0xff)
37231 +#define bfd_get_signed_8(abfd, ptr) \
37232 + (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
37233 +
37234 +#define bfd_put_16(abfd, val, ptr) \
37235 + BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
37236 +#define bfd_put_signed_16 \
37237 + bfd_put_16
37238 +#define bfd_get_16(abfd, ptr) \
37239 + BFD_SEND (abfd, bfd_getx16, (ptr))
37240 +#define bfd_get_signed_16(abfd, ptr) \
37241 + BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
37242 +
37243 +#define bfd_put_32(abfd, val, ptr) \
37244 + BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
37245 +#define bfd_put_signed_32 \
37246 + bfd_put_32
37247 +#define bfd_get_32(abfd, ptr) \
37248 + BFD_SEND (abfd, bfd_getx32, (ptr))
37249 +#define bfd_get_signed_32(abfd, ptr) \
37250 + BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
37251 +
37252 +#define bfd_put_64(abfd, val, ptr) \
37253 + BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
37254 +#define bfd_put_signed_64 \
37255 + bfd_put_64
37256 +#define bfd_get_64(abfd, ptr) \
37257 + BFD_SEND (abfd, bfd_getx64, (ptr))
37258 +#define bfd_get_signed_64(abfd, ptr) \
37259 + BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
37260 +
37261 +#define bfd_get(bits, abfd, ptr) \
37262 + ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr) \
37263 + : (bits) == 16 ? bfd_get_16 (abfd, ptr) \
37264 + : (bits) == 32 ? bfd_get_32 (abfd, ptr) \
37265 + : (bits) == 64 ? bfd_get_64 (abfd, ptr) \
37266 + : (abort (), (bfd_vma) - 1))
37267 +
37268 +#define bfd_put(bits, abfd, val, ptr) \
37269 + ((bits) == 8 ? bfd_put_8 (abfd, val, ptr) \
37270 + : (bits) == 16 ? bfd_put_16 (abfd, val, ptr) \
37271 + : (bits) == 32 ? bfd_put_32 (abfd, val, ptr) \
37272 + : (bits) == 64 ? bfd_put_64 (abfd, val, ptr) \
37273 + : (abort (), (void) 0))
37274 +
37275 +
37276 +/* Byte swapping macros for file header data. */
37277 +
37278 +#define bfd_h_put_8(abfd, val, ptr) \
37279 + bfd_put_8 (abfd, val, ptr)
37280 +#define bfd_h_put_signed_8(abfd, val, ptr) \
37281 + bfd_put_8 (abfd, val, ptr)
37282 +#define bfd_h_get_8(abfd, ptr) \
37283 + bfd_get_8 (abfd, ptr)
37284 +#define bfd_h_get_signed_8(abfd, ptr) \
37285 + bfd_get_signed_8 (abfd, ptr)
37286 +
37287 +#define bfd_h_put_16(abfd, val, ptr) \
37288 + BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
37289 +#define bfd_h_put_signed_16 \
37290 + bfd_h_put_16
37291 +#define bfd_h_get_16(abfd, ptr) \
37292 + BFD_SEND (abfd, bfd_h_getx16, (ptr))
37293 +#define bfd_h_get_signed_16(abfd, ptr) \
37294 + BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
37295 +
37296 +#define bfd_h_put_32(abfd, val, ptr) \
37297 + BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
37298 +#define bfd_h_put_signed_32 \
37299 + bfd_h_put_32
37300 +#define bfd_h_get_32(abfd, ptr) \
37301 + BFD_SEND (abfd, bfd_h_getx32, (ptr))
37302 +#define bfd_h_get_signed_32(abfd, ptr) \
37303 + BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
37304 +
37305 +#define bfd_h_put_64(abfd, val, ptr) \
37306 + BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
37307 +#define bfd_h_put_signed_64 \
37308 + bfd_h_put_64
37309 +#define bfd_h_get_64(abfd, ptr) \
37310 + BFD_SEND (abfd, bfd_h_getx64, (ptr))
37311 +#define bfd_h_get_signed_64(abfd, ptr) \
37312 + BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
37313 +
37314 +/* Aliases for the above, which should eventually go away. */
37315 +
37316 +#define H_PUT_64 bfd_h_put_64
37317 +#define H_PUT_32 bfd_h_put_32
37318 +#define H_PUT_16 bfd_h_put_16
37319 +#define H_PUT_8 bfd_h_put_8
37320 +#define H_PUT_S64 bfd_h_put_signed_64
37321 +#define H_PUT_S32 bfd_h_put_signed_32
37322 +#define H_PUT_S16 bfd_h_put_signed_16
37323 +#define H_PUT_S8 bfd_h_put_signed_8
37324 +#define H_GET_64 bfd_h_get_64
37325 +#define H_GET_32 bfd_h_get_32
37326 +#define H_GET_16 bfd_h_get_16
37327 +#define H_GET_8 bfd_h_get_8
37328 +#define H_GET_S64 bfd_h_get_signed_64
37329 +#define H_GET_S32 bfd_h_get_signed_32
37330 +#define H_GET_S16 bfd_h_get_signed_16
37331 +#define H_GET_S8 bfd_h_get_signed_8
37332 +
37333 +
37334 +/* Extracted from bfdio.c. */
37335 +long bfd_get_mtime (bfd *abfd);
37336 +
37337 +file_ptr bfd_get_size (bfd *abfd);
37338 +
37339 +/* Extracted from bfdwin.c. */
37340 +/* Extracted from section.c. */
37341 +typedef struct bfd_section
37342 +{
37343 + /* The name of the section; the name isn't a copy, the pointer is
37344 + the same as that passed to bfd_make_section. */
37345 + const char *name;
37346 +
37347 + /* A unique sequence number. */
37348 + int id;
37349 +
37350 + /* Which section in the bfd; 0..n-1 as sections are created in a bfd. */
37351 + int index;
37352 +
37353 + /* The next section in the list belonging to the BFD, or NULL. */
37354 + struct bfd_section *next;
37355 +
37356 + /* The previous section in the list belonging to the BFD, or NULL. */
37357 + struct bfd_section *prev;
37358 +
37359 + /* The field flags contains attributes of the section. Some
37360 + flags are read in from the object file, and some are
37361 + synthesized from other information. */
37362 + flagword flags;
37363 +
37364 +#define SEC_NO_FLAGS 0x000
37365 +
37366 + /* Tells the OS to allocate space for this section when loading.
37367 + This is clear for a section containing debug information only. */
37368 +#define SEC_ALLOC 0x001
37369 +
37370 + /* Tells the OS to load the section from the file when loading.
37371 + This is clear for a .bss section. */
37372 +#define SEC_LOAD 0x002
37373 +
37374 + /* The section contains data still to be relocated, so there is
37375 + some relocation information too. */
37376 +#define SEC_RELOC 0x004
37377 +
37378 + /* A signal to the OS that the section contains read only data. */
37379 +#define SEC_READONLY 0x008
37380 +
37381 + /* The section contains code only. */
37382 +#define SEC_CODE 0x010
37383 +
37384 + /* The section contains data only. */
37385 +#define SEC_DATA 0x020
37386 +
37387 + /* The section will reside in ROM. */
37388 +#define SEC_ROM 0x040
37389 +
37390 + /* The section contains constructor information. This section
37391 + type is used by the linker to create lists of constructors and
37392 + destructors used by <<g++>>. When a back end sees a symbol
37393 + which should be used in a constructor list, it creates a new
37394 + section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
37395 + the symbol to it, and builds a relocation. To build the lists
37396 + of constructors, all the linker has to do is catenate all the
37397 + sections called <<__CTOR_LIST__>> and relocate the data
37398 + contained within - exactly the operations it would peform on
37399 + standard data. */
37400 +#define SEC_CONSTRUCTOR 0x080
37401 +
37402 + /* The section has contents - a data section could be
37403 + <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
37404 + <<SEC_HAS_CONTENTS>> */
37405 +#define SEC_HAS_CONTENTS 0x100
37406 +
37407 + /* An instruction to the linker to not output the section
37408 + even if it has information which would normally be written. */
37409 +#define SEC_NEVER_LOAD 0x200
37410 +
37411 + /* The section contains thread local data. */
37412 +#define SEC_THREAD_LOCAL 0x400
37413 +
37414 + /* The section has GOT references. This flag is only for the
37415 + linker, and is currently only used by the elf32-hppa back end.
37416 + It will be set if global offset table references were detected
37417 + in this section, which indicate to the linker that the section
37418 + contains PIC code, and must be handled specially when doing a
37419 + static link. */
37420 +#define SEC_HAS_GOT_REF 0x800
37421 +
37422 + /* The section contains common symbols (symbols may be defined
37423 + multiple times, the value of a symbol is the amount of
37424 + space it requires, and the largest symbol value is the one
37425 + used). Most targets have exactly one of these (which we
37426 + translate to bfd_com_section_ptr), but ECOFF has two. */
37427 +#define SEC_IS_COMMON 0x1000
37428 +
37429 + /* The section contains only debugging information. For
37430 + example, this is set for ELF .debug and .stab sections.
37431 + strip tests this flag to see if a section can be
37432 + discarded. */
37433 +#define SEC_DEBUGGING 0x2000
37434 +
37435 + /* The contents of this section are held in memory pointed to
37436 + by the contents field. This is checked by bfd_get_section_contents,
37437 + and the data is retrieved from memory if appropriate. */
37438 +#define SEC_IN_MEMORY 0x4000
37439 +
37440 + /* The contents of this section are to be excluded by the
37441 + linker for executable and shared objects unless those
37442 + objects are to be further relocated. */
37443 +#define SEC_EXCLUDE 0x8000
37444 +
37445 + /* The contents of this section are to be sorted based on the sum of
37446 + the symbol and addend values specified by the associated relocation
37447 + entries. Entries without associated relocation entries will be
37448 + appended to the end of the section in an unspecified order. */
37449 +#define SEC_SORT_ENTRIES 0x10000
37450 +
37451 + /* When linking, duplicate sections of the same name should be
37452 + discarded, rather than being combined into a single section as
37453 + is usually done. This is similar to how common symbols are
37454 + handled. See SEC_LINK_DUPLICATES below. */
37455 +#define SEC_LINK_ONCE 0x20000
37456 +
37457 + /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
37458 + should handle duplicate sections. */
37459 +#define SEC_LINK_DUPLICATES 0x40000
37460 +
37461 + /* This value for SEC_LINK_DUPLICATES means that duplicate
37462 + sections with the same name should simply be discarded. */
37463 +#define SEC_LINK_DUPLICATES_DISCARD 0x0
37464 +
37465 + /* This value for SEC_LINK_DUPLICATES means that the linker
37466 + should warn if there are any duplicate sections, although
37467 + it should still only link one copy. */
37468 +#define SEC_LINK_DUPLICATES_ONE_ONLY 0x80000
37469 +
37470 + /* This value for SEC_LINK_DUPLICATES means that the linker
37471 + should warn if any duplicate sections are a different size. */
37472 +#define SEC_LINK_DUPLICATES_SAME_SIZE 0x100000
37473 +
37474 + /* This value for SEC_LINK_DUPLICATES means that the linker
37475 + should warn if any duplicate sections contain different
37476 + contents. */
37477 +#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
37478 + (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
37479 +
37480 + /* This section was created by the linker as part of dynamic
37481 + relocation or other arcane processing. It is skipped when
37482 + going through the first-pass output, trusting that someone
37483 + else up the line will take care of it later. */
37484 +#define SEC_LINKER_CREATED 0x200000
37485 +
37486 + /* This section should not be subject to garbage collection.
37487 + Also set to inform the linker that this section should not be
37488 + listed in the link map as discarded. */
37489 +#define SEC_KEEP 0x400000
37490 +
37491 + /* This section contains "short" data, and should be placed
37492 + "near" the GP. */
37493 +#define SEC_SMALL_DATA 0x800000
37494 +
37495 + /* Attempt to merge identical entities in the section.
37496 + Entity size is given in the entsize field. */
37497 +#define SEC_MERGE 0x1000000
37498 +
37499 + /* If given with SEC_MERGE, entities to merge are zero terminated
37500 + strings where entsize specifies character size instead of fixed
37501 + size entries. */
37502 +#define SEC_STRINGS 0x2000000
37503 +
37504 + /* This section contains data about section groups. */
37505 +#define SEC_GROUP 0x4000000
37506 +
37507 + /* The section is a COFF shared library section. This flag is
37508 + only for the linker. If this type of section appears in
37509 + the input file, the linker must copy it to the output file
37510 + without changing the vma or size. FIXME: Although this
37511 + was originally intended to be general, it really is COFF
37512 + specific (and the flag was renamed to indicate this). It
37513 + might be cleaner to have some more general mechanism to
37514 + allow the back end to control what the linker does with
37515 + sections. */
37516 +#define SEC_COFF_SHARED_LIBRARY 0x10000000
37517 +
37518 + /* This section contains data which may be shared with other
37519 + executables or shared objects. This is for COFF only. */
37520 +#define SEC_COFF_SHARED 0x20000000
37521 +
37522 + /* When a section with this flag is being linked, then if the size of
37523 + the input section is less than a page, it should not cross a page
37524 + boundary. If the size of the input section is one page or more,
37525 + it should be aligned on a page boundary. This is for TI
37526 + TMS320C54X only. */
37527 +#define SEC_TIC54X_BLOCK 0x40000000
37528 +
37529 + /* Conditionally link this section; do not link if there are no
37530 + references found to any symbol in the section. This is for TI
37531 + TMS320C54X only. */
37532 +#define SEC_TIC54X_CLINK 0x80000000
37533 +
37534 + /* End of section flags. */
37535 +
37536 + /* Some internal packed boolean fields. */
37537 +
37538 + /* See the vma field. */
37539 + unsigned int user_set_vma : 1;
37540 +
37541 + /* A mark flag used by some of the linker backends. */
37542 + unsigned int linker_mark : 1;
37543 +
37544 + /* Another mark flag used by some of the linker backends. Set for
37545 + output sections that have an input section. */
37546 + unsigned int linker_has_input : 1;
37547 +
37548 + /* Mark flags used by some linker backends for garbage collection. */
37549 + unsigned int gc_mark : 1;
37550 + unsigned int gc_mark_from_eh : 1;
37551 +
37552 + /* The following flags are used by the ELF linker. */
37553 +
37554 + /* Mark sections which have been allocated to segments. */
37555 + unsigned int segment_mark : 1;
37556 +
37557 + /* Type of sec_info information. */
37558 + unsigned int sec_info_type:3;
37559 +#define ELF_INFO_TYPE_NONE 0
37560 +#define ELF_INFO_TYPE_STABS 1
37561 +#define ELF_INFO_TYPE_MERGE 2
37562 +#define ELF_INFO_TYPE_EH_FRAME 3
37563 +#define ELF_INFO_TYPE_JUST_SYMS 4
37564 +
37565 + /* Nonzero if this section uses RELA relocations, rather than REL. */
37566 + unsigned int use_rela_p:1;
37567 +
37568 + /* Bits used by various backends. The generic code doesn't touch
37569 + these fields. */
37570 +
37571 + /* Nonzero if this section has TLS related relocations. */
37572 + unsigned int has_tls_reloc:1;
37573 +
37574 + /* Nonzero if this section has a gp reloc. */
37575 + unsigned int has_gp_reloc:1;
37576 +
37577 + /* Nonzero if this section needs the relax finalize pass. */
37578 + unsigned int need_finalize_relax:1;
37579 +
37580 + /* Whether relocations have been processed. */
37581 + unsigned int reloc_done : 1;
37582 +
37583 + /* End of internal packed boolean fields. */
37584 +
37585 + /* The virtual memory address of the section - where it will be
37586 + at run time. The symbols are relocated against this. The
37587 + user_set_vma flag is maintained by bfd; if it's not set, the
37588 + backend can assign addresses (for example, in <<a.out>>, where
37589 + the default address for <<.data>> is dependent on the specific
37590 + target and various flags). */
37591 + bfd_vma vma;
37592 +
37593 + /* The load address of the section - where it would be in a
37594 + rom image; really only used for writing section header
37595 + information. */
37596 + bfd_vma lma;
37597 +
37598 + /* The size of the section in octets, as it will be output.
37599 + Contains a value even if the section has no contents (e.g., the
37600 + size of <<.bss>>). */
37601 + bfd_size_type size;
37602 +
37603 + /* For input sections, the original size on disk of the section, in
37604 + octets. This field is used by the linker relaxation code. It is
37605 + currently only set for sections where the linker relaxation scheme
37606 + doesn't cache altered section and reloc contents (stabs, eh_frame,
37607 + SEC_MERGE, some coff relaxing targets), and thus the original size
37608 + needs to be kept to read the section multiple times.
37609 + For output sections, rawsize holds the section size calculated on
37610 + a previous linker relaxation pass. */
37611 + bfd_size_type rawsize;
37612 +
37613 + /* If this section is going to be output, then this value is the
37614 + offset in *bytes* into the output section of the first byte in the
37615 + input section (byte ==> smallest addressable unit on the
37616 + target). In most cases, if this was going to start at the
37617 + 100th octet (8-bit quantity) in the output section, this value
37618 + would be 100. However, if the target byte size is 16 bits
37619 + (bfd_octets_per_byte is "2"), this value would be 50. */
37620 + bfd_vma output_offset;
37621 +
37622 + /* The output section through which to map on output. */
37623 + struct bfd_section *output_section;
37624 +
37625 + /* The alignment requirement of the section, as an exponent of 2 -
37626 + e.g., 3 aligns to 2^3 (or 8). */
37627 + unsigned int alignment_power;
37628 +
37629 + /* If an input section, a pointer to a vector of relocation
37630 + records for the data in this section. */
37631 + struct reloc_cache_entry *relocation;
37632 +
37633 + /* If an output section, a pointer to a vector of pointers to
37634 + relocation records for the data in this section. */
37635 + struct reloc_cache_entry **orelocation;
37636 +
37637 + /* The number of relocation records in one of the above. */
37638 + unsigned reloc_count;
37639 +
37640 + /* Information below is back end specific - and not always used
37641 + or updated. */
37642 +
37643 + /* File position of section data. */
37644 + file_ptr filepos;
37645 +
37646 + /* File position of relocation info. */
37647 + file_ptr rel_filepos;
37648 +
37649 + /* File position of line data. */
37650 + file_ptr line_filepos;
37651 +
37652 + /* Pointer to data for applications. */
37653 + void *userdata;
37654 +
37655 + /* If the SEC_IN_MEMORY flag is set, this points to the actual
37656 + contents. */
37657 + unsigned char *contents;
37658 +
37659 + /* Attached line number information. */
37660 + alent *lineno;
37661 +
37662 + /* Number of line number records. */
37663 + unsigned int lineno_count;
37664 +
37665 + /* Entity size for merging purposes. */
37666 + unsigned int entsize;
37667 +
37668 + /* Points to the kept section if this section is a link-once section,
37669 + and is discarded. */
37670 + struct bfd_section *kept_section;
37671 +
37672 + /* When a section is being output, this value changes as more
37673 + linenumbers are written out. */
37674 + file_ptr moving_line_filepos;
37675 +
37676 + /* What the section number is in the target world. */
37677 + int target_index;
37678 +
37679 + void *used_by_bfd;
37680 +
37681 + /* If this is a constructor section then here is a list of the
37682 + relocations created to relocate items within it. */
37683 + struct relent_chain *constructor_chain;
37684 +
37685 + /* The BFD which owns the section. */
37686 + bfd *owner;
37687 +
37688 + /* A symbol which points at this section only. */
37689 + struct bfd_symbol *symbol;
37690 + struct bfd_symbol **symbol_ptr_ptr;
37691 +
37692 + /* Early in the link process, map_head and map_tail are used to build
37693 + a list of input sections attached to an output section. Later,
37694 + output sections use these fields for a list of bfd_link_order
37695 + structs. */
37696 + union {
37697 + struct bfd_link_order *link_order;
37698 + struct bfd_section *s;
37699 + } map_head, map_tail;
37700 +} asection;
37701 +
37702 +/* These sections are global, and are managed by BFD. The application
37703 + and target back end are not permitted to change the values in
37704 + these sections. New code should use the section_ptr macros rather
37705 + than referring directly to the const sections. The const sections
37706 + may eventually vanish. */
37707 +#define BFD_ABS_SECTION_NAME "*ABS*"
37708 +#define BFD_UND_SECTION_NAME "*UND*"
37709 +#define BFD_COM_SECTION_NAME "*COM*"
37710 +#define BFD_IND_SECTION_NAME "*IND*"
37711 +
37712 +/* The absolute section. */
37713 +extern asection bfd_abs_section;
37714 +#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
37715 +#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
37716 +/* Pointer to the undefined section. */
37717 +extern asection bfd_und_section;
37718 +#define bfd_und_section_ptr ((asection *) &bfd_und_section)
37719 +#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
37720 +/* Pointer to the common section. */
37721 +extern asection bfd_com_section;
37722 +#define bfd_com_section_ptr ((asection *) &bfd_com_section)
37723 +/* Pointer to the indirect section. */
37724 +extern asection bfd_ind_section;
37725 +#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
37726 +#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
37727 +
37728 +#define bfd_is_const_section(SEC) \
37729 + ( ((SEC) == bfd_abs_section_ptr) \
37730 + || ((SEC) == bfd_und_section_ptr) \
37731 + || ((SEC) == bfd_com_section_ptr) \
37732 + || ((SEC) == bfd_ind_section_ptr))
37733 +
37734 +/* Macros to handle insertion and deletion of a bfd's sections. These
37735 + only handle the list pointers, ie. do not adjust section_count,
37736 + target_index etc. */
37737 +#define bfd_section_list_remove(ABFD, S) \
37738 + do \
37739 + { \
37740 + asection *_s = S; \
37741 + asection *_next = _s->next; \
37742 + asection *_prev = _s->prev; \
37743 + if (_prev) \
37744 + _prev->next = _next; \
37745 + else \
37746 + (ABFD)->sections = _next; \
37747 + if (_next) \
37748 + _next->prev = _prev; \
37749 + else \
37750 + (ABFD)->section_last = _prev; \
37751 + } \
37752 + while (0)
37753 +#define bfd_section_list_append(ABFD, S) \
37754 + do \
37755 + { \
37756 + asection *_s = S; \
37757 + bfd *_abfd = ABFD; \
37758 + _s->next = NULL; \
37759 + if (_abfd->section_last) \
37760 + { \
37761 + _s->prev = _abfd->section_last; \
37762 + _abfd->section_last->next = _s; \
37763 + } \
37764 + else \
37765 + { \
37766 + _s->prev = NULL; \
37767 + _abfd->sections = _s; \
37768 + } \
37769 + _abfd->section_last = _s; \
37770 + } \
37771 + while (0)
37772 +#define bfd_section_list_prepend(ABFD, S) \
37773 + do \
37774 + { \
37775 + asection *_s = S; \
37776 + bfd *_abfd = ABFD; \
37777 + _s->prev = NULL; \
37778 + if (_abfd->sections) \
37779 + { \
37780 + _s->next = _abfd->sections; \
37781 + _abfd->sections->prev = _s; \
37782 + } \
37783 + else \
37784 + { \
37785 + _s->next = NULL; \
37786 + _abfd->section_last = _s; \
37787 + } \
37788 + _abfd->sections = _s; \
37789 + } \
37790 + while (0)
37791 +#define bfd_section_list_insert_after(ABFD, A, S) \
37792 + do \
37793 + { \
37794 + asection *_a = A; \
37795 + asection *_s = S; \
37796 + asection *_next = _a->next; \
37797 + _s->next = _next; \
37798 + _s->prev = _a; \
37799 + _a->next = _s; \
37800 + if (_next) \
37801 + _next->prev = _s; \
37802 + else \
37803 + (ABFD)->section_last = _s; \
37804 + } \
37805 + while (0)
37806 +#define bfd_section_list_insert_before(ABFD, B, S) \
37807 + do \
37808 + { \
37809 + asection *_b = B; \
37810 + asection *_s = S; \
37811 + asection *_prev = _b->prev; \
37812 + _s->prev = _prev; \
37813 + _s->next = _b; \
37814 + _b->prev = _s; \
37815 + if (_prev) \
37816 + _prev->next = _s; \
37817 + else \
37818 + (ABFD)->sections = _s; \
37819 + } \
37820 + while (0)
37821 +#define bfd_section_removed_from_list(ABFD, S) \
37822 + ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
37823 +
37824 +#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX) \
37825 + /* name, id, index, next, prev, flags, user_set_vma, */ \
37826 + { NAME, IDX, 0, NULL, NULL, FLAGS, 0, \
37827 + \
37828 + /* linker_mark, linker_has_input, gc_mark, gc_mark_from_eh, */ \
37829 + 0, 0, 1, 0, \
37830 + \
37831 + /* segment_mark, sec_info_type, use_rela_p, has_tls_reloc, */ \
37832 + 0, 0, 0, 0, \
37833 + \
37834 + /* has_gp_reloc, need_finalize_relax, reloc_done, */ \
37835 + 0, 0, 0, \
37836 + \
37837 + /* vma, lma, size, rawsize */ \
37838 + 0, 0, 0, 0, \
37839 + \
37840 + /* output_offset, output_section, alignment_power, */ \
37841 + 0, (struct bfd_section *) &SEC, 0, \
37842 + \
37843 + /* relocation, orelocation, reloc_count, filepos, rel_filepos, */ \
37844 + NULL, NULL, 0, 0, 0, \
37845 + \
37846 + /* line_filepos, userdata, contents, lineno, lineno_count, */ \
37847 + 0, NULL, NULL, NULL, 0, \
37848 + \
37849 + /* entsize, kept_section, moving_line_filepos, */ \
37850 + 0, NULL, 0, \
37851 + \
37852 + /* target_index, used_by_bfd, constructor_chain, owner, */ \
37853 + 0, NULL, NULL, NULL, \
37854 + \
37855 + /* symbol, symbol_ptr_ptr, */ \
37856 + (struct bfd_symbol *) SYM, &SEC.symbol, \
37857 + \
37858 + /* map_head, map_tail */ \
37859 + { NULL }, { NULL } \
37860 + }
37861 +
37862 +void bfd_section_list_clear (bfd *);
37863 +
37864 +asection *bfd_get_section_by_name (bfd *abfd, const char *name);
37865 +
37866 +asection *bfd_get_section_by_name_if
37867 + (bfd *abfd,
37868 + const char *name,
37869 + bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
37870 + void *obj);
37871 +
37872 +char *bfd_get_unique_section_name
37873 + (bfd *abfd, const char *templat, int *count);
37874 +
37875 +asection *bfd_make_section_old_way (bfd *abfd, const char *name);
37876 +
37877 +asection *bfd_make_section_anyway_with_flags
37878 + (bfd *abfd, const char *name, flagword flags);
37879 +
37880 +asection *bfd_make_section_anyway (bfd *abfd, const char *name);
37881 +
37882 +asection *bfd_make_section_with_flags
37883 + (bfd *, const char *name, flagword flags);
37884 +
37885 +asection *bfd_make_section (bfd *, const char *name);
37886 +
37887 +bfd_boolean bfd_set_section_flags
37888 + (bfd *abfd, asection *sec, flagword flags);
37889 +
37890 +void bfd_map_over_sections
37891 + (bfd *abfd,
37892 + void (*func) (bfd *abfd, asection *sect, void *obj),
37893 + void *obj);
37894 +
37895 +asection *bfd_sections_find_if
37896 + (bfd *abfd,
37897 + bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
37898 + void *obj);
37899 +
37900 +bfd_boolean bfd_set_section_size
37901 + (bfd *abfd, asection *sec, bfd_size_type val);
37902 +
37903 +bfd_boolean bfd_set_section_contents
37904 + (bfd *abfd, asection *section, const void *data,
37905 + file_ptr offset, bfd_size_type count);
37906 +
37907 +bfd_boolean bfd_get_section_contents
37908 + (bfd *abfd, asection *section, void *location, file_ptr offset,
37909 + bfd_size_type count);
37910 +
37911 +bfd_boolean bfd_malloc_and_get_section
37912 + (bfd *abfd, asection *section, bfd_byte **buf);
37913 +
37914 +bfd_boolean bfd_copy_private_section_data
37915 + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
37916 +
37917 +#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
37918 + BFD_SEND (obfd, _bfd_copy_private_section_data, \
37919 + (ibfd, isection, obfd, osection))
37920 +bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
37921 +
37922 +bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
37923 +
37924 +/* Extracted from archures.c. */
37925 +enum bfd_architecture
37926 +{
37927 + bfd_arch_unknown, /* File arch not known. */
37928 + bfd_arch_obscure, /* Arch known, not one of these. */
37929 + bfd_arch_m68k, /* Motorola 68xxx */
37930 +#define bfd_mach_m68000 1
37931 +#define bfd_mach_m68008 2
37932 +#define bfd_mach_m68010 3
37933 +#define bfd_mach_m68020 4
37934 +#define bfd_mach_m68030 5
37935 +#define bfd_mach_m68040 6
37936 +#define bfd_mach_m68060 7
37937 +#define bfd_mach_cpu32 8
37938 +#define bfd_mach_fido 9
37939 +#define bfd_mach_mcf_isa_a_nodiv 10
37940 +#define bfd_mach_mcf_isa_a 11
37941 +#define bfd_mach_mcf_isa_a_mac 12
37942 +#define bfd_mach_mcf_isa_a_emac 13
37943 +#define bfd_mach_mcf_isa_aplus 14
37944 +#define bfd_mach_mcf_isa_aplus_mac 15
37945 +#define bfd_mach_mcf_isa_aplus_emac 16
37946 +#define bfd_mach_mcf_isa_b_nousp 17
37947 +#define bfd_mach_mcf_isa_b_nousp_mac 18
37948 +#define bfd_mach_mcf_isa_b_nousp_emac 19
37949 +#define bfd_mach_mcf_isa_b 20
37950 +#define bfd_mach_mcf_isa_b_mac 21
37951 +#define bfd_mach_mcf_isa_b_emac 22
37952 +#define bfd_mach_mcf_isa_b_float 23
37953 +#define bfd_mach_mcf_isa_b_float_mac 24
37954 +#define bfd_mach_mcf_isa_b_float_emac 25
37955 +#define bfd_mach_mcf_isa_c 26
37956 +#define bfd_mach_mcf_isa_c_mac 27
37957 +#define bfd_mach_mcf_isa_c_emac 28
37958 + bfd_arch_vax, /* DEC Vax */
37959 + bfd_arch_i960, /* Intel 960 */
37960 + /* The order of the following is important.
37961 + lower number indicates a machine type that
37962 + only accepts a subset of the instructions
37963 + available to machines with higher numbers.
37964 + The exception is the "ca", which is
37965 + incompatible with all other machines except
37966 + "core". */
37967 +
37968 +#define bfd_mach_i960_core 1
37969 +#define bfd_mach_i960_ka_sa 2
37970 +#define bfd_mach_i960_kb_sb 3
37971 +#define bfd_mach_i960_mc 4
37972 +#define bfd_mach_i960_xa 5
37973 +#define bfd_mach_i960_ca 6
37974 +#define bfd_mach_i960_jx 7
37975 +#define bfd_mach_i960_hx 8
37976 +
37977 + bfd_arch_or32, /* OpenRISC 32 */
37978 +
37979 + bfd_arch_sparc, /* SPARC */
37980 +#define bfd_mach_sparc 1
37981 +/* The difference between v8plus and v9 is that v9 is a true 64 bit env. */
37982 +#define bfd_mach_sparc_sparclet 2
37983 +#define bfd_mach_sparc_sparclite 3
37984 +#define bfd_mach_sparc_v8plus 4
37985 +#define bfd_mach_sparc_v8plusa 5 /* with ultrasparc add'ns. */
37986 +#define bfd_mach_sparc_sparclite_le 6
37987 +#define bfd_mach_sparc_v9 7
37988 +#define bfd_mach_sparc_v9a 8 /* with ultrasparc add'ns. */
37989 +#define bfd_mach_sparc_v8plusb 9 /* with cheetah add'ns. */
37990 +#define bfd_mach_sparc_v9b 10 /* with cheetah add'ns. */
37991 +/* Nonzero if MACH has the v9 instruction set. */
37992 +#define bfd_mach_sparc_v9_p(mach) \
37993 + ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
37994 + && (mach) != bfd_mach_sparc_sparclite_le)
37995 +/* Nonzero if MACH is a 64 bit sparc architecture. */
37996 +#define bfd_mach_sparc_64bit_p(mach) \
37997 + ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
37998 + bfd_arch_spu, /* PowerPC SPU */
37999 +#define bfd_mach_spu 256
38000 + bfd_arch_mips, /* MIPS Rxxxx */
38001 +#define bfd_mach_mips3000 3000
38002 +#define bfd_mach_mips3900 3900
38003 +#define bfd_mach_mips4000 4000
38004 +#define bfd_mach_mips4010 4010
38005 +#define bfd_mach_mips4100 4100
38006 +#define bfd_mach_mips4111 4111
38007 +#define bfd_mach_mips4120 4120
38008 +#define bfd_mach_mips4300 4300
38009 +#define bfd_mach_mips4400 4400
38010 +#define bfd_mach_mips4600 4600
38011 +#define bfd_mach_mips4650 4650
38012 +#define bfd_mach_mips5000 5000
38013 +#define bfd_mach_mips5400 5400
38014 +#define bfd_mach_mips5500 5500
38015 +#define bfd_mach_mips6000 6000
38016 +#define bfd_mach_mips7000 7000
38017 +#define bfd_mach_mips8000 8000
38018 +#define bfd_mach_mips9000 9000
38019 +#define bfd_mach_mips10000 10000
38020 +#define bfd_mach_mips12000 12000
38021 +#define bfd_mach_mips16 16
38022 +#define bfd_mach_mips5 5
38023 +#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
38024 +#define bfd_mach_mipsisa32 32
38025 +#define bfd_mach_mipsisa32r2 33
38026 +#define bfd_mach_mipsisa64 64
38027 +#define bfd_mach_mipsisa64r2 65
38028 + bfd_arch_i386, /* Intel 386 */
38029 +#define bfd_mach_i386_i386 1
38030 +#define bfd_mach_i386_i8086 2
38031 +#define bfd_mach_i386_i386_intel_syntax 3
38032 +#define bfd_mach_x86_64 64
38033 +#define bfd_mach_x86_64_intel_syntax 65
38034 + bfd_arch_we32k, /* AT&T WE32xxx */
38035 + bfd_arch_tahoe, /* CCI/Harris Tahoe */
38036 + bfd_arch_i860, /* Intel 860 */
38037 + bfd_arch_i370, /* IBM 360/370 Mainframes */
38038 + bfd_arch_romp, /* IBM ROMP PC/RT */
38039 + bfd_arch_convex, /* Convex */
38040 + bfd_arch_m88k, /* Motorola 88xxx */
38041 + bfd_arch_m98k, /* Motorola 98xxx */
38042 + bfd_arch_pyramid, /* Pyramid Technology */
38043 + bfd_arch_h8300, /* Renesas H8/300 (formerly Hitachi H8/300) */
38044 +#define bfd_mach_h8300 1
38045 +#define bfd_mach_h8300h 2
38046 +#define bfd_mach_h8300s 3
38047 +#define bfd_mach_h8300hn 4
38048 +#define bfd_mach_h8300sn 5
38049 +#define bfd_mach_h8300sx 6
38050 +#define bfd_mach_h8300sxn 7
38051 + bfd_arch_pdp11, /* DEC PDP-11 */
38052 + bfd_arch_powerpc, /* PowerPC */
38053 +#define bfd_mach_ppc 32
38054 +#define bfd_mach_ppc64 64
38055 +#define bfd_mach_ppc_403 403
38056 +#define bfd_mach_ppc_403gc 4030
38057 +#define bfd_mach_ppc_505 505
38058 +#define bfd_mach_ppc_601 601
38059 +#define bfd_mach_ppc_602 602
38060 +#define bfd_mach_ppc_603 603
38061 +#define bfd_mach_ppc_ec603e 6031
38062 +#define bfd_mach_ppc_604 604
38063 +#define bfd_mach_ppc_620 620
38064 +#define bfd_mach_ppc_630 630
38065 +#define bfd_mach_ppc_750 750
38066 +#define bfd_mach_ppc_860 860
38067 +#define bfd_mach_ppc_a35 35
38068 +#define bfd_mach_ppc_rs64ii 642
38069 +#define bfd_mach_ppc_rs64iii 643
38070 +#define bfd_mach_ppc_7400 7400
38071 +#define bfd_mach_ppc_e500 500
38072 + bfd_arch_rs6000, /* IBM RS/6000 */
38073 +#define bfd_mach_rs6k 6000
38074 +#define bfd_mach_rs6k_rs1 6001
38075 +#define bfd_mach_rs6k_rsc 6003
38076 +#define bfd_mach_rs6k_rs2 6002
38077 + bfd_arch_hppa, /* HP PA RISC */
38078 +#define bfd_mach_hppa10 10
38079 +#define bfd_mach_hppa11 11
38080 +#define bfd_mach_hppa20 20
38081 +#define bfd_mach_hppa20w 25
38082 + bfd_arch_d10v, /* Mitsubishi D10V */
38083 +#define bfd_mach_d10v 1
38084 +#define bfd_mach_d10v_ts2 2
38085 +#define bfd_mach_d10v_ts3 3
38086 + bfd_arch_d30v, /* Mitsubishi D30V */
38087 + bfd_arch_dlx, /* DLX */
38088 + bfd_arch_m68hc11, /* Motorola 68HC11 */
38089 + bfd_arch_m68hc12, /* Motorola 68HC12 */
38090 +#define bfd_mach_m6812_default 0
38091 +#define bfd_mach_m6812 1
38092 +#define bfd_mach_m6812s 2
38093 + bfd_arch_z8k, /* Zilog Z8000 */
38094 +#define bfd_mach_z8001 1
38095 +#define bfd_mach_z8002 2
38096 + bfd_arch_h8500, /* Renesas H8/500 (formerly Hitachi H8/500) */
38097 + bfd_arch_sh, /* Renesas / SuperH SH (formerly Hitachi SH) */
38098 +#define bfd_mach_sh 1
38099 +#define bfd_mach_sh2 0x20
38100 +#define bfd_mach_sh_dsp 0x2d
38101 +#define bfd_mach_sh2a 0x2a
38102 +#define bfd_mach_sh2a_nofpu 0x2b
38103 +#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
38104 +#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
38105 +#define bfd_mach_sh2a_or_sh4 0x2a3
38106 +#define bfd_mach_sh2a_or_sh3e 0x2a4
38107 +#define bfd_mach_sh2e 0x2e
38108 +#define bfd_mach_sh3 0x30
38109 +#define bfd_mach_sh3_nommu 0x31
38110 +#define bfd_mach_sh3_dsp 0x3d
38111 +#define bfd_mach_sh3e 0x3e
38112 +#define bfd_mach_sh4 0x40
38113 +#define bfd_mach_sh4_nofpu 0x41
38114 +#define bfd_mach_sh4_nommu_nofpu 0x42
38115 +#define bfd_mach_sh4a 0x4a
38116 +#define bfd_mach_sh4a_nofpu 0x4b
38117 +#define bfd_mach_sh4al_dsp 0x4d
38118 +#define bfd_mach_sh5 0x50
38119 + bfd_arch_alpha, /* Dec Alpha */
38120 +#define bfd_mach_alpha_ev4 0x10
38121 +#define bfd_mach_alpha_ev5 0x20
38122 +#define bfd_mach_alpha_ev6 0x30
38123 + bfd_arch_arm, /* Advanced Risc Machines ARM. */
38124 +#define bfd_mach_arm_unknown 0
38125 +#define bfd_mach_arm_2 1
38126 +#define bfd_mach_arm_2a 2
38127 +#define bfd_mach_arm_3 3
38128 +#define bfd_mach_arm_3M 4
38129 +#define bfd_mach_arm_4 5
38130 +#define bfd_mach_arm_4T 6
38131 +#define bfd_mach_arm_5 7
38132 +#define bfd_mach_arm_5T 8
38133 +#define bfd_mach_arm_5TE 9
38134 +#define bfd_mach_arm_XScale 10
38135 +#define bfd_mach_arm_ep9312 11
38136 +#define bfd_mach_arm_iWMMXt 12
38137 +#define bfd_mach_arm_iWMMXt2 13
38138 + bfd_arch_ns32k, /* National Semiconductors ns32000 */
38139 + bfd_arch_w65, /* WDC 65816 */
38140 + bfd_arch_tic30, /* Texas Instruments TMS320C30 */
38141 + bfd_arch_tic4x, /* Texas Instruments TMS320C3X/4X */
38142 +#define bfd_mach_tic3x 30
38143 +#define bfd_mach_tic4x 40
38144 + bfd_arch_tic54x, /* Texas Instruments TMS320C54X */
38145 + bfd_arch_tic80, /* TI TMS320c80 (MVP) */
38146 + bfd_arch_v850, /* NEC V850 */
38147 +#define bfd_mach_v850 1
38148 +#define bfd_mach_v850e 'E'
38149 +#define bfd_mach_v850e1 '1'
38150 + bfd_arch_arc, /* ARC Cores */
38151 +#define bfd_mach_arc_5 5
38152 +#define bfd_mach_arc_6 6
38153 +#define bfd_mach_arc_7 7
38154 +#define bfd_mach_arc_8 8
38155 + bfd_arch_m32c, /* Renesas M16C/M32C. */
38156 +#define bfd_mach_m16c 0x75
38157 +#define bfd_mach_m32c 0x78
38158 + bfd_arch_m32r, /* Renesas M32R (formerly Mitsubishi M32R/D) */
38159 +#define bfd_mach_m32r 1 /* For backwards compatibility. */
38160 +#define bfd_mach_m32rx 'x'
38161 +#define bfd_mach_m32r2 '2'
38162 + bfd_arch_mn10200, /* Matsushita MN10200 */
38163 + bfd_arch_mn10300, /* Matsushita MN10300 */
38164 +#define bfd_mach_mn10300 300
38165 +#define bfd_mach_am33 330
38166 +#define bfd_mach_am33_2 332
38167 + bfd_arch_fr30,
38168 +#define bfd_mach_fr30 0x46523330
38169 + bfd_arch_frv,
38170 +#define bfd_mach_frv 1
38171 +#define bfd_mach_frvsimple 2
38172 +#define bfd_mach_fr300 300
38173 +#define bfd_mach_fr400 400
38174 +#define bfd_mach_fr450 450
38175 +#define bfd_mach_frvtomcat 499 /* fr500 prototype */
38176 +#define bfd_mach_fr500 500
38177 +#define bfd_mach_fr550 550
38178 + bfd_arch_mcore,
38179 + bfd_arch_mep,
38180 +#define bfd_mach_mep 1
38181 +#define bfd_mach_mep_h1 0x6831
38182 + bfd_arch_ia64, /* HP/Intel ia64 */
38183 +#define bfd_mach_ia64_elf64 64
38184 +#define bfd_mach_ia64_elf32 32
38185 + bfd_arch_ip2k, /* Ubicom IP2K microcontrollers. */
38186 +#define bfd_mach_ip2022 1
38187 +#define bfd_mach_ip2022ext 2
38188 + bfd_arch_iq2000, /* Vitesse IQ2000. */
38189 +#define bfd_mach_iq2000 1
38190 +#define bfd_mach_iq10 2
38191 + bfd_arch_mt,
38192 +#define bfd_mach_ms1 1
38193 +#define bfd_mach_mrisc2 2
38194 +#define bfd_mach_ms2 3
38195 + bfd_arch_pj,
38196 + bfd_arch_avr, /* Atmel AVR microcontrollers. */
38197 +#define bfd_mach_avr1 1
38198 +#define bfd_mach_avr2 2
38199 +#define bfd_mach_avr3 3
38200 +#define bfd_mach_avr4 4
38201 +#define bfd_mach_avr5 5
38202 +#define bfd_mach_avr6 6
38203 + bfd_arch_avr32, /* Atmel AVR32 */
38204 +#define bfd_mach_avr32_ap 7000
38205 +#define bfd_mach_avr32_uc 3000
38206 +#define bfd_mach_avr32_ucr1 3001
38207 +#define bfd_mach_avr32_ucr2 3002
38208 + bfd_arch_bfin, /* ADI Blackfin */
38209 +#define bfd_mach_bfin 1
38210 + bfd_arch_cr16, /* National Semiconductor CompactRISC (ie CR16). */
38211 +#define bfd_mach_cr16 1
38212 + bfd_arch_cr16c, /* National Semiconductor CompactRISC. */
38213 +#define bfd_mach_cr16c 1
38214 + bfd_arch_crx, /* National Semiconductor CRX. */
38215 +#define bfd_mach_crx 1
38216 + bfd_arch_cris, /* Axis CRIS */
38217 +#define bfd_mach_cris_v0_v10 255
38218 +#define bfd_mach_cris_v32 32
38219 +#define bfd_mach_cris_v10_v32 1032
38220 + bfd_arch_s390, /* IBM s390 */
38221 +#define bfd_mach_s390_31 31
38222 +#define bfd_mach_s390_64 64
38223 + bfd_arch_score, /* Sunplus score */
38224 + bfd_arch_openrisc, /* OpenRISC */
38225 + bfd_arch_mmix, /* Donald Knuth's educational processor. */
38226 + bfd_arch_xstormy16,
38227 +#define bfd_mach_xstormy16 1
38228 + bfd_arch_msp430, /* Texas Instruments MSP430 architecture. */
38229 +#define bfd_mach_msp11 11
38230 +#define bfd_mach_msp110 110
38231 +#define bfd_mach_msp12 12
38232 +#define bfd_mach_msp13 13
38233 +#define bfd_mach_msp14 14
38234 +#define bfd_mach_msp15 15
38235 +#define bfd_mach_msp16 16
38236 +#define bfd_mach_msp21 21
38237 +#define bfd_mach_msp31 31
38238 +#define bfd_mach_msp32 32
38239 +#define bfd_mach_msp33 33
38240 +#define bfd_mach_msp41 41
38241 +#define bfd_mach_msp42 42
38242 +#define bfd_mach_msp43 43
38243 +#define bfd_mach_msp44 44
38244 + bfd_arch_xc16x, /* Infineon's XC16X Series. */
38245 +#define bfd_mach_xc16x 1
38246 +#define bfd_mach_xc16xl 2
38247 +#define bfd_mach_xc16xs 3
38248 + bfd_arch_xtensa, /* Tensilica's Xtensa cores. */
38249 +#define bfd_mach_xtensa 1
38250 + bfd_arch_maxq, /* Dallas MAXQ 10/20 */
38251 +#define bfd_mach_maxq10 10
38252 +#define bfd_mach_maxq20 20
38253 + bfd_arch_z80,
38254 +#define bfd_mach_z80strict 1 /* No undocumented opcodes. */
38255 +#define bfd_mach_z80 3 /* With ixl, ixh, iyl, and iyh. */
38256 +#define bfd_mach_z80full 7 /* All undocumented instructions. */
38257 +#define bfd_mach_r800 11 /* R800: successor with multiplication. */
38258 + bfd_arch_last
38259 + };
38260 +
38261 +typedef struct bfd_arch_info
38262 +{
38263 + int bits_per_word;
38264 + int bits_per_address;
38265 + int bits_per_byte;
38266 + enum bfd_architecture arch;
38267 + unsigned long mach;
38268 + const char *arch_name;
38269 + const char *printable_name;
38270 + unsigned int section_align_power;
38271 + /* TRUE if this is the default machine for the architecture.
38272 + The default arch should be the first entry for an arch so that
38273 + all the entries for that arch can be accessed via <<next>>. */
38274 + bfd_boolean the_default;
38275 + const struct bfd_arch_info * (*compatible)
38276 + (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
38277 +
38278 + bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
38279 +
38280 + const struct bfd_arch_info *next;
38281 +}
38282 +bfd_arch_info_type;
38283 +
38284 +const char *bfd_printable_name (bfd *abfd);
38285 +
38286 +const bfd_arch_info_type *bfd_scan_arch (const char *string);
38287 +
38288 +const char **bfd_arch_list (void);
38289 +
38290 +const bfd_arch_info_type *bfd_arch_get_compatible
38291 + (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
38292 +
38293 +void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
38294 +
38295 +enum bfd_architecture bfd_get_arch (bfd *abfd);
38296 +
38297 +unsigned long bfd_get_mach (bfd *abfd);
38298 +
38299 +unsigned int bfd_arch_bits_per_byte (bfd *abfd);
38300 +
38301 +unsigned int bfd_arch_bits_per_address (bfd *abfd);
38302 +
38303 +const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
38304 +
38305 +const bfd_arch_info_type *bfd_lookup_arch
38306 + (enum bfd_architecture arch, unsigned long machine);
38307 +
38308 +const char *bfd_printable_arch_mach
38309 + (enum bfd_architecture arch, unsigned long machine);
38310 +
38311 +unsigned int bfd_octets_per_byte (bfd *abfd);
38312 +
38313 +unsigned int bfd_arch_mach_octets_per_byte
38314 + (enum bfd_architecture arch, unsigned long machine);
38315 +
38316 +/* Extracted from reloc.c. */
38317 +typedef enum bfd_reloc_status
38318 +{
38319 + /* No errors detected. */
38320 + bfd_reloc_ok,
38321 +
38322 + /* The relocation was performed, but there was an overflow. */
38323 + bfd_reloc_overflow,
38324 +
38325 + /* The address to relocate was not within the section supplied. */
38326 + bfd_reloc_outofrange,
38327 +
38328 + /* Used by special functions. */
38329 + bfd_reloc_continue,
38330 +
38331 + /* Unsupported relocation size requested. */
38332 + bfd_reloc_notsupported,
38333 +
38334 + /* Unused. */
38335 + bfd_reloc_other,
38336 +
38337 + /* The symbol to relocate against was undefined. */
38338 + bfd_reloc_undefined,
38339 +
38340 + /* The relocation was performed, but may not be ok - presently
38341 + generated only when linking i960 coff files with i960 b.out
38342 + symbols. If this type is returned, the error_message argument
38343 + to bfd_perform_relocation will be set. */
38344 + bfd_reloc_dangerous
38345 + }
38346 + bfd_reloc_status_type;
38347 +
38348 +
38349 +typedef struct reloc_cache_entry
38350 +{
38351 + /* A pointer into the canonical table of pointers. */
38352 + struct bfd_symbol **sym_ptr_ptr;
38353 +
38354 + /* offset in section. */
38355 + bfd_size_type address;
38356 +
38357 + /* addend for relocation value. */
38358 + bfd_vma addend;
38359 +
38360 + /* Pointer to how to perform the required relocation. */
38361 + reloc_howto_type *howto;
38362 +
38363 +}
38364 +arelent;
38365 +
38366 +enum complain_overflow
38367 +{
38368 + /* Do not complain on overflow. */
38369 + complain_overflow_dont,
38370 +
38371 + /* Complain if the value overflows when considered as a signed
38372 + number one bit larger than the field. ie. A bitfield of N bits
38373 + is allowed to represent -2**n to 2**n-1. */
38374 + complain_overflow_bitfield,
38375 +
38376 + /* Complain if the value overflows when considered as a signed
38377 + number. */
38378 + complain_overflow_signed,
38379 +
38380 + /* Complain if the value overflows when considered as an
38381 + unsigned number. */
38382 + complain_overflow_unsigned
38383 +};
38384 +
38385 +struct reloc_howto_struct
38386 +{
38387 + /* The type field has mainly a documentary use - the back end can
38388 + do what it wants with it, though normally the back end's
38389 + external idea of what a reloc number is stored
38390 + in this field. For example, a PC relative word relocation
38391 + in a coff environment has the type 023 - because that's
38392 + what the outside world calls a R_PCRWORD reloc. */
38393 + unsigned int type;
38394 +
38395 + /* The value the final relocation is shifted right by. This drops
38396 + unwanted data from the relocation. */
38397 + unsigned int rightshift;
38398 +
38399 + /* The size of the item to be relocated. This is *not* a
38400 + power-of-two measure. To get the number of bytes operated
38401 + on by a type of relocation, use bfd_get_reloc_size. */
38402 + int size;
38403 +
38404 + /* The number of bits in the item to be relocated. This is used
38405 + when doing overflow checking. */
38406 + unsigned int bitsize;
38407 +
38408 + /* Notes that the relocation is relative to the location in the
38409 + data section of the addend. The relocation function will
38410 + subtract from the relocation value the address of the location
38411 + being relocated. */
38412 + bfd_boolean pc_relative;
38413 +
38414 + /* The bit position of the reloc value in the destination.
38415 + The relocated value is left shifted by this amount. */
38416 + unsigned int bitpos;
38417 +
38418 + /* What type of overflow error should be checked for when
38419 + relocating. */
38420 + enum complain_overflow complain_on_overflow;
38421 +
38422 + /* If this field is non null, then the supplied function is
38423 + called rather than the normal function. This allows really
38424 + strange relocation methods to be accommodated (e.g., i960 callj
38425 + instructions). */
38426 + bfd_reloc_status_type (*special_function)
38427 + (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
38428 + bfd *, char **);
38429 +
38430 + /* The textual name of the relocation type. */
38431 + char *name;
38432 +
38433 + /* Some formats record a relocation addend in the section contents
38434 + rather than with the relocation. For ELF formats this is the
38435 + distinction between USE_REL and USE_RELA (though the code checks
38436 + for USE_REL == 1/0). The value of this field is TRUE if the
38437 + addend is recorded with the section contents; when performing a
38438 + partial link (ld -r) the section contents (the data) will be
38439 + modified. The value of this field is FALSE if addends are
38440 + recorded with the relocation (in arelent.addend); when performing
38441 + a partial link the relocation will be modified.
38442 + All relocations for all ELF USE_RELA targets should set this field
38443 + to FALSE (values of TRUE should be looked on with suspicion).
38444 + However, the converse is not true: not all relocations of all ELF
38445 + USE_REL targets set this field to TRUE. Why this is so is peculiar
38446 + to each particular target. For relocs that aren't used in partial
38447 + links (e.g. GOT stuff) it doesn't matter what this is set to. */
38448 + bfd_boolean partial_inplace;
38449 +
38450 + /* src_mask selects the part of the instruction (or data) to be used
38451 + in the relocation sum. If the target relocations don't have an
38452 + addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
38453 + dst_mask to extract the addend from the section contents. If
38454 + relocations do have an addend in the reloc, eg. ELF USE_RELA, this
38455 + field should be zero. Non-zero values for ELF USE_RELA targets are
38456 + bogus as in those cases the value in the dst_mask part of the
38457 + section contents should be treated as garbage. */
38458 + bfd_vma src_mask;
38459 +
38460 + /* dst_mask selects which parts of the instruction (or data) are
38461 + replaced with a relocated value. */
38462 + bfd_vma dst_mask;
38463 +
38464 + /* When some formats create PC relative instructions, they leave
38465 + the value of the pc of the place being relocated in the offset
38466 + slot of the instruction, so that a PC relative relocation can
38467 + be made just by adding in an ordinary offset (e.g., sun3 a.out).
38468 + Some formats leave the displacement part of an instruction
38469 + empty (e.g., m88k bcs); this flag signals the fact. */
38470 + bfd_boolean pcrel_offset;
38471 +};
38472 +
38473 +#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
38474 + { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
38475 +#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
38476 + HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
38477 + NAME, FALSE, 0, 0, IN)
38478 +
38479 +#define EMPTY_HOWTO(C) \
38480 + HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
38481 + NULL, FALSE, 0, 0, FALSE)
38482 +
38483 +#define HOWTO_PREPARE(relocation, symbol) \
38484 + { \
38485 + if (symbol != NULL) \
38486 + { \
38487 + if (bfd_is_com_section (symbol->section)) \
38488 + { \
38489 + relocation = 0; \
38490 + } \
38491 + else \
38492 + { \
38493 + relocation = symbol->value; \
38494 + } \
38495 + } \
38496 + }
38497 +
38498 +unsigned int bfd_get_reloc_size (reloc_howto_type *);
38499 +
38500 +typedef struct relent_chain
38501 +{
38502 + arelent relent;
38503 + struct relent_chain *next;
38504 +}
38505 +arelent_chain;
38506 +
38507 +bfd_reloc_status_type bfd_check_overflow
38508 + (enum complain_overflow how,
38509 + unsigned int bitsize,
38510 + unsigned int rightshift,
38511 + unsigned int addrsize,
38512 + bfd_vma relocation);
38513 +
38514 +bfd_reloc_status_type bfd_perform_relocation
38515 + (bfd *abfd,
38516 + arelent *reloc_entry,
38517 + void *data,
38518 + asection *input_section,
38519 + bfd *output_bfd,
38520 + char **error_message);
38521 +
38522 +bfd_reloc_status_type bfd_install_relocation
38523 + (bfd *abfd,
38524 + arelent *reloc_entry,
38525 + void *data, bfd_vma data_start,
38526 + asection *input_section,
38527 + char **error_message);
38528 +
38529 +enum bfd_reloc_code_real {
38530 + _dummy_first_bfd_reloc_code_real,
38531 +
38532 +
38533 +/* Basic absolute relocations of N bits. */
38534 + BFD_RELOC_64,
38535 + BFD_RELOC_32,
38536 + BFD_RELOC_26,
38537 + BFD_RELOC_24,
38538 + BFD_RELOC_16,
38539 + BFD_RELOC_14,
38540 + BFD_RELOC_8,
38541 +
38542 +/* PC-relative relocations. Sometimes these are relative to the address
38543 +of the relocation itself; sometimes they are relative to the start of
38544 +the section containing the relocation. It depends on the specific target.
38545 +
38546 +The 24-bit relocation is used in some Intel 960 configurations. */
38547 + BFD_RELOC_64_PCREL,
38548 + BFD_RELOC_32_PCREL,
38549 + BFD_RELOC_24_PCREL,
38550 + BFD_RELOC_16_PCREL,
38551 + BFD_RELOC_12_PCREL,
38552 + BFD_RELOC_8_PCREL,
38553 +
38554 +/* Section relative relocations. Some targets need this for DWARF2. */
38555 + BFD_RELOC_32_SECREL,
38556 +
38557 +/* For ELF. */
38558 + BFD_RELOC_32_GOT_PCREL,
38559 + BFD_RELOC_16_GOT_PCREL,
38560 + BFD_RELOC_8_GOT_PCREL,
38561 + BFD_RELOC_32_GOTOFF,
38562 + BFD_RELOC_16_GOTOFF,
38563 + BFD_RELOC_LO16_GOTOFF,
38564 + BFD_RELOC_HI16_GOTOFF,
38565 + BFD_RELOC_HI16_S_GOTOFF,
38566 + BFD_RELOC_8_GOTOFF,
38567 + BFD_RELOC_64_PLT_PCREL,
38568 + BFD_RELOC_32_PLT_PCREL,
38569 + BFD_RELOC_24_PLT_PCREL,
38570 + BFD_RELOC_16_PLT_PCREL,
38571 + BFD_RELOC_8_PLT_PCREL,
38572 + BFD_RELOC_64_PLTOFF,
38573 + BFD_RELOC_32_PLTOFF,
38574 + BFD_RELOC_16_PLTOFF,
38575 + BFD_RELOC_LO16_PLTOFF,
38576 + BFD_RELOC_HI16_PLTOFF,
38577 + BFD_RELOC_HI16_S_PLTOFF,
38578 + BFD_RELOC_8_PLTOFF,
38579 +
38580 +/* Relocations used by 68K ELF. */
38581 + BFD_RELOC_68K_GLOB_DAT,
38582 + BFD_RELOC_68K_JMP_SLOT,
38583 + BFD_RELOC_68K_RELATIVE,
38584 +
38585 +/* Linkage-table relative. */
38586 + BFD_RELOC_32_BASEREL,
38587 + BFD_RELOC_16_BASEREL,
38588 + BFD_RELOC_LO16_BASEREL,
38589 + BFD_RELOC_HI16_BASEREL,
38590 + BFD_RELOC_HI16_S_BASEREL,
38591 + BFD_RELOC_8_BASEREL,
38592 + BFD_RELOC_RVA,
38593 +
38594 +/* Absolute 8-bit relocation, but used to form an address like 0xFFnn. */
38595 + BFD_RELOC_8_FFnn,
38596 +
38597 +/* These PC-relative relocations are stored as word displacements --
38598 +i.e., byte displacements shifted right two bits. The 30-bit word
38599 +displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
38600 +SPARC. (SPARC tools generally refer to this as <<WDISP30>>.) The
38601 +signed 16-bit displacement is used on the MIPS, and the 23-bit
38602 +displacement is used on the Alpha. */
38603 + BFD_RELOC_32_PCREL_S2,
38604 + BFD_RELOC_16_PCREL_S2,
38605 + BFD_RELOC_23_PCREL_S2,
38606 +
38607 +/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
38608 +the target word. These are used on the SPARC. */
38609 + BFD_RELOC_HI22,
38610 + BFD_RELOC_LO10,
38611 +
38612 +/* For systems that allocate a Global Pointer register, these are
38613 +displacements off that register. These relocation types are
38614 +handled specially, because the value the register will have is
38615 +decided relatively late. */
38616 + BFD_RELOC_GPREL16,
38617 + BFD_RELOC_GPREL32,
38618 +
38619 +/* Reloc types used for i960/b.out. */
38620 + BFD_RELOC_I960_CALLJ,
38621 +
38622 +/* SPARC ELF relocations. There is probably some overlap with other
38623 +relocation types already defined. */
38624 + BFD_RELOC_NONE,
38625 + BFD_RELOC_SPARC_WDISP22,
38626 + BFD_RELOC_SPARC22,
38627 + BFD_RELOC_SPARC13,
38628 + BFD_RELOC_SPARC_GOT10,
38629 + BFD_RELOC_SPARC_GOT13,
38630 + BFD_RELOC_SPARC_GOT22,
38631 + BFD_RELOC_SPARC_PC10,
38632 + BFD_RELOC_SPARC_PC22,
38633 + BFD_RELOC_SPARC_WPLT30,
38634 + BFD_RELOC_SPARC_COPY,
38635 + BFD_RELOC_SPARC_GLOB_DAT,
38636 + BFD_RELOC_SPARC_JMP_SLOT,
38637 + BFD_RELOC_SPARC_RELATIVE,
38638 + BFD_RELOC_SPARC_UA16,
38639 + BFD_RELOC_SPARC_UA32,
38640 + BFD_RELOC_SPARC_UA64,
38641 +
38642 +/* I think these are specific to SPARC a.out (e.g., Sun 4). */
38643 + BFD_RELOC_SPARC_BASE13,
38644 + BFD_RELOC_SPARC_BASE22,
38645 +
38646 +/* SPARC64 relocations */
38647 +#define BFD_RELOC_SPARC_64 BFD_RELOC_64
38648 + BFD_RELOC_SPARC_10,
38649 + BFD_RELOC_SPARC_11,
38650 + BFD_RELOC_SPARC_OLO10,
38651 + BFD_RELOC_SPARC_HH22,
38652 + BFD_RELOC_SPARC_HM10,
38653 + BFD_RELOC_SPARC_LM22,
38654 + BFD_RELOC_SPARC_PC_HH22,
38655 + BFD_RELOC_SPARC_PC_HM10,
38656 + BFD_RELOC_SPARC_PC_LM22,
38657 + BFD_RELOC_SPARC_WDISP16,
38658 + BFD_RELOC_SPARC_WDISP19,
38659 + BFD_RELOC_SPARC_7,
38660 + BFD_RELOC_SPARC_6,
38661 + BFD_RELOC_SPARC_5,
38662 +#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
38663 + BFD_RELOC_SPARC_PLT32,
38664 + BFD_RELOC_SPARC_PLT64,
38665 + BFD_RELOC_SPARC_HIX22,
38666 + BFD_RELOC_SPARC_LOX10,
38667 + BFD_RELOC_SPARC_H44,
38668 + BFD_RELOC_SPARC_M44,
38669 + BFD_RELOC_SPARC_L44,
38670 + BFD_RELOC_SPARC_REGISTER,
38671 +
38672 +/* SPARC little endian relocation */
38673 + BFD_RELOC_SPARC_REV32,
38674 +
38675 +/* SPARC TLS relocations */
38676 + BFD_RELOC_SPARC_TLS_GD_HI22,
38677 + BFD_RELOC_SPARC_TLS_GD_LO10,
38678 + BFD_RELOC_SPARC_TLS_GD_ADD,
38679 + BFD_RELOC_SPARC_TLS_GD_CALL,
38680 + BFD_RELOC_SPARC_TLS_LDM_HI22,
38681 + BFD_RELOC_SPARC_TLS_LDM_LO10,
38682 + BFD_RELOC_SPARC_TLS_LDM_ADD,
38683 + BFD_RELOC_SPARC_TLS_LDM_CALL,
38684 + BFD_RELOC_SPARC_TLS_LDO_HIX22,
38685 + BFD_RELOC_SPARC_TLS_LDO_LOX10,
38686 + BFD_RELOC_SPARC_TLS_LDO_ADD,
38687 + BFD_RELOC_SPARC_TLS_IE_HI22,
38688 + BFD_RELOC_SPARC_TLS_IE_LO10,
38689 + BFD_RELOC_SPARC_TLS_IE_LD,
38690 + BFD_RELOC_SPARC_TLS_IE_LDX,
38691 + BFD_RELOC_SPARC_TLS_IE_ADD,
38692 + BFD_RELOC_SPARC_TLS_LE_HIX22,
38693 + BFD_RELOC_SPARC_TLS_LE_LOX10,
38694 + BFD_RELOC_SPARC_TLS_DTPMOD32,
38695 + BFD_RELOC_SPARC_TLS_DTPMOD64,
38696 + BFD_RELOC_SPARC_TLS_DTPOFF32,
38697 + BFD_RELOC_SPARC_TLS_DTPOFF64,
38698 + BFD_RELOC_SPARC_TLS_TPOFF32,
38699 + BFD_RELOC_SPARC_TLS_TPOFF64,
38700 +
38701 +/* SPU Relocations. */
38702 + BFD_RELOC_SPU_IMM7,
38703 + BFD_RELOC_SPU_IMM8,
38704 + BFD_RELOC_SPU_IMM10,
38705 + BFD_RELOC_SPU_IMM10W,
38706 + BFD_RELOC_SPU_IMM16,
38707 + BFD_RELOC_SPU_IMM16W,
38708 + BFD_RELOC_SPU_IMM18,
38709 + BFD_RELOC_SPU_PCREL9a,
38710 + BFD_RELOC_SPU_PCREL9b,
38711 + BFD_RELOC_SPU_PCREL16,
38712 + BFD_RELOC_SPU_LO16,
38713 + BFD_RELOC_SPU_HI16,
38714 + BFD_RELOC_SPU_PPU32,
38715 + BFD_RELOC_SPU_PPU64,
38716 +
38717 +/* Alpha ECOFF and ELF relocations. Some of these treat the symbol or
38718 +"addend" in some special way.
38719 +For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
38720 +writing; when reading, it will be the absolute section symbol. The
38721 +addend is the displacement in bytes of the "lda" instruction from
38722 +the "ldah" instruction (which is at the address of this reloc). */
38723 + BFD_RELOC_ALPHA_GPDISP_HI16,
38724 +
38725 +/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
38726 +with GPDISP_HI16 relocs. The addend is ignored when writing the
38727 +relocations out, and is filled in with the file's GP value on
38728 +reading, for convenience. */
38729 + BFD_RELOC_ALPHA_GPDISP_LO16,
38730 +
38731 +/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
38732 +relocation except that there is no accompanying GPDISP_LO16
38733 +relocation. */
38734 + BFD_RELOC_ALPHA_GPDISP,
38735 +
38736 +/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
38737 +the assembler turns it into a LDQ instruction to load the address of
38738 +the symbol, and then fills in a register in the real instruction.
38739 +
38740 +The LITERAL reloc, at the LDQ instruction, refers to the .lita
38741 +section symbol. The addend is ignored when writing, but is filled
38742 +in with the file's GP value on reading, for convenience, as with the
38743 +GPDISP_LO16 reloc.
38744 +
38745 +The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
38746 +It should refer to the symbol to be referenced, as with 16_GOTOFF,
38747 +but it generates output not based on the position within the .got
38748 +section, but relative to the GP value chosen for the file during the
38749 +final link stage.
38750 +
38751 +The LITUSE reloc, on the instruction using the loaded address, gives
38752 +information to the linker that it might be able to use to optimize
38753 +away some literal section references. The symbol is ignored (read
38754 +as the absolute section symbol), and the "addend" indicates the type
38755 +of instruction using the register:
38756 +1 - "memory" fmt insn
38757 +2 - byte-manipulation (byte offset reg)
38758 +3 - jsr (target of branch) */
38759 + BFD_RELOC_ALPHA_LITERAL,
38760 + BFD_RELOC_ALPHA_ELF_LITERAL,
38761 + BFD_RELOC_ALPHA_LITUSE,
38762 +
38763 +/* The HINT relocation indicates a value that should be filled into the
38764 +"hint" field of a jmp/jsr/ret instruction, for possible branch-
38765 +prediction logic which may be provided on some processors. */
38766 + BFD_RELOC_ALPHA_HINT,
38767 +
38768 +/* The LINKAGE relocation outputs a linkage pair in the object file,
38769 +which is filled by the linker. */
38770 + BFD_RELOC_ALPHA_LINKAGE,
38771 +
38772 +/* The CODEADDR relocation outputs a STO_CA in the object file,
38773 +which is filled by the linker. */
38774 + BFD_RELOC_ALPHA_CODEADDR,
38775 +
38776 +/* The GPREL_HI/LO relocations together form a 32-bit offset from the
38777 +GP register. */
38778 + BFD_RELOC_ALPHA_GPREL_HI16,
38779 + BFD_RELOC_ALPHA_GPREL_LO16,
38780 +
38781 +/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
38782 +share a common GP, and the target address is adjusted for
38783 +STO_ALPHA_STD_GPLOAD. */
38784 + BFD_RELOC_ALPHA_BRSGP,
38785 +
38786 +/* Alpha thread-local storage relocations. */
38787 + BFD_RELOC_ALPHA_TLSGD,
38788 + BFD_RELOC_ALPHA_TLSLDM,
38789 + BFD_RELOC_ALPHA_DTPMOD64,
38790 + BFD_RELOC_ALPHA_GOTDTPREL16,
38791 + BFD_RELOC_ALPHA_DTPREL64,
38792 + BFD_RELOC_ALPHA_DTPREL_HI16,
38793 + BFD_RELOC_ALPHA_DTPREL_LO16,
38794 + BFD_RELOC_ALPHA_DTPREL16,
38795 + BFD_RELOC_ALPHA_GOTTPREL16,
38796 + BFD_RELOC_ALPHA_TPREL64,
38797 + BFD_RELOC_ALPHA_TPREL_HI16,
38798 + BFD_RELOC_ALPHA_TPREL_LO16,
38799 + BFD_RELOC_ALPHA_TPREL16,
38800 +
38801 +/* Bits 27..2 of the relocation address shifted right 2 bits;
38802 +simple reloc otherwise. */
38803 + BFD_RELOC_MIPS_JMP,
38804 +
38805 +/* The MIPS16 jump instruction. */
38806 + BFD_RELOC_MIPS16_JMP,
38807 +
38808 +/* MIPS16 GP relative reloc. */
38809 + BFD_RELOC_MIPS16_GPREL,
38810 +
38811 +/* High 16 bits of 32-bit value; simple reloc. */
38812 + BFD_RELOC_HI16,
38813 +
38814 +/* High 16 bits of 32-bit value but the low 16 bits will be sign
38815 +extended and added to form the final result. If the low 16
38816 +bits form a negative number, we need to add one to the high value
38817 +to compensate for the borrow when the low bits are added. */
38818 + BFD_RELOC_HI16_S,
38819 +
38820 +/* Low 16 bits. */
38821 + BFD_RELOC_LO16,
38822 +
38823 +/* High 16 bits of 32-bit pc-relative value */
38824 + BFD_RELOC_HI16_PCREL,
38825 +
38826 +/* High 16 bits of 32-bit pc-relative value, adjusted */
38827 + BFD_RELOC_HI16_S_PCREL,
38828 +
38829 +/* Low 16 bits of pc-relative value */
38830 + BFD_RELOC_LO16_PCREL,
38831 +
38832 +/* MIPS16 high 16 bits of 32-bit value. */
38833 + BFD_RELOC_MIPS16_HI16,
38834 +
38835 +/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
38836 +extended and added to form the final result. If the low 16
38837 +bits form a negative number, we need to add one to the high value
38838 +to compensate for the borrow when the low bits are added. */
38839 + BFD_RELOC_MIPS16_HI16_S,
38840 +
38841 +/* MIPS16 low 16 bits. */
38842 + BFD_RELOC_MIPS16_LO16,
38843 +
38844 +/* Relocation against a MIPS literal section. */
38845 + BFD_RELOC_MIPS_LITERAL,
38846 +
38847 +/* MIPS ELF relocations. */
38848 + BFD_RELOC_MIPS_GOT16,
38849 + BFD_RELOC_MIPS_CALL16,
38850 + BFD_RELOC_MIPS_GOT_HI16,
38851 + BFD_RELOC_MIPS_GOT_LO16,
38852 + BFD_RELOC_MIPS_CALL_HI16,
38853 + BFD_RELOC_MIPS_CALL_LO16,
38854 + BFD_RELOC_MIPS_SUB,
38855 + BFD_RELOC_MIPS_GOT_PAGE,
38856 + BFD_RELOC_MIPS_GOT_OFST,
38857 + BFD_RELOC_MIPS_GOT_DISP,
38858 + BFD_RELOC_MIPS_SHIFT5,
38859 + BFD_RELOC_MIPS_SHIFT6,
38860 + BFD_RELOC_MIPS_INSERT_A,
38861 + BFD_RELOC_MIPS_INSERT_B,
38862 + BFD_RELOC_MIPS_DELETE,
38863 + BFD_RELOC_MIPS_HIGHEST,
38864 + BFD_RELOC_MIPS_HIGHER,
38865 + BFD_RELOC_MIPS_SCN_DISP,
38866 + BFD_RELOC_MIPS_REL16,
38867 + BFD_RELOC_MIPS_RELGOT,
38868 + BFD_RELOC_MIPS_JALR,
38869 + BFD_RELOC_MIPS_TLS_DTPMOD32,
38870 + BFD_RELOC_MIPS_TLS_DTPREL32,
38871 + BFD_RELOC_MIPS_TLS_DTPMOD64,
38872 + BFD_RELOC_MIPS_TLS_DTPREL64,
38873 + BFD_RELOC_MIPS_TLS_GD,
38874 + BFD_RELOC_MIPS_TLS_LDM,
38875 + BFD_RELOC_MIPS_TLS_DTPREL_HI16,
38876 + BFD_RELOC_MIPS_TLS_DTPREL_LO16,
38877 + BFD_RELOC_MIPS_TLS_GOTTPREL,
38878 + BFD_RELOC_MIPS_TLS_TPREL32,
38879 + BFD_RELOC_MIPS_TLS_TPREL64,
38880 + BFD_RELOC_MIPS_TLS_TPREL_HI16,
38881 + BFD_RELOC_MIPS_TLS_TPREL_LO16,
38882 +
38883 +
38884 +/* MIPS ELF relocations (VxWorks extensions). */
38885 + BFD_RELOC_MIPS_COPY,
38886 + BFD_RELOC_MIPS_JUMP_SLOT,
38887 +
38888 +
38889 +/* Fujitsu Frv Relocations. */
38890 + BFD_RELOC_FRV_LABEL16,
38891 + BFD_RELOC_FRV_LABEL24,
38892 + BFD_RELOC_FRV_LO16,
38893 + BFD_RELOC_FRV_HI16,
38894 + BFD_RELOC_FRV_GPREL12,
38895 + BFD_RELOC_FRV_GPRELU12,
38896 + BFD_RELOC_FRV_GPREL32,
38897 + BFD_RELOC_FRV_GPRELHI,
38898 + BFD_RELOC_FRV_GPRELLO,
38899 + BFD_RELOC_FRV_GOT12,
38900 + BFD_RELOC_FRV_GOTHI,
38901 + BFD_RELOC_FRV_GOTLO,
38902 + BFD_RELOC_FRV_FUNCDESC,
38903 + BFD_RELOC_FRV_FUNCDESC_GOT12,
38904 + BFD_RELOC_FRV_FUNCDESC_GOTHI,
38905 + BFD_RELOC_FRV_FUNCDESC_GOTLO,
38906 + BFD_RELOC_FRV_FUNCDESC_VALUE,
38907 + BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
38908 + BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
38909 + BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
38910 + BFD_RELOC_FRV_GOTOFF12,
38911 + BFD_RELOC_FRV_GOTOFFHI,
38912 + BFD_RELOC_FRV_GOTOFFLO,
38913 + BFD_RELOC_FRV_GETTLSOFF,
38914 + BFD_RELOC_FRV_TLSDESC_VALUE,
38915 + BFD_RELOC_FRV_GOTTLSDESC12,
38916 + BFD_RELOC_FRV_GOTTLSDESCHI,
38917 + BFD_RELOC_FRV_GOTTLSDESCLO,
38918 + BFD_RELOC_FRV_TLSMOFF12,
38919 + BFD_RELOC_FRV_TLSMOFFHI,
38920 + BFD_RELOC_FRV_TLSMOFFLO,
38921 + BFD_RELOC_FRV_GOTTLSOFF12,
38922 + BFD_RELOC_FRV_GOTTLSOFFHI,
38923 + BFD_RELOC_FRV_GOTTLSOFFLO,
38924 + BFD_RELOC_FRV_TLSOFF,
38925 + BFD_RELOC_FRV_TLSDESC_RELAX,
38926 + BFD_RELOC_FRV_GETTLSOFF_RELAX,
38927 + BFD_RELOC_FRV_TLSOFF_RELAX,
38928 + BFD_RELOC_FRV_TLSMOFF,
38929 +
38930 +
38931 +/* This is a 24bit GOT-relative reloc for the mn10300. */
38932 + BFD_RELOC_MN10300_GOTOFF24,
38933 +
38934 +/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
38935 +in the instruction. */
38936 + BFD_RELOC_MN10300_GOT32,
38937 +
38938 +/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
38939 +in the instruction. */
38940 + BFD_RELOC_MN10300_GOT24,
38941 +
38942 +/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
38943 +in the instruction. */
38944 + BFD_RELOC_MN10300_GOT16,
38945 +
38946 +/* Copy symbol at runtime. */
38947 + BFD_RELOC_MN10300_COPY,
38948 +
38949 +/* Create GOT entry. */
38950 + BFD_RELOC_MN10300_GLOB_DAT,
38951 +
38952 +/* Create PLT entry. */
38953 + BFD_RELOC_MN10300_JMP_SLOT,
38954 +
38955 +/* Adjust by program base. */
38956 + BFD_RELOC_MN10300_RELATIVE,
38957 +
38958 +
38959 +/* i386/elf relocations */
38960 + BFD_RELOC_386_GOT32,
38961 + BFD_RELOC_386_PLT32,
38962 + BFD_RELOC_386_COPY,
38963 + BFD_RELOC_386_GLOB_DAT,
38964 + BFD_RELOC_386_JUMP_SLOT,
38965 + BFD_RELOC_386_RELATIVE,
38966 + BFD_RELOC_386_GOTOFF,
38967 + BFD_RELOC_386_GOTPC,
38968 + BFD_RELOC_386_TLS_TPOFF,
38969 + BFD_RELOC_386_TLS_IE,
38970 + BFD_RELOC_386_TLS_GOTIE,
38971 + BFD_RELOC_386_TLS_LE,
38972 + BFD_RELOC_386_TLS_GD,
38973 + BFD_RELOC_386_TLS_LDM,
38974 + BFD_RELOC_386_TLS_LDO_32,
38975 + BFD_RELOC_386_TLS_IE_32,
38976 + BFD_RELOC_386_TLS_LE_32,
38977 + BFD_RELOC_386_TLS_DTPMOD32,
38978 + BFD_RELOC_386_TLS_DTPOFF32,
38979 + BFD_RELOC_386_TLS_TPOFF32,
38980 + BFD_RELOC_386_TLS_GOTDESC,
38981 + BFD_RELOC_386_TLS_DESC_CALL,
38982 + BFD_RELOC_386_TLS_DESC,
38983 +
38984 +/* x86-64/elf relocations */
38985 + BFD_RELOC_X86_64_GOT32,
38986 + BFD_RELOC_X86_64_PLT32,
38987 + BFD_RELOC_X86_64_COPY,
38988 + BFD_RELOC_X86_64_GLOB_DAT,
38989 + BFD_RELOC_X86_64_JUMP_SLOT,
38990 + BFD_RELOC_X86_64_RELATIVE,
38991 + BFD_RELOC_X86_64_GOTPCREL,
38992 + BFD_RELOC_X86_64_32S,
38993 + BFD_RELOC_X86_64_DTPMOD64,
38994 + BFD_RELOC_X86_64_DTPOFF64,
38995 + BFD_RELOC_X86_64_TPOFF64,
38996 + BFD_RELOC_X86_64_TLSGD,
38997 + BFD_RELOC_X86_64_TLSLD,
38998 + BFD_RELOC_X86_64_DTPOFF32,
38999 + BFD_RELOC_X86_64_GOTTPOFF,
39000 + BFD_RELOC_X86_64_TPOFF32,
39001 + BFD_RELOC_X86_64_GOTOFF64,
39002 + BFD_RELOC_X86_64_GOTPC32,
39003 + BFD_RELOC_X86_64_GOT64,
39004 + BFD_RELOC_X86_64_GOTPCREL64,
39005 + BFD_RELOC_X86_64_GOTPC64,
39006 + BFD_RELOC_X86_64_GOTPLT64,
39007 + BFD_RELOC_X86_64_PLTOFF64,
39008 + BFD_RELOC_X86_64_GOTPC32_TLSDESC,
39009 + BFD_RELOC_X86_64_TLSDESC_CALL,
39010 + BFD_RELOC_X86_64_TLSDESC,
39011 +
39012 +/* ns32k relocations */
39013 + BFD_RELOC_NS32K_IMM_8,
39014 + BFD_RELOC_NS32K_IMM_16,
39015 + BFD_RELOC_NS32K_IMM_32,
39016 + BFD_RELOC_NS32K_IMM_8_PCREL,
39017 + BFD_RELOC_NS32K_IMM_16_PCREL,
39018 + BFD_RELOC_NS32K_IMM_32_PCREL,
39019 + BFD_RELOC_NS32K_DISP_8,
39020 + BFD_RELOC_NS32K_DISP_16,
39021 + BFD_RELOC_NS32K_DISP_32,
39022 + BFD_RELOC_NS32K_DISP_8_PCREL,
39023 + BFD_RELOC_NS32K_DISP_16_PCREL,
39024 + BFD_RELOC_NS32K_DISP_32_PCREL,
39025 +
39026 +/* PDP11 relocations */
39027 + BFD_RELOC_PDP11_DISP_8_PCREL,
39028 + BFD_RELOC_PDP11_DISP_6_PCREL,
39029 +
39030 +/* Picojava relocs. Not all of these appear in object files. */
39031 + BFD_RELOC_PJ_CODE_HI16,
39032 + BFD_RELOC_PJ_CODE_LO16,
39033 + BFD_RELOC_PJ_CODE_DIR16,
39034 + BFD_RELOC_PJ_CODE_DIR32,
39035 + BFD_RELOC_PJ_CODE_REL16,
39036 + BFD_RELOC_PJ_CODE_REL32,
39037 +
39038 +/* Power(rs6000) and PowerPC relocations. */
39039 + BFD_RELOC_PPC_B26,
39040 + BFD_RELOC_PPC_BA26,
39041 + BFD_RELOC_PPC_TOC16,
39042 + BFD_RELOC_PPC_B16,
39043 + BFD_RELOC_PPC_B16_BRTAKEN,
39044 + BFD_RELOC_PPC_B16_BRNTAKEN,
39045 + BFD_RELOC_PPC_BA16,
39046 + BFD_RELOC_PPC_BA16_BRTAKEN,
39047 + BFD_RELOC_PPC_BA16_BRNTAKEN,
39048 + BFD_RELOC_PPC_COPY,
39049 + BFD_RELOC_PPC_GLOB_DAT,
39050 + BFD_RELOC_PPC_JMP_SLOT,
39051 + BFD_RELOC_PPC_RELATIVE,
39052 + BFD_RELOC_PPC_LOCAL24PC,
39053 + BFD_RELOC_PPC_EMB_NADDR32,
39054 + BFD_RELOC_PPC_EMB_NADDR16,
39055 + BFD_RELOC_PPC_EMB_NADDR16_LO,
39056 + BFD_RELOC_PPC_EMB_NADDR16_HI,
39057 + BFD_RELOC_PPC_EMB_NADDR16_HA,
39058 + BFD_RELOC_PPC_EMB_SDAI16,
39059 + BFD_RELOC_PPC_EMB_SDA2I16,
39060 + BFD_RELOC_PPC_EMB_SDA2REL,
39061 + BFD_RELOC_PPC_EMB_SDA21,
39062 + BFD_RELOC_PPC_EMB_MRKREF,
39063 + BFD_RELOC_PPC_EMB_RELSEC16,
39064 + BFD_RELOC_PPC_EMB_RELST_LO,
39065 + BFD_RELOC_PPC_EMB_RELST_HI,
39066 + BFD_RELOC_PPC_EMB_RELST_HA,
39067 + BFD_RELOC_PPC_EMB_BIT_FLD,
39068 + BFD_RELOC_PPC_EMB_RELSDA,
39069 + BFD_RELOC_PPC64_HIGHER,
39070 + BFD_RELOC_PPC64_HIGHER_S,
39071 + BFD_RELOC_PPC64_HIGHEST,
39072 + BFD_RELOC_PPC64_HIGHEST_S,
39073 + BFD_RELOC_PPC64_TOC16_LO,
39074 + BFD_RELOC_PPC64_TOC16_HI,
39075 + BFD_RELOC_PPC64_TOC16_HA,
39076 + BFD_RELOC_PPC64_TOC,
39077 + BFD_RELOC_PPC64_PLTGOT16,
39078 + BFD_RELOC_PPC64_PLTGOT16_LO,
39079 + BFD_RELOC_PPC64_PLTGOT16_HI,
39080 + BFD_RELOC_PPC64_PLTGOT16_HA,
39081 + BFD_RELOC_PPC64_ADDR16_DS,
39082 + BFD_RELOC_PPC64_ADDR16_LO_DS,
39083 + BFD_RELOC_PPC64_GOT16_DS,
39084 + BFD_RELOC_PPC64_GOT16_LO_DS,
39085 + BFD_RELOC_PPC64_PLT16_LO_DS,
39086 + BFD_RELOC_PPC64_SECTOFF_DS,
39087 + BFD_RELOC_PPC64_SECTOFF_LO_DS,
39088 + BFD_RELOC_PPC64_TOC16_DS,
39089 + BFD_RELOC_PPC64_TOC16_LO_DS,
39090 + BFD_RELOC_PPC64_PLTGOT16_DS,
39091 + BFD_RELOC_PPC64_PLTGOT16_LO_DS,
39092 +
39093 +/* PowerPC and PowerPC64 thread-local storage relocations. */
39094 + BFD_RELOC_PPC_TLS,
39095 + BFD_RELOC_PPC_DTPMOD,
39096 + BFD_RELOC_PPC_TPREL16,
39097 + BFD_RELOC_PPC_TPREL16_LO,
39098 + BFD_RELOC_PPC_TPREL16_HI,
39099 + BFD_RELOC_PPC_TPREL16_HA,
39100 + BFD_RELOC_PPC_TPREL,
39101 + BFD_RELOC_PPC_DTPREL16,
39102 + BFD_RELOC_PPC_DTPREL16_LO,
39103 + BFD_RELOC_PPC_DTPREL16_HI,
39104 + BFD_RELOC_PPC_DTPREL16_HA,
39105 + BFD_RELOC_PPC_DTPREL,
39106 + BFD_RELOC_PPC_GOT_TLSGD16,
39107 + BFD_RELOC_PPC_GOT_TLSGD16_LO,
39108 + BFD_RELOC_PPC_GOT_TLSGD16_HI,
39109 + BFD_RELOC_PPC_GOT_TLSGD16_HA,
39110 + BFD_RELOC_PPC_GOT_TLSLD16,
39111 + BFD_RELOC_PPC_GOT_TLSLD16_LO,
39112 + BFD_RELOC_PPC_GOT_TLSLD16_HI,
39113 + BFD_RELOC_PPC_GOT_TLSLD16_HA,
39114 + BFD_RELOC_PPC_GOT_TPREL16,
39115 + BFD_RELOC_PPC_GOT_TPREL16_LO,
39116 + BFD_RELOC_PPC_GOT_TPREL16_HI,
39117 + BFD_RELOC_PPC_GOT_TPREL16_HA,
39118 + BFD_RELOC_PPC_GOT_DTPREL16,
39119 + BFD_RELOC_PPC_GOT_DTPREL16_LO,
39120 + BFD_RELOC_PPC_GOT_DTPREL16_HI,
39121 + BFD_RELOC_PPC_GOT_DTPREL16_HA,
39122 + BFD_RELOC_PPC64_TPREL16_DS,
39123 + BFD_RELOC_PPC64_TPREL16_LO_DS,
39124 + BFD_RELOC_PPC64_TPREL16_HIGHER,
39125 + BFD_RELOC_PPC64_TPREL16_HIGHERA,
39126 + BFD_RELOC_PPC64_TPREL16_HIGHEST,
39127 + BFD_RELOC_PPC64_TPREL16_HIGHESTA,
39128 + BFD_RELOC_PPC64_DTPREL16_DS,
39129 + BFD_RELOC_PPC64_DTPREL16_LO_DS,
39130 + BFD_RELOC_PPC64_DTPREL16_HIGHER,
39131 + BFD_RELOC_PPC64_DTPREL16_HIGHERA,
39132 + BFD_RELOC_PPC64_DTPREL16_HIGHEST,
39133 + BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
39134 +
39135 +/* IBM 370/390 relocations */
39136 + BFD_RELOC_I370_D12,
39137 +
39138 +/* The type of reloc used to build a constructor table - at the moment
39139 +probably a 32 bit wide absolute relocation, but the target can choose.
39140 +It generally does map to one of the other relocation types. */
39141 + BFD_RELOC_CTOR,
39142 +
39143 +/* ARM 26 bit pc-relative branch. The lowest two bits must be zero and are
39144 +not stored in the instruction. */
39145 + BFD_RELOC_ARM_PCREL_BRANCH,
39146 +
39147 +/* ARM 26 bit pc-relative branch. The lowest bit must be zero and is
39148 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
39149 +field in the instruction. */
39150 + BFD_RELOC_ARM_PCREL_BLX,
39151 +
39152 +/* Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
39153 +not stored in the instruction. The 2nd lowest bit comes from a 1 bit
39154 +field in the instruction. */
39155 + BFD_RELOC_THUMB_PCREL_BLX,
39156 +
39157 +/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction. */
39158 + BFD_RELOC_ARM_PCREL_CALL,
39159 +
39160 +/* ARM 26-bit pc-relative branch for B or conditional BL instruction. */
39161 + BFD_RELOC_ARM_PCREL_JUMP,
39162 +
39163 +/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
39164 +The lowest bit must be zero and is not stored in the instruction.
39165 +Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
39166 +"nn" one smaller in all cases. Note further that BRANCH23
39167 +corresponds to R_ARM_THM_CALL. */
39168 + BFD_RELOC_THUMB_PCREL_BRANCH7,
39169 + BFD_RELOC_THUMB_PCREL_BRANCH9,
39170 + BFD_RELOC_THUMB_PCREL_BRANCH12,
39171 + BFD_RELOC_THUMB_PCREL_BRANCH20,
39172 + BFD_RELOC_THUMB_PCREL_BRANCH23,
39173 + BFD_RELOC_THUMB_PCREL_BRANCH25,
39174 +
39175 +/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
39176 + BFD_RELOC_ARM_OFFSET_IMM,
39177 +
39178 +/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
39179 + BFD_RELOC_ARM_THUMB_OFFSET,
39180 +
39181 +/* Pc-relative or absolute relocation depending on target. Used for
39182 +entries in .init_array sections. */
39183 + BFD_RELOC_ARM_TARGET1,
39184 +
39185 +/* Read-only segment base relative address. */
39186 + BFD_RELOC_ARM_ROSEGREL32,
39187 +
39188 +/* Data segment base relative address. */
39189 + BFD_RELOC_ARM_SBREL32,
39190 +
39191 +/* This reloc is used for references to RTTI data from exception handling
39192 +tables. The actual definition depends on the target. It may be a
39193 +pc-relative or some form of GOT-indirect relocation. */
39194 + BFD_RELOC_ARM_TARGET2,
39195 +
39196 +/* 31-bit PC relative address. */
39197 + BFD_RELOC_ARM_PREL31,
39198 +
39199 +/* Low and High halfword relocations for MOVW and MOVT instructions. */
39200 + BFD_RELOC_ARM_MOVW,
39201 + BFD_RELOC_ARM_MOVT,
39202 + BFD_RELOC_ARM_MOVW_PCREL,
39203 + BFD_RELOC_ARM_MOVT_PCREL,
39204 + BFD_RELOC_ARM_THUMB_MOVW,
39205 + BFD_RELOC_ARM_THUMB_MOVT,
39206 + BFD_RELOC_ARM_THUMB_MOVW_PCREL,
39207 + BFD_RELOC_ARM_THUMB_MOVT_PCREL,
39208 +
39209 +/* Relocations for setting up GOTs and PLTs for shared libraries. */
39210 + BFD_RELOC_ARM_JUMP_SLOT,
39211 + BFD_RELOC_ARM_GLOB_DAT,
39212 + BFD_RELOC_ARM_GOT32,
39213 + BFD_RELOC_ARM_PLT32,
39214 + BFD_RELOC_ARM_RELATIVE,
39215 + BFD_RELOC_ARM_GOTOFF,
39216 + BFD_RELOC_ARM_GOTPC,
39217 +
39218 +/* ARM thread-local storage relocations. */
39219 + BFD_RELOC_ARM_TLS_GD32,
39220 + BFD_RELOC_ARM_TLS_LDO32,
39221 + BFD_RELOC_ARM_TLS_LDM32,
39222 + BFD_RELOC_ARM_TLS_DTPOFF32,
39223 + BFD_RELOC_ARM_TLS_DTPMOD32,
39224 + BFD_RELOC_ARM_TLS_TPOFF32,
39225 + BFD_RELOC_ARM_TLS_IE32,
39226 + BFD_RELOC_ARM_TLS_LE32,
39227 +
39228 +/* ARM group relocations. */
39229 + BFD_RELOC_ARM_ALU_PC_G0_NC,
39230 + BFD_RELOC_ARM_ALU_PC_G0,
39231 + BFD_RELOC_ARM_ALU_PC_G1_NC,
39232 + BFD_RELOC_ARM_ALU_PC_G1,
39233 + BFD_RELOC_ARM_ALU_PC_G2,
39234 + BFD_RELOC_ARM_LDR_PC_G0,
39235 + BFD_RELOC_ARM_LDR_PC_G1,
39236 + BFD_RELOC_ARM_LDR_PC_G2,
39237 + BFD_RELOC_ARM_LDRS_PC_G0,
39238 + BFD_RELOC_ARM_LDRS_PC_G1,
39239 + BFD_RELOC_ARM_LDRS_PC_G2,
39240 + BFD_RELOC_ARM_LDC_PC_G0,
39241 + BFD_RELOC_ARM_LDC_PC_G1,
39242 + BFD_RELOC_ARM_LDC_PC_G2,
39243 + BFD_RELOC_ARM_ALU_SB_G0_NC,
39244 + BFD_RELOC_ARM_ALU_SB_G0,
39245 + BFD_RELOC_ARM_ALU_SB_G1_NC,
39246 + BFD_RELOC_ARM_ALU_SB_G1,
39247 + BFD_RELOC_ARM_ALU_SB_G2,
39248 + BFD_RELOC_ARM_LDR_SB_G0,
39249 + BFD_RELOC_ARM_LDR_SB_G1,
39250 + BFD_RELOC_ARM_LDR_SB_G2,
39251 + BFD_RELOC_ARM_LDRS_SB_G0,
39252 + BFD_RELOC_ARM_LDRS_SB_G1,
39253 + BFD_RELOC_ARM_LDRS_SB_G2,
39254 + BFD_RELOC_ARM_LDC_SB_G0,
39255 + BFD_RELOC_ARM_LDC_SB_G1,
39256 + BFD_RELOC_ARM_LDC_SB_G2,
39257 +
39258 +/* These relocs are only used within the ARM assembler. They are not
39259 +(at present) written to any object files. */
39260 + BFD_RELOC_ARM_IMMEDIATE,
39261 + BFD_RELOC_ARM_ADRL_IMMEDIATE,
39262 + BFD_RELOC_ARM_T32_IMMEDIATE,
39263 + BFD_RELOC_ARM_T32_ADD_IMM,
39264 + BFD_RELOC_ARM_T32_IMM12,
39265 + BFD_RELOC_ARM_T32_ADD_PC12,
39266 + BFD_RELOC_ARM_SHIFT_IMM,
39267 + BFD_RELOC_ARM_SMC,
39268 + BFD_RELOC_ARM_SWI,
39269 + BFD_RELOC_ARM_MULTI,
39270 + BFD_RELOC_ARM_CP_OFF_IMM,
39271 + BFD_RELOC_ARM_CP_OFF_IMM_S2,
39272 + BFD_RELOC_ARM_T32_CP_OFF_IMM,
39273 + BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
39274 + BFD_RELOC_ARM_ADR_IMM,
39275 + BFD_RELOC_ARM_LDR_IMM,
39276 + BFD_RELOC_ARM_LITERAL,
39277 + BFD_RELOC_ARM_IN_POOL,
39278 + BFD_RELOC_ARM_OFFSET_IMM8,
39279 + BFD_RELOC_ARM_T32_OFFSET_U8,
39280 + BFD_RELOC_ARM_T32_OFFSET_IMM,
39281 + BFD_RELOC_ARM_HWLITERAL,
39282 + BFD_RELOC_ARM_THUMB_ADD,
39283 + BFD_RELOC_ARM_THUMB_IMM,
39284 + BFD_RELOC_ARM_THUMB_SHIFT,
39285 +
39286 +/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
39287 + BFD_RELOC_SH_PCDISP8BY2,
39288 + BFD_RELOC_SH_PCDISP12BY2,
39289 + BFD_RELOC_SH_IMM3,
39290 + BFD_RELOC_SH_IMM3U,
39291 + BFD_RELOC_SH_DISP12,
39292 + BFD_RELOC_SH_DISP12BY2,
39293 + BFD_RELOC_SH_DISP12BY4,
39294 + BFD_RELOC_SH_DISP12BY8,
39295 + BFD_RELOC_SH_DISP20,
39296 + BFD_RELOC_SH_DISP20BY8,
39297 + BFD_RELOC_SH_IMM4,
39298 + BFD_RELOC_SH_IMM4BY2,
39299 + BFD_RELOC_SH_IMM4BY4,
39300 + BFD_RELOC_SH_IMM8,
39301 + BFD_RELOC_SH_IMM8BY2,
39302 + BFD_RELOC_SH_IMM8BY4,
39303 + BFD_RELOC_SH_PCRELIMM8BY2,
39304 + BFD_RELOC_SH_PCRELIMM8BY4,
39305 + BFD_RELOC_SH_SWITCH16,
39306 + BFD_RELOC_SH_SWITCH32,
39307 + BFD_RELOC_SH_USES,
39308 + BFD_RELOC_SH_COUNT,
39309 + BFD_RELOC_SH_ALIGN,
39310 + BFD_RELOC_SH_CODE,
39311 + BFD_RELOC_SH_DATA,
39312 + BFD_RELOC_SH_LABEL,
39313 + BFD_RELOC_SH_LOOP_START,
39314 + BFD_RELOC_SH_LOOP_END,
39315 + BFD_RELOC_SH_COPY,
39316 + BFD_RELOC_SH_GLOB_DAT,
39317 + BFD_RELOC_SH_JMP_SLOT,
39318 + BFD_RELOC_SH_RELATIVE,
39319 + BFD_RELOC_SH_GOTPC,
39320 + BFD_RELOC_SH_GOT_LOW16,
39321 + BFD_RELOC_SH_GOT_MEDLOW16,
39322 + BFD_RELOC_SH_GOT_MEDHI16,
39323 + BFD_RELOC_SH_GOT_HI16,
39324 + BFD_RELOC_SH_GOTPLT_LOW16,
39325 + BFD_RELOC_SH_GOTPLT_MEDLOW16,
39326 + BFD_RELOC_SH_GOTPLT_MEDHI16,
39327 + BFD_RELOC_SH_GOTPLT_HI16,
39328 + BFD_RELOC_SH_PLT_LOW16,
39329 + BFD_RELOC_SH_PLT_MEDLOW16,
39330 + BFD_RELOC_SH_PLT_MEDHI16,
39331 + BFD_RELOC_SH_PLT_HI16,
39332 + BFD_RELOC_SH_GOTOFF_LOW16,
39333 + BFD_RELOC_SH_GOTOFF_MEDLOW16,
39334 + BFD_RELOC_SH_GOTOFF_MEDHI16,
39335 + BFD_RELOC_SH_GOTOFF_HI16,
39336 + BFD_RELOC_SH_GOTPC_LOW16,
39337 + BFD_RELOC_SH_GOTPC_MEDLOW16,
39338 + BFD_RELOC_SH_GOTPC_MEDHI16,
39339 + BFD_RELOC_SH_GOTPC_HI16,
39340 + BFD_RELOC_SH_COPY64,
39341 + BFD_RELOC_SH_GLOB_DAT64,
39342 + BFD_RELOC_SH_JMP_SLOT64,
39343 + BFD_RELOC_SH_RELATIVE64,
39344 + BFD_RELOC_SH_GOT10BY4,
39345 + BFD_RELOC_SH_GOT10BY8,
39346 + BFD_RELOC_SH_GOTPLT10BY4,
39347 + BFD_RELOC_SH_GOTPLT10BY8,
39348 + BFD_RELOC_SH_GOTPLT32,
39349 + BFD_RELOC_SH_SHMEDIA_CODE,
39350 + BFD_RELOC_SH_IMMU5,
39351 + BFD_RELOC_SH_IMMS6,
39352 + BFD_RELOC_SH_IMMS6BY32,
39353 + BFD_RELOC_SH_IMMU6,
39354 + BFD_RELOC_SH_IMMS10,
39355 + BFD_RELOC_SH_IMMS10BY2,
39356 + BFD_RELOC_SH_IMMS10BY4,
39357 + BFD_RELOC_SH_IMMS10BY8,
39358 + BFD_RELOC_SH_IMMS16,
39359 + BFD_RELOC_SH_IMMU16,
39360 + BFD_RELOC_SH_IMM_LOW16,
39361 + BFD_RELOC_SH_IMM_LOW16_PCREL,
39362 + BFD_RELOC_SH_IMM_MEDLOW16,
39363 + BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
39364 + BFD_RELOC_SH_IMM_MEDHI16,
39365 + BFD_RELOC_SH_IMM_MEDHI16_PCREL,
39366 + BFD_RELOC_SH_IMM_HI16,
39367 + BFD_RELOC_SH_IMM_HI16_PCREL,
39368 + BFD_RELOC_SH_PT_16,
39369 + BFD_RELOC_SH_TLS_GD_32,
39370 + BFD_RELOC_SH_TLS_LD_32,
39371 + BFD_RELOC_SH_TLS_LDO_32,
39372 + BFD_RELOC_SH_TLS_IE_32,
39373 + BFD_RELOC_SH_TLS_LE_32,
39374 + BFD_RELOC_SH_TLS_DTPMOD32,
39375 + BFD_RELOC_SH_TLS_DTPOFF32,
39376 + BFD_RELOC_SH_TLS_TPOFF32,
39377 +
39378 +/* ARC Cores relocs.
39379 +ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
39380 +not stored in the instruction. The high 20 bits are installed in bits 26
39381 +through 7 of the instruction. */
39382 + BFD_RELOC_ARC_B22_PCREL,
39383 +
39384 +/* ARC 26 bit absolute branch. The lowest two bits must be zero and are not
39385 +stored in the instruction. The high 24 bits are installed in bits 23
39386 +through 0. */
39387 + BFD_RELOC_ARC_B26,
39388 +
39389 +/* ADI Blackfin 16 bit immediate absolute reloc. */
39390 + BFD_RELOC_BFIN_16_IMM,
39391 +
39392 +/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits. */
39393 + BFD_RELOC_BFIN_16_HIGH,
39394 +
39395 +/* ADI Blackfin 'a' part of LSETUP. */
39396 + BFD_RELOC_BFIN_4_PCREL,
39397 +
39398 +/* ADI Blackfin. */
39399 + BFD_RELOC_BFIN_5_PCREL,
39400 +
39401 +/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits. */
39402 + BFD_RELOC_BFIN_16_LOW,
39403 +
39404 +/* ADI Blackfin. */
39405 + BFD_RELOC_BFIN_10_PCREL,
39406 +
39407 +/* ADI Blackfin 'b' part of LSETUP. */
39408 + BFD_RELOC_BFIN_11_PCREL,
39409 +
39410 +/* ADI Blackfin. */
39411 + BFD_RELOC_BFIN_12_PCREL_JUMP,
39412 +
39413 +/* ADI Blackfin Short jump, pcrel. */
39414 + BFD_RELOC_BFIN_12_PCREL_JUMP_S,
39415 +
39416 +/* ADI Blackfin Call.x not implemented. */
39417 + BFD_RELOC_BFIN_24_PCREL_CALL_X,
39418 +
39419 +/* ADI Blackfin Long Jump pcrel. */
39420 + BFD_RELOC_BFIN_24_PCREL_JUMP_L,
39421 +
39422 +/* ADI Blackfin FD-PIC relocations. */
39423 + BFD_RELOC_BFIN_GOT17M4,
39424 + BFD_RELOC_BFIN_GOTHI,
39425 + BFD_RELOC_BFIN_GOTLO,
39426 + BFD_RELOC_BFIN_FUNCDESC,
39427 + BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
39428 + BFD_RELOC_BFIN_FUNCDESC_GOTHI,
39429 + BFD_RELOC_BFIN_FUNCDESC_GOTLO,
39430 + BFD_RELOC_BFIN_FUNCDESC_VALUE,
39431 + BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
39432 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
39433 + BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
39434 + BFD_RELOC_BFIN_GOTOFF17M4,
39435 + BFD_RELOC_BFIN_GOTOFFHI,
39436 + BFD_RELOC_BFIN_GOTOFFLO,
39437 +
39438 +/* ADI Blackfin GOT relocation. */
39439 + BFD_RELOC_BFIN_GOT,
39440 +
39441 +/* ADI Blackfin PLTPC relocation. */
39442 + BFD_RELOC_BFIN_PLTPC,
39443 +
39444 +/* ADI Blackfin arithmetic relocation. */
39445 + BFD_ARELOC_BFIN_PUSH,
39446 +
39447 +/* ADI Blackfin arithmetic relocation. */
39448 + BFD_ARELOC_BFIN_CONST,
39449 +
39450 +/* ADI Blackfin arithmetic relocation. */
39451 + BFD_ARELOC_BFIN_ADD,
39452 +
39453 +/* ADI Blackfin arithmetic relocation. */
39454 + BFD_ARELOC_BFIN_SUB,
39455 +
39456 +/* ADI Blackfin arithmetic relocation. */
39457 + BFD_ARELOC_BFIN_MULT,
39458 +
39459 +/* ADI Blackfin arithmetic relocation. */
39460 + BFD_ARELOC_BFIN_DIV,
39461 +
39462 +/* ADI Blackfin arithmetic relocation. */
39463 + BFD_ARELOC_BFIN_MOD,
39464 +
39465 +/* ADI Blackfin arithmetic relocation. */
39466 + BFD_ARELOC_BFIN_LSHIFT,
39467 +
39468 +/* ADI Blackfin arithmetic relocation. */
39469 + BFD_ARELOC_BFIN_RSHIFT,
39470 +
39471 +/* ADI Blackfin arithmetic relocation. */
39472 + BFD_ARELOC_BFIN_AND,
39473 +
39474 +/* ADI Blackfin arithmetic relocation. */
39475 + BFD_ARELOC_BFIN_OR,
39476 +
39477 +/* ADI Blackfin arithmetic relocation. */
39478 + BFD_ARELOC_BFIN_XOR,
39479 +
39480 +/* ADI Blackfin arithmetic relocation. */
39481 + BFD_ARELOC_BFIN_LAND,
39482 +
39483 +/* ADI Blackfin arithmetic relocation. */
39484 + BFD_ARELOC_BFIN_LOR,
39485 +
39486 +/* ADI Blackfin arithmetic relocation. */
39487 + BFD_ARELOC_BFIN_LEN,
39488 +
39489 +/* ADI Blackfin arithmetic relocation. */
39490 + BFD_ARELOC_BFIN_NEG,
39491 +
39492 +/* ADI Blackfin arithmetic relocation. */
39493 + BFD_ARELOC_BFIN_COMP,
39494 +
39495 +/* ADI Blackfin arithmetic relocation. */
39496 + BFD_ARELOC_BFIN_PAGE,
39497 +
39498 +/* ADI Blackfin arithmetic relocation. */
39499 + BFD_ARELOC_BFIN_HWPAGE,
39500 +
39501 +/* ADI Blackfin arithmetic relocation. */
39502 + BFD_ARELOC_BFIN_ADDR,
39503 +
39504 +/* Mitsubishi D10V relocs.
39505 +This is a 10-bit reloc with the right 2 bits
39506 +assumed to be 0. */
39507 + BFD_RELOC_D10V_10_PCREL_R,
39508 +
39509 +/* Mitsubishi D10V relocs.
39510 +This is a 10-bit reloc with the right 2 bits
39511 +assumed to be 0. This is the same as the previous reloc
39512 +except it is in the left container, i.e.,
39513 +shifted left 15 bits. */
39514 + BFD_RELOC_D10V_10_PCREL_L,
39515 +
39516 +/* This is an 18-bit reloc with the right 2 bits
39517 +assumed to be 0. */
39518 + BFD_RELOC_D10V_18,
39519 +
39520 +/* This is an 18-bit reloc with the right 2 bits
39521 +assumed to be 0. */
39522 + BFD_RELOC_D10V_18_PCREL,
39523 +
39524 +/* Mitsubishi D30V relocs.
39525 +This is a 6-bit absolute reloc. */
39526 + BFD_RELOC_D30V_6,
39527 +
39528 +/* This is a 6-bit pc-relative reloc with
39529 +the right 3 bits assumed to be 0. */
39530 + BFD_RELOC_D30V_9_PCREL,
39531 +
39532 +/* This is a 6-bit pc-relative reloc with
39533 +the right 3 bits assumed to be 0. Same
39534 +as the previous reloc but on the right side
39535 +of the container. */
39536 + BFD_RELOC_D30V_9_PCREL_R,
39537 +
39538 +/* This is a 12-bit absolute reloc with the
39539 +right 3 bitsassumed to be 0. */
39540 + BFD_RELOC_D30V_15,
39541 +
39542 +/* This is a 12-bit pc-relative reloc with
39543 +the right 3 bits assumed to be 0. */
39544 + BFD_RELOC_D30V_15_PCREL,
39545 +
39546 +/* This is a 12-bit pc-relative reloc with
39547 +the right 3 bits assumed to be 0. Same
39548 +as the previous reloc but on the right side
39549 +of the container. */
39550 + BFD_RELOC_D30V_15_PCREL_R,
39551 +
39552 +/* This is an 18-bit absolute reloc with
39553 +the right 3 bits assumed to be 0. */
39554 + BFD_RELOC_D30V_21,
39555 +
39556 +/* This is an 18-bit pc-relative reloc with
39557 +the right 3 bits assumed to be 0. */
39558 + BFD_RELOC_D30V_21_PCREL,
39559 +
39560 +/* This is an 18-bit pc-relative reloc with
39561 +the right 3 bits assumed to be 0. Same
39562 +as the previous reloc but on the right side
39563 +of the container. */
39564 + BFD_RELOC_D30V_21_PCREL_R,
39565 +
39566 +/* This is a 32-bit absolute reloc. */
39567 + BFD_RELOC_D30V_32,
39568 +
39569 +/* This is a 32-bit pc-relative reloc. */
39570 + BFD_RELOC_D30V_32_PCREL,
39571 +
39572 +/* DLX relocs */
39573 + BFD_RELOC_DLX_HI16_S,
39574 +
39575 +/* DLX relocs */
39576 + BFD_RELOC_DLX_LO16,
39577 +
39578 +/* DLX relocs */
39579 + BFD_RELOC_DLX_JMP26,
39580 +
39581 +/* Renesas M16C/M32C Relocations. */
39582 + BFD_RELOC_M32C_HI8,
39583 + BFD_RELOC_M32C_RL_JUMP,
39584 + BFD_RELOC_M32C_RL_1ADDR,
39585 + BFD_RELOC_M32C_RL_2ADDR,
39586 +
39587 +/* Renesas M32R (formerly Mitsubishi M32R) relocs.
39588 +This is a 24 bit absolute address. */
39589 + BFD_RELOC_M32R_24,
39590 +
39591 +/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0. */
39592 + BFD_RELOC_M32R_10_PCREL,
39593 +
39594 +/* This is an 18-bit reloc with the right 2 bits assumed to be 0. */
39595 + BFD_RELOC_M32R_18_PCREL,
39596 +
39597 +/* This is a 26-bit reloc with the right 2 bits assumed to be 0. */
39598 + BFD_RELOC_M32R_26_PCREL,
39599 +
39600 +/* This is a 16-bit reloc containing the high 16 bits of an address
39601 +used when the lower 16 bits are treated as unsigned. */
39602 + BFD_RELOC_M32R_HI16_ULO,
39603 +
39604 +/* This is a 16-bit reloc containing the high 16 bits of an address
39605 +used when the lower 16 bits are treated as signed. */
39606 + BFD_RELOC_M32R_HI16_SLO,
39607 +
39608 +/* This is a 16-bit reloc containing the lower 16 bits of an address. */
39609 + BFD_RELOC_M32R_LO16,
39610 +
39611 +/* This is a 16-bit reloc containing the small data area offset for use in
39612 +add3, load, and store instructions. */
39613 + BFD_RELOC_M32R_SDA16,
39614 +
39615 +/* For PIC. */
39616 + BFD_RELOC_M32R_GOT24,
39617 + BFD_RELOC_M32R_26_PLTREL,
39618 + BFD_RELOC_M32R_COPY,
39619 + BFD_RELOC_M32R_GLOB_DAT,
39620 + BFD_RELOC_M32R_JMP_SLOT,
39621 + BFD_RELOC_M32R_RELATIVE,
39622 + BFD_RELOC_M32R_GOTOFF,
39623 + BFD_RELOC_M32R_GOTOFF_HI_ULO,
39624 + BFD_RELOC_M32R_GOTOFF_HI_SLO,
39625 + BFD_RELOC_M32R_GOTOFF_LO,
39626 + BFD_RELOC_M32R_GOTPC24,
39627 + BFD_RELOC_M32R_GOT16_HI_ULO,
39628 + BFD_RELOC_M32R_GOT16_HI_SLO,
39629 + BFD_RELOC_M32R_GOT16_LO,
39630 + BFD_RELOC_M32R_GOTPC_HI_ULO,
39631 + BFD_RELOC_M32R_GOTPC_HI_SLO,
39632 + BFD_RELOC_M32R_GOTPC_LO,
39633 +
39634 +/* This is a 9-bit reloc */
39635 + BFD_RELOC_V850_9_PCREL,
39636 +
39637 +/* This is a 22-bit reloc */
39638 + BFD_RELOC_V850_22_PCREL,
39639 +
39640 +/* This is a 16 bit offset from the short data area pointer. */
39641 + BFD_RELOC_V850_SDA_16_16_OFFSET,
39642 +
39643 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39644 +short data area pointer. */
39645 + BFD_RELOC_V850_SDA_15_16_OFFSET,
39646 +
39647 +/* This is a 16 bit offset from the zero data area pointer. */
39648 + BFD_RELOC_V850_ZDA_16_16_OFFSET,
39649 +
39650 +/* This is a 16 bit offset (of which only 15 bits are used) from the
39651 +zero data area pointer. */
39652 + BFD_RELOC_V850_ZDA_15_16_OFFSET,
39653 +
39654 +/* This is an 8 bit offset (of which only 6 bits are used) from the
39655 +tiny data area pointer. */
39656 + BFD_RELOC_V850_TDA_6_8_OFFSET,
39657 +
39658 +/* This is an 8bit offset (of which only 7 bits are used) from the tiny
39659 +data area pointer. */
39660 + BFD_RELOC_V850_TDA_7_8_OFFSET,
39661 +
39662 +/* This is a 7 bit offset from the tiny data area pointer. */
39663 + BFD_RELOC_V850_TDA_7_7_OFFSET,
39664 +
39665 +/* This is a 16 bit offset from the tiny data area pointer. */
39666 + BFD_RELOC_V850_TDA_16_16_OFFSET,
39667 +
39668 +/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
39669 +data area pointer. */
39670 + BFD_RELOC_V850_TDA_4_5_OFFSET,
39671 +
39672 +/* This is a 4 bit offset from the tiny data area pointer. */
39673 + BFD_RELOC_V850_TDA_4_4_OFFSET,
39674 +
39675 +/* This is a 16 bit offset from the short data area pointer, with the
39676 +bits placed non-contiguously in the instruction. */
39677 + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
39678 +
39679 +/* This is a 16 bit offset from the zero data area pointer, with the
39680 +bits placed non-contiguously in the instruction. */
39681 + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
39682 +
39683 +/* This is a 6 bit offset from the call table base pointer. */
39684 + BFD_RELOC_V850_CALLT_6_7_OFFSET,
39685 +
39686 +/* This is a 16 bit offset from the call table base pointer. */
39687 + BFD_RELOC_V850_CALLT_16_16_OFFSET,
39688 +
39689 +/* Used for relaxing indirect function calls. */
39690 + BFD_RELOC_V850_LONGCALL,
39691 +
39692 +/* Used for relaxing indirect jumps. */
39693 + BFD_RELOC_V850_LONGJUMP,
39694 +
39695 +/* Used to maintain alignment whilst relaxing. */
39696 + BFD_RELOC_V850_ALIGN,
39697 +
39698 +/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
39699 +instructions. */
39700 + BFD_RELOC_V850_LO16_SPLIT_OFFSET,
39701 +
39702 +/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
39703 +instruction. */
39704 + BFD_RELOC_MN10300_32_PCREL,
39705 +
39706 +/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
39707 +instruction. */
39708 + BFD_RELOC_MN10300_16_PCREL,
39709 +
39710 +/* This is a 8bit DP reloc for the tms320c30, where the most
39711 +significant 8 bits of a 24 bit word are placed into the least
39712 +significant 8 bits of the opcode. */
39713 + BFD_RELOC_TIC30_LDP,
39714 +
39715 +/* This is a 7bit reloc for the tms320c54x, where the least
39716 +significant 7 bits of a 16 bit word are placed into the least
39717 +significant 7 bits of the opcode. */
39718 + BFD_RELOC_TIC54X_PARTLS7,
39719 +
39720 +/* This is a 9bit DP reloc for the tms320c54x, where the most
39721 +significant 9 bits of a 16 bit word are placed into the least
39722 +significant 9 bits of the opcode. */
39723 + BFD_RELOC_TIC54X_PARTMS9,
39724 +
39725 +/* This is an extended address 23-bit reloc for the tms320c54x. */
39726 + BFD_RELOC_TIC54X_23,
39727 +
39728 +/* This is a 16-bit reloc for the tms320c54x, where the least
39729 +significant 16 bits of a 23-bit extended address are placed into
39730 +the opcode. */
39731 + BFD_RELOC_TIC54X_16_OF_23,
39732 +
39733 +/* This is a reloc for the tms320c54x, where the most
39734 +significant 7 bits of a 23-bit extended address are placed into
39735 +the opcode. */
39736 + BFD_RELOC_TIC54X_MS7_OF_23,
39737 +
39738 +/* This is a 48 bit reloc for the FR30 that stores 32 bits. */
39739 + BFD_RELOC_FR30_48,
39740 +
39741 +/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
39742 +two sections. */
39743 + BFD_RELOC_FR30_20,
39744 +
39745 +/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
39746 +4 bits. */
39747 + BFD_RELOC_FR30_6_IN_4,
39748 +
39749 +/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
39750 +into 8 bits. */
39751 + BFD_RELOC_FR30_8_IN_8,
39752 +
39753 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
39754 +into 8 bits. */
39755 + BFD_RELOC_FR30_9_IN_8,
39756 +
39757 +/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
39758 +into 8 bits. */
39759 + BFD_RELOC_FR30_10_IN_8,
39760 +
39761 +/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
39762 +short offset into 8 bits. */
39763 + BFD_RELOC_FR30_9_PCREL,
39764 +
39765 +/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
39766 +short offset into 11 bits. */
39767 + BFD_RELOC_FR30_12_PCREL,
39768 +
39769 +/* Motorola Mcore relocations. */
39770 + BFD_RELOC_MCORE_PCREL_IMM8BY4,
39771 + BFD_RELOC_MCORE_PCREL_IMM11BY2,
39772 + BFD_RELOC_MCORE_PCREL_IMM4BY2,
39773 + BFD_RELOC_MCORE_PCREL_32,
39774 + BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
39775 + BFD_RELOC_MCORE_RVA,
39776 +
39777 +/* Toshiba Media Processor Relocations. */
39778 + BFD_RELOC_MEP_8,
39779 + BFD_RELOC_MEP_16,
39780 + BFD_RELOC_MEP_32,
39781 + BFD_RELOC_MEP_PCREL8A2,
39782 + BFD_RELOC_MEP_PCREL12A2,
39783 + BFD_RELOC_MEP_PCREL17A2,
39784 + BFD_RELOC_MEP_PCREL24A2,
39785 + BFD_RELOC_MEP_PCABS24A2,
39786 + BFD_RELOC_MEP_LOW16,
39787 + BFD_RELOC_MEP_HI16U,
39788 + BFD_RELOC_MEP_HI16S,
39789 + BFD_RELOC_MEP_GPREL,
39790 + BFD_RELOC_MEP_TPREL,
39791 + BFD_RELOC_MEP_TPREL7,
39792 + BFD_RELOC_MEP_TPREL7A2,
39793 + BFD_RELOC_MEP_TPREL7A4,
39794 + BFD_RELOC_MEP_UIMM24,
39795 + BFD_RELOC_MEP_ADDR24A4,
39796 + BFD_RELOC_MEP_GNU_VTINHERIT,
39797 + BFD_RELOC_MEP_GNU_VTENTRY,
39798 +
39799 +
39800 +/* These are relocations for the GETA instruction. */
39801 + BFD_RELOC_MMIX_GETA,
39802 + BFD_RELOC_MMIX_GETA_1,
39803 + BFD_RELOC_MMIX_GETA_2,
39804 + BFD_RELOC_MMIX_GETA_3,
39805 +
39806 +/* These are relocations for a conditional branch instruction. */
39807 + BFD_RELOC_MMIX_CBRANCH,
39808 + BFD_RELOC_MMIX_CBRANCH_J,
39809 + BFD_RELOC_MMIX_CBRANCH_1,
39810 + BFD_RELOC_MMIX_CBRANCH_2,
39811 + BFD_RELOC_MMIX_CBRANCH_3,
39812 +
39813 +/* These are relocations for the PUSHJ instruction. */
39814 + BFD_RELOC_MMIX_PUSHJ,
39815 + BFD_RELOC_MMIX_PUSHJ_1,
39816 + BFD_RELOC_MMIX_PUSHJ_2,
39817 + BFD_RELOC_MMIX_PUSHJ_3,
39818 + BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
39819 +
39820 +/* These are relocations for the JMP instruction. */
39821 + BFD_RELOC_MMIX_JMP,
39822 + BFD_RELOC_MMIX_JMP_1,
39823 + BFD_RELOC_MMIX_JMP_2,
39824 + BFD_RELOC_MMIX_JMP_3,
39825 +
39826 +/* This is a relocation for a relative address as in a GETA instruction or
39827 +a branch. */
39828 + BFD_RELOC_MMIX_ADDR19,
39829 +
39830 +/* This is a relocation for a relative address as in a JMP instruction. */
39831 + BFD_RELOC_MMIX_ADDR27,
39832 +
39833 +/* This is a relocation for an instruction field that may be a general
39834 +register or a value 0..255. */
39835 + BFD_RELOC_MMIX_REG_OR_BYTE,
39836 +
39837 +/* This is a relocation for an instruction field that may be a general
39838 +register. */
39839 + BFD_RELOC_MMIX_REG,
39840 +
39841 +/* This is a relocation for two instruction fields holding a register and
39842 +an offset, the equivalent of the relocation. */
39843 + BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
39844 +
39845 +/* This relocation is an assertion that the expression is not allocated as
39846 +a global register. It does not modify contents. */
39847 + BFD_RELOC_MMIX_LOCAL,
39848 +
39849 +/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
39850 +short offset into 7 bits. */
39851 + BFD_RELOC_AVR_7_PCREL,
39852 +
39853 +/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
39854 +short offset into 12 bits. */
39855 + BFD_RELOC_AVR_13_PCREL,
39856 +
39857 +/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
39858 +program memory address) into 16 bits. */
39859 + BFD_RELOC_AVR_16_PM,
39860 +
39861 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
39862 +data memory address) into 8 bit immediate value of LDI insn. */
39863 + BFD_RELOC_AVR_LO8_LDI,
39864 +
39865 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39866 +of data memory address) into 8 bit immediate value of LDI insn. */
39867 + BFD_RELOC_AVR_HI8_LDI,
39868 +
39869 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39870 +of program memory address) into 8 bit immediate value of LDI insn. */
39871 + BFD_RELOC_AVR_HH8_LDI,
39872 +
39873 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39874 +of 32 bit value) into 8 bit immediate value of LDI insn. */
39875 + BFD_RELOC_AVR_MS8_LDI,
39876 +
39877 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39878 +(usually data memory address) into 8 bit immediate value of SUBI insn. */
39879 + BFD_RELOC_AVR_LO8_LDI_NEG,
39880 +
39881 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39882 +(high 8 bit of data memory address) into 8 bit immediate value of
39883 +SUBI insn. */
39884 + BFD_RELOC_AVR_HI8_LDI_NEG,
39885 +
39886 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39887 +(most high 8 bit of program memory address) into 8 bit immediate value
39888 +of LDI or SUBI insn. */
39889 + BFD_RELOC_AVR_HH8_LDI_NEG,
39890 +
39891 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
39892 +of 32 bit value) into 8 bit immediate value of LDI insn. */
39893 + BFD_RELOC_AVR_MS8_LDI_NEG,
39894 +
39895 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
39896 +command address) into 8 bit immediate value of LDI insn. */
39897 + BFD_RELOC_AVR_LO8_LDI_PM,
39898 +
39899 +/* This is a 16 bit reloc for the AVR that stores 8 bit value
39900 +(command address) into 8 bit immediate value of LDI insn. If the address
39901 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
39902 +in the lower 128k. */
39903 + BFD_RELOC_AVR_LO8_LDI_GS,
39904 +
39905 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39906 +of command address) into 8 bit immediate value of LDI insn. */
39907 + BFD_RELOC_AVR_HI8_LDI_PM,
39908 +
39909 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
39910 +of command address) into 8 bit immediate value of LDI insn. If the address
39911 +is beyond the 128k boundary, the linker inserts a jump stub for this reloc
39912 +below 128k. */
39913 + BFD_RELOC_AVR_HI8_LDI_GS,
39914 +
39915 +/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
39916 +of command address) into 8 bit immediate value of LDI insn. */
39917 + BFD_RELOC_AVR_HH8_LDI_PM,
39918 +
39919 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39920 +(usually command address) into 8 bit immediate value of SUBI insn. */
39921 + BFD_RELOC_AVR_LO8_LDI_PM_NEG,
39922 +
39923 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39924 +(high 8 bit of 16 bit command address) into 8 bit immediate value
39925 +of SUBI insn. */
39926 + BFD_RELOC_AVR_HI8_LDI_PM_NEG,
39927 +
39928 +/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
39929 +(high 6 bit of 22 bit command address) into 8 bit immediate
39930 +value of SUBI insn. */
39931 + BFD_RELOC_AVR_HH8_LDI_PM_NEG,
39932 +
39933 +/* This is a 32 bit reloc for the AVR that stores 23 bit value
39934 +into 22 bits. */
39935 + BFD_RELOC_AVR_CALL,
39936 +
39937 +/* This is a 16 bit reloc for the AVR that stores all needed bits
39938 +for absolute addressing with ldi with overflow check to linktime */
39939 + BFD_RELOC_AVR_LDI,
39940 +
39941 +/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
39942 +instructions */
39943 + BFD_RELOC_AVR_6,
39944 +
39945 +/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
39946 +instructions */
39947 + BFD_RELOC_AVR_6_ADIW,
39948 +
39949 +/* Difference between two labels: L2 - L1. The value of L1 is encoded
39950 +as sym + addend, while the initial difference after assembly is
39951 +inserted into the object file by the assembler. */
39952 + BFD_RELOC_AVR32_DIFF32,
39953 + BFD_RELOC_AVR32_DIFF16,
39954 + BFD_RELOC_AVR32_DIFF8,
39955 +
39956 +/* Reference to a symbol through the Global Offset Table. The linker
39957 +will allocate an entry for symbol in the GOT and insert the offset
39958 +of this entry as the relocation value. */
39959 + BFD_RELOC_AVR32_GOT32,
39960 + BFD_RELOC_AVR32_GOT16,
39961 + BFD_RELOC_AVR32_GOT8,
39962 +
39963 +/* Normal (non-pc-relative) code relocations. Alignment and signedness
39964 +is indicated by the suffixes. S means signed, U means unsigned. W
39965 +means word-aligned, H means halfword-aligned, neither means
39966 +byte-aligned (no alignment.) SUB5 is the same relocation as 16S. */
39967 + BFD_RELOC_AVR32_21S,
39968 + BFD_RELOC_AVR32_16U,
39969 + BFD_RELOC_AVR32_16S,
39970 + BFD_RELOC_AVR32_SUB5,
39971 + BFD_RELOC_AVR32_8S_EXT,
39972 + BFD_RELOC_AVR32_8S,
39973 + BFD_RELOC_AVR32_15S,
39974 +
39975 +/* PC-relative relocations are signed if neither 'U' nor 'S' is
39976 +specified. However, we explicitly tack on a 'B' to indicate no
39977 +alignment, to avoid confusion with data relocs. All of these resolve
39978 +to sym + addend - offset, except the one with 'N' (negated) suffix.
39979 +This particular one resolves to offset - sym - addend. */
39980 + BFD_RELOC_AVR32_22H_PCREL,
39981 + BFD_RELOC_AVR32_18W_PCREL,
39982 + BFD_RELOC_AVR32_16B_PCREL,
39983 + BFD_RELOC_AVR32_16N_PCREL,
39984 + BFD_RELOC_AVR32_14UW_PCREL,
39985 + BFD_RELOC_AVR32_11H_PCREL,
39986 + BFD_RELOC_AVR32_10UW_PCREL,
39987 + BFD_RELOC_AVR32_9H_PCREL,
39988 + BFD_RELOC_AVR32_9UW_PCREL,
39989 +
39990 +/* Subtract the link-time address of the GOT from (symbol + addend)
39991 +and insert the result. */
39992 + BFD_RELOC_AVR32_GOTPC,
39993 +
39994 +/* Reference to a symbol through the GOT. The linker will allocate an
39995 +entry for symbol in the GOT and insert the offset of this entry as
39996 +the relocation value. addend must be zero. As usual, 'S' means
39997 +signed, 'W' means word-aligned, etc. */
39998 + BFD_RELOC_AVR32_GOTCALL,
39999 + BFD_RELOC_AVR32_LDA_GOT,
40000 + BFD_RELOC_AVR32_GOT21S,
40001 + BFD_RELOC_AVR32_GOT18SW,
40002 + BFD_RELOC_AVR32_GOT16S,
40003 +
40004 +/* 32-bit constant pool entry. I don't think 8- and 16-bit entries make
40005 +a whole lot of sense. */
40006 + BFD_RELOC_AVR32_32_CPENT,
40007 +
40008 +/* Constant pool references. Some of these relocations are signed,
40009 +others are unsigned. It doesn't really matter, since the constant
40010 +pool always comes after the code that references it. */
40011 + BFD_RELOC_AVR32_CPCALL,
40012 + BFD_RELOC_AVR32_16_CP,
40013 + BFD_RELOC_AVR32_9W_CP,
40014 +
40015 +/* sym must be the absolute symbol. The addend specifies the alignment
40016 +order, e.g. if addend is 2, the linker must add padding so that the
40017 +next address is aligned to a 4-byte boundary. */
40018 + BFD_RELOC_AVR32_ALIGN,
40019 +
40020 +/* Code relocations that will never make it to the output file. */
40021 + BFD_RELOC_AVR32_14UW,
40022 + BFD_RELOC_AVR32_10UW,
40023 + BFD_RELOC_AVR32_10SW,
40024 + BFD_RELOC_AVR32_STHH_W,
40025 + BFD_RELOC_AVR32_7UW,
40026 + BFD_RELOC_AVR32_6S,
40027 + BFD_RELOC_AVR32_6UW,
40028 + BFD_RELOC_AVR32_4UH,
40029 + BFD_RELOC_AVR32_3U,
40030 +
40031 +/* Direct 12 bit. */
40032 + BFD_RELOC_390_12,
40033 +
40034 +/* 12 bit GOT offset. */
40035 + BFD_RELOC_390_GOT12,
40036 +
40037 +/* 32 bit PC relative PLT address. */
40038 + BFD_RELOC_390_PLT32,
40039 +
40040 +/* Copy symbol at runtime. */
40041 + BFD_RELOC_390_COPY,
40042 +
40043 +/* Create GOT entry. */
40044 + BFD_RELOC_390_GLOB_DAT,
40045 +
40046 +/* Create PLT entry. */
40047 + BFD_RELOC_390_JMP_SLOT,
40048 +
40049 +/* Adjust by program base. */
40050 + BFD_RELOC_390_RELATIVE,
40051 +
40052 +/* 32 bit PC relative offset to GOT. */
40053 + BFD_RELOC_390_GOTPC,
40054 +
40055 +/* 16 bit GOT offset. */
40056 + BFD_RELOC_390_GOT16,
40057 +
40058 +/* PC relative 16 bit shifted by 1. */
40059 + BFD_RELOC_390_PC16DBL,
40060 +
40061 +/* 16 bit PC rel. PLT shifted by 1. */
40062 + BFD_RELOC_390_PLT16DBL,
40063 +
40064 +/* PC relative 32 bit shifted by 1. */
40065 + BFD_RELOC_390_PC32DBL,
40066 +
40067 +/* 32 bit PC rel. PLT shifted by 1. */
40068 + BFD_RELOC_390_PLT32DBL,
40069 +
40070 +/* 32 bit PC rel. GOT shifted by 1. */
40071 + BFD_RELOC_390_GOTPCDBL,
40072 +
40073 +/* 64 bit GOT offset. */
40074 + BFD_RELOC_390_GOT64,
40075 +
40076 +/* 64 bit PC relative PLT address. */
40077 + BFD_RELOC_390_PLT64,
40078 +
40079 +/* 32 bit rel. offset to GOT entry. */
40080 + BFD_RELOC_390_GOTENT,
40081 +
40082 +/* 64 bit offset to GOT. */
40083 + BFD_RELOC_390_GOTOFF64,
40084 +
40085 +/* 12-bit offset to symbol-entry within GOT, with PLT handling. */
40086 + BFD_RELOC_390_GOTPLT12,
40087 +
40088 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
40089 + BFD_RELOC_390_GOTPLT16,
40090 +
40091 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
40092 + BFD_RELOC_390_GOTPLT32,
40093 +
40094 +/* 64-bit offset to symbol-entry within GOT, with PLT handling. */
40095 + BFD_RELOC_390_GOTPLT64,
40096 +
40097 +/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling. */
40098 + BFD_RELOC_390_GOTPLTENT,
40099 +
40100 +/* 16-bit rel. offset from the GOT to a PLT entry. */
40101 + BFD_RELOC_390_PLTOFF16,
40102 +
40103 +/* 32-bit rel. offset from the GOT to a PLT entry. */
40104 + BFD_RELOC_390_PLTOFF32,
40105 +
40106 +/* 64-bit rel. offset from the GOT to a PLT entry. */
40107 + BFD_RELOC_390_PLTOFF64,
40108 +
40109 +/* s390 tls relocations. */
40110 + BFD_RELOC_390_TLS_LOAD,
40111 + BFD_RELOC_390_TLS_GDCALL,
40112 + BFD_RELOC_390_TLS_LDCALL,
40113 + BFD_RELOC_390_TLS_GD32,
40114 + BFD_RELOC_390_TLS_GD64,
40115 + BFD_RELOC_390_TLS_GOTIE12,
40116 + BFD_RELOC_390_TLS_GOTIE32,
40117 + BFD_RELOC_390_TLS_GOTIE64,
40118 + BFD_RELOC_390_TLS_LDM32,
40119 + BFD_RELOC_390_TLS_LDM64,
40120 + BFD_RELOC_390_TLS_IE32,
40121 + BFD_RELOC_390_TLS_IE64,
40122 + BFD_RELOC_390_TLS_IEENT,
40123 + BFD_RELOC_390_TLS_LE32,
40124 + BFD_RELOC_390_TLS_LE64,
40125 + BFD_RELOC_390_TLS_LDO32,
40126 + BFD_RELOC_390_TLS_LDO64,
40127 + BFD_RELOC_390_TLS_DTPMOD,
40128 + BFD_RELOC_390_TLS_DTPOFF,
40129 + BFD_RELOC_390_TLS_TPOFF,
40130 +
40131 +/* Long displacement extension. */
40132 + BFD_RELOC_390_20,
40133 + BFD_RELOC_390_GOT20,
40134 + BFD_RELOC_390_GOTPLT20,
40135 + BFD_RELOC_390_TLS_GOTIE20,
40136 +
40137 +/* Score relocations */
40138 + BFD_RELOC_SCORE_DUMMY1,
40139 +
40140 +/* Low 16 bit for load/store */
40141 + BFD_RELOC_SCORE_GPREL15,
40142 +
40143 +/* This is a 24-bit reloc with the right 1 bit assumed to be 0 */
40144 + BFD_RELOC_SCORE_DUMMY2,
40145 + BFD_RELOC_SCORE_JMP,
40146 +
40147 +/* This is a 19-bit reloc with the right 1 bit assumed to be 0 */
40148 + BFD_RELOC_SCORE_BRANCH,
40149 +
40150 +/* This is a 11-bit reloc with the right 1 bit assumed to be 0 */
40151 + BFD_RELOC_SCORE16_JMP,
40152 +
40153 +/* This is a 8-bit reloc with the right 1 bit assumed to be 0 */
40154 + BFD_RELOC_SCORE16_BRANCH,
40155 +
40156 +/* Undocumented Score relocs */
40157 + BFD_RELOC_SCORE_GOT15,
40158 + BFD_RELOC_SCORE_GOT_LO16,
40159 + BFD_RELOC_SCORE_CALL15,
40160 + BFD_RELOC_SCORE_DUMMY_HI16,
40161 +
40162 +/* Scenix IP2K - 9-bit register number / data address */
40163 + BFD_RELOC_IP2K_FR9,
40164 +
40165 +/* Scenix IP2K - 4-bit register/data bank number */
40166 + BFD_RELOC_IP2K_BANK,
40167 +
40168 +/* Scenix IP2K - low 13 bits of instruction word address */
40169 + BFD_RELOC_IP2K_ADDR16CJP,
40170 +
40171 +/* Scenix IP2K - high 3 bits of instruction word address */
40172 + BFD_RELOC_IP2K_PAGE3,
40173 +
40174 +/* Scenix IP2K - ext/low/high 8 bits of data address */
40175 + BFD_RELOC_IP2K_LO8DATA,
40176 + BFD_RELOC_IP2K_HI8DATA,
40177 + BFD_RELOC_IP2K_EX8DATA,
40178 +
40179 +/* Scenix IP2K - low/high 8 bits of instruction word address */
40180 + BFD_RELOC_IP2K_LO8INSN,
40181 + BFD_RELOC_IP2K_HI8INSN,
40182 +
40183 +/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0 */
40184 + BFD_RELOC_IP2K_PC_SKIP,
40185 +
40186 +/* Scenix IP2K - 16 bit word address in text section. */
40187 + BFD_RELOC_IP2K_TEXT,
40188 +
40189 +/* Scenix IP2K - 7-bit sp or dp offset */
40190 + BFD_RELOC_IP2K_FR_OFFSET,
40191 +
40192 +/* Scenix VPE4K coprocessor - data/insn-space addressing */
40193 + BFD_RELOC_VPE4KMATH_DATA,
40194 + BFD_RELOC_VPE4KMATH_INSN,
40195 +
40196 +/* These two relocations are used by the linker to determine which of
40197 +the entries in a C++ virtual function table are actually used. When
40198 +the --gc-sections option is given, the linker will zero out the entries
40199 +that are not used, so that the code for those functions need not be
40200 +included in the output.
40201 +
40202 +VTABLE_INHERIT is a zero-space relocation used to describe to the
40203 +linker the inheritance tree of a C++ virtual function table. The
40204 +relocation's symbol should be the parent class' vtable, and the
40205 +relocation should be located at the child vtable.
40206 +
40207 +VTABLE_ENTRY is a zero-space relocation that describes the use of a
40208 +virtual function table entry. The reloc's symbol should refer to the
40209 +table of the class mentioned in the code. Off of that base, an offset
40210 +describes the entry that is being used. For Rela hosts, this offset
40211 +is stored in the reloc's addend. For Rel hosts, we are forced to put
40212 +this offset in the reloc's section offset. */
40213 + BFD_RELOC_VTABLE_INHERIT,
40214 + BFD_RELOC_VTABLE_ENTRY,
40215 +
40216 +/* Intel IA64 Relocations. */
40217 + BFD_RELOC_IA64_IMM14,
40218 + BFD_RELOC_IA64_IMM22,
40219 + BFD_RELOC_IA64_IMM64,
40220 + BFD_RELOC_IA64_DIR32MSB,
40221 + BFD_RELOC_IA64_DIR32LSB,
40222 + BFD_RELOC_IA64_DIR64MSB,
40223 + BFD_RELOC_IA64_DIR64LSB,
40224 + BFD_RELOC_IA64_GPREL22,
40225 + BFD_RELOC_IA64_GPREL64I,
40226 + BFD_RELOC_IA64_GPREL32MSB,
40227 + BFD_RELOC_IA64_GPREL32LSB,
40228 + BFD_RELOC_IA64_GPREL64MSB,
40229 + BFD_RELOC_IA64_GPREL64LSB,
40230 + BFD_RELOC_IA64_LTOFF22,
40231 + BFD_RELOC_IA64_LTOFF64I,
40232 + BFD_RELOC_IA64_PLTOFF22,
40233 + BFD_RELOC_IA64_PLTOFF64I,
40234 + BFD_RELOC_IA64_PLTOFF64MSB,
40235 + BFD_RELOC_IA64_PLTOFF64LSB,
40236 + BFD_RELOC_IA64_FPTR64I,
40237 + BFD_RELOC_IA64_FPTR32MSB,
40238 + BFD_RELOC_IA64_FPTR32LSB,
40239 + BFD_RELOC_IA64_FPTR64MSB,
40240 + BFD_RELOC_IA64_FPTR64LSB,
40241 + BFD_RELOC_IA64_PCREL21B,
40242 + BFD_RELOC_IA64_PCREL21BI,
40243 + BFD_RELOC_IA64_PCREL21M,
40244 + BFD_RELOC_IA64_PCREL21F,
40245 + BFD_RELOC_IA64_PCREL22,
40246 + BFD_RELOC_IA64_PCREL60B,
40247 + BFD_RELOC_IA64_PCREL64I,
40248 + BFD_RELOC_IA64_PCREL32MSB,
40249 + BFD_RELOC_IA64_PCREL32LSB,
40250 + BFD_RELOC_IA64_PCREL64MSB,
40251 + BFD_RELOC_IA64_PCREL64LSB,
40252 + BFD_RELOC_IA64_LTOFF_FPTR22,
40253 + BFD_RELOC_IA64_LTOFF_FPTR64I,
40254 + BFD_RELOC_IA64_LTOFF_FPTR32MSB,
40255 + BFD_RELOC_IA64_LTOFF_FPTR32LSB,
40256 + BFD_RELOC_IA64_LTOFF_FPTR64MSB,
40257 + BFD_RELOC_IA64_LTOFF_FPTR64LSB,
40258 + BFD_RELOC_IA64_SEGREL32MSB,
40259 + BFD_RELOC_IA64_SEGREL32LSB,
40260 + BFD_RELOC_IA64_SEGREL64MSB,
40261 + BFD_RELOC_IA64_SEGREL64LSB,
40262 + BFD_RELOC_IA64_SECREL32MSB,
40263 + BFD_RELOC_IA64_SECREL32LSB,
40264 + BFD_RELOC_IA64_SECREL64MSB,
40265 + BFD_RELOC_IA64_SECREL64LSB,
40266 + BFD_RELOC_IA64_REL32MSB,
40267 + BFD_RELOC_IA64_REL32LSB,
40268 + BFD_RELOC_IA64_REL64MSB,
40269 + BFD_RELOC_IA64_REL64LSB,
40270 + BFD_RELOC_IA64_LTV32MSB,
40271 + BFD_RELOC_IA64_LTV32LSB,
40272 + BFD_RELOC_IA64_LTV64MSB,
40273 + BFD_RELOC_IA64_LTV64LSB,
40274 + BFD_RELOC_IA64_IPLTMSB,
40275 + BFD_RELOC_IA64_IPLTLSB,
40276 + BFD_RELOC_IA64_COPY,
40277 + BFD_RELOC_IA64_LTOFF22X,
40278 + BFD_RELOC_IA64_LDXMOV,
40279 + BFD_RELOC_IA64_TPREL14,
40280 + BFD_RELOC_IA64_TPREL22,
40281 + BFD_RELOC_IA64_TPREL64I,
40282 + BFD_RELOC_IA64_TPREL64MSB,
40283 + BFD_RELOC_IA64_TPREL64LSB,
40284 + BFD_RELOC_IA64_LTOFF_TPREL22,
40285 + BFD_RELOC_IA64_DTPMOD64MSB,
40286 + BFD_RELOC_IA64_DTPMOD64LSB,
40287 + BFD_RELOC_IA64_LTOFF_DTPMOD22,
40288 + BFD_RELOC_IA64_DTPREL14,
40289 + BFD_RELOC_IA64_DTPREL22,
40290 + BFD_RELOC_IA64_DTPREL64I,
40291 + BFD_RELOC_IA64_DTPREL32MSB,
40292 + BFD_RELOC_IA64_DTPREL32LSB,
40293 + BFD_RELOC_IA64_DTPREL64MSB,
40294 + BFD_RELOC_IA64_DTPREL64LSB,
40295 + BFD_RELOC_IA64_LTOFF_DTPREL22,
40296 +
40297 +/* Motorola 68HC11 reloc.
40298 +This is the 8 bit high part of an absolute address. */
40299 + BFD_RELOC_M68HC11_HI8,
40300 +
40301 +/* Motorola 68HC11 reloc.
40302 +This is the 8 bit low part of an absolute address. */
40303 + BFD_RELOC_M68HC11_LO8,
40304 +
40305 +/* Motorola 68HC11 reloc.
40306 +This is the 3 bit of a value. */
40307 + BFD_RELOC_M68HC11_3B,
40308 +
40309 +/* Motorola 68HC11 reloc.
40310 +This reloc marks the beginning of a jump/call instruction.
40311 +It is used for linker relaxation to correctly identify beginning
40312 +of instruction and change some branches to use PC-relative
40313 +addressing mode. */
40314 + BFD_RELOC_M68HC11_RL_JUMP,
40315 +
40316 +/* Motorola 68HC11 reloc.
40317 +This reloc marks a group of several instructions that gcc generates
40318 +and for which the linker relaxation pass can modify and/or remove
40319 +some of them. */
40320 + BFD_RELOC_M68HC11_RL_GROUP,
40321 +
40322 +/* Motorola 68HC11 reloc.
40323 +This is the 16-bit lower part of an address. It is used for 'call'
40324 +instruction to specify the symbol address without any special
40325 +transformation (due to memory bank window). */
40326 + BFD_RELOC_M68HC11_LO16,
40327 +
40328 +/* Motorola 68HC11 reloc.
40329 +This is a 8-bit reloc that specifies the page number of an address.
40330 +It is used by 'call' instruction to specify the page number of
40331 +the symbol. */
40332 + BFD_RELOC_M68HC11_PAGE,
40333 +
40334 +/* Motorola 68HC11 reloc.
40335 +This is a 24-bit reloc that represents the address with a 16-bit
40336 +value and a 8-bit page number. The symbol address is transformed
40337 +to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
40338 + BFD_RELOC_M68HC11_24,
40339 +
40340 +/* Motorola 68HC12 reloc.
40341 +This is the 5 bits of a value. */
40342 + BFD_RELOC_M68HC12_5B,
40343 +
40344 +/* NS CR16C Relocations. */
40345 + BFD_RELOC_16C_NUM08,
40346 + BFD_RELOC_16C_NUM08_C,
40347 + BFD_RELOC_16C_NUM16,
40348 + BFD_RELOC_16C_NUM16_C,
40349 + BFD_RELOC_16C_NUM32,
40350 + BFD_RELOC_16C_NUM32_C,
40351 + BFD_RELOC_16C_DISP04,
40352 + BFD_RELOC_16C_DISP04_C,
40353 + BFD_RELOC_16C_DISP08,
40354 + BFD_RELOC_16C_DISP08_C,
40355 + BFD_RELOC_16C_DISP16,
40356 + BFD_RELOC_16C_DISP16_C,
40357 + BFD_RELOC_16C_DISP24,
40358 + BFD_RELOC_16C_DISP24_C,
40359 + BFD_RELOC_16C_DISP24a,
40360 + BFD_RELOC_16C_DISP24a_C,
40361 + BFD_RELOC_16C_REG04,
40362 + BFD_RELOC_16C_REG04_C,
40363 + BFD_RELOC_16C_REG04a,
40364 + BFD_RELOC_16C_REG04a_C,
40365 + BFD_RELOC_16C_REG14,
40366 + BFD_RELOC_16C_REG14_C,
40367 + BFD_RELOC_16C_REG16,
40368 + BFD_RELOC_16C_REG16_C,
40369 + BFD_RELOC_16C_REG20,
40370 + BFD_RELOC_16C_REG20_C,
40371 + BFD_RELOC_16C_ABS20,
40372 + BFD_RELOC_16C_ABS20_C,
40373 + BFD_RELOC_16C_ABS24,
40374 + BFD_RELOC_16C_ABS24_C,
40375 + BFD_RELOC_16C_IMM04,
40376 + BFD_RELOC_16C_IMM04_C,
40377 + BFD_RELOC_16C_IMM16,
40378 + BFD_RELOC_16C_IMM16_C,
40379 + BFD_RELOC_16C_IMM20,
40380 + BFD_RELOC_16C_IMM20_C,
40381 + BFD_RELOC_16C_IMM24,
40382 + BFD_RELOC_16C_IMM24_C,
40383 + BFD_RELOC_16C_IMM32,
40384 + BFD_RELOC_16C_IMM32_C,
40385 +
40386 +/* NS CR16 Relocations. */
40387 + BFD_RELOC_CR16_NUM8,
40388 + BFD_RELOC_CR16_NUM16,
40389 + BFD_RELOC_CR16_NUM32,
40390 + BFD_RELOC_CR16_NUM32a,
40391 + BFD_RELOC_CR16_REGREL0,
40392 + BFD_RELOC_CR16_REGREL4,
40393 + BFD_RELOC_CR16_REGREL4a,
40394 + BFD_RELOC_CR16_REGREL14,
40395 + BFD_RELOC_CR16_REGREL14a,
40396 + BFD_RELOC_CR16_REGREL16,
40397 + BFD_RELOC_CR16_REGREL20,
40398 + BFD_RELOC_CR16_REGREL20a,
40399 + BFD_RELOC_CR16_ABS20,
40400 + BFD_RELOC_CR16_ABS24,
40401 + BFD_RELOC_CR16_IMM4,
40402 + BFD_RELOC_CR16_IMM8,
40403 + BFD_RELOC_CR16_IMM16,
40404 + BFD_RELOC_CR16_IMM20,
40405 + BFD_RELOC_CR16_IMM24,
40406 + BFD_RELOC_CR16_IMM32,
40407 + BFD_RELOC_CR16_IMM32a,
40408 + BFD_RELOC_CR16_DISP4,
40409 + BFD_RELOC_CR16_DISP8,
40410 + BFD_RELOC_CR16_DISP16,
40411 + BFD_RELOC_CR16_DISP20,
40412 + BFD_RELOC_CR16_DISP24,
40413 + BFD_RELOC_CR16_DISP24a,
40414 +
40415 +/* NS CRX Relocations. */
40416 + BFD_RELOC_CRX_REL4,
40417 + BFD_RELOC_CRX_REL8,
40418 + BFD_RELOC_CRX_REL8_CMP,
40419 + BFD_RELOC_CRX_REL16,
40420 + BFD_RELOC_CRX_REL24,
40421 + BFD_RELOC_CRX_REL32,
40422 + BFD_RELOC_CRX_REGREL12,
40423 + BFD_RELOC_CRX_REGREL22,
40424 + BFD_RELOC_CRX_REGREL28,
40425 + BFD_RELOC_CRX_REGREL32,
40426 + BFD_RELOC_CRX_ABS16,
40427 + BFD_RELOC_CRX_ABS32,
40428 + BFD_RELOC_CRX_NUM8,
40429 + BFD_RELOC_CRX_NUM16,
40430 + BFD_RELOC_CRX_NUM32,
40431 + BFD_RELOC_CRX_IMM16,
40432 + BFD_RELOC_CRX_IMM32,
40433 + BFD_RELOC_CRX_SWITCH8,
40434 + BFD_RELOC_CRX_SWITCH16,
40435 + BFD_RELOC_CRX_SWITCH32,
40436 +
40437 +/* These relocs are only used within the CRIS assembler. They are not
40438 +(at present) written to any object files. */
40439 + BFD_RELOC_CRIS_BDISP8,
40440 + BFD_RELOC_CRIS_UNSIGNED_5,
40441 + BFD_RELOC_CRIS_SIGNED_6,
40442 + BFD_RELOC_CRIS_UNSIGNED_6,
40443 + BFD_RELOC_CRIS_SIGNED_8,
40444 + BFD_RELOC_CRIS_UNSIGNED_8,
40445 + BFD_RELOC_CRIS_SIGNED_16,
40446 + BFD_RELOC_CRIS_UNSIGNED_16,
40447 + BFD_RELOC_CRIS_LAPCQ_OFFSET,
40448 + BFD_RELOC_CRIS_UNSIGNED_4,
40449 +
40450 +/* Relocs used in ELF shared libraries for CRIS. */
40451 + BFD_RELOC_CRIS_COPY,
40452 + BFD_RELOC_CRIS_GLOB_DAT,
40453 + BFD_RELOC_CRIS_JUMP_SLOT,
40454 + BFD_RELOC_CRIS_RELATIVE,
40455 +
40456 +/* 32-bit offset to symbol-entry within GOT. */
40457 + BFD_RELOC_CRIS_32_GOT,
40458 +
40459 +/* 16-bit offset to symbol-entry within GOT. */
40460 + BFD_RELOC_CRIS_16_GOT,
40461 +
40462 +/* 32-bit offset to symbol-entry within GOT, with PLT handling. */
40463 + BFD_RELOC_CRIS_32_GOTPLT,
40464 +
40465 +/* 16-bit offset to symbol-entry within GOT, with PLT handling. */
40466 + BFD_RELOC_CRIS_16_GOTPLT,
40467 +
40468 +/* 32-bit offset to symbol, relative to GOT. */
40469 + BFD_RELOC_CRIS_32_GOTREL,
40470 +
40471 +/* 32-bit offset to symbol with PLT entry, relative to GOT. */
40472 + BFD_RELOC_CRIS_32_PLT_GOTREL,
40473 +
40474 +/* 32-bit offset to symbol with PLT entry, relative to this relocation. */
40475 + BFD_RELOC_CRIS_32_PLT_PCREL,
40476 +
40477 +/* Intel i860 Relocations. */
40478 + BFD_RELOC_860_COPY,
40479 + BFD_RELOC_860_GLOB_DAT,
40480 + BFD_RELOC_860_JUMP_SLOT,
40481 + BFD_RELOC_860_RELATIVE,
40482 + BFD_RELOC_860_PC26,
40483 + BFD_RELOC_860_PLT26,
40484 + BFD_RELOC_860_PC16,
40485 + BFD_RELOC_860_LOW0,
40486 + BFD_RELOC_860_SPLIT0,
40487 + BFD_RELOC_860_LOW1,
40488 + BFD_RELOC_860_SPLIT1,
40489 + BFD_RELOC_860_LOW2,
40490 + BFD_RELOC_860_SPLIT2,
40491 + BFD_RELOC_860_LOW3,
40492 + BFD_RELOC_860_LOGOT0,
40493 + BFD_RELOC_860_SPGOT0,
40494 + BFD_RELOC_860_LOGOT1,
40495 + BFD_RELOC_860_SPGOT1,
40496 + BFD_RELOC_860_LOGOTOFF0,
40497 + BFD_RELOC_860_SPGOTOFF0,
40498 + BFD_RELOC_860_LOGOTOFF1,
40499 + BFD_RELOC_860_SPGOTOFF1,
40500 + BFD_RELOC_860_LOGOTOFF2,
40501 + BFD_RELOC_860_LOGOTOFF3,
40502 + BFD_RELOC_860_LOPC,
40503 + BFD_RELOC_860_HIGHADJ,
40504 + BFD_RELOC_860_HAGOT,
40505 + BFD_RELOC_860_HAGOTOFF,
40506 + BFD_RELOC_860_HAPC,
40507 + BFD_RELOC_860_HIGH,
40508 + BFD_RELOC_860_HIGOT,
40509 + BFD_RELOC_860_HIGOTOFF,
40510 +
40511 +/* OpenRISC Relocations. */
40512 + BFD_RELOC_OPENRISC_ABS_26,
40513 + BFD_RELOC_OPENRISC_REL_26,
40514 +
40515 +/* H8 elf Relocations. */
40516 + BFD_RELOC_H8_DIR16A8,
40517 + BFD_RELOC_H8_DIR16R8,
40518 + BFD_RELOC_H8_DIR24A8,
40519 + BFD_RELOC_H8_DIR24R8,
40520 + BFD_RELOC_H8_DIR32A16,
40521 +
40522 +/* Sony Xstormy16 Relocations. */
40523 + BFD_RELOC_XSTORMY16_REL_12,
40524 + BFD_RELOC_XSTORMY16_12,
40525 + BFD_RELOC_XSTORMY16_24,
40526 + BFD_RELOC_XSTORMY16_FPTR16,
40527 +
40528 +/* Self-describing complex relocations. */
40529 + BFD_RELOC_RELC,
40530 +
40531 +
40532 +/* Infineon Relocations. */
40533 + BFD_RELOC_XC16X_PAG,
40534 + BFD_RELOC_XC16X_POF,
40535 + BFD_RELOC_XC16X_SEG,
40536 + BFD_RELOC_XC16X_SOF,
40537 +
40538 +/* Relocations used by VAX ELF. */
40539 + BFD_RELOC_VAX_GLOB_DAT,
40540 + BFD_RELOC_VAX_JMP_SLOT,
40541 + BFD_RELOC_VAX_RELATIVE,
40542 +
40543 +/* Morpho MT - 16 bit immediate relocation. */
40544 + BFD_RELOC_MT_PC16,
40545 +
40546 +/* Morpho MT - Hi 16 bits of an address. */
40547 + BFD_RELOC_MT_HI16,
40548 +
40549 +/* Morpho MT - Low 16 bits of an address. */
40550 + BFD_RELOC_MT_LO16,
40551 +
40552 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40553 + BFD_RELOC_MT_GNU_VTINHERIT,
40554 +
40555 +/* Morpho MT - Used to tell the linker which vtable entries are used. */
40556 + BFD_RELOC_MT_GNU_VTENTRY,
40557 +
40558 +/* Morpho MT - 8 bit immediate relocation. */
40559 + BFD_RELOC_MT_PCINSN8,
40560 +
40561 +/* msp430 specific relocation codes */
40562 + BFD_RELOC_MSP430_10_PCREL,
40563 + BFD_RELOC_MSP430_16_PCREL,
40564 + BFD_RELOC_MSP430_16,
40565 + BFD_RELOC_MSP430_16_PCREL_BYTE,
40566 + BFD_RELOC_MSP430_16_BYTE,
40567 + BFD_RELOC_MSP430_2X_PCREL,
40568 + BFD_RELOC_MSP430_RL_PCREL,
40569 +
40570 +/* IQ2000 Relocations. */
40571 + BFD_RELOC_IQ2000_OFFSET_16,
40572 + BFD_RELOC_IQ2000_OFFSET_21,
40573 + BFD_RELOC_IQ2000_UHI16,
40574 +
40575 +/* Special Xtensa relocation used only by PLT entries in ELF shared
40576 +objects to indicate that the runtime linker should set the value
40577 +to one of its own internal functions or data structures. */
40578 + BFD_RELOC_XTENSA_RTLD,
40579 +
40580 +/* Xtensa relocations for ELF shared objects. */
40581 + BFD_RELOC_XTENSA_GLOB_DAT,
40582 + BFD_RELOC_XTENSA_JMP_SLOT,
40583 + BFD_RELOC_XTENSA_RELATIVE,
40584 +
40585 +/* Xtensa relocation used in ELF object files for symbols that may require
40586 +PLT entries. Otherwise, this is just a generic 32-bit relocation. */
40587 + BFD_RELOC_XTENSA_PLT,
40588 +
40589 +/* Xtensa relocations to mark the difference of two local symbols.
40590 +These are only needed to support linker relaxation and can be ignored
40591 +when not relaxing. The field is set to the value of the difference
40592 +assuming no relaxation. The relocation encodes the position of the
40593 +first symbol so the linker can determine whether to adjust the field
40594 +value. */
40595 + BFD_RELOC_XTENSA_DIFF8,
40596 + BFD_RELOC_XTENSA_DIFF16,
40597 + BFD_RELOC_XTENSA_DIFF32,
40598 +
40599 +/* Generic Xtensa relocations for instruction operands. Only the slot
40600 +number is encoded in the relocation. The relocation applies to the
40601 +last PC-relative immediate operand, or if there are no PC-relative
40602 +immediates, to the last immediate operand. */
40603 + BFD_RELOC_XTENSA_SLOT0_OP,
40604 + BFD_RELOC_XTENSA_SLOT1_OP,
40605 + BFD_RELOC_XTENSA_SLOT2_OP,
40606 + BFD_RELOC_XTENSA_SLOT3_OP,
40607 + BFD_RELOC_XTENSA_SLOT4_OP,
40608 + BFD_RELOC_XTENSA_SLOT5_OP,
40609 + BFD_RELOC_XTENSA_SLOT6_OP,
40610 + BFD_RELOC_XTENSA_SLOT7_OP,
40611 + BFD_RELOC_XTENSA_SLOT8_OP,
40612 + BFD_RELOC_XTENSA_SLOT9_OP,
40613 + BFD_RELOC_XTENSA_SLOT10_OP,
40614 + BFD_RELOC_XTENSA_SLOT11_OP,
40615 + BFD_RELOC_XTENSA_SLOT12_OP,
40616 + BFD_RELOC_XTENSA_SLOT13_OP,
40617 + BFD_RELOC_XTENSA_SLOT14_OP,
40618 +
40619 +/* Alternate Xtensa relocations. Only the slot is encoded in the
40620 +relocation. The meaning of these relocations is opcode-specific. */
40621 + BFD_RELOC_XTENSA_SLOT0_ALT,
40622 + BFD_RELOC_XTENSA_SLOT1_ALT,
40623 + BFD_RELOC_XTENSA_SLOT2_ALT,
40624 + BFD_RELOC_XTENSA_SLOT3_ALT,
40625 + BFD_RELOC_XTENSA_SLOT4_ALT,
40626 + BFD_RELOC_XTENSA_SLOT5_ALT,
40627 + BFD_RELOC_XTENSA_SLOT6_ALT,
40628 + BFD_RELOC_XTENSA_SLOT7_ALT,
40629 + BFD_RELOC_XTENSA_SLOT8_ALT,
40630 + BFD_RELOC_XTENSA_SLOT9_ALT,
40631 + BFD_RELOC_XTENSA_SLOT10_ALT,
40632 + BFD_RELOC_XTENSA_SLOT11_ALT,
40633 + BFD_RELOC_XTENSA_SLOT12_ALT,
40634 + BFD_RELOC_XTENSA_SLOT13_ALT,
40635 + BFD_RELOC_XTENSA_SLOT14_ALT,
40636 +
40637 +/* Xtensa relocations for backward compatibility. These have all been
40638 +replaced by BFD_RELOC_XTENSA_SLOT0_OP. */
40639 + BFD_RELOC_XTENSA_OP0,
40640 + BFD_RELOC_XTENSA_OP1,
40641 + BFD_RELOC_XTENSA_OP2,
40642 +
40643 +/* Xtensa relocation to mark that the assembler expanded the
40644 +instructions from an original target. The expansion size is
40645 +encoded in the reloc size. */
40646 + BFD_RELOC_XTENSA_ASM_EXPAND,
40647 +
40648 +/* Xtensa relocation to mark that the linker should simplify
40649 +assembler-expanded instructions. This is commonly used
40650 +internally by the linker after analysis of a
40651 +BFD_RELOC_XTENSA_ASM_EXPAND. */
40652 + BFD_RELOC_XTENSA_ASM_SIMPLIFY,
40653 +
40654 +/* 8 bit signed offset in (ix+d) or (iy+d). */
40655 + BFD_RELOC_Z80_DISP8,
40656 +
40657 +/* DJNZ offset. */
40658 + BFD_RELOC_Z8K_DISP7,
40659 +
40660 +/* CALR offset. */
40661 + BFD_RELOC_Z8K_CALLR,
40662 +
40663 +/* 4 bit value. */
40664 + BFD_RELOC_Z8K_IMM4L,
40665 + BFD_RELOC_UNUSED };
40666 +typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
40667 +reloc_howto_type *bfd_reloc_type_lookup
40668 + (bfd *abfd, bfd_reloc_code_real_type code);
40669 +reloc_howto_type *bfd_reloc_name_lookup
40670 + (bfd *abfd, const char *reloc_name);
40671 +
40672 +const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
40673 +
40674 +/* Extracted from syms.c. */
40675 +
40676 +typedef struct bfd_symbol
40677 +{
40678 + /* A pointer to the BFD which owns the symbol. This information
40679 + is necessary so that a back end can work out what additional
40680 + information (invisible to the application writer) is carried
40681 + with the symbol.
40682 +
40683 + This field is *almost* redundant, since you can use section->owner
40684 + instead, except that some symbols point to the global sections
40685 + bfd_{abs,com,und}_section. This could be fixed by making
40686 + these globals be per-bfd (or per-target-flavor). FIXME. */
40687 + struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field. */
40688 +
40689 + /* The text of the symbol. The name is left alone, and not copied; the
40690 + application may not alter it. */
40691 + const char *name;
40692 +
40693 + /* The value of the symbol. This really should be a union of a
40694 + numeric value with a pointer, since some flags indicate that
40695 + a pointer to another symbol is stored here. */
40696 + symvalue value;
40697 +
40698 + /* Attributes of a symbol. */
40699 +#define BSF_NO_FLAGS 0x00
40700 +
40701 + /* The symbol has local scope; <<static>> in <<C>>. The value
40702 + is the offset into the section of the data. */
40703 +#define BSF_LOCAL 0x01
40704 +
40705 + /* The symbol has global scope; initialized data in <<C>>. The
40706 + value is the offset into the section of the data. */
40707 +#define BSF_GLOBAL 0x02
40708 +
40709 + /* The symbol has global scope and is exported. The value is
40710 + the offset into the section of the data. */
40711 +#define BSF_EXPORT BSF_GLOBAL /* No real difference. */
40712 +
40713 + /* A normal C symbol would be one of:
40714 + <<BSF_LOCAL>>, <<BSF_FORT_COMM>>, <<BSF_UNDEFINED>> or
40715 + <<BSF_GLOBAL>>. */
40716 +
40717 + /* The symbol is a debugging record. The value has an arbitrary
40718 + meaning, unless BSF_DEBUGGING_RELOC is also set. */
40719 +#define BSF_DEBUGGING 0x08
40720 +
40721 + /* The symbol denotes a function entry point. Used in ELF,
40722 + perhaps others someday. */
40723 +#define BSF_FUNCTION 0x10
40724 +
40725 + /* Used by the linker. */
40726 +#define BSF_KEEP 0x20
40727 +#define BSF_KEEP_G 0x40
40728 +
40729 + /* A weak global symbol, overridable without warnings by
40730 + a regular global symbol of the same name. */
40731 +#define BSF_WEAK 0x80
40732 +
40733 + /* This symbol was created to point to a section, e.g. ELF's
40734 + STT_SECTION symbols. */
40735 +#define BSF_SECTION_SYM 0x100
40736 +
40737 + /* The symbol used to be a common symbol, but now it is
40738 + allocated. */
40739 +#define BSF_OLD_COMMON 0x200
40740 +
40741 + /* The default value for common data. */
40742 +#define BFD_FORT_COMM_DEFAULT_VALUE 0
40743 +
40744 + /* In some files the type of a symbol sometimes alters its
40745 + location in an output file - ie in coff a <<ISFCN>> symbol
40746 + which is also <<C_EXT>> symbol appears where it was
40747 + declared and not at the end of a section. This bit is set
40748 + by the target BFD part to convey this information. */
40749 +#define BSF_NOT_AT_END 0x400
40750 +
40751 + /* Signal that the symbol is the label of constructor section. */
40752 +#define BSF_CONSTRUCTOR 0x800
40753 +
40754 + /* Signal that the symbol is a warning symbol. The name is a
40755 + warning. The name of the next symbol is the one to warn about;
40756 + if a reference is made to a symbol with the same name as the next
40757 + symbol, a warning is issued by the linker. */
40758 +#define BSF_WARNING 0x1000
40759 +
40760 + /* Signal that the symbol is indirect. This symbol is an indirect
40761 + pointer to the symbol with the same name as the next symbol. */
40762 +#define BSF_INDIRECT 0x2000
40763 +
40764 + /* BSF_FILE marks symbols that contain a file name. This is used
40765 + for ELF STT_FILE symbols. */
40766 +#define BSF_FILE 0x4000
40767 +
40768 + /* Symbol is from dynamic linking information. */
40769 +#define BSF_DYNAMIC 0x8000
40770 +
40771 + /* The symbol denotes a data object. Used in ELF, and perhaps
40772 + others someday. */
40773 +#define BSF_OBJECT 0x10000
40774 +
40775 + /* This symbol is a debugging symbol. The value is the offset
40776 + into the section of the data. BSF_DEBUGGING should be set
40777 + as well. */
40778 +#define BSF_DEBUGGING_RELOC 0x20000
40779 +
40780 + /* This symbol is thread local. Used in ELF. */
40781 +#define BSF_THREAD_LOCAL 0x40000
40782 +
40783 + /* This symbol represents a complex relocation expression,
40784 + with the expression tree serialized in the symbol name. */
40785 +#define BSF_RELC 0x80000
40786 +
40787 + /* This symbol represents a signed complex relocation expression,
40788 + with the expression tree serialized in the symbol name. */
40789 +#define BSF_SRELC 0x100000
40790 +
40791 + flagword flags;
40792 +
40793 + /* A pointer to the section to which this symbol is
40794 + relative. This will always be non NULL, there are special
40795 + sections for undefined and absolute symbols. */
40796 + struct bfd_section *section;
40797 +
40798 + /* Back end special data. */
40799 + union
40800 + {
40801 + void *p;
40802 + bfd_vma i;
40803 + }
40804 + udata;
40805 +}
40806 +asymbol;
40807 +
40808 +#define bfd_get_symtab_upper_bound(abfd) \
40809 + BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
40810 +
40811 +bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
40812 +
40813 +bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
40814 +
40815 +#define bfd_is_local_label_name(abfd, name) \
40816 + BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
40817 +
40818 +bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
40819 +
40820 +#define bfd_is_target_special_symbol(abfd, sym) \
40821 + BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
40822 +
40823 +#define bfd_canonicalize_symtab(abfd, location) \
40824 + BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
40825 +
40826 +bfd_boolean bfd_set_symtab
40827 + (bfd *abfd, asymbol **location, unsigned int count);
40828 +
40829 +void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
40830 +
40831 +#define bfd_make_empty_symbol(abfd) \
40832 + BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
40833 +
40834 +asymbol *_bfd_generic_make_empty_symbol (bfd *);
40835 +
40836 +#define bfd_make_debug_symbol(abfd,ptr,size) \
40837 + BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
40838 +
40839 +int bfd_decode_symclass (asymbol *symbol);
40840 +
40841 +bfd_boolean bfd_is_undefined_symclass (int symclass);
40842 +
40843 +void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
40844 +
40845 +bfd_boolean bfd_copy_private_symbol_data
40846 + (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
40847 +
40848 +#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
40849 + BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
40850 + (ibfd, isymbol, obfd, osymbol))
40851 +
40852 +/* Extracted from bfd.c. */
40853 +struct bfd
40854 +{
40855 + /* A unique identifier of the BFD */
40856 + unsigned int id;
40857 +
40858 + /* The filename the application opened the BFD with. */
40859 + const char *filename;
40860 +
40861 + /* A pointer to the target jump table. */
40862 + const struct bfd_target *xvec;
40863 +
40864 + /* The IOSTREAM, and corresponding IO vector that provide access
40865 + to the file backing the BFD. */
40866 + void *iostream;
40867 + const struct bfd_iovec *iovec;
40868 +
40869 + /* Is the file descriptor being cached? That is, can it be closed as
40870 + needed, and re-opened when accessed later? */
40871 + bfd_boolean cacheable;
40872 +
40873 + /* Marks whether there was a default target specified when the
40874 + BFD was opened. This is used to select which matching algorithm
40875 + to use to choose the back end. */
40876 + bfd_boolean target_defaulted;
40877 +
40878 + /* The caching routines use these to maintain a
40879 + least-recently-used list of BFDs. */
40880 + struct bfd *lru_prev, *lru_next;
40881 +
40882 + /* When a file is closed by the caching routines, BFD retains
40883 + state information on the file here... */
40884 + ufile_ptr where;
40885 +
40886 + /* ... and here: (``once'' means at least once). */
40887 + bfd_boolean opened_once;
40888 +
40889 + /* Set if we have a locally maintained mtime value, rather than
40890 + getting it from the file each time. */
40891 + bfd_boolean mtime_set;
40892 +
40893 + /* File modified time, if mtime_set is TRUE. */
40894 + long mtime;
40895 +
40896 + /* Reserved for an unimplemented file locking extension. */
40897 + int ifd;
40898 +
40899 + /* The format which belongs to the BFD. (object, core, etc.) */
40900 + bfd_format format;
40901 +
40902 + /* The direction with which the BFD was opened. */
40903 + enum bfd_direction
40904 + {
40905 + no_direction = 0,
40906 + read_direction = 1,
40907 + write_direction = 2,
40908 + both_direction = 3
40909 + }
40910 + direction;
40911 +
40912 + /* Format_specific flags. */
40913 + flagword flags;
40914 +
40915 + /* Currently my_archive is tested before adding origin to
40916 + anything. I believe that this can become always an add of
40917 + origin, with origin set to 0 for non archive files. */
40918 + ufile_ptr origin;
40919 +
40920 + /* Remember when output has begun, to stop strange things
40921 + from happening. */
40922 + bfd_boolean output_has_begun;
40923 +
40924 + /* A hash table for section names. */
40925 + struct bfd_hash_table section_htab;
40926 +
40927 + /* Pointer to linked list of sections. */
40928 + struct bfd_section *sections;
40929 +
40930 + /* The last section on the section list. */
40931 + struct bfd_section *section_last;
40932 +
40933 + /* The number of sections. */
40934 + unsigned int section_count;
40935 +
40936 + /* Stuff only useful for object files:
40937 + The start address. */
40938 + bfd_vma start_address;
40939 +
40940 + /* Used for input and output. */
40941 + unsigned int symcount;
40942 +
40943 + /* Symbol table for output BFD (with symcount entries). */
40944 + struct bfd_symbol **outsymbols;
40945 +
40946 + /* Used for slurped dynamic symbol tables. */
40947 + unsigned int dynsymcount;
40948 +
40949 + /* Pointer to structure which contains architecture information. */
40950 + const struct bfd_arch_info *arch_info;
40951 +
40952 + /* Flag set if symbols from this BFD should not be exported. */
40953 + bfd_boolean no_export;
40954 +
40955 + /* Stuff only useful for archives. */
40956 + void *arelt_data;
40957 + struct bfd *my_archive; /* The containing archive BFD. */
40958 + struct bfd *archive_next; /* The next BFD in the archive. */
40959 + struct bfd *archive_head; /* The first BFD in the archive. */
40960 + bfd_boolean has_armap;
40961 +
40962 + /* A chain of BFD structures involved in a link. */
40963 + struct bfd *link_next;
40964 +
40965 + /* A field used by _bfd_generic_link_add_archive_symbols. This will
40966 + be used only for archive elements. */
40967 + int archive_pass;
40968 +
40969 + /* Used by the back end to hold private data. */
40970 + union
40971 + {
40972 + struct aout_data_struct *aout_data;
40973 + struct artdata *aout_ar_data;
40974 + struct _oasys_data *oasys_obj_data;
40975 + struct _oasys_ar_data *oasys_ar_data;
40976 + struct coff_tdata *coff_obj_data;
40977 + struct pe_tdata *pe_obj_data;
40978 + struct xcoff_tdata *xcoff_obj_data;
40979 + struct ecoff_tdata *ecoff_obj_data;
40980 + struct ieee_data_struct *ieee_data;
40981 + struct ieee_ar_data_struct *ieee_ar_data;
40982 + struct srec_data_struct *srec_data;
40983 + struct ihex_data_struct *ihex_data;
40984 + struct tekhex_data_struct *tekhex_data;
40985 + struct elf_obj_tdata *elf_obj_data;
40986 + struct nlm_obj_tdata *nlm_obj_data;
40987 + struct bout_data_struct *bout_data;
40988 + struct mmo_data_struct *mmo_data;
40989 + struct sun_core_struct *sun_core_data;
40990 + struct sco5_core_struct *sco5_core_data;
40991 + struct trad_core_struct *trad_core_data;
40992 + struct som_data_struct *som_data;
40993 + struct hpux_core_struct *hpux_core_data;
40994 + struct hppabsd_core_struct *hppabsd_core_data;
40995 + struct sgi_core_struct *sgi_core_data;
40996 + struct lynx_core_struct *lynx_core_data;
40997 + struct osf_core_struct *osf_core_data;
40998 + struct cisco_core_struct *cisco_core_data;
40999 + struct versados_data_struct *versados_data;
41000 + struct netbsd_core_struct *netbsd_core_data;
41001 + struct mach_o_data_struct *mach_o_data;
41002 + struct mach_o_fat_data_struct *mach_o_fat_data;
41003 + struct bfd_pef_data_struct *pef_data;
41004 + struct bfd_pef_xlib_data_struct *pef_xlib_data;
41005 + struct bfd_sym_data_struct *sym_data;
41006 + void *any;
41007 + }
41008 + tdata;
41009 +
41010 + /* Used by the application to hold private data. */
41011 + void *usrdata;
41012 +
41013 + /* Where all the allocated stuff under this BFD goes. This is a
41014 + struct objalloc *, but we use void * to avoid requiring the inclusion
41015 + of objalloc.h. */
41016 + void *memory;
41017 +};
41018 +
41019 +typedef enum bfd_error
41020 +{
41021 + bfd_error_no_error = 0,
41022 + bfd_error_system_call,
41023 + bfd_error_invalid_target,
41024 + bfd_error_wrong_format,
41025 + bfd_error_wrong_object_format,
41026 + bfd_error_invalid_operation,
41027 + bfd_error_no_memory,
41028 + bfd_error_no_symbols,
41029 + bfd_error_no_armap,
41030 + bfd_error_no_more_archived_files,
41031 + bfd_error_malformed_archive,
41032 + bfd_error_file_not_recognized,
41033 + bfd_error_file_ambiguously_recognized,
41034 + bfd_error_no_contents,
41035 + bfd_error_nonrepresentable_section,
41036 + bfd_error_no_debug_section,
41037 + bfd_error_bad_value,
41038 + bfd_error_file_truncated,
41039 + bfd_error_file_too_big,
41040 + bfd_error_on_input,
41041 + bfd_error_invalid_error_code
41042 +}
41043 +bfd_error_type;
41044 +
41045 +bfd_error_type bfd_get_error (void);
41046 +
41047 +void bfd_set_error (bfd_error_type error_tag, ...);
41048 +
41049 +const char *bfd_errmsg (bfd_error_type error_tag);
41050 +
41051 +void bfd_perror (const char *message);
41052 +
41053 +typedef void (*bfd_error_handler_type) (const char *, ...);
41054 +
41055 +bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
41056 +
41057 +void bfd_set_error_program_name (const char *);
41058 +
41059 +bfd_error_handler_type bfd_get_error_handler (void);
41060 +
41061 +long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
41062 +
41063 +long bfd_canonicalize_reloc
41064 + (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
41065 +
41066 +void bfd_set_reloc
41067 + (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
41068 +
41069 +bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
41070 +
41071 +int bfd_get_arch_size (bfd *abfd);
41072 +
41073 +int bfd_get_sign_extend_vma (bfd *abfd);
41074 +
41075 +bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
41076 +
41077 +unsigned int bfd_get_gp_size (bfd *abfd);
41078 +
41079 +void bfd_set_gp_size (bfd *abfd, unsigned int i);
41080 +
41081 +bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
41082 +
41083 +bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
41084 +
41085 +#define bfd_copy_private_header_data(ibfd, obfd) \
41086 + BFD_SEND (obfd, _bfd_copy_private_header_data, \
41087 + (ibfd, obfd))
41088 +bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
41089 +
41090 +#define bfd_copy_private_bfd_data(ibfd, obfd) \
41091 + BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
41092 + (ibfd, obfd))
41093 +bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
41094 +
41095 +#define bfd_merge_private_bfd_data(ibfd, obfd) \
41096 + BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
41097 + (ibfd, obfd))
41098 +bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
41099 +
41100 +#define bfd_set_private_flags(abfd, flags) \
41101 + BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
41102 +#define bfd_sizeof_headers(abfd, info) \
41103 + BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
41104 +
41105 +#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
41106 + BFD_SEND (abfd, _bfd_find_nearest_line, \
41107 + (abfd, sec, syms, off, file, func, line))
41108 +
41109 +#define bfd_find_line(abfd, syms, sym, file, line) \
41110 + BFD_SEND (abfd, _bfd_find_line, \
41111 + (abfd, syms, sym, file, line))
41112 +
41113 +#define bfd_find_inliner_info(abfd, file, func, line) \
41114 + BFD_SEND (abfd, _bfd_find_inliner_info, \
41115 + (abfd, file, func, line))
41116 +
41117 +#define bfd_debug_info_start(abfd) \
41118 + BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
41119 +
41120 +#define bfd_debug_info_end(abfd) \
41121 + BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
41122 +
41123 +#define bfd_debug_info_accumulate(abfd, section) \
41124 + BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
41125 +
41126 +#define bfd_stat_arch_elt(abfd, stat) \
41127 + BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
41128 +
41129 +#define bfd_update_armap_timestamp(abfd) \
41130 + BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
41131 +
41132 +#define bfd_set_arch_mach(abfd, arch, mach)\
41133 + BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
41134 +
41135 +#define bfd_relax_section(abfd, section, link_info, again) \
41136 + BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
41137 +
41138 +#define bfd_gc_sections(abfd, link_info) \
41139 + BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
41140 +
41141 +#define bfd_merge_sections(abfd, link_info) \
41142 + BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
41143 +
41144 +#define bfd_is_group_section(abfd, sec) \
41145 + BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
41146 +
41147 +#define bfd_discard_group(abfd, sec) \
41148 + BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
41149 +
41150 +#define bfd_link_hash_table_create(abfd) \
41151 + BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
41152 +
41153 +#define bfd_link_hash_table_free(abfd, hash) \
41154 + BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
41155 +
41156 +#define bfd_link_add_symbols(abfd, info) \
41157 + BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
41158 +
41159 +#define bfd_link_just_syms(abfd, sec, info) \
41160 + BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
41161 +
41162 +#define bfd_final_link(abfd, info) \
41163 + BFD_SEND (abfd, _bfd_final_link, (abfd, info))
41164 +
41165 +#define bfd_free_cached_info(abfd) \
41166 + BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
41167 +
41168 +#define bfd_get_dynamic_symtab_upper_bound(abfd) \
41169 + BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
41170 +
41171 +#define bfd_print_private_bfd_data(abfd, file)\
41172 + BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
41173 +
41174 +#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
41175 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
41176 +
41177 +#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
41178 + BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
41179 + dyncount, dynsyms, ret))
41180 +
41181 +#define bfd_get_dynamic_reloc_upper_bound(abfd) \
41182 + BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
41183 +
41184 +#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
41185 + BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
41186 +
41187 +extern bfd_byte *bfd_get_relocated_section_contents
41188 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
41189 + bfd_boolean, asymbol **);
41190 +
41191 +bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
41192 +
41193 +struct bfd_preserve
41194 +{
41195 + void *marker;
41196 + void *tdata;
41197 + flagword flags;
41198 + const struct bfd_arch_info *arch_info;
41199 + struct bfd_section *sections;
41200 + struct bfd_section *section_last;
41201 + unsigned int section_count;
41202 + struct bfd_hash_table section_htab;
41203 +};
41204 +
41205 +bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
41206 +
41207 +void bfd_preserve_restore (bfd *, struct bfd_preserve *);
41208 +
41209 +void bfd_preserve_finish (bfd *, struct bfd_preserve *);
41210 +
41211 +bfd_vma bfd_emul_get_maxpagesize (const char *);
41212 +
41213 +void bfd_emul_set_maxpagesize (const char *, bfd_vma);
41214 +
41215 +bfd_vma bfd_emul_get_commonpagesize (const char *);
41216 +
41217 +void bfd_emul_set_commonpagesize (const char *, bfd_vma);
41218 +
41219 +char *bfd_demangle (bfd *, const char *, int);
41220 +
41221 +/* Extracted from archive.c. */
41222 +symindex bfd_get_next_mapent
41223 + (bfd *abfd, symindex previous, carsym **sym);
41224 +
41225 +bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
41226 +
41227 +bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
41228 +
41229 +/* Extracted from corefile.c. */
41230 +const char *bfd_core_file_failing_command (bfd *abfd);
41231 +
41232 +int bfd_core_file_failing_signal (bfd *abfd);
41233 +
41234 +bfd_boolean core_file_matches_executable_p
41235 + (bfd *core_bfd, bfd *exec_bfd);
41236 +
41237 +bfd_boolean generic_core_file_matches_executable_p
41238 + (bfd *core_bfd, bfd *exec_bfd);
41239 +
41240 +/* Extracted from targets.c. */
41241 +#define BFD_SEND(bfd, message, arglist) \
41242 + ((*((bfd)->xvec->message)) arglist)
41243 +
41244 +#ifdef DEBUG_BFD_SEND
41245 +#undef BFD_SEND
41246 +#define BFD_SEND(bfd, message, arglist) \
41247 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
41248 + ((*((bfd)->xvec->message)) arglist) : \
41249 + (bfd_assert (__FILE__,__LINE__), NULL))
41250 +#endif
41251 +#define BFD_SEND_FMT(bfd, message, arglist) \
41252 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
41253 +
41254 +#ifdef DEBUG_BFD_SEND
41255 +#undef BFD_SEND_FMT
41256 +#define BFD_SEND_FMT(bfd, message, arglist) \
41257 + (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
41258 + (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
41259 + (bfd_assert (__FILE__,__LINE__), NULL))
41260 +#endif
41261 +
41262 +enum bfd_flavour
41263 +{
41264 + bfd_target_unknown_flavour,
41265 + bfd_target_aout_flavour,
41266 + bfd_target_coff_flavour,
41267 + bfd_target_ecoff_flavour,
41268 + bfd_target_xcoff_flavour,
41269 + bfd_target_elf_flavour,
41270 + bfd_target_ieee_flavour,
41271 + bfd_target_nlm_flavour,
41272 + bfd_target_oasys_flavour,
41273 + bfd_target_tekhex_flavour,
41274 + bfd_target_srec_flavour,
41275 + bfd_target_ihex_flavour,
41276 + bfd_target_som_flavour,
41277 + bfd_target_os9k_flavour,
41278 + bfd_target_versados_flavour,
41279 + bfd_target_msdos_flavour,
41280 + bfd_target_ovax_flavour,
41281 + bfd_target_evax_flavour,
41282 + bfd_target_mmo_flavour,
41283 + bfd_target_mach_o_flavour,
41284 + bfd_target_pef_flavour,
41285 + bfd_target_pef_xlib_flavour,
41286 + bfd_target_sym_flavour
41287 +};
41288 +
41289 +enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
41290 +
41291 +/* Forward declaration. */
41292 +typedef struct bfd_link_info _bfd_link_info;
41293 +
41294 +typedef struct bfd_target
41295 +{
41296 + /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc. */
41297 + char *name;
41298 +
41299 + /* The "flavour" of a back end is a general indication about
41300 + the contents of a file. */
41301 + enum bfd_flavour flavour;
41302 +
41303 + /* The order of bytes within the data area of a file. */
41304 + enum bfd_endian byteorder;
41305 +
41306 + /* The order of bytes within the header parts of a file. */
41307 + enum bfd_endian header_byteorder;
41308 +
41309 + /* A mask of all the flags which an executable may have set -
41310 + from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>. */
41311 + flagword object_flags;
41312 +
41313 + /* A mask of all the flags which a section may have set - from
41314 + the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>. */
41315 + flagword section_flags;
41316 +
41317 + /* The character normally found at the front of a symbol.
41318 + (if any), perhaps `_'. */
41319 + char symbol_leading_char;
41320 +
41321 + /* The pad character for file names within an archive header. */
41322 + char ar_pad_char;
41323 +
41324 + /* The maximum number of characters in an archive header. */
41325 + unsigned short ar_max_namelen;
41326 +
41327 + /* Entries for byte swapping for data. These are different from the
41328 + other entry points, since they don't take a BFD as the first argument.
41329 + Certain other handlers could do the same. */
41330 + bfd_uint64_t (*bfd_getx64) (const void *);
41331 + bfd_int64_t (*bfd_getx_signed_64) (const void *);
41332 + void (*bfd_putx64) (bfd_uint64_t, void *);
41333 + bfd_vma (*bfd_getx32) (const void *);
41334 + bfd_signed_vma (*bfd_getx_signed_32) (const void *);
41335 + void (*bfd_putx32) (bfd_vma, void *);
41336 + bfd_vma (*bfd_getx16) (const void *);
41337 + bfd_signed_vma (*bfd_getx_signed_16) (const void *);
41338 + void (*bfd_putx16) (bfd_vma, void *);
41339 +
41340 + /* Byte swapping for the headers. */
41341 + bfd_uint64_t (*bfd_h_getx64) (const void *);
41342 + bfd_int64_t (*bfd_h_getx_signed_64) (const void *);
41343 + void (*bfd_h_putx64) (bfd_uint64_t, void *);
41344 + bfd_vma (*bfd_h_getx32) (const void *);
41345 + bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
41346 + void (*bfd_h_putx32) (bfd_vma, void *);
41347 + bfd_vma (*bfd_h_getx16) (const void *);
41348 + bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
41349 + void (*bfd_h_putx16) (bfd_vma, void *);
41350 +
41351 + /* Format dependent routines: these are vectors of entry points
41352 + within the target vector structure, one for each format to check. */
41353 +
41354 + /* Check the format of a file being read. Return a <<bfd_target *>> or zero. */
41355 + const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
41356 +
41357 + /* Set the format of a file being written. */
41358 + bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
41359 +
41360 + /* Write cached information into a file being written, at <<bfd_close>>. */
41361 + bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
41362 +
41363 +
41364 + /* Generic entry points. */
41365 +#define BFD_JUMP_TABLE_GENERIC(NAME) \
41366 + NAME##_close_and_cleanup, \
41367 + NAME##_bfd_free_cached_info, \
41368 + NAME##_new_section_hook, \
41369 + NAME##_get_section_contents, \
41370 + NAME##_get_section_contents_in_window
41371 +
41372 + /* Called when the BFD is being closed to do any necessary cleanup. */
41373 + bfd_boolean (*_close_and_cleanup) (bfd *);
41374 + /* Ask the BFD to free all cached information. */
41375 + bfd_boolean (*_bfd_free_cached_info) (bfd *);
41376 + /* Called when a new section is created. */
41377 + bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
41378 + /* Read the contents of a section. */
41379 + bfd_boolean (*_bfd_get_section_contents)
41380 + (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
41381 + bfd_boolean (*_bfd_get_section_contents_in_window)
41382 + (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
41383 +
41384 + /* Entry points to copy private data. */
41385 +#define BFD_JUMP_TABLE_COPY(NAME) \
41386 + NAME##_bfd_copy_private_bfd_data, \
41387 + NAME##_bfd_merge_private_bfd_data, \
41388 + _bfd_generic_init_private_section_data, \
41389 + NAME##_bfd_copy_private_section_data, \
41390 + NAME##_bfd_copy_private_symbol_data, \
41391 + NAME##_bfd_copy_private_header_data, \
41392 + NAME##_bfd_set_private_flags, \
41393 + NAME##_bfd_print_private_bfd_data
41394 +
41395 + /* Called to copy BFD general private data from one object file
41396 + to another. */
41397 + bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
41398 + /* Called to merge BFD general private data from one object file
41399 + to a common output file when linking. */
41400 + bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
41401 + /* Called to initialize BFD private section data from one object file
41402 + to another. */
41403 +#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
41404 + BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
41405 + bfd_boolean (*_bfd_init_private_section_data)
41406 + (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
41407 + /* Called to copy BFD private section data from one object file
41408 + to another. */
41409 + bfd_boolean (*_bfd_copy_private_section_data)
41410 + (bfd *, sec_ptr, bfd *, sec_ptr);
41411 + /* Called to copy BFD private symbol data from one symbol
41412 + to another. */
41413 + bfd_boolean (*_bfd_copy_private_symbol_data)
41414 + (bfd *, asymbol *, bfd *, asymbol *);
41415 + /* Called to copy BFD private header data from one object file
41416 + to another. */
41417 + bfd_boolean (*_bfd_copy_private_header_data)
41418 + (bfd *, bfd *);
41419 + /* Called to set private backend flags. */
41420 + bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
41421 +
41422 + /* Called to print private BFD data. */
41423 + bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
41424 +
41425 + /* Core file entry points. */
41426 +#define BFD_JUMP_TABLE_CORE(NAME) \
41427 + NAME##_core_file_failing_command, \
41428 + NAME##_core_file_failing_signal, \
41429 + NAME##_core_file_matches_executable_p
41430 +
41431 + char * (*_core_file_failing_command) (bfd *);
41432 + int (*_core_file_failing_signal) (bfd *);
41433 + bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
41434 +
41435 + /* Archive entry points. */
41436 +#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
41437 + NAME##_slurp_armap, \
41438 + NAME##_slurp_extended_name_table, \
41439 + NAME##_construct_extended_name_table, \
41440 + NAME##_truncate_arname, \
41441 + NAME##_write_armap, \
41442 + NAME##_read_ar_hdr, \
41443 + NAME##_openr_next_archived_file, \
41444 + NAME##_get_elt_at_index, \
41445 + NAME##_generic_stat_arch_elt, \
41446 + NAME##_update_armap_timestamp
41447 +
41448 + bfd_boolean (*_bfd_slurp_armap) (bfd *);
41449 + bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
41450 + bfd_boolean (*_bfd_construct_extended_name_table)
41451 + (bfd *, char **, bfd_size_type *, const char **);
41452 + void (*_bfd_truncate_arname) (bfd *, const char *, char *);
41453 + bfd_boolean (*write_armap)
41454 + (bfd *, unsigned int, struct orl *, unsigned int, int);
41455 + void * (*_bfd_read_ar_hdr_fn) (bfd *);
41456 + bfd * (*openr_next_archived_file) (bfd *, bfd *);
41457 +#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
41458 + bfd * (*_bfd_get_elt_at_index) (bfd *, symindex);
41459 + int (*_bfd_stat_arch_elt) (bfd *, struct stat *);
41460 + bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
41461 +
41462 + /* Entry points used for symbols. */
41463 +#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
41464 + NAME##_get_symtab_upper_bound, \
41465 + NAME##_canonicalize_symtab, \
41466 + NAME##_make_empty_symbol, \
41467 + NAME##_print_symbol, \
41468 + NAME##_get_symbol_info, \
41469 + NAME##_bfd_is_local_label_name, \
41470 + NAME##_bfd_is_target_special_symbol, \
41471 + NAME##_get_lineno, \
41472 + NAME##_find_nearest_line, \
41473 + _bfd_generic_find_line, \
41474 + NAME##_find_inliner_info, \
41475 + NAME##_bfd_make_debug_symbol, \
41476 + NAME##_read_minisymbols, \
41477 + NAME##_minisymbol_to_symbol
41478 +
41479 + long (*_bfd_get_symtab_upper_bound) (bfd *);
41480 + long (*_bfd_canonicalize_symtab)
41481 + (bfd *, struct bfd_symbol **);
41482 + struct bfd_symbol *
41483 + (*_bfd_make_empty_symbol) (bfd *);
41484 + void (*_bfd_print_symbol)
41485 + (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
41486 +#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
41487 + void (*_bfd_get_symbol_info)
41488 + (bfd *, struct bfd_symbol *, symbol_info *);
41489 +#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
41490 + bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
41491 + bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
41492 + alent * (*_get_lineno) (bfd *, struct bfd_symbol *);
41493 + bfd_boolean (*_bfd_find_nearest_line)
41494 + (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
41495 + const char **, const char **, unsigned int *);
41496 + bfd_boolean (*_bfd_find_line)
41497 + (bfd *, struct bfd_symbol **, struct bfd_symbol *,
41498 + const char **, unsigned int *);
41499 + bfd_boolean (*_bfd_find_inliner_info)
41500 + (bfd *, const char **, const char **, unsigned int *);
41501 + /* Back-door to allow format-aware applications to create debug symbols
41502 + while using BFD for everything else. Currently used by the assembler
41503 + when creating COFF files. */
41504 + asymbol * (*_bfd_make_debug_symbol)
41505 + (bfd *, void *, unsigned long size);
41506 +#define bfd_read_minisymbols(b, d, m, s) \
41507 + BFD_SEND (b, _read_minisymbols, (b, d, m, s))
41508 + long (*_read_minisymbols)
41509 + (bfd *, bfd_boolean, void **, unsigned int *);
41510 +#define bfd_minisymbol_to_symbol(b, d, m, f) \
41511 + BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
41512 + asymbol * (*_minisymbol_to_symbol)
41513 + (bfd *, bfd_boolean, const void *, asymbol *);
41514 +
41515 + /* Routines for relocs. */
41516 +#define BFD_JUMP_TABLE_RELOCS(NAME) \
41517 + NAME##_get_reloc_upper_bound, \
41518 + NAME##_canonicalize_reloc, \
41519 + NAME##_bfd_reloc_type_lookup, \
41520 + NAME##_bfd_reloc_name_lookup
41521 +
41522 + long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
41523 + long (*_bfd_canonicalize_reloc)
41524 + (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
41525 + /* See documentation on reloc types. */
41526 + reloc_howto_type *
41527 + (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
41528 + reloc_howto_type *
41529 + (*reloc_name_lookup) (bfd *, const char *);
41530 +
41531 +
41532 + /* Routines used when writing an object file. */
41533 +#define BFD_JUMP_TABLE_WRITE(NAME) \
41534 + NAME##_set_arch_mach, \
41535 + NAME##_set_section_contents
41536 +
41537 + bfd_boolean (*_bfd_set_arch_mach)
41538 + (bfd *, enum bfd_architecture, unsigned long);
41539 + bfd_boolean (*_bfd_set_section_contents)
41540 + (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
41541 +
41542 + /* Routines used by the linker. */
41543 +#define BFD_JUMP_TABLE_LINK(NAME) \
41544 + NAME##_sizeof_headers, \
41545 + NAME##_bfd_get_relocated_section_contents, \
41546 + NAME##_bfd_relax_section, \
41547 + NAME##_bfd_link_hash_table_create, \
41548 + NAME##_bfd_link_hash_table_free, \
41549 + NAME##_bfd_link_add_symbols, \
41550 + NAME##_bfd_link_just_syms, \
41551 + NAME##_bfd_final_link, \
41552 + NAME##_bfd_link_split_section, \
41553 + NAME##_bfd_gc_sections, \
41554 + NAME##_bfd_merge_sections, \
41555 + NAME##_bfd_is_group_section, \
41556 + NAME##_bfd_discard_group, \
41557 + NAME##_section_already_linked \
41558 +
41559 + int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
41560 + bfd_byte * (*_bfd_get_relocated_section_contents)
41561 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
41562 + bfd_byte *, bfd_boolean, struct bfd_symbol **);
41563 +
41564 + bfd_boolean (*_bfd_relax_section)
41565 + (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
41566 +
41567 + /* Create a hash table for the linker. Different backends store
41568 + different information in this table. */
41569 + struct bfd_link_hash_table *
41570 + (*_bfd_link_hash_table_create) (bfd *);
41571 +
41572 + /* Release the memory associated with the linker hash table. */
41573 + void (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
41574 +
41575 + /* Add symbols from this object file into the hash table. */
41576 + bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
41577 +
41578 + /* Indicate that we are only retrieving symbol values from this section. */
41579 + void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
41580 +
41581 + /* Do a link based on the link_order structures attached to each
41582 + section of the BFD. */
41583 + bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
41584 +
41585 + /* Should this section be split up into smaller pieces during linking. */
41586 + bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
41587 +
41588 + /* Remove sections that are not referenced from the output. */
41589 + bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
41590 +
41591 + /* Attempt to merge SEC_MERGE sections. */
41592 + bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
41593 +
41594 + /* Is this section a member of a group? */
41595 + bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
41596 +
41597 + /* Discard members of a group. */
41598 + bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
41599 +
41600 + /* Check if SEC has been already linked during a reloceatable or
41601 + final link. */
41602 + void (*_section_already_linked) (bfd *, struct bfd_section *,
41603 + struct bfd_link_info *);
41604 +
41605 + /* Routines to handle dynamic symbols and relocs. */
41606 +#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
41607 + NAME##_get_dynamic_symtab_upper_bound, \
41608 + NAME##_canonicalize_dynamic_symtab, \
41609 + NAME##_get_synthetic_symtab, \
41610 + NAME##_get_dynamic_reloc_upper_bound, \
41611 + NAME##_canonicalize_dynamic_reloc
41612 +
41613 + /* Get the amount of memory required to hold the dynamic symbols. */
41614 + long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
41615 + /* Read in the dynamic symbols. */
41616 + long (*_bfd_canonicalize_dynamic_symtab)
41617 + (bfd *, struct bfd_symbol **);
41618 + /* Create synthetized symbols. */
41619 + long (*_bfd_get_synthetic_symtab)
41620 + (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
41621 + struct bfd_symbol **);
41622 + /* Get the amount of memory required to hold the dynamic relocs. */
41623 + long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
41624 + /* Read in the dynamic relocs. */
41625 + long (*_bfd_canonicalize_dynamic_reloc)
41626 + (bfd *, arelent **, struct bfd_symbol **);
41627 +
41628 + /* Opposite endian version of this target. */
41629 + const struct bfd_target * alternative_target;
41630 +
41631 + /* Data for use by back-end routines, which isn't
41632 + generic enough to belong in this structure. */
41633 + const void *backend_data;
41634 +
41635 +} bfd_target;
41636 +
41637 +bfd_boolean bfd_set_default_target (const char *name);
41638 +
41639 +const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
41640 +
41641 +const char ** bfd_target_list (void);
41642 +
41643 +const bfd_target *bfd_search_for_target
41644 + (int (*search_func) (const bfd_target *, void *),
41645 + void *);
41646 +
41647 +/* Extracted from format.c. */
41648 +bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
41649 +
41650 +bfd_boolean bfd_check_format_matches
41651 + (bfd *abfd, bfd_format format, char ***matching);
41652 +
41653 +bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
41654 +
41655 +const char *bfd_format_string (bfd_format format);
41656 +
41657 +/* Extracted from linker.c. */
41658 +bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
41659 +
41660 +#define bfd_link_split_section(abfd, sec) \
41661 + BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
41662 +
41663 +void bfd_section_already_linked (bfd *abfd, asection *sec,
41664 + struct bfd_link_info *info);
41665 +
41666 +#define bfd_section_already_linked(abfd, sec, info) \
41667 + BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
41668 +
41669 +/* Extracted from simple.c. */
41670 +bfd_byte *bfd_simple_get_relocated_section_contents
41671 + (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
41672 +
41673 +#ifdef __cplusplus
41674 +}
41675 +#endif
41676 +#endif
41677 --- /dev/null
41678 +++ b/bfd/doc/libbfd.h
41679 @@ -0,0 +1,2074 @@
41680 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
41681 + generated from "libbfd-in.h", "init.c", "libbfd.c", "bfdio.c",
41682 + "bfdwin.c", "cache.c", "reloc.c", "archures.c" and "elf.c".
41683 + Run "make headers" in your build bfd/ to regenerate. */
41684 +
41685 +/* libbfd.h -- Declarations used by bfd library *implementation*.
41686 + (This include file is not for users of the library.)
41687 +
41688 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
41689 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
41690 + Free Software Foundation, Inc.
41691 +
41692 + Written by Cygnus Support.
41693 +
41694 + This file is part of BFD, the Binary File Descriptor library.
41695 +
41696 + This program is free software; you can redistribute it and/or modify
41697 + it under the terms of the GNU General Public License as published by
41698 + the Free Software Foundation; either version 3 of the License, or
41699 + (at your option) any later version.
41700 +
41701 + This program is distributed in the hope that it will be useful,
41702 + but WITHOUT ANY WARRANTY; without even the implied warranty of
41703 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41704 + GNU General Public License for more details.
41705 +
41706 + You should have received a copy of the GNU General Public License
41707 + along with this program; if not, write to the Free Software
41708 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
41709 + MA 02110-1301, USA. */
41710 +
41711 +#include "hashtab.h"
41712 +
41713 +/* Align an address upward to a boundary, expressed as a number of bytes.
41714 + E.g. align to an 8-byte boundary with argument of 8. Take care never
41715 + to wrap around if the address is within boundary-1 of the end of the
41716 + address space. */
41717 +#define BFD_ALIGN(this, boundary) \
41718 + ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this)) \
41719 + ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
41720 + : ~ (bfd_vma) 0)
41721 +
41722 +/* If you want to read and write large blocks, you might want to do it
41723 + in quanta of this amount */
41724 +#define DEFAULT_BUFFERSIZE 8192
41725 +
41726 +/* Set a tdata field. Can't use the other macros for this, since they
41727 + do casts, and casting to the left of assignment isn't portable. */
41728 +#define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
41729 +
41730 +/* If BFD_IN_MEMORY is set for a BFD, then the iostream fields points
41731 + to an instance of this structure. */
41732 +
41733 +struct bfd_in_memory
41734 +{
41735 + /* Size of buffer. */
41736 + bfd_size_type size;
41737 + /* Buffer holding contents of BFD. */
41738 + bfd_byte *buffer;
41739 +};
41740 +
41741 +struct section_hash_entry
41742 +{
41743 + struct bfd_hash_entry root;
41744 + asection section;
41745 +};
41746 +
41747 +/* tdata for an archive. For an input archive, cache
41748 + needs to be free()'d. For an output archive, symdefs do. */
41749 +
41750 +struct artdata {
41751 + file_ptr first_file_filepos;
41752 + /* Speed up searching the armap */
41753 + htab_t cache;
41754 + bfd *archive_head; /* Only interesting in output routines */
41755 + carsym *symdefs; /* the symdef entries */
41756 + symindex symdef_count; /* how many there are */
41757 + char *extended_names; /* clever intel extension */
41758 + bfd_size_type extended_names_size; /* Size of extended names */
41759 + /* when more compilers are standard C, this can be a time_t */
41760 + long armap_timestamp; /* Timestamp value written into armap.
41761 + This is used for BSD archives to check
41762 + that the timestamp is recent enough
41763 + for the BSD linker to not complain,
41764 + just before we finish writing an
41765 + archive. */
41766 + file_ptr armap_datepos; /* Position within archive to seek to
41767 + rewrite the date field. */
41768 + void *tdata; /* Backend specific information. */
41769 +};
41770 +
41771 +#define bfd_ardata(bfd) ((bfd)->tdata.aout_ar_data)
41772 +
41773 +/* Goes in bfd's arelt_data slot */
41774 +struct areltdata {
41775 + char * arch_header; /* it's actually a string */
41776 + unsigned int parsed_size; /* octets of filesize not including ar_hdr */
41777 + char *filename; /* null-terminated */
41778 +};
41779 +
41780 +#define arelt_size(bfd) (((struct areltdata *)((bfd)->arelt_data))->parsed_size)
41781 +
41782 +extern void *bfd_malloc
41783 + (bfd_size_type);
41784 +extern void *bfd_realloc
41785 + (void *, bfd_size_type);
41786 +extern void *bfd_zmalloc
41787 + (bfd_size_type);
41788 +extern void *bfd_malloc2
41789 + (bfd_size_type, bfd_size_type);
41790 +extern void *bfd_realloc2
41791 + (void *, bfd_size_type, bfd_size_type);
41792 +extern void *bfd_zmalloc2
41793 + (bfd_size_type, bfd_size_type);
41794 +
41795 +extern void _bfd_default_error_handler (const char *s, ...);
41796 +extern bfd_error_handler_type _bfd_error_handler;
41797 +
41798 +/* These routines allocate and free things on the BFD's objalloc. */
41799 +
41800 +extern void *bfd_alloc
41801 + (bfd *, bfd_size_type);
41802 +extern void *bfd_zalloc
41803 + (bfd *, bfd_size_type);
41804 +extern void *bfd_alloc2
41805 + (bfd *, bfd_size_type, bfd_size_type);
41806 +extern void *bfd_zalloc2
41807 + (bfd *, bfd_size_type, bfd_size_type);
41808 +extern void bfd_release
41809 + (bfd *, void *);
41810 +
41811 +bfd * _bfd_create_empty_archive_element_shell
41812 + (bfd *obfd);
41813 +bfd * _bfd_look_for_bfd_in_cache
41814 + (bfd *, file_ptr);
41815 +bfd_boolean _bfd_add_bfd_to_archive_cache
41816 + (bfd *, file_ptr, bfd *);
41817 +bfd_boolean _bfd_generic_mkarchive
41818 + (bfd *abfd);
41819 +const bfd_target *bfd_generic_archive_p
41820 + (bfd *abfd);
41821 +bfd_boolean bfd_slurp_armap
41822 + (bfd *abfd);
41823 +bfd_boolean bfd_slurp_bsd_armap_f2
41824 + (bfd *abfd);
41825 +#define bfd_slurp_bsd_armap bfd_slurp_armap
41826 +#define bfd_slurp_coff_armap bfd_slurp_armap
41827 +bfd_boolean _bfd_slurp_extended_name_table
41828 + (bfd *abfd);
41829 +extern bfd_boolean _bfd_construct_extended_name_table
41830 + (bfd *, bfd_boolean, char **, bfd_size_type *);
41831 +bfd_boolean _bfd_write_archive_contents
41832 + (bfd *abfd);
41833 +bfd_boolean _bfd_compute_and_write_armap
41834 + (bfd *, unsigned int elength);
41835 +bfd *_bfd_get_elt_at_filepos
41836 + (bfd *archive, file_ptr filepos);
41837 +extern bfd *_bfd_generic_get_elt_at_index
41838 + (bfd *, symindex);
41839 +bfd * _bfd_new_bfd
41840 + (void);
41841 +void _bfd_delete_bfd
41842 + (bfd *);
41843 +bfd_boolean _bfd_free_cached_info
41844 + (bfd *);
41845 +
41846 +bfd_boolean bfd_false
41847 + (bfd *ignore);
41848 +bfd_boolean bfd_true
41849 + (bfd *ignore);
41850 +void *bfd_nullvoidptr
41851 + (bfd *ignore);
41852 +int bfd_0
41853 + (bfd *ignore);
41854 +unsigned int bfd_0u
41855 + (bfd *ignore);
41856 +long bfd_0l
41857 + (bfd *ignore);
41858 +long _bfd_n1
41859 + (bfd *ignore);
41860 +void bfd_void
41861 + (bfd *ignore);
41862 +
41863 +bfd *_bfd_new_bfd_contained_in
41864 + (bfd *);
41865 +const bfd_target *_bfd_dummy_target
41866 + (bfd *abfd);
41867 +
41868 +void bfd_dont_truncate_arname
41869 + (bfd *abfd, const char *filename, char *hdr);
41870 +void bfd_bsd_truncate_arname
41871 + (bfd *abfd, const char *filename, char *hdr);
41872 +void bfd_gnu_truncate_arname
41873 + (bfd *abfd, const char *filename, char *hdr);
41874 +
41875 +bfd_boolean bsd_write_armap
41876 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
41877 + int stridx);
41878 +
41879 +bfd_boolean coff_write_armap
41880 + (bfd *arch, unsigned int elength, struct orl *map, unsigned int orl_count,
41881 + int stridx);
41882 +
41883 +extern void *_bfd_generic_read_ar_hdr
41884 + (bfd *);
41885 +extern void _bfd_ar_spacepad
41886 + (char *, size_t, const char *, long);
41887 +
41888 +extern void *_bfd_generic_read_ar_hdr_mag
41889 + (bfd *, const char *);
41890 +
41891 +bfd * bfd_generic_openr_next_archived_file
41892 + (bfd *archive, bfd *last_file);
41893 +
41894 +int bfd_generic_stat_arch_elt
41895 + (bfd *, struct stat *);
41896 +
41897 +#define _bfd_read_ar_hdr(abfd) \
41898 + BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
41899 +\f
41900 +/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
41901 + BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
41902 +
41903 +#define _bfd_generic_close_and_cleanup bfd_true
41904 +#define _bfd_generic_bfd_free_cached_info bfd_true
41905 +extern bfd_boolean _bfd_generic_new_section_hook
41906 + (bfd *, asection *);
41907 +extern bfd_boolean _bfd_generic_get_section_contents
41908 + (bfd *, asection *, void *, file_ptr, bfd_size_type);
41909 +extern bfd_boolean _bfd_generic_get_section_contents_in_window
41910 + (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type);
41911 +
41912 +/* Generic routines to use for BFD_JUMP_TABLE_COPY. Use
41913 + BFD_JUMP_TABLE_COPY (_bfd_generic). */
41914 +
41915 +#define _bfd_generic_bfd_copy_private_bfd_data \
41916 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41917 +#define _bfd_generic_bfd_merge_private_bfd_data \
41918 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41919 +#define _bfd_generic_bfd_set_private_flags \
41920 + ((bfd_boolean (*) (bfd *, flagword)) bfd_true)
41921 +#define _bfd_generic_bfd_copy_private_section_data \
41922 + ((bfd_boolean (*) (bfd *, asection *, bfd *, asection *)) bfd_true)
41923 +#define _bfd_generic_bfd_copy_private_symbol_data \
41924 + ((bfd_boolean (*) (bfd *, asymbol *, bfd *, asymbol *)) bfd_true)
41925 +#define _bfd_generic_bfd_copy_private_header_data \
41926 + ((bfd_boolean (*) (bfd *, bfd *)) bfd_true)
41927 +#define _bfd_generic_bfd_print_private_bfd_data \
41928 + ((bfd_boolean (*) (bfd *, void *)) bfd_true)
41929 +
41930 +extern bfd_boolean _bfd_generic_init_private_section_data
41931 + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
41932 +
41933 +/* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
41934 + support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */
41935 +
41936 +extern char *_bfd_nocore_core_file_failing_command
41937 + (bfd *);
41938 +extern int _bfd_nocore_core_file_failing_signal
41939 + (bfd *);
41940 +extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
41941 + (bfd *, bfd *);
41942 +
41943 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE when there is no archive
41944 + file support. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive). */
41945 +
41946 +#define _bfd_noarchive_slurp_armap bfd_false
41947 +#define _bfd_noarchive_slurp_extended_name_table bfd_false
41948 +#define _bfd_noarchive_construct_extended_name_table \
41949 + ((bfd_boolean (*) (bfd *, char **, bfd_size_type *, const char **)) \
41950 + bfd_false)
41951 +#define _bfd_noarchive_truncate_arname \
41952 + ((void (*) (bfd *, const char *, char *)) bfd_void)
41953 +#define _bfd_noarchive_write_armap \
41954 + ((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
41955 + bfd_false)
41956 +#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
41957 +#define _bfd_noarchive_openr_next_archived_file \
41958 + ((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
41959 +#define _bfd_noarchive_get_elt_at_index \
41960 + ((bfd *(*) (bfd *, symindex)) bfd_nullvoidptr)
41961 +#define _bfd_noarchive_generic_stat_arch_elt bfd_generic_stat_arch_elt
41962 +#define _bfd_noarchive_update_armap_timestamp bfd_false
41963 +
41964 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD style
41965 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd). */
41966 +
41967 +#define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
41968 +#define _bfd_archive_bsd_slurp_extended_name_table \
41969 + _bfd_slurp_extended_name_table
41970 +extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
41971 + (bfd *, char **, bfd_size_type *, const char **);
41972 +#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
41973 +#define _bfd_archive_bsd_write_armap bsd_write_armap
41974 +#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
41975 +#define _bfd_archive_bsd_openr_next_archived_file \
41976 + bfd_generic_openr_next_archived_file
41977 +#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
41978 +#define _bfd_archive_bsd_generic_stat_arch_elt \
41979 + bfd_generic_stat_arch_elt
41980 +extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
41981 + (bfd *);
41982 +
41983 +/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
41984 + archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff). */
41985 +
41986 +#define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
41987 +#define _bfd_archive_coff_slurp_extended_name_table \
41988 + _bfd_slurp_extended_name_table
41989 +extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
41990 + (bfd *, char **, bfd_size_type *, const char **);
41991 +#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
41992 +#define _bfd_archive_coff_write_armap coff_write_armap
41993 +#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
41994 +#define _bfd_archive_coff_openr_next_archived_file \
41995 + bfd_generic_openr_next_archived_file
41996 +#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
41997 +#define _bfd_archive_coff_generic_stat_arch_elt \
41998 + bfd_generic_stat_arch_elt
41999 +#define _bfd_archive_coff_update_armap_timestamp bfd_true
42000 +
42001 +/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
42002 + support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
42003 +
42004 +#define _bfd_nosymbols_get_symtab_upper_bound _bfd_n1
42005 +#define _bfd_nosymbols_canonicalize_symtab \
42006 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
42007 +#define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
42008 +#define _bfd_nosymbols_print_symbol \
42009 + ((void (*) (bfd *, void *, asymbol *, bfd_print_symbol_type)) bfd_void)
42010 +#define _bfd_nosymbols_get_symbol_info \
42011 + ((void (*) (bfd *, asymbol *, symbol_info *)) bfd_void)
42012 +#define _bfd_nosymbols_bfd_is_local_label_name \
42013 + ((bfd_boolean (*) (bfd *, const char *)) bfd_false)
42014 +#define _bfd_nosymbols_bfd_is_target_special_symbol \
42015 + ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
42016 +#define _bfd_nosymbols_get_lineno \
42017 + ((alent *(*) (bfd *, asymbol *)) bfd_nullvoidptr)
42018 +#define _bfd_nosymbols_find_nearest_line \
42019 + ((bfd_boolean (*) (bfd *, asection *, asymbol **, bfd_vma, const char **, \
42020 + const char **, unsigned int *)) \
42021 + bfd_false)
42022 +#define _bfd_nosymbols_find_inliner_info \
42023 + ((bfd_boolean (*) (bfd *, const char **, const char **, unsigned int *)) \
42024 + bfd_false)
42025 +#define _bfd_nosymbols_bfd_make_debug_symbol \
42026 + ((asymbol *(*) (bfd *, void *, unsigned long)) bfd_nullvoidptr)
42027 +#define _bfd_nosymbols_read_minisymbols \
42028 + ((long (*) (bfd *, bfd_boolean, void **, unsigned int *)) _bfd_n1)
42029 +#define _bfd_nosymbols_minisymbol_to_symbol \
42030 + ((asymbol *(*) (bfd *, bfd_boolean, const void *, asymbol *)) \
42031 + bfd_nullvoidptr)
42032 +
42033 +/* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
42034 + support. Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs). */
42035 +
42036 +extern long _bfd_norelocs_get_reloc_upper_bound (bfd *, asection *);
42037 +extern long _bfd_norelocs_canonicalize_reloc (bfd *, asection *,
42038 + arelent **, asymbol **);
42039 +#define _bfd_norelocs_bfd_reloc_type_lookup \
42040 + ((reloc_howto_type *(*) (bfd *, bfd_reloc_code_real_type)) bfd_nullvoidptr)
42041 +#define _bfd_norelocs_bfd_reloc_name_lookup \
42042 + ((reloc_howto_type *(*) (bfd *, const char *)) bfd_nullvoidptr)
42043 +
42044 +/* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
42045 + be written. Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite). */
42046 +
42047 +#define _bfd_nowrite_set_arch_mach \
42048 + ((bfd_boolean (*) (bfd *, enum bfd_architecture, unsigned long)) \
42049 + bfd_false)
42050 +#define _bfd_nowrite_set_section_contents \
42051 + ((bfd_boolean (*) (bfd *, asection *, const void *, file_ptr, bfd_size_type)) \
42052 + bfd_false)
42053 +
42054 +/* Generic routines to use for BFD_JUMP_TABLE_WRITE. Use
42055 + BFD_JUMP_TABLE_WRITE (_bfd_generic). */
42056 +
42057 +#define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
42058 +extern bfd_boolean _bfd_generic_set_section_contents
42059 + (bfd *, asection *, const void *, file_ptr, bfd_size_type);
42060 +
42061 +/* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
42062 + support linking. Use BFD_JUMP_TABLE_LINK (_bfd_nolink). */
42063 +
42064 +#define _bfd_nolink_sizeof_headers \
42065 + ((int (*) (bfd *, struct bfd_link_info *)) bfd_0)
42066 +#define _bfd_nolink_bfd_get_relocated_section_contents \
42067 + ((bfd_byte *(*) (bfd *, struct bfd_link_info *, struct bfd_link_order *, \
42068 + bfd_byte *, bfd_boolean, asymbol **)) \
42069 + bfd_nullvoidptr)
42070 +#define _bfd_nolink_bfd_relax_section \
42071 + ((bfd_boolean (*) \
42072 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *)) \
42073 + bfd_false)
42074 +#define _bfd_nolink_bfd_gc_sections \
42075 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
42076 + bfd_false)
42077 +#define _bfd_nolink_bfd_merge_sections \
42078 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) \
42079 + bfd_false)
42080 +#define _bfd_nolink_bfd_is_group_section \
42081 + ((bfd_boolean (*) (bfd *, const struct bfd_section *)) \
42082 + bfd_false)
42083 +#define _bfd_nolink_bfd_discard_group \
42084 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) \
42085 + bfd_false)
42086 +#define _bfd_nolink_bfd_link_hash_table_create \
42087 + ((struct bfd_link_hash_table *(*) (bfd *)) bfd_nullvoidptr)
42088 +#define _bfd_nolink_bfd_link_hash_table_free \
42089 + ((void (*) (struct bfd_link_hash_table *)) bfd_void)
42090 +#define _bfd_nolink_bfd_link_add_symbols \
42091 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
42092 +#define _bfd_nolink_bfd_link_just_syms \
42093 + ((void (*) (asection *, struct bfd_link_info *)) bfd_void)
42094 +#define _bfd_nolink_bfd_final_link \
42095 + ((bfd_boolean (*) (bfd *, struct bfd_link_info *)) bfd_false)
42096 +#define _bfd_nolink_bfd_link_split_section \
42097 + ((bfd_boolean (*) (bfd *, struct bfd_section *)) bfd_false)
42098 +#define _bfd_nolink_section_already_linked \
42099 + ((void (*) (bfd *, struct bfd_section *, struct bfd_link_info *)) bfd_void)
42100 +
42101 +/* Routines to use for BFD_JUMP_TABLE_DYNAMIC for targets which do not
42102 + have dynamic symbols or relocs. Use BFD_JUMP_TABLE_DYNAMIC
42103 + (_bfd_nodynamic). */
42104 +
42105 +#define _bfd_nodynamic_get_dynamic_symtab_upper_bound _bfd_n1
42106 +#define _bfd_nodynamic_canonicalize_dynamic_symtab \
42107 + ((long (*) (bfd *, asymbol **)) _bfd_n1)
42108 +#define _bfd_nodynamic_get_synthetic_symtab \
42109 + ((long (*) (bfd *, long, asymbol **, long, asymbol **, asymbol **)) _bfd_n1)
42110 +#define _bfd_nodynamic_get_dynamic_reloc_upper_bound _bfd_n1
42111 +#define _bfd_nodynamic_canonicalize_dynamic_reloc \
42112 + ((long (*) (bfd *, arelent **, asymbol **)) _bfd_n1)
42113 +\f
42114 +/* Generic routine to determine of the given symbol is a local
42115 + label. */
42116 +extern bfd_boolean bfd_generic_is_local_label_name
42117 + (bfd *, const char *);
42118 +
42119 +/* Generic minisymbol routines. */
42120 +extern long _bfd_generic_read_minisymbols
42121 + (bfd *, bfd_boolean, void **, unsigned int *);
42122 +extern asymbol *_bfd_generic_minisymbol_to_symbol
42123 + (bfd *, bfd_boolean, const void *, asymbol *);
42124 +
42125 +/* Find the nearest line using .stab/.stabstr sections. */
42126 +extern bfd_boolean _bfd_stab_section_find_nearest_line
42127 + (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
42128 + const char **, const char **, unsigned int *, void **);
42129 +
42130 +/* Find the nearest line using DWARF 1 debugging information. */
42131 +extern bfd_boolean _bfd_dwarf1_find_nearest_line
42132 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
42133 + const char **, unsigned int *);
42134 +
42135 +/* Find the nearest line using DWARF 2 debugging information. */
42136 +extern bfd_boolean _bfd_dwarf2_find_nearest_line
42137 + (bfd *, asection *, asymbol **, bfd_vma, const char **, const char **,
42138 + unsigned int *, unsigned int, void **);
42139 +
42140 +/* Find the line using DWARF 2 debugging information. */
42141 +extern bfd_boolean _bfd_dwarf2_find_line
42142 + (bfd *, asymbol **, asymbol *, const char **,
42143 + unsigned int *, unsigned int, void **);
42144 +
42145 +bfd_boolean _bfd_generic_find_line
42146 + (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
42147 +
42148 +/* Find inliner info after calling bfd_find_nearest_line. */
42149 +extern bfd_boolean _bfd_dwarf2_find_inliner_info
42150 + (bfd *, const char **, const char **, unsigned int *, void **);
42151 +
42152 +/* Create a new section entry. */
42153 +extern struct bfd_hash_entry *bfd_section_hash_newfunc
42154 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
42155 +
42156 +/* A routine to create entries for a bfd_link_hash_table. */
42157 +extern struct bfd_hash_entry *_bfd_link_hash_newfunc
42158 + (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
42159 + const char *string);
42160 +
42161 +/* Initialize a bfd_link_hash_table. */
42162 +extern bfd_boolean _bfd_link_hash_table_init
42163 + (struct bfd_link_hash_table *, bfd *,
42164 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
42165 + struct bfd_hash_table *,
42166 + const char *),
42167 + unsigned int);
42168 +
42169 +/* Generic link hash table creation routine. */
42170 +extern struct bfd_link_hash_table *_bfd_generic_link_hash_table_create
42171 + (bfd *);
42172 +
42173 +/* Generic link hash table destruction routine. */
42174 +extern void _bfd_generic_link_hash_table_free
42175 + (struct bfd_link_hash_table *);
42176 +
42177 +/* Generic add symbol routine. */
42178 +extern bfd_boolean _bfd_generic_link_add_symbols
42179 + (bfd *, struct bfd_link_info *);
42180 +
42181 +/* Generic add symbol routine. This version is used by targets for
42182 + which the linker must collect constructors and destructors by name,
42183 + as the collect2 program does. */
42184 +extern bfd_boolean _bfd_generic_link_add_symbols_collect
42185 + (bfd *, struct bfd_link_info *);
42186 +
42187 +/* Generic archive add symbol routine. */
42188 +extern bfd_boolean _bfd_generic_link_add_archive_symbols
42189 + (bfd *, struct bfd_link_info *,
42190 + bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
42191 +
42192 +/* Forward declaration to avoid prototype errors. */
42193 +typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
42194 +
42195 +/* Generic routine to add a single symbol. */
42196 +extern bfd_boolean _bfd_generic_link_add_one_symbol
42197 + (struct bfd_link_info *, bfd *, const char *name, flagword,
42198 + asection *, bfd_vma, const char *, bfd_boolean copy,
42199 + bfd_boolean constructor, struct bfd_link_hash_entry **);
42200 +
42201 +/* Generic routine to mark section as supplying symbols only. */
42202 +extern void _bfd_generic_link_just_syms
42203 + (asection *, struct bfd_link_info *);
42204 +
42205 +/* Generic link routine. */
42206 +extern bfd_boolean _bfd_generic_final_link
42207 + (bfd *, struct bfd_link_info *);
42208 +
42209 +extern bfd_boolean _bfd_generic_link_split_section
42210 + (bfd *, struct bfd_section *);
42211 +
42212 +extern void _bfd_generic_section_already_linked
42213 + (bfd *, struct bfd_section *, struct bfd_link_info *);
42214 +
42215 +/* Generic reloc_link_order processing routine. */
42216 +extern bfd_boolean _bfd_generic_reloc_link_order
42217 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
42218 +
42219 +/* Default link order processing routine. */
42220 +extern bfd_boolean _bfd_default_link_order
42221 + (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
42222 +
42223 +/* Count the number of reloc entries in a link order list. */
42224 +extern unsigned int _bfd_count_link_order_relocs
42225 + (struct bfd_link_order *);
42226 +
42227 +/* Final link relocation routine. */
42228 +extern bfd_reloc_status_type _bfd_final_link_relocate
42229 + (reloc_howto_type *, bfd *, asection *, bfd_byte *,
42230 + bfd_vma, bfd_vma, bfd_vma);
42231 +
42232 +/* Relocate a particular location by a howto and a value. */
42233 +extern bfd_reloc_status_type _bfd_relocate_contents
42234 + (reloc_howto_type *, bfd *, bfd_vma, bfd_byte *);
42235 +
42236 +/* Clear a given location using a given howto. */
42237 +extern void _bfd_clear_contents (reloc_howto_type *howto, bfd *input_bfd,
42238 + bfd_byte *location);
42239 +
42240 +/* Link stabs in sections in the first pass. */
42241 +
42242 +extern bfd_boolean _bfd_link_section_stabs
42243 + (bfd *, struct stab_info *, asection *, asection *, void **,
42244 + bfd_size_type *);
42245 +
42246 +/* Eliminate stabs for discarded functions and symbols. */
42247 +extern bfd_boolean _bfd_discard_section_stabs
42248 + (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *);
42249 +
42250 +/* Write out the .stab section when linking stabs in sections. */
42251 +
42252 +extern bfd_boolean _bfd_write_section_stabs
42253 + (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
42254 +
42255 +/* Write out the .stabstr string table when linking stabs in sections. */
42256 +
42257 +extern bfd_boolean _bfd_write_stab_strings
42258 + (bfd *, struct stab_info *);
42259 +
42260 +/* Find an offset within a .stab section when linking stabs in
42261 + sections. */
42262 +
42263 +extern bfd_vma _bfd_stab_section_offset
42264 + (asection *, void *, bfd_vma);
42265 +
42266 +/* Register a SEC_MERGE section as a candidate for merging. */
42267 +
42268 +extern bfd_boolean _bfd_add_merge_section
42269 + (bfd *, void **, asection *, void **);
42270 +
42271 +/* Attempt to merge SEC_MERGE sections. */
42272 +
42273 +extern bfd_boolean _bfd_merge_sections
42274 + (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *));
42275 +
42276 +/* Write out a merged section. */
42277 +
42278 +extern bfd_boolean _bfd_write_merged_section
42279 + (bfd *, asection *, void *);
42280 +
42281 +/* Find an offset within a modified SEC_MERGE section. */
42282 +
42283 +extern bfd_vma _bfd_merged_section_offset
42284 + (bfd *, asection **, void *, bfd_vma);
42285 +
42286 +/* Create a string table. */
42287 +extern struct bfd_strtab_hash *_bfd_stringtab_init
42288 + (void);
42289 +
42290 +/* Create an XCOFF .debug section style string table. */
42291 +extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
42292 + (void);
42293 +
42294 +/* Free a string table. */
42295 +extern void _bfd_stringtab_free
42296 + (struct bfd_strtab_hash *);
42297 +
42298 +/* Get the size of a string table. */
42299 +extern bfd_size_type _bfd_stringtab_size
42300 + (struct bfd_strtab_hash *);
42301 +
42302 +/* Add a string to a string table. */
42303 +extern bfd_size_type _bfd_stringtab_add
42304 + (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy);
42305 +
42306 +/* Write out a string table. */
42307 +extern bfd_boolean _bfd_stringtab_emit
42308 + (bfd *, struct bfd_strtab_hash *);
42309 +
42310 +/* Check that endianness of input and output file match. */
42311 +extern bfd_boolean _bfd_generic_verify_endian_match
42312 + (bfd *, bfd *);
42313 +\f
42314 +/* Macros to tell if bfds are read or write enabled.
42315 +
42316 + Note that bfds open for read may be scribbled into if the fd passed
42317 + to bfd_fdopenr is actually open both for read and write
42318 + simultaneously. However an output bfd will never be open for
42319 + read. Therefore sometimes you want to check bfd_read_p or
42320 + !bfd_read_p, and only sometimes bfd_write_p.
42321 +*/
42322 +
42323 +#define bfd_read_p(abfd) \
42324 + ((abfd)->direction == read_direction || (abfd)->direction == both_direction)
42325 +#define bfd_write_p(abfd) \
42326 + ((abfd)->direction == write_direction || (abfd)->direction == both_direction)
42327 +
42328 +void bfd_assert
42329 + (const char*,int);
42330 +
42331 +#define BFD_ASSERT(x) \
42332 + do { if (!(x)) bfd_assert(__FILE__,__LINE__); } while (0)
42333 +
42334 +#define BFD_FAIL() \
42335 + do { bfd_assert(__FILE__,__LINE__); } while (0)
42336 +
42337 +extern void _bfd_abort
42338 + (const char *, int, const char *) ATTRIBUTE_NORETURN;
42339 +
42340 +/* if gcc >= 2.6, we can give a function name, too */
42341 +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)
42342 +#define __PRETTY_FUNCTION__ ((char *) NULL)
42343 +#endif
42344 +
42345 +#undef abort
42346 +#define abort() _bfd_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
42347 +
42348 +/* Manipulate a system FILE but using BFD's "file_ptr", rather than
42349 + the system "off_t" or "off64_t", as the offset. */
42350 +extern file_ptr real_ftell (FILE *file);
42351 +extern int real_fseek (FILE *file, file_ptr offset, int whence);
42352 +extern FILE *real_fopen (const char *filename, const char *modes);
42353 +
42354 +/* List of supported target vectors, and the default vector (if
42355 + bfd_default_vector[0] is NULL, there is no default). */
42356 +extern const bfd_target * const *bfd_target_vector;
42357 +extern const bfd_target *bfd_default_vector[];
42358 +
42359 +/* List of associated target vectors. */
42360 +extern const bfd_target * const *bfd_associated_vector;
42361 +
42362 +/* Functions shared by the ECOFF and MIPS ELF backends, which have no
42363 + other common header files. */
42364 +
42365 +#if defined(__STDC__) || defined(ALMOST_STDC)
42366 +struct ecoff_find_line;
42367 +#endif
42368 +
42369 +extern bfd_boolean _bfd_ecoff_locate_line
42370 + (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
42371 + const struct ecoff_debug_swap * const, struct ecoff_find_line *,
42372 + const char **, const char **, unsigned int *);
42373 +extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
42374 + (void *, bfd_byte *);
42375 +extern bfd_boolean _bfd_ecoff_get_accumulated_sym
42376 + (void *, bfd_byte *);
42377 +extern bfd_boolean _bfd_ecoff_get_accumulated_ss
42378 + (void *, bfd_byte *);
42379 +
42380 +extern bfd_vma _bfd_get_gp_value
42381 + (bfd *);
42382 +extern void _bfd_set_gp_value
42383 + (bfd *, bfd_vma);
42384 +
42385 +/* Function shared by the COFF and ELF SH backends, which have no
42386 + other common header files. */
42387 +
42388 +#ifndef _bfd_sh_align_load_span
42389 +extern bfd_boolean _bfd_sh_align_load_span
42390 + (bfd *, asection *, bfd_byte *,
42391 + bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
42392 + void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
42393 +#endif
42394 +
42395 +/* This is the shape of the elements inside the already_linked hash
42396 + table. It maps a name onto a list of already_linked elements with
42397 + the same name. */
42398 +
42399 +struct bfd_section_already_linked_hash_entry
42400 +{
42401 + struct bfd_hash_entry root;
42402 + struct bfd_section_already_linked *entry;
42403 +};
42404 +
42405 +struct bfd_section_already_linked
42406 +{
42407 + struct bfd_section_already_linked *next;
42408 + asection *sec;
42409 +};
42410 +
42411 +extern struct bfd_section_already_linked_hash_entry *
42412 + bfd_section_already_linked_table_lookup (const char *);
42413 +extern bfd_boolean bfd_section_already_linked_table_insert
42414 + (struct bfd_section_already_linked_hash_entry *, asection *);
42415 +extern void bfd_section_already_linked_table_traverse
42416 + (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
42417 + void *), void *);
42418 +
42419 +extern bfd_vma read_unsigned_leb128 (bfd *, bfd_byte *, unsigned int *);
42420 +extern bfd_signed_vma read_signed_leb128 (bfd *, bfd_byte *, unsigned int *);
42421 +
42422 +/* Extracted from init.c. */
42423 +/* Extracted from libbfd.c. */
42424 +bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
42425 +
42426 +unsigned int bfd_log2 (bfd_vma x);
42427 +
42428 +/* Extracted from bfdio.c. */
42429 +struct bfd_iovec
42430 +{
42431 + /* To avoid problems with macros, a "b" rather than "f"
42432 + prefix is prepended to each method name. */
42433 + /* Attempt to read/write NBYTES on ABFD's IOSTREAM storing/fetching
42434 + bytes starting at PTR. Return the number of bytes actually
42435 + transfered (a read past end-of-file returns less than NBYTES),
42436 + or -1 (setting <<bfd_error>>) if an error occurs. */
42437 + file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
42438 + file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
42439 + file_ptr nbytes);
42440 + /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
42441 + if an error occurs. */
42442 + file_ptr (*btell) (struct bfd *abfd);
42443 + /* For the following, on successful completion a value of 0 is returned.
42444 + Otherwise, a value of -1 is returned (and <<bfd_error>> is set). */
42445 + int (*bseek) (struct bfd *abfd, file_ptr offset, int whence);
42446 + int (*bclose) (struct bfd *abfd);
42447 + int (*bflush) (struct bfd *abfd);
42448 + int (*bstat) (struct bfd *abfd, struct stat *sb);
42449 +};
42450 +/* Extracted from bfdwin.c. */
42451 +struct _bfd_window_internal {
42452 + struct _bfd_window_internal *next;
42453 + void *data;
42454 + bfd_size_type size;
42455 + int refcount : 31; /* should be enough... */
42456 + unsigned mapped : 1; /* 1 = mmap, 0 = malloc */
42457 +};
42458 +/* Extracted from cache.c. */
42459 +bfd_boolean bfd_cache_init (bfd *abfd);
42460 +
42461 +bfd_boolean bfd_cache_close (bfd *abfd);
42462 +
42463 +FILE* bfd_open_file (bfd *abfd);
42464 +
42465 +/* Extracted from reloc.c. */
42466 +#ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
42467 +
42468 +static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
42469 +
42470 + "BFD_RELOC_64",
42471 + "BFD_RELOC_32",
42472 + "BFD_RELOC_26",
42473 + "BFD_RELOC_24",
42474 + "BFD_RELOC_16",
42475 + "BFD_RELOC_14",
42476 + "BFD_RELOC_8",
42477 + "BFD_RELOC_64_PCREL",
42478 + "BFD_RELOC_32_PCREL",
42479 + "BFD_RELOC_24_PCREL",
42480 + "BFD_RELOC_16_PCREL",
42481 + "BFD_RELOC_12_PCREL",
42482 + "BFD_RELOC_8_PCREL",
42483 + "BFD_RELOC_32_SECREL",
42484 + "BFD_RELOC_32_GOT_PCREL",
42485 + "BFD_RELOC_16_GOT_PCREL",
42486 + "BFD_RELOC_8_GOT_PCREL",
42487 + "BFD_RELOC_32_GOTOFF",
42488 + "BFD_RELOC_16_GOTOFF",
42489 + "BFD_RELOC_LO16_GOTOFF",
42490 + "BFD_RELOC_HI16_GOTOFF",
42491 + "BFD_RELOC_HI16_S_GOTOFF",
42492 + "BFD_RELOC_8_GOTOFF",
42493 + "BFD_RELOC_64_PLT_PCREL",
42494 + "BFD_RELOC_32_PLT_PCREL",
42495 + "BFD_RELOC_24_PLT_PCREL",
42496 + "BFD_RELOC_16_PLT_PCREL",
42497 + "BFD_RELOC_8_PLT_PCREL",
42498 + "BFD_RELOC_64_PLTOFF",
42499 + "BFD_RELOC_32_PLTOFF",
42500 + "BFD_RELOC_16_PLTOFF",
42501 + "BFD_RELOC_LO16_PLTOFF",
42502 + "BFD_RELOC_HI16_PLTOFF",
42503 + "BFD_RELOC_HI16_S_PLTOFF",
42504 + "BFD_RELOC_8_PLTOFF",
42505 + "BFD_RELOC_68K_GLOB_DAT",
42506 + "BFD_RELOC_68K_JMP_SLOT",
42507 + "BFD_RELOC_68K_RELATIVE",
42508 + "BFD_RELOC_32_BASEREL",
42509 + "BFD_RELOC_16_BASEREL",
42510 + "BFD_RELOC_LO16_BASEREL",
42511 + "BFD_RELOC_HI16_BASEREL",
42512 + "BFD_RELOC_HI16_S_BASEREL",
42513 + "BFD_RELOC_8_BASEREL",
42514 + "BFD_RELOC_RVA",
42515 + "BFD_RELOC_8_FFnn",
42516 + "BFD_RELOC_32_PCREL_S2",
42517 + "BFD_RELOC_16_PCREL_S2",
42518 + "BFD_RELOC_23_PCREL_S2",
42519 + "BFD_RELOC_HI22",
42520 + "BFD_RELOC_LO10",
42521 + "BFD_RELOC_GPREL16",
42522 + "BFD_RELOC_GPREL32",
42523 + "BFD_RELOC_I960_CALLJ",
42524 + "BFD_RELOC_NONE",
42525 + "BFD_RELOC_SPARC_WDISP22",
42526 + "BFD_RELOC_SPARC22",
42527 + "BFD_RELOC_SPARC13",
42528 + "BFD_RELOC_SPARC_GOT10",
42529 + "BFD_RELOC_SPARC_GOT13",
42530 + "BFD_RELOC_SPARC_GOT22",
42531 + "BFD_RELOC_SPARC_PC10",
42532 + "BFD_RELOC_SPARC_PC22",
42533 + "BFD_RELOC_SPARC_WPLT30",
42534 + "BFD_RELOC_SPARC_COPY",
42535 + "BFD_RELOC_SPARC_GLOB_DAT",
42536 + "BFD_RELOC_SPARC_JMP_SLOT",
42537 + "BFD_RELOC_SPARC_RELATIVE",
42538 + "BFD_RELOC_SPARC_UA16",
42539 + "BFD_RELOC_SPARC_UA32",
42540 + "BFD_RELOC_SPARC_UA64",
42541 + "BFD_RELOC_SPARC_BASE13",
42542 + "BFD_RELOC_SPARC_BASE22",
42543 + "BFD_RELOC_SPARC_10",
42544 + "BFD_RELOC_SPARC_11",
42545 + "BFD_RELOC_SPARC_OLO10",
42546 + "BFD_RELOC_SPARC_HH22",
42547 + "BFD_RELOC_SPARC_HM10",
42548 + "BFD_RELOC_SPARC_LM22",
42549 + "BFD_RELOC_SPARC_PC_HH22",
42550 + "BFD_RELOC_SPARC_PC_HM10",
42551 + "BFD_RELOC_SPARC_PC_LM22",
42552 + "BFD_RELOC_SPARC_WDISP16",
42553 + "BFD_RELOC_SPARC_WDISP19",
42554 + "BFD_RELOC_SPARC_7",
42555 + "BFD_RELOC_SPARC_6",
42556 + "BFD_RELOC_SPARC_5",
42557 + "BFD_RELOC_SPARC_PLT32",
42558 + "BFD_RELOC_SPARC_PLT64",
42559 + "BFD_RELOC_SPARC_HIX22",
42560 + "BFD_RELOC_SPARC_LOX10",
42561 + "BFD_RELOC_SPARC_H44",
42562 + "BFD_RELOC_SPARC_M44",
42563 + "BFD_RELOC_SPARC_L44",
42564 + "BFD_RELOC_SPARC_REGISTER",
42565 + "BFD_RELOC_SPARC_REV32",
42566 + "BFD_RELOC_SPARC_TLS_GD_HI22",
42567 + "BFD_RELOC_SPARC_TLS_GD_LO10",
42568 + "BFD_RELOC_SPARC_TLS_GD_ADD",
42569 + "BFD_RELOC_SPARC_TLS_GD_CALL",
42570 + "BFD_RELOC_SPARC_TLS_LDM_HI22",
42571 + "BFD_RELOC_SPARC_TLS_LDM_LO10",
42572 + "BFD_RELOC_SPARC_TLS_LDM_ADD",
42573 + "BFD_RELOC_SPARC_TLS_LDM_CALL",
42574 + "BFD_RELOC_SPARC_TLS_LDO_HIX22",
42575 + "BFD_RELOC_SPARC_TLS_LDO_LOX10",
42576 + "BFD_RELOC_SPARC_TLS_LDO_ADD",
42577 + "BFD_RELOC_SPARC_TLS_IE_HI22",
42578 + "BFD_RELOC_SPARC_TLS_IE_LO10",
42579 + "BFD_RELOC_SPARC_TLS_IE_LD",
42580 + "BFD_RELOC_SPARC_TLS_IE_LDX",
42581 + "BFD_RELOC_SPARC_TLS_IE_ADD",
42582 + "BFD_RELOC_SPARC_TLS_LE_HIX22",
42583 + "BFD_RELOC_SPARC_TLS_LE_LOX10",
42584 + "BFD_RELOC_SPARC_TLS_DTPMOD32",
42585 + "BFD_RELOC_SPARC_TLS_DTPMOD64",
42586 + "BFD_RELOC_SPARC_TLS_DTPOFF32",
42587 + "BFD_RELOC_SPARC_TLS_DTPOFF64",
42588 + "BFD_RELOC_SPARC_TLS_TPOFF32",
42589 + "BFD_RELOC_SPARC_TLS_TPOFF64",
42590 + "BFD_RELOC_SPU_IMM7",
42591 + "BFD_RELOC_SPU_IMM8",
42592 + "BFD_RELOC_SPU_IMM10",
42593 + "BFD_RELOC_SPU_IMM10W",
42594 + "BFD_RELOC_SPU_IMM16",
42595 + "BFD_RELOC_SPU_IMM16W",
42596 + "BFD_RELOC_SPU_IMM18",
42597 + "BFD_RELOC_SPU_PCREL9a",
42598 + "BFD_RELOC_SPU_PCREL9b",
42599 + "BFD_RELOC_SPU_PCREL16",
42600 + "BFD_RELOC_SPU_LO16",
42601 + "BFD_RELOC_SPU_HI16",
42602 + "BFD_RELOC_SPU_PPU32",
42603 + "BFD_RELOC_SPU_PPU64",
42604 + "BFD_RELOC_ALPHA_GPDISP_HI16",
42605 + "BFD_RELOC_ALPHA_GPDISP_LO16",
42606 + "BFD_RELOC_ALPHA_GPDISP",
42607 + "BFD_RELOC_ALPHA_LITERAL",
42608 + "BFD_RELOC_ALPHA_ELF_LITERAL",
42609 + "BFD_RELOC_ALPHA_LITUSE",
42610 + "BFD_RELOC_ALPHA_HINT",
42611 + "BFD_RELOC_ALPHA_LINKAGE",
42612 + "BFD_RELOC_ALPHA_CODEADDR",
42613 + "BFD_RELOC_ALPHA_GPREL_HI16",
42614 + "BFD_RELOC_ALPHA_GPREL_LO16",
42615 + "BFD_RELOC_ALPHA_BRSGP",
42616 + "BFD_RELOC_ALPHA_TLSGD",
42617 + "BFD_RELOC_ALPHA_TLSLDM",
42618 + "BFD_RELOC_ALPHA_DTPMOD64",
42619 + "BFD_RELOC_ALPHA_GOTDTPREL16",
42620 + "BFD_RELOC_ALPHA_DTPREL64",
42621 + "BFD_RELOC_ALPHA_DTPREL_HI16",
42622 + "BFD_RELOC_ALPHA_DTPREL_LO16",
42623 + "BFD_RELOC_ALPHA_DTPREL16",
42624 + "BFD_RELOC_ALPHA_GOTTPREL16",
42625 + "BFD_RELOC_ALPHA_TPREL64",
42626 + "BFD_RELOC_ALPHA_TPREL_HI16",
42627 + "BFD_RELOC_ALPHA_TPREL_LO16",
42628 + "BFD_RELOC_ALPHA_TPREL16",
42629 + "BFD_RELOC_MIPS_JMP",
42630 + "BFD_RELOC_MIPS16_JMP",
42631 + "BFD_RELOC_MIPS16_GPREL",
42632 + "BFD_RELOC_HI16",
42633 + "BFD_RELOC_HI16_S",
42634 + "BFD_RELOC_LO16",
42635 + "BFD_RELOC_HI16_PCREL",
42636 + "BFD_RELOC_HI16_S_PCREL",
42637 + "BFD_RELOC_LO16_PCREL",
42638 + "BFD_RELOC_MIPS16_HI16",
42639 + "BFD_RELOC_MIPS16_HI16_S",
42640 + "BFD_RELOC_MIPS16_LO16",
42641 + "BFD_RELOC_MIPS_LITERAL",
42642 + "BFD_RELOC_MIPS_GOT16",
42643 + "BFD_RELOC_MIPS_CALL16",
42644 + "BFD_RELOC_MIPS_GOT_HI16",
42645 + "BFD_RELOC_MIPS_GOT_LO16",
42646 + "BFD_RELOC_MIPS_CALL_HI16",
42647 + "BFD_RELOC_MIPS_CALL_LO16",
42648 + "BFD_RELOC_MIPS_SUB",
42649 + "BFD_RELOC_MIPS_GOT_PAGE",
42650 + "BFD_RELOC_MIPS_GOT_OFST",
42651 + "BFD_RELOC_MIPS_GOT_DISP",
42652 + "BFD_RELOC_MIPS_SHIFT5",
42653 + "BFD_RELOC_MIPS_SHIFT6",
42654 + "BFD_RELOC_MIPS_INSERT_A",
42655 + "BFD_RELOC_MIPS_INSERT_B",
42656 + "BFD_RELOC_MIPS_DELETE",
42657 + "BFD_RELOC_MIPS_HIGHEST",
42658 + "BFD_RELOC_MIPS_HIGHER",
42659 + "BFD_RELOC_MIPS_SCN_DISP",
42660 + "BFD_RELOC_MIPS_REL16",
42661 + "BFD_RELOC_MIPS_RELGOT",
42662 + "BFD_RELOC_MIPS_JALR",
42663 + "BFD_RELOC_MIPS_TLS_DTPMOD32",
42664 + "BFD_RELOC_MIPS_TLS_DTPREL32",
42665 + "BFD_RELOC_MIPS_TLS_DTPMOD64",
42666 + "BFD_RELOC_MIPS_TLS_DTPREL64",
42667 + "BFD_RELOC_MIPS_TLS_GD",
42668 + "BFD_RELOC_MIPS_TLS_LDM",
42669 + "BFD_RELOC_MIPS_TLS_DTPREL_HI16",
42670 + "BFD_RELOC_MIPS_TLS_DTPREL_LO16",
42671 + "BFD_RELOC_MIPS_TLS_GOTTPREL",
42672 + "BFD_RELOC_MIPS_TLS_TPREL32",
42673 + "BFD_RELOC_MIPS_TLS_TPREL64",
42674 + "BFD_RELOC_MIPS_TLS_TPREL_HI16",
42675 + "BFD_RELOC_MIPS_TLS_TPREL_LO16",
42676 +
42677 + "BFD_RELOC_MIPS_COPY",
42678 + "BFD_RELOC_MIPS_JUMP_SLOT",
42679 +
42680 + "BFD_RELOC_FRV_LABEL16",
42681 + "BFD_RELOC_FRV_LABEL24",
42682 + "BFD_RELOC_FRV_LO16",
42683 + "BFD_RELOC_FRV_HI16",
42684 + "BFD_RELOC_FRV_GPREL12",
42685 + "BFD_RELOC_FRV_GPRELU12",
42686 + "BFD_RELOC_FRV_GPREL32",
42687 + "BFD_RELOC_FRV_GPRELHI",
42688 + "BFD_RELOC_FRV_GPRELLO",
42689 + "BFD_RELOC_FRV_GOT12",
42690 + "BFD_RELOC_FRV_GOTHI",
42691 + "BFD_RELOC_FRV_GOTLO",
42692 + "BFD_RELOC_FRV_FUNCDESC",
42693 + "BFD_RELOC_FRV_FUNCDESC_GOT12",
42694 + "BFD_RELOC_FRV_FUNCDESC_GOTHI",
42695 + "BFD_RELOC_FRV_FUNCDESC_GOTLO",
42696 + "BFD_RELOC_FRV_FUNCDESC_VALUE",
42697 + "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
42698 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
42699 + "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
42700 + "BFD_RELOC_FRV_GOTOFF12",
42701 + "BFD_RELOC_FRV_GOTOFFHI",
42702 + "BFD_RELOC_FRV_GOTOFFLO",
42703 + "BFD_RELOC_FRV_GETTLSOFF",
42704 + "BFD_RELOC_FRV_TLSDESC_VALUE",
42705 + "BFD_RELOC_FRV_GOTTLSDESC12",
42706 + "BFD_RELOC_FRV_GOTTLSDESCHI",
42707 + "BFD_RELOC_FRV_GOTTLSDESCLO",
42708 + "BFD_RELOC_FRV_TLSMOFF12",
42709 + "BFD_RELOC_FRV_TLSMOFFHI",
42710 + "BFD_RELOC_FRV_TLSMOFFLO",
42711 + "BFD_RELOC_FRV_GOTTLSOFF12",
42712 + "BFD_RELOC_FRV_GOTTLSOFFHI",
42713 + "BFD_RELOC_FRV_GOTTLSOFFLO",
42714 + "BFD_RELOC_FRV_TLSOFF",
42715 + "BFD_RELOC_FRV_TLSDESC_RELAX",
42716 + "BFD_RELOC_FRV_GETTLSOFF_RELAX",
42717 + "BFD_RELOC_FRV_TLSOFF_RELAX",
42718 + "BFD_RELOC_FRV_TLSMOFF",
42719 +
42720 + "BFD_RELOC_MN10300_GOTOFF24",
42721 + "BFD_RELOC_MN10300_GOT32",
42722 + "BFD_RELOC_MN10300_GOT24",
42723 + "BFD_RELOC_MN10300_GOT16",
42724 + "BFD_RELOC_MN10300_COPY",
42725 + "BFD_RELOC_MN10300_GLOB_DAT",
42726 + "BFD_RELOC_MN10300_JMP_SLOT",
42727 + "BFD_RELOC_MN10300_RELATIVE",
42728 +
42729 + "BFD_RELOC_386_GOT32",
42730 + "BFD_RELOC_386_PLT32",
42731 + "BFD_RELOC_386_COPY",
42732 + "BFD_RELOC_386_GLOB_DAT",
42733 + "BFD_RELOC_386_JUMP_SLOT",
42734 + "BFD_RELOC_386_RELATIVE",
42735 + "BFD_RELOC_386_GOTOFF",
42736 + "BFD_RELOC_386_GOTPC",
42737 + "BFD_RELOC_386_TLS_TPOFF",
42738 + "BFD_RELOC_386_TLS_IE",
42739 + "BFD_RELOC_386_TLS_GOTIE",
42740 + "BFD_RELOC_386_TLS_LE",
42741 + "BFD_RELOC_386_TLS_GD",
42742 + "BFD_RELOC_386_TLS_LDM",
42743 + "BFD_RELOC_386_TLS_LDO_32",
42744 + "BFD_RELOC_386_TLS_IE_32",
42745 + "BFD_RELOC_386_TLS_LE_32",
42746 + "BFD_RELOC_386_TLS_DTPMOD32",
42747 + "BFD_RELOC_386_TLS_DTPOFF32",
42748 + "BFD_RELOC_386_TLS_TPOFF32",
42749 + "BFD_RELOC_386_TLS_GOTDESC",
42750 + "BFD_RELOC_386_TLS_DESC_CALL",
42751 + "BFD_RELOC_386_TLS_DESC",
42752 + "BFD_RELOC_X86_64_GOT32",
42753 + "BFD_RELOC_X86_64_PLT32",
42754 + "BFD_RELOC_X86_64_COPY",
42755 + "BFD_RELOC_X86_64_GLOB_DAT",
42756 + "BFD_RELOC_X86_64_JUMP_SLOT",
42757 + "BFD_RELOC_X86_64_RELATIVE",
42758 + "BFD_RELOC_X86_64_GOTPCREL",
42759 + "BFD_RELOC_X86_64_32S",
42760 + "BFD_RELOC_X86_64_DTPMOD64",
42761 + "BFD_RELOC_X86_64_DTPOFF64",
42762 + "BFD_RELOC_X86_64_TPOFF64",
42763 + "BFD_RELOC_X86_64_TLSGD",
42764 + "BFD_RELOC_X86_64_TLSLD",
42765 + "BFD_RELOC_X86_64_DTPOFF32",
42766 + "BFD_RELOC_X86_64_GOTTPOFF",
42767 + "BFD_RELOC_X86_64_TPOFF32",
42768 + "BFD_RELOC_X86_64_GOTOFF64",
42769 + "BFD_RELOC_X86_64_GOTPC32",
42770 + "BFD_RELOC_X86_64_GOT64",
42771 + "BFD_RELOC_X86_64_GOTPCREL64",
42772 + "BFD_RELOC_X86_64_GOTPC64",
42773 + "BFD_RELOC_X86_64_GOTPLT64",
42774 + "BFD_RELOC_X86_64_PLTOFF64",
42775 + "BFD_RELOC_X86_64_GOTPC32_TLSDESC",
42776 + "BFD_RELOC_X86_64_TLSDESC_CALL",
42777 + "BFD_RELOC_X86_64_TLSDESC",
42778 + "BFD_RELOC_NS32K_IMM_8",
42779 + "BFD_RELOC_NS32K_IMM_16",
42780 + "BFD_RELOC_NS32K_IMM_32",
42781 + "BFD_RELOC_NS32K_IMM_8_PCREL",
42782 + "BFD_RELOC_NS32K_IMM_16_PCREL",
42783 + "BFD_RELOC_NS32K_IMM_32_PCREL",
42784 + "BFD_RELOC_NS32K_DISP_8",
42785 + "BFD_RELOC_NS32K_DISP_16",
42786 + "BFD_RELOC_NS32K_DISP_32",
42787 + "BFD_RELOC_NS32K_DISP_8_PCREL",
42788 + "BFD_RELOC_NS32K_DISP_16_PCREL",
42789 + "BFD_RELOC_NS32K_DISP_32_PCREL",
42790 + "BFD_RELOC_PDP11_DISP_8_PCREL",
42791 + "BFD_RELOC_PDP11_DISP_6_PCREL",
42792 + "BFD_RELOC_PJ_CODE_HI16",
42793 + "BFD_RELOC_PJ_CODE_LO16",
42794 + "BFD_RELOC_PJ_CODE_DIR16",
42795 + "BFD_RELOC_PJ_CODE_DIR32",
42796 + "BFD_RELOC_PJ_CODE_REL16",
42797 + "BFD_RELOC_PJ_CODE_REL32",
42798 + "BFD_RELOC_PPC_B26",
42799 + "BFD_RELOC_PPC_BA26",
42800 + "BFD_RELOC_PPC_TOC16",
42801 + "BFD_RELOC_PPC_B16",
42802 + "BFD_RELOC_PPC_B16_BRTAKEN",
42803 + "BFD_RELOC_PPC_B16_BRNTAKEN",
42804 + "BFD_RELOC_PPC_BA16",
42805 + "BFD_RELOC_PPC_BA16_BRTAKEN",
42806 + "BFD_RELOC_PPC_BA16_BRNTAKEN",
42807 + "BFD_RELOC_PPC_COPY",
42808 + "BFD_RELOC_PPC_GLOB_DAT",
42809 + "BFD_RELOC_PPC_JMP_SLOT",
42810 + "BFD_RELOC_PPC_RELATIVE",
42811 + "BFD_RELOC_PPC_LOCAL24PC",
42812 + "BFD_RELOC_PPC_EMB_NADDR32",
42813 + "BFD_RELOC_PPC_EMB_NADDR16",
42814 + "BFD_RELOC_PPC_EMB_NADDR16_LO",
42815 + "BFD_RELOC_PPC_EMB_NADDR16_HI",
42816 + "BFD_RELOC_PPC_EMB_NADDR16_HA",
42817 + "BFD_RELOC_PPC_EMB_SDAI16",
42818 + "BFD_RELOC_PPC_EMB_SDA2I16",
42819 + "BFD_RELOC_PPC_EMB_SDA2REL",
42820 + "BFD_RELOC_PPC_EMB_SDA21",
42821 + "BFD_RELOC_PPC_EMB_MRKREF",
42822 + "BFD_RELOC_PPC_EMB_RELSEC16",
42823 + "BFD_RELOC_PPC_EMB_RELST_LO",
42824 + "BFD_RELOC_PPC_EMB_RELST_HI",
42825 + "BFD_RELOC_PPC_EMB_RELST_HA",
42826 + "BFD_RELOC_PPC_EMB_BIT_FLD",
42827 + "BFD_RELOC_PPC_EMB_RELSDA",
42828 + "BFD_RELOC_PPC64_HIGHER",
42829 + "BFD_RELOC_PPC64_HIGHER_S",
42830 + "BFD_RELOC_PPC64_HIGHEST",
42831 + "BFD_RELOC_PPC64_HIGHEST_S",
42832 + "BFD_RELOC_PPC64_TOC16_LO",
42833 + "BFD_RELOC_PPC64_TOC16_HI",
42834 + "BFD_RELOC_PPC64_TOC16_HA",
42835 + "BFD_RELOC_PPC64_TOC",
42836 + "BFD_RELOC_PPC64_PLTGOT16",
42837 + "BFD_RELOC_PPC64_PLTGOT16_LO",
42838 + "BFD_RELOC_PPC64_PLTGOT16_HI",
42839 + "BFD_RELOC_PPC64_PLTGOT16_HA",
42840 + "BFD_RELOC_PPC64_ADDR16_DS",
42841 + "BFD_RELOC_PPC64_ADDR16_LO_DS",
42842 + "BFD_RELOC_PPC64_GOT16_DS",
42843 + "BFD_RELOC_PPC64_GOT16_LO_DS",
42844 + "BFD_RELOC_PPC64_PLT16_LO_DS",
42845 + "BFD_RELOC_PPC64_SECTOFF_DS",
42846 + "BFD_RELOC_PPC64_SECTOFF_LO_DS",
42847 + "BFD_RELOC_PPC64_TOC16_DS",
42848 + "BFD_RELOC_PPC64_TOC16_LO_DS",
42849 + "BFD_RELOC_PPC64_PLTGOT16_DS",
42850 + "BFD_RELOC_PPC64_PLTGOT16_LO_DS",
42851 + "BFD_RELOC_PPC_TLS",
42852 + "BFD_RELOC_PPC_DTPMOD",
42853 + "BFD_RELOC_PPC_TPREL16",
42854 + "BFD_RELOC_PPC_TPREL16_LO",
42855 + "BFD_RELOC_PPC_TPREL16_HI",
42856 + "BFD_RELOC_PPC_TPREL16_HA",
42857 + "BFD_RELOC_PPC_TPREL",
42858 + "BFD_RELOC_PPC_DTPREL16",
42859 + "BFD_RELOC_PPC_DTPREL16_LO",
42860 + "BFD_RELOC_PPC_DTPREL16_HI",
42861 + "BFD_RELOC_PPC_DTPREL16_HA",
42862 + "BFD_RELOC_PPC_DTPREL",
42863 + "BFD_RELOC_PPC_GOT_TLSGD16",
42864 + "BFD_RELOC_PPC_GOT_TLSGD16_LO",
42865 + "BFD_RELOC_PPC_GOT_TLSGD16_HI",
42866 + "BFD_RELOC_PPC_GOT_TLSGD16_HA",
42867 + "BFD_RELOC_PPC_GOT_TLSLD16",
42868 + "BFD_RELOC_PPC_GOT_TLSLD16_LO",
42869 + "BFD_RELOC_PPC_GOT_TLSLD16_HI",
42870 + "BFD_RELOC_PPC_GOT_TLSLD16_HA",
42871 + "BFD_RELOC_PPC_GOT_TPREL16",
42872 + "BFD_RELOC_PPC_GOT_TPREL16_LO",
42873 + "BFD_RELOC_PPC_GOT_TPREL16_HI",
42874 + "BFD_RELOC_PPC_GOT_TPREL16_HA",
42875 + "BFD_RELOC_PPC_GOT_DTPREL16",
42876 + "BFD_RELOC_PPC_GOT_DTPREL16_LO",
42877 + "BFD_RELOC_PPC_GOT_DTPREL16_HI",
42878 + "BFD_RELOC_PPC_GOT_DTPREL16_HA",
42879 + "BFD_RELOC_PPC64_TPREL16_DS",
42880 + "BFD_RELOC_PPC64_TPREL16_LO_DS",
42881 + "BFD_RELOC_PPC64_TPREL16_HIGHER",
42882 + "BFD_RELOC_PPC64_TPREL16_HIGHERA",
42883 + "BFD_RELOC_PPC64_TPREL16_HIGHEST",
42884 + "BFD_RELOC_PPC64_TPREL16_HIGHESTA",
42885 + "BFD_RELOC_PPC64_DTPREL16_DS",
42886 + "BFD_RELOC_PPC64_DTPREL16_LO_DS",
42887 + "BFD_RELOC_PPC64_DTPREL16_HIGHER",
42888 + "BFD_RELOC_PPC64_DTPREL16_HIGHERA",
42889 + "BFD_RELOC_PPC64_DTPREL16_HIGHEST",
42890 + "BFD_RELOC_PPC64_DTPREL16_HIGHESTA",
42891 + "BFD_RELOC_I370_D12",
42892 + "BFD_RELOC_CTOR",
42893 + "BFD_RELOC_ARM_PCREL_BRANCH",
42894 + "BFD_RELOC_ARM_PCREL_BLX",
42895 + "BFD_RELOC_THUMB_PCREL_BLX",
42896 + "BFD_RELOC_ARM_PCREL_CALL",
42897 + "BFD_RELOC_ARM_PCREL_JUMP",
42898 + "BFD_RELOC_THUMB_PCREL_BRANCH7",
42899 + "BFD_RELOC_THUMB_PCREL_BRANCH9",
42900 + "BFD_RELOC_THUMB_PCREL_BRANCH12",
42901 + "BFD_RELOC_THUMB_PCREL_BRANCH20",
42902 + "BFD_RELOC_THUMB_PCREL_BRANCH23",
42903 + "BFD_RELOC_THUMB_PCREL_BRANCH25",
42904 + "BFD_RELOC_ARM_OFFSET_IMM",
42905 + "BFD_RELOC_ARM_THUMB_OFFSET",
42906 + "BFD_RELOC_ARM_TARGET1",
42907 + "BFD_RELOC_ARM_ROSEGREL32",
42908 + "BFD_RELOC_ARM_SBREL32",
42909 + "BFD_RELOC_ARM_TARGET2",
42910 + "BFD_RELOC_ARM_PREL31",
42911 + "BFD_RELOC_ARM_MOVW",
42912 + "BFD_RELOC_ARM_MOVT",
42913 + "BFD_RELOC_ARM_MOVW_PCREL",
42914 + "BFD_RELOC_ARM_MOVT_PCREL",
42915 + "BFD_RELOC_ARM_THUMB_MOVW",
42916 + "BFD_RELOC_ARM_THUMB_MOVT",
42917 + "BFD_RELOC_ARM_THUMB_MOVW_PCREL",
42918 + "BFD_RELOC_ARM_THUMB_MOVT_PCREL",
42919 + "BFD_RELOC_ARM_JUMP_SLOT",
42920 + "BFD_RELOC_ARM_GLOB_DAT",
42921 + "BFD_RELOC_ARM_GOT32",
42922 + "BFD_RELOC_ARM_PLT32",
42923 + "BFD_RELOC_ARM_RELATIVE",
42924 + "BFD_RELOC_ARM_GOTOFF",
42925 + "BFD_RELOC_ARM_GOTPC",
42926 + "BFD_RELOC_ARM_TLS_GD32",
42927 + "BFD_RELOC_ARM_TLS_LDO32",
42928 + "BFD_RELOC_ARM_TLS_LDM32",
42929 + "BFD_RELOC_ARM_TLS_DTPOFF32",
42930 + "BFD_RELOC_ARM_TLS_DTPMOD32",
42931 + "BFD_RELOC_ARM_TLS_TPOFF32",
42932 + "BFD_RELOC_ARM_TLS_IE32",
42933 + "BFD_RELOC_ARM_TLS_LE32",
42934 + "BFD_RELOC_ARM_ALU_PC_G0_NC",
42935 + "BFD_RELOC_ARM_ALU_PC_G0",
42936 + "BFD_RELOC_ARM_ALU_PC_G1_NC",
42937 + "BFD_RELOC_ARM_ALU_PC_G1",
42938 + "BFD_RELOC_ARM_ALU_PC_G2",
42939 + "BFD_RELOC_ARM_LDR_PC_G0",
42940 + "BFD_RELOC_ARM_LDR_PC_G1",
42941 + "BFD_RELOC_ARM_LDR_PC_G2",
42942 + "BFD_RELOC_ARM_LDRS_PC_G0",
42943 + "BFD_RELOC_ARM_LDRS_PC_G1",
42944 + "BFD_RELOC_ARM_LDRS_PC_G2",
42945 + "BFD_RELOC_ARM_LDC_PC_G0",
42946 + "BFD_RELOC_ARM_LDC_PC_G1",
42947 + "BFD_RELOC_ARM_LDC_PC_G2",
42948 + "BFD_RELOC_ARM_ALU_SB_G0_NC",
42949 + "BFD_RELOC_ARM_ALU_SB_G0",
42950 + "BFD_RELOC_ARM_ALU_SB_G1_NC",
42951 + "BFD_RELOC_ARM_ALU_SB_G1",
42952 + "BFD_RELOC_ARM_ALU_SB_G2",
42953 + "BFD_RELOC_ARM_LDR_SB_G0",
42954 + "BFD_RELOC_ARM_LDR_SB_G1",
42955 + "BFD_RELOC_ARM_LDR_SB_G2",
42956 + "BFD_RELOC_ARM_LDRS_SB_G0",
42957 + "BFD_RELOC_ARM_LDRS_SB_G1",
42958 + "BFD_RELOC_ARM_LDRS_SB_G2",
42959 + "BFD_RELOC_ARM_LDC_SB_G0",
42960 + "BFD_RELOC_ARM_LDC_SB_G1",
42961 + "BFD_RELOC_ARM_LDC_SB_G2",
42962 + "BFD_RELOC_ARM_IMMEDIATE",
42963 + "BFD_RELOC_ARM_ADRL_IMMEDIATE",
42964 + "BFD_RELOC_ARM_T32_IMMEDIATE",
42965 + "BFD_RELOC_ARM_T32_ADD_IMM",
42966 + "BFD_RELOC_ARM_T32_IMM12",
42967 + "BFD_RELOC_ARM_T32_ADD_PC12",
42968 + "BFD_RELOC_ARM_SHIFT_IMM",
42969 + "BFD_RELOC_ARM_SMC",
42970 + "BFD_RELOC_ARM_SWI",
42971 + "BFD_RELOC_ARM_MULTI",
42972 + "BFD_RELOC_ARM_CP_OFF_IMM",
42973 + "BFD_RELOC_ARM_CP_OFF_IMM_S2",
42974 + "BFD_RELOC_ARM_T32_CP_OFF_IMM",
42975 + "BFD_RELOC_ARM_T32_CP_OFF_IMM_S2",
42976 + "BFD_RELOC_ARM_ADR_IMM",
42977 + "BFD_RELOC_ARM_LDR_IMM",
42978 + "BFD_RELOC_ARM_LITERAL",
42979 + "BFD_RELOC_ARM_IN_POOL",
42980 + "BFD_RELOC_ARM_OFFSET_IMM8",
42981 + "BFD_RELOC_ARM_T32_OFFSET_U8",
42982 + "BFD_RELOC_ARM_T32_OFFSET_IMM",
42983 + "BFD_RELOC_ARM_HWLITERAL",
42984 + "BFD_RELOC_ARM_THUMB_ADD",
42985 + "BFD_RELOC_ARM_THUMB_IMM",
42986 + "BFD_RELOC_ARM_THUMB_SHIFT",
42987 + "BFD_RELOC_SH_PCDISP8BY2",
42988 + "BFD_RELOC_SH_PCDISP12BY2",
42989 + "BFD_RELOC_SH_IMM3",
42990 + "BFD_RELOC_SH_IMM3U",
42991 + "BFD_RELOC_SH_DISP12",
42992 + "BFD_RELOC_SH_DISP12BY2",
42993 + "BFD_RELOC_SH_DISP12BY4",
42994 + "BFD_RELOC_SH_DISP12BY8",
42995 + "BFD_RELOC_SH_DISP20",
42996 + "BFD_RELOC_SH_DISP20BY8",
42997 + "BFD_RELOC_SH_IMM4",
42998 + "BFD_RELOC_SH_IMM4BY2",
42999 + "BFD_RELOC_SH_IMM4BY4",
43000 + "BFD_RELOC_SH_IMM8",
43001 + "BFD_RELOC_SH_IMM8BY2",
43002 + "BFD_RELOC_SH_IMM8BY4",
43003 + "BFD_RELOC_SH_PCRELIMM8BY2",
43004 + "BFD_RELOC_SH_PCRELIMM8BY4",
43005 + "BFD_RELOC_SH_SWITCH16",
43006 + "BFD_RELOC_SH_SWITCH32",
43007 + "BFD_RELOC_SH_USES",
43008 + "BFD_RELOC_SH_COUNT",
43009 + "BFD_RELOC_SH_ALIGN",
43010 + "BFD_RELOC_SH_CODE",
43011 + "BFD_RELOC_SH_DATA",
43012 + "BFD_RELOC_SH_LABEL",
43013 + "BFD_RELOC_SH_LOOP_START",
43014 + "BFD_RELOC_SH_LOOP_END",
43015 + "BFD_RELOC_SH_COPY",
43016 + "BFD_RELOC_SH_GLOB_DAT",
43017 + "BFD_RELOC_SH_JMP_SLOT",
43018 + "BFD_RELOC_SH_RELATIVE",
43019 + "BFD_RELOC_SH_GOTPC",
43020 + "BFD_RELOC_SH_GOT_LOW16",
43021 + "BFD_RELOC_SH_GOT_MEDLOW16",
43022 + "BFD_RELOC_SH_GOT_MEDHI16",
43023 + "BFD_RELOC_SH_GOT_HI16",
43024 + "BFD_RELOC_SH_GOTPLT_LOW16",
43025 + "BFD_RELOC_SH_GOTPLT_MEDLOW16",
43026 + "BFD_RELOC_SH_GOTPLT_MEDHI16",
43027 + "BFD_RELOC_SH_GOTPLT_HI16",
43028 + "BFD_RELOC_SH_PLT_LOW16",
43029 + "BFD_RELOC_SH_PLT_MEDLOW16",
43030 + "BFD_RELOC_SH_PLT_MEDHI16",
43031 + "BFD_RELOC_SH_PLT_HI16",
43032 + "BFD_RELOC_SH_GOTOFF_LOW16",
43033 + "BFD_RELOC_SH_GOTOFF_MEDLOW16",
43034 + "BFD_RELOC_SH_GOTOFF_MEDHI16",
43035 + "BFD_RELOC_SH_GOTOFF_HI16",
43036 + "BFD_RELOC_SH_GOTPC_LOW16",
43037 + "BFD_RELOC_SH_GOTPC_MEDLOW16",
43038 + "BFD_RELOC_SH_GOTPC_MEDHI16",
43039 + "BFD_RELOC_SH_GOTPC_HI16",
43040 + "BFD_RELOC_SH_COPY64",
43041 + "BFD_RELOC_SH_GLOB_DAT64",
43042 + "BFD_RELOC_SH_JMP_SLOT64",
43043 + "BFD_RELOC_SH_RELATIVE64",
43044 + "BFD_RELOC_SH_GOT10BY4",
43045 + "BFD_RELOC_SH_GOT10BY8",
43046 + "BFD_RELOC_SH_GOTPLT10BY4",
43047 + "BFD_RELOC_SH_GOTPLT10BY8",
43048 + "BFD_RELOC_SH_GOTPLT32",
43049 + "BFD_RELOC_SH_SHMEDIA_CODE",
43050 + "BFD_RELOC_SH_IMMU5",
43051 + "BFD_RELOC_SH_IMMS6",
43052 + "BFD_RELOC_SH_IMMS6BY32",
43053 + "BFD_RELOC_SH_IMMU6",
43054 + "BFD_RELOC_SH_IMMS10",
43055 + "BFD_RELOC_SH_IMMS10BY2",
43056 + "BFD_RELOC_SH_IMMS10BY4",
43057 + "BFD_RELOC_SH_IMMS10BY8",
43058 + "BFD_RELOC_SH_IMMS16",
43059 + "BFD_RELOC_SH_IMMU16",
43060 + "BFD_RELOC_SH_IMM_LOW16",
43061 + "BFD_RELOC_SH_IMM_LOW16_PCREL",
43062 + "BFD_RELOC_SH_IMM_MEDLOW16",
43063 + "BFD_RELOC_SH_IMM_MEDLOW16_PCREL",
43064 + "BFD_RELOC_SH_IMM_MEDHI16",
43065 + "BFD_RELOC_SH_IMM_MEDHI16_PCREL",
43066 + "BFD_RELOC_SH_IMM_HI16",
43067 + "BFD_RELOC_SH_IMM_HI16_PCREL",
43068 + "BFD_RELOC_SH_PT_16",
43069 + "BFD_RELOC_SH_TLS_GD_32",
43070 + "BFD_RELOC_SH_TLS_LD_32",
43071 + "BFD_RELOC_SH_TLS_LDO_32",
43072 + "BFD_RELOC_SH_TLS_IE_32",
43073 + "BFD_RELOC_SH_TLS_LE_32",
43074 + "BFD_RELOC_SH_TLS_DTPMOD32",
43075 + "BFD_RELOC_SH_TLS_DTPOFF32",
43076 + "BFD_RELOC_SH_TLS_TPOFF32",
43077 + "BFD_RELOC_ARC_B22_PCREL",
43078 + "BFD_RELOC_ARC_B26",
43079 + "BFD_RELOC_BFIN_16_IMM",
43080 + "BFD_RELOC_BFIN_16_HIGH",
43081 + "BFD_RELOC_BFIN_4_PCREL",
43082 + "BFD_RELOC_BFIN_5_PCREL",
43083 + "BFD_RELOC_BFIN_16_LOW",
43084 + "BFD_RELOC_BFIN_10_PCREL",
43085 + "BFD_RELOC_BFIN_11_PCREL",
43086 + "BFD_RELOC_BFIN_12_PCREL_JUMP",
43087 + "BFD_RELOC_BFIN_12_PCREL_JUMP_S",
43088 + "BFD_RELOC_BFIN_24_PCREL_CALL_X",
43089 + "BFD_RELOC_BFIN_24_PCREL_JUMP_L",
43090 + "BFD_RELOC_BFIN_GOT17M4",
43091 + "BFD_RELOC_BFIN_GOTHI",
43092 + "BFD_RELOC_BFIN_GOTLO",
43093 + "BFD_RELOC_BFIN_FUNCDESC",
43094 + "BFD_RELOC_BFIN_FUNCDESC_GOT17M4",
43095 + "BFD_RELOC_BFIN_FUNCDESC_GOTHI",
43096 + "BFD_RELOC_BFIN_FUNCDESC_GOTLO",
43097 + "BFD_RELOC_BFIN_FUNCDESC_VALUE",
43098 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4",
43099 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI",
43100 + "BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO",
43101 + "BFD_RELOC_BFIN_GOTOFF17M4",
43102 + "BFD_RELOC_BFIN_GOTOFFHI",
43103 + "BFD_RELOC_BFIN_GOTOFFLO",
43104 + "BFD_RELOC_BFIN_GOT",
43105 + "BFD_RELOC_BFIN_PLTPC",
43106 + "BFD_ARELOC_BFIN_PUSH",
43107 + "BFD_ARELOC_BFIN_CONST",
43108 + "BFD_ARELOC_BFIN_ADD",
43109 + "BFD_ARELOC_BFIN_SUB",
43110 + "BFD_ARELOC_BFIN_MULT",
43111 + "BFD_ARELOC_BFIN_DIV",
43112 + "BFD_ARELOC_BFIN_MOD",
43113 + "BFD_ARELOC_BFIN_LSHIFT",
43114 + "BFD_ARELOC_BFIN_RSHIFT",
43115 + "BFD_ARELOC_BFIN_AND",
43116 + "BFD_ARELOC_BFIN_OR",
43117 + "BFD_ARELOC_BFIN_XOR",
43118 + "BFD_ARELOC_BFIN_LAND",
43119 + "BFD_ARELOC_BFIN_LOR",
43120 + "BFD_ARELOC_BFIN_LEN",
43121 + "BFD_ARELOC_BFIN_NEG",
43122 + "BFD_ARELOC_BFIN_COMP",
43123 + "BFD_ARELOC_BFIN_PAGE",
43124 + "BFD_ARELOC_BFIN_HWPAGE",
43125 + "BFD_ARELOC_BFIN_ADDR",
43126 + "BFD_RELOC_D10V_10_PCREL_R",
43127 + "BFD_RELOC_D10V_10_PCREL_L",
43128 + "BFD_RELOC_D10V_18",
43129 + "BFD_RELOC_D10V_18_PCREL",
43130 + "BFD_RELOC_D30V_6",
43131 + "BFD_RELOC_D30V_9_PCREL",
43132 + "BFD_RELOC_D30V_9_PCREL_R",
43133 + "BFD_RELOC_D30V_15",
43134 + "BFD_RELOC_D30V_15_PCREL",
43135 + "BFD_RELOC_D30V_15_PCREL_R",
43136 + "BFD_RELOC_D30V_21",
43137 + "BFD_RELOC_D30V_21_PCREL",
43138 + "BFD_RELOC_D30V_21_PCREL_R",
43139 + "BFD_RELOC_D30V_32",
43140 + "BFD_RELOC_D30V_32_PCREL",
43141 + "BFD_RELOC_DLX_HI16_S",
43142 + "BFD_RELOC_DLX_LO16",
43143 + "BFD_RELOC_DLX_JMP26",
43144 + "BFD_RELOC_M32C_HI8",
43145 + "BFD_RELOC_M32C_RL_JUMP",
43146 + "BFD_RELOC_M32C_RL_1ADDR",
43147 + "BFD_RELOC_M32C_RL_2ADDR",
43148 + "BFD_RELOC_M32R_24",
43149 + "BFD_RELOC_M32R_10_PCREL",
43150 + "BFD_RELOC_M32R_18_PCREL",
43151 + "BFD_RELOC_M32R_26_PCREL",
43152 + "BFD_RELOC_M32R_HI16_ULO",
43153 + "BFD_RELOC_M32R_HI16_SLO",
43154 + "BFD_RELOC_M32R_LO16",
43155 + "BFD_RELOC_M32R_SDA16",
43156 + "BFD_RELOC_M32R_GOT24",
43157 + "BFD_RELOC_M32R_26_PLTREL",
43158 + "BFD_RELOC_M32R_COPY",
43159 + "BFD_RELOC_M32R_GLOB_DAT",
43160 + "BFD_RELOC_M32R_JMP_SLOT",
43161 + "BFD_RELOC_M32R_RELATIVE",
43162 + "BFD_RELOC_M32R_GOTOFF",
43163 + "BFD_RELOC_M32R_GOTOFF_HI_ULO",
43164 + "BFD_RELOC_M32R_GOTOFF_HI_SLO",
43165 + "BFD_RELOC_M32R_GOTOFF_LO",
43166 + "BFD_RELOC_M32R_GOTPC24",
43167 + "BFD_RELOC_M32R_GOT16_HI_ULO",
43168 + "BFD_RELOC_M32R_GOT16_HI_SLO",
43169 + "BFD_RELOC_M32R_GOT16_LO",
43170 + "BFD_RELOC_M32R_GOTPC_HI_ULO",
43171 + "BFD_RELOC_M32R_GOTPC_HI_SLO",
43172 + "BFD_RELOC_M32R_GOTPC_LO",
43173 + "BFD_RELOC_V850_9_PCREL",
43174 + "BFD_RELOC_V850_22_PCREL",
43175 + "BFD_RELOC_V850_SDA_16_16_OFFSET",
43176 + "BFD_RELOC_V850_SDA_15_16_OFFSET",
43177 + "BFD_RELOC_V850_ZDA_16_16_OFFSET",
43178 + "BFD_RELOC_V850_ZDA_15_16_OFFSET",
43179 + "BFD_RELOC_V850_TDA_6_8_OFFSET",
43180 + "BFD_RELOC_V850_TDA_7_8_OFFSET",
43181 + "BFD_RELOC_V850_TDA_7_7_OFFSET",
43182 + "BFD_RELOC_V850_TDA_16_16_OFFSET",
43183 + "BFD_RELOC_V850_TDA_4_5_OFFSET",
43184 + "BFD_RELOC_V850_TDA_4_4_OFFSET",
43185 + "BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET",
43186 + "BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET",
43187 + "BFD_RELOC_V850_CALLT_6_7_OFFSET",
43188 + "BFD_RELOC_V850_CALLT_16_16_OFFSET",
43189 + "BFD_RELOC_V850_LONGCALL",
43190 + "BFD_RELOC_V850_LONGJUMP",
43191 + "BFD_RELOC_V850_ALIGN",
43192 + "BFD_RELOC_V850_LO16_SPLIT_OFFSET",
43193 + "BFD_RELOC_MN10300_32_PCREL",
43194 + "BFD_RELOC_MN10300_16_PCREL",
43195 + "BFD_RELOC_TIC30_LDP",
43196 + "BFD_RELOC_TIC54X_PARTLS7",
43197 + "BFD_RELOC_TIC54X_PARTMS9",
43198 + "BFD_RELOC_TIC54X_23",
43199 + "BFD_RELOC_TIC54X_16_OF_23",
43200 + "BFD_RELOC_TIC54X_MS7_OF_23",
43201 + "BFD_RELOC_FR30_48",
43202 + "BFD_RELOC_FR30_20",
43203 + "BFD_RELOC_FR30_6_IN_4",
43204 + "BFD_RELOC_FR30_8_IN_8",
43205 + "BFD_RELOC_FR30_9_IN_8",
43206 + "BFD_RELOC_FR30_10_IN_8",
43207 + "BFD_RELOC_FR30_9_PCREL",
43208 + "BFD_RELOC_FR30_12_PCREL",
43209 + "BFD_RELOC_MCORE_PCREL_IMM8BY4",
43210 + "BFD_RELOC_MCORE_PCREL_IMM11BY2",
43211 + "BFD_RELOC_MCORE_PCREL_IMM4BY2",
43212 + "BFD_RELOC_MCORE_PCREL_32",
43213 + "BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2",
43214 + "BFD_RELOC_MCORE_RVA",
43215 + "BFD_RELOC_MEP_8",
43216 + "BFD_RELOC_MEP_16",
43217 + "BFD_RELOC_MEP_32",
43218 + "BFD_RELOC_MEP_PCREL8A2",
43219 + "BFD_RELOC_MEP_PCREL12A2",
43220 + "BFD_RELOC_MEP_PCREL17A2",
43221 + "BFD_RELOC_MEP_PCREL24A2",
43222 + "BFD_RELOC_MEP_PCABS24A2",
43223 + "BFD_RELOC_MEP_LOW16",
43224 + "BFD_RELOC_MEP_HI16U",
43225 + "BFD_RELOC_MEP_HI16S",
43226 + "BFD_RELOC_MEP_GPREL",
43227 + "BFD_RELOC_MEP_TPREL",
43228 + "BFD_RELOC_MEP_TPREL7",
43229 + "BFD_RELOC_MEP_TPREL7A2",
43230 + "BFD_RELOC_MEP_TPREL7A4",
43231 + "BFD_RELOC_MEP_UIMM24",
43232 + "BFD_RELOC_MEP_ADDR24A4",
43233 + "BFD_RELOC_MEP_GNU_VTINHERIT",
43234 + "BFD_RELOC_MEP_GNU_VTENTRY",
43235 +
43236 + "BFD_RELOC_MMIX_GETA",
43237 + "BFD_RELOC_MMIX_GETA_1",
43238 + "BFD_RELOC_MMIX_GETA_2",
43239 + "BFD_RELOC_MMIX_GETA_3",
43240 + "BFD_RELOC_MMIX_CBRANCH",
43241 + "BFD_RELOC_MMIX_CBRANCH_J",
43242 + "BFD_RELOC_MMIX_CBRANCH_1",
43243 + "BFD_RELOC_MMIX_CBRANCH_2",
43244 + "BFD_RELOC_MMIX_CBRANCH_3",
43245 + "BFD_RELOC_MMIX_PUSHJ",
43246 + "BFD_RELOC_MMIX_PUSHJ_1",
43247 + "BFD_RELOC_MMIX_PUSHJ_2",
43248 + "BFD_RELOC_MMIX_PUSHJ_3",
43249 + "BFD_RELOC_MMIX_PUSHJ_STUBBABLE",
43250 + "BFD_RELOC_MMIX_JMP",
43251 + "BFD_RELOC_MMIX_JMP_1",
43252 + "BFD_RELOC_MMIX_JMP_2",
43253 + "BFD_RELOC_MMIX_JMP_3",
43254 + "BFD_RELOC_MMIX_ADDR19",
43255 + "BFD_RELOC_MMIX_ADDR27",
43256 + "BFD_RELOC_MMIX_REG_OR_BYTE",
43257 + "BFD_RELOC_MMIX_REG",
43258 + "BFD_RELOC_MMIX_BASE_PLUS_OFFSET",
43259 + "BFD_RELOC_MMIX_LOCAL",
43260 + "BFD_RELOC_AVR_7_PCREL",
43261 + "BFD_RELOC_AVR_13_PCREL",
43262 + "BFD_RELOC_AVR_16_PM",
43263 + "BFD_RELOC_AVR_LO8_LDI",
43264 + "BFD_RELOC_AVR_HI8_LDI",
43265 + "BFD_RELOC_AVR_HH8_LDI",
43266 + "BFD_RELOC_AVR_MS8_LDI",
43267 + "BFD_RELOC_AVR_LO8_LDI_NEG",
43268 + "BFD_RELOC_AVR_HI8_LDI_NEG",
43269 + "BFD_RELOC_AVR_HH8_LDI_NEG",
43270 + "BFD_RELOC_AVR_MS8_LDI_NEG",
43271 + "BFD_RELOC_AVR_LO8_LDI_PM",
43272 + "BFD_RELOC_AVR_LO8_LDI_GS",
43273 + "BFD_RELOC_AVR_HI8_LDI_PM",
43274 + "BFD_RELOC_AVR_HI8_LDI_GS",
43275 + "BFD_RELOC_AVR_HH8_LDI_PM",
43276 + "BFD_RELOC_AVR_LO8_LDI_PM_NEG",
43277 + "BFD_RELOC_AVR_HI8_LDI_PM_NEG",
43278 + "BFD_RELOC_AVR_HH8_LDI_PM_NEG",
43279 + "BFD_RELOC_AVR_CALL",
43280 + "BFD_RELOC_AVR_LDI",
43281 + "BFD_RELOC_AVR_6",
43282 + "BFD_RELOC_AVR_6_ADIW",
43283 + "BFD_RELOC_AVR32_DIFF32",
43284 + "BFD_RELOC_AVR32_DIFF16",
43285 + "BFD_RELOC_AVR32_DIFF8",
43286 + "BFD_RELOC_AVR32_GOT32",
43287 + "BFD_RELOC_AVR32_GOT16",
43288 + "BFD_RELOC_AVR32_GOT8",
43289 + "BFD_RELOC_AVR32_21S",
43290 + "BFD_RELOC_AVR32_16U",
43291 + "BFD_RELOC_AVR32_16S",
43292 + "BFD_RELOC_AVR32_SUB5",
43293 + "BFD_RELOC_AVR32_8S_EXT",
43294 + "BFD_RELOC_AVR32_8S",
43295 + "BFD_RELOC_AVR32_15S",
43296 + "BFD_RELOC_AVR32_22H_PCREL",
43297 + "BFD_RELOC_AVR32_18W_PCREL",
43298 + "BFD_RELOC_AVR32_16B_PCREL",
43299 + "BFD_RELOC_AVR32_16N_PCREL",
43300 + "BFD_RELOC_AVR32_14UW_PCREL",
43301 + "BFD_RELOC_AVR32_11H_PCREL",
43302 + "BFD_RELOC_AVR32_10UW_PCREL",
43303 + "BFD_RELOC_AVR32_9H_PCREL",
43304 + "BFD_RELOC_AVR32_9UW_PCREL",
43305 + "BFD_RELOC_AVR32_GOTPC",
43306 + "BFD_RELOC_AVR32_GOTCALL",
43307 + "BFD_RELOC_AVR32_LDA_GOT",
43308 + "BFD_RELOC_AVR32_GOT21S",
43309 + "BFD_RELOC_AVR32_GOT18SW",
43310 + "BFD_RELOC_AVR32_GOT16S",
43311 + "BFD_RELOC_AVR32_32_CPENT",
43312 + "BFD_RELOC_AVR32_CPCALL",
43313 + "BFD_RELOC_AVR32_16_CP",
43314 + "BFD_RELOC_AVR32_9W_CP",
43315 + "BFD_RELOC_AVR32_ALIGN",
43316 + "BFD_RELOC_AVR32_14UW",
43317 + "BFD_RELOC_AVR32_10UW",
43318 + "BFD_RELOC_AVR32_10SW",
43319 + "BFD_RELOC_AVR32_STHH_W",
43320 + "BFD_RELOC_AVR32_7UW",
43321 + "BFD_RELOC_AVR32_6S",
43322 + "BFD_RELOC_AVR32_6UW",
43323 + "BFD_RELOC_AVR32_4UH",
43324 + "BFD_RELOC_AVR32_3U",
43325 + "BFD_RELOC_390_12",
43326 + "BFD_RELOC_390_GOT12",
43327 + "BFD_RELOC_390_PLT32",
43328 + "BFD_RELOC_390_COPY",
43329 + "BFD_RELOC_390_GLOB_DAT",
43330 + "BFD_RELOC_390_JMP_SLOT",
43331 + "BFD_RELOC_390_RELATIVE",
43332 + "BFD_RELOC_390_GOTPC",
43333 + "BFD_RELOC_390_GOT16",
43334 + "BFD_RELOC_390_PC16DBL",
43335 + "BFD_RELOC_390_PLT16DBL",
43336 + "BFD_RELOC_390_PC32DBL",
43337 + "BFD_RELOC_390_PLT32DBL",
43338 + "BFD_RELOC_390_GOTPCDBL",
43339 + "BFD_RELOC_390_GOT64",
43340 + "BFD_RELOC_390_PLT64",
43341 + "BFD_RELOC_390_GOTENT",
43342 + "BFD_RELOC_390_GOTOFF64",
43343 + "BFD_RELOC_390_GOTPLT12",
43344 + "BFD_RELOC_390_GOTPLT16",
43345 + "BFD_RELOC_390_GOTPLT32",
43346 + "BFD_RELOC_390_GOTPLT64",
43347 + "BFD_RELOC_390_GOTPLTENT",
43348 + "BFD_RELOC_390_PLTOFF16",
43349 + "BFD_RELOC_390_PLTOFF32",
43350 + "BFD_RELOC_390_PLTOFF64",
43351 + "BFD_RELOC_390_TLS_LOAD",
43352 + "BFD_RELOC_390_TLS_GDCALL",
43353 + "BFD_RELOC_390_TLS_LDCALL",
43354 + "BFD_RELOC_390_TLS_GD32",
43355 + "BFD_RELOC_390_TLS_GD64",
43356 + "BFD_RELOC_390_TLS_GOTIE12",
43357 + "BFD_RELOC_390_TLS_GOTIE32",
43358 + "BFD_RELOC_390_TLS_GOTIE64",
43359 + "BFD_RELOC_390_TLS_LDM32",
43360 + "BFD_RELOC_390_TLS_LDM64",
43361 + "BFD_RELOC_390_TLS_IE32",
43362 + "BFD_RELOC_390_TLS_IE64",
43363 + "BFD_RELOC_390_TLS_IEENT",
43364 + "BFD_RELOC_390_TLS_LE32",
43365 + "BFD_RELOC_390_TLS_LE64",
43366 + "BFD_RELOC_390_TLS_LDO32",
43367 + "BFD_RELOC_390_TLS_LDO64",
43368 + "BFD_RELOC_390_TLS_DTPMOD",
43369 + "BFD_RELOC_390_TLS_DTPOFF",
43370 + "BFD_RELOC_390_TLS_TPOFF",
43371 + "BFD_RELOC_390_20",
43372 + "BFD_RELOC_390_GOT20",
43373 + "BFD_RELOC_390_GOTPLT20",
43374 + "BFD_RELOC_390_TLS_GOTIE20",
43375 + "BFD_RELOC_SCORE_DUMMY1",
43376 + "BFD_RELOC_SCORE_GPREL15",
43377 + "BFD_RELOC_SCORE_DUMMY2",
43378 + "BFD_RELOC_SCORE_JMP",
43379 + "BFD_RELOC_SCORE_BRANCH",
43380 + "BFD_RELOC_SCORE16_JMP",
43381 + "BFD_RELOC_SCORE16_BRANCH",
43382 + "BFD_RELOC_SCORE_GOT15",
43383 + "BFD_RELOC_SCORE_GOT_LO16",
43384 + "BFD_RELOC_SCORE_CALL15",
43385 + "BFD_RELOC_SCORE_DUMMY_HI16",
43386 + "BFD_RELOC_IP2K_FR9",
43387 + "BFD_RELOC_IP2K_BANK",
43388 + "BFD_RELOC_IP2K_ADDR16CJP",
43389 + "BFD_RELOC_IP2K_PAGE3",
43390 + "BFD_RELOC_IP2K_LO8DATA",
43391 + "BFD_RELOC_IP2K_HI8DATA",
43392 + "BFD_RELOC_IP2K_EX8DATA",
43393 + "BFD_RELOC_IP2K_LO8INSN",
43394 + "BFD_RELOC_IP2K_HI8INSN",
43395 + "BFD_RELOC_IP2K_PC_SKIP",
43396 + "BFD_RELOC_IP2K_TEXT",
43397 + "BFD_RELOC_IP2K_FR_OFFSET",
43398 + "BFD_RELOC_VPE4KMATH_DATA",
43399 + "BFD_RELOC_VPE4KMATH_INSN",
43400 + "BFD_RELOC_VTABLE_INHERIT",
43401 + "BFD_RELOC_VTABLE_ENTRY",
43402 + "BFD_RELOC_IA64_IMM14",
43403 + "BFD_RELOC_IA64_IMM22",
43404 + "BFD_RELOC_IA64_IMM64",
43405 + "BFD_RELOC_IA64_DIR32MSB",
43406 + "BFD_RELOC_IA64_DIR32LSB",
43407 + "BFD_RELOC_IA64_DIR64MSB",
43408 + "BFD_RELOC_IA64_DIR64LSB",
43409 + "BFD_RELOC_IA64_GPREL22",
43410 + "BFD_RELOC_IA64_GPREL64I",
43411 + "BFD_RELOC_IA64_GPREL32MSB",
43412 + "BFD_RELOC_IA64_GPREL32LSB",
43413 + "BFD_RELOC_IA64_GPREL64MSB",
43414 + "BFD_RELOC_IA64_GPREL64LSB",
43415 + "BFD_RELOC_IA64_LTOFF22",
43416 + "BFD_RELOC_IA64_LTOFF64I",
43417 + "BFD_RELOC_IA64_PLTOFF22",
43418 + "BFD_RELOC_IA64_PLTOFF64I",
43419 + "BFD_RELOC_IA64_PLTOFF64MSB",
43420 + "BFD_RELOC_IA64_PLTOFF64LSB",
43421 + "BFD_RELOC_IA64_FPTR64I",
43422 + "BFD_RELOC_IA64_FPTR32MSB",
43423 + "BFD_RELOC_IA64_FPTR32LSB",
43424 + "BFD_RELOC_IA64_FPTR64MSB",
43425 + "BFD_RELOC_IA64_FPTR64LSB",
43426 + "BFD_RELOC_IA64_PCREL21B",
43427 + "BFD_RELOC_IA64_PCREL21BI",
43428 + "BFD_RELOC_IA64_PCREL21M",
43429 + "BFD_RELOC_IA64_PCREL21F",
43430 + "BFD_RELOC_IA64_PCREL22",
43431 + "BFD_RELOC_IA64_PCREL60B",
43432 + "BFD_RELOC_IA64_PCREL64I",
43433 + "BFD_RELOC_IA64_PCREL32MSB",
43434 + "BFD_RELOC_IA64_PCREL32LSB",
43435 + "BFD_RELOC_IA64_PCREL64MSB",
43436 + "BFD_RELOC_IA64_PCREL64LSB",
43437 + "BFD_RELOC_IA64_LTOFF_FPTR22",
43438 + "BFD_RELOC_IA64_LTOFF_FPTR64I",
43439 + "BFD_RELOC_IA64_LTOFF_FPTR32MSB",
43440 + "BFD_RELOC_IA64_LTOFF_FPTR32LSB",
43441 + "BFD_RELOC_IA64_LTOFF_FPTR64MSB",
43442 + "BFD_RELOC_IA64_LTOFF_FPTR64LSB",
43443 + "BFD_RELOC_IA64_SEGREL32MSB",
43444 + "BFD_RELOC_IA64_SEGREL32LSB",
43445 + "BFD_RELOC_IA64_SEGREL64MSB",
43446 + "BFD_RELOC_IA64_SEGREL64LSB",
43447 + "BFD_RELOC_IA64_SECREL32MSB",
43448 + "BFD_RELOC_IA64_SECREL32LSB",
43449 + "BFD_RELOC_IA64_SECREL64MSB",
43450 + "BFD_RELOC_IA64_SECREL64LSB",
43451 + "BFD_RELOC_IA64_REL32MSB",
43452 + "BFD_RELOC_IA64_REL32LSB",
43453 + "BFD_RELOC_IA64_REL64MSB",
43454 + "BFD_RELOC_IA64_REL64LSB",
43455 + "BFD_RELOC_IA64_LTV32MSB",
43456 + "BFD_RELOC_IA64_LTV32LSB",
43457 + "BFD_RELOC_IA64_LTV64MSB",
43458 + "BFD_RELOC_IA64_LTV64LSB",
43459 + "BFD_RELOC_IA64_IPLTMSB",
43460 + "BFD_RELOC_IA64_IPLTLSB",
43461 + "BFD_RELOC_IA64_COPY",
43462 + "BFD_RELOC_IA64_LTOFF22X",
43463 + "BFD_RELOC_IA64_LDXMOV",
43464 + "BFD_RELOC_IA64_TPREL14",
43465 + "BFD_RELOC_IA64_TPREL22",
43466 + "BFD_RELOC_IA64_TPREL64I",
43467 + "BFD_RELOC_IA64_TPREL64MSB",
43468 + "BFD_RELOC_IA64_TPREL64LSB",
43469 + "BFD_RELOC_IA64_LTOFF_TPREL22",
43470 + "BFD_RELOC_IA64_DTPMOD64MSB",
43471 + "BFD_RELOC_IA64_DTPMOD64LSB",
43472 + "BFD_RELOC_IA64_LTOFF_DTPMOD22",
43473 + "BFD_RELOC_IA64_DTPREL14",
43474 + "BFD_RELOC_IA64_DTPREL22",
43475 + "BFD_RELOC_IA64_DTPREL64I",
43476 + "BFD_RELOC_IA64_DTPREL32MSB",
43477 + "BFD_RELOC_IA64_DTPREL32LSB",
43478 + "BFD_RELOC_IA64_DTPREL64MSB",
43479 + "BFD_RELOC_IA64_DTPREL64LSB",
43480 + "BFD_RELOC_IA64_LTOFF_DTPREL22",
43481 + "BFD_RELOC_M68HC11_HI8",
43482 + "BFD_RELOC_M68HC11_LO8",
43483 + "BFD_RELOC_M68HC11_3B",
43484 + "BFD_RELOC_M68HC11_RL_JUMP",
43485 + "BFD_RELOC_M68HC11_RL_GROUP",
43486 + "BFD_RELOC_M68HC11_LO16",
43487 + "BFD_RELOC_M68HC11_PAGE",
43488 + "BFD_RELOC_M68HC11_24",
43489 + "BFD_RELOC_M68HC12_5B",
43490 + "BFD_RELOC_16C_NUM08",
43491 + "BFD_RELOC_16C_NUM08_C",
43492 + "BFD_RELOC_16C_NUM16",
43493 + "BFD_RELOC_16C_NUM16_C",
43494 + "BFD_RELOC_16C_NUM32",
43495 + "BFD_RELOC_16C_NUM32_C",
43496 + "BFD_RELOC_16C_DISP04",
43497 + "BFD_RELOC_16C_DISP04_C",
43498 + "BFD_RELOC_16C_DISP08",
43499 + "BFD_RELOC_16C_DISP08_C",
43500 + "BFD_RELOC_16C_DISP16",
43501 + "BFD_RELOC_16C_DISP16_C",
43502 + "BFD_RELOC_16C_DISP24",
43503 + "BFD_RELOC_16C_DISP24_C",
43504 + "BFD_RELOC_16C_DISP24a",
43505 + "BFD_RELOC_16C_DISP24a_C",
43506 + "BFD_RELOC_16C_REG04",
43507 + "BFD_RELOC_16C_REG04_C",
43508 + "BFD_RELOC_16C_REG04a",
43509 + "BFD_RELOC_16C_REG04a_C",
43510 + "BFD_RELOC_16C_REG14",
43511 + "BFD_RELOC_16C_REG14_C",
43512 + "BFD_RELOC_16C_REG16",
43513 + "BFD_RELOC_16C_REG16_C",
43514 + "BFD_RELOC_16C_REG20",
43515 + "BFD_RELOC_16C_REG20_C",
43516 + "BFD_RELOC_16C_ABS20",
43517 + "BFD_RELOC_16C_ABS20_C",
43518 + "BFD_RELOC_16C_ABS24",
43519 + "BFD_RELOC_16C_ABS24_C",
43520 + "BFD_RELOC_16C_IMM04",
43521 + "BFD_RELOC_16C_IMM04_C",
43522 + "BFD_RELOC_16C_IMM16",
43523 + "BFD_RELOC_16C_IMM16_C",
43524 + "BFD_RELOC_16C_IMM20",
43525 + "BFD_RELOC_16C_IMM20_C",
43526 + "BFD_RELOC_16C_IMM24",
43527 + "BFD_RELOC_16C_IMM24_C",
43528 + "BFD_RELOC_16C_IMM32",
43529 + "BFD_RELOC_16C_IMM32_C",
43530 + "BFD_RELOC_CR16_NUM8",
43531 + "BFD_RELOC_CR16_NUM16",
43532 + "BFD_RELOC_CR16_NUM32",
43533 + "BFD_RELOC_CR16_NUM32a",
43534 + "BFD_RELOC_CR16_REGREL0",
43535 + "BFD_RELOC_CR16_REGREL4",
43536 + "BFD_RELOC_CR16_REGREL4a",
43537 + "BFD_RELOC_CR16_REGREL14",
43538 + "BFD_RELOC_CR16_REGREL14a",
43539 + "BFD_RELOC_CR16_REGREL16",
43540 + "BFD_RELOC_CR16_REGREL20",
43541 + "BFD_RELOC_CR16_REGREL20a",
43542 + "BFD_RELOC_CR16_ABS20",
43543 + "BFD_RELOC_CR16_ABS24",
43544 + "BFD_RELOC_CR16_IMM4",
43545 + "BFD_RELOC_CR16_IMM8",
43546 + "BFD_RELOC_CR16_IMM16",
43547 + "BFD_RELOC_CR16_IMM20",
43548 + "BFD_RELOC_CR16_IMM24",
43549 + "BFD_RELOC_CR16_IMM32",
43550 + "BFD_RELOC_CR16_IMM32a",
43551 + "BFD_RELOC_CR16_DISP4",
43552 + "BFD_RELOC_CR16_DISP8",
43553 + "BFD_RELOC_CR16_DISP16",
43554 + "BFD_RELOC_CR16_DISP20",
43555 + "BFD_RELOC_CR16_DISP24",
43556 + "BFD_RELOC_CR16_DISP24a",
43557 + "BFD_RELOC_CRX_REL4",
43558 + "BFD_RELOC_CRX_REL8",
43559 + "BFD_RELOC_CRX_REL8_CMP",
43560 + "BFD_RELOC_CRX_REL16",
43561 + "BFD_RELOC_CRX_REL24",
43562 + "BFD_RELOC_CRX_REL32",
43563 + "BFD_RELOC_CRX_REGREL12",
43564 + "BFD_RELOC_CRX_REGREL22",
43565 + "BFD_RELOC_CRX_REGREL28",
43566 + "BFD_RELOC_CRX_REGREL32",
43567 + "BFD_RELOC_CRX_ABS16",
43568 + "BFD_RELOC_CRX_ABS32",
43569 + "BFD_RELOC_CRX_NUM8",
43570 + "BFD_RELOC_CRX_NUM16",
43571 + "BFD_RELOC_CRX_NUM32",
43572 + "BFD_RELOC_CRX_IMM16",
43573 + "BFD_RELOC_CRX_IMM32",
43574 + "BFD_RELOC_CRX_SWITCH8",
43575 + "BFD_RELOC_CRX_SWITCH16",
43576 + "BFD_RELOC_CRX_SWITCH32",
43577 + "BFD_RELOC_CRIS_BDISP8",
43578 + "BFD_RELOC_CRIS_UNSIGNED_5",
43579 + "BFD_RELOC_CRIS_SIGNED_6",
43580 + "BFD_RELOC_CRIS_UNSIGNED_6",
43581 + "BFD_RELOC_CRIS_SIGNED_8",
43582 + "BFD_RELOC_CRIS_UNSIGNED_8",
43583 + "BFD_RELOC_CRIS_SIGNED_16",
43584 + "BFD_RELOC_CRIS_UNSIGNED_16",
43585 + "BFD_RELOC_CRIS_LAPCQ_OFFSET",
43586 + "BFD_RELOC_CRIS_UNSIGNED_4",
43587 + "BFD_RELOC_CRIS_COPY",
43588 + "BFD_RELOC_CRIS_GLOB_DAT",
43589 + "BFD_RELOC_CRIS_JUMP_SLOT",
43590 + "BFD_RELOC_CRIS_RELATIVE",
43591 + "BFD_RELOC_CRIS_32_GOT",
43592 + "BFD_RELOC_CRIS_16_GOT",
43593 + "BFD_RELOC_CRIS_32_GOTPLT",
43594 + "BFD_RELOC_CRIS_16_GOTPLT",
43595 + "BFD_RELOC_CRIS_32_GOTREL",
43596 + "BFD_RELOC_CRIS_32_PLT_GOTREL",
43597 + "BFD_RELOC_CRIS_32_PLT_PCREL",
43598 + "BFD_RELOC_860_COPY",
43599 + "BFD_RELOC_860_GLOB_DAT",
43600 + "BFD_RELOC_860_JUMP_SLOT",
43601 + "BFD_RELOC_860_RELATIVE",
43602 + "BFD_RELOC_860_PC26",
43603 + "BFD_RELOC_860_PLT26",
43604 + "BFD_RELOC_860_PC16",
43605 + "BFD_RELOC_860_LOW0",
43606 + "BFD_RELOC_860_SPLIT0",
43607 + "BFD_RELOC_860_LOW1",
43608 + "BFD_RELOC_860_SPLIT1",
43609 + "BFD_RELOC_860_LOW2",
43610 + "BFD_RELOC_860_SPLIT2",
43611 + "BFD_RELOC_860_LOW3",
43612 + "BFD_RELOC_860_LOGOT0",
43613 + "BFD_RELOC_860_SPGOT0",
43614 + "BFD_RELOC_860_LOGOT1",
43615 + "BFD_RELOC_860_SPGOT1",
43616 + "BFD_RELOC_860_LOGOTOFF0",
43617 + "BFD_RELOC_860_SPGOTOFF0",
43618 + "BFD_RELOC_860_LOGOTOFF1",
43619 + "BFD_RELOC_860_SPGOTOFF1",
43620 + "BFD_RELOC_860_LOGOTOFF2",
43621 + "BFD_RELOC_860_LOGOTOFF3",
43622 + "BFD_RELOC_860_LOPC",
43623 + "BFD_RELOC_860_HIGHADJ",
43624 + "BFD_RELOC_860_HAGOT",
43625 + "BFD_RELOC_860_HAGOTOFF",
43626 + "BFD_RELOC_860_HAPC",
43627 + "BFD_RELOC_860_HIGH",
43628 + "BFD_RELOC_860_HIGOT",
43629 + "BFD_RELOC_860_HIGOTOFF",
43630 + "BFD_RELOC_OPENRISC_ABS_26",
43631 + "BFD_RELOC_OPENRISC_REL_26",
43632 + "BFD_RELOC_H8_DIR16A8",
43633 + "BFD_RELOC_H8_DIR16R8",
43634 + "BFD_RELOC_H8_DIR24A8",
43635 + "BFD_RELOC_H8_DIR24R8",
43636 + "BFD_RELOC_H8_DIR32A16",
43637 + "BFD_RELOC_XSTORMY16_REL_12",
43638 + "BFD_RELOC_XSTORMY16_12",
43639 + "BFD_RELOC_XSTORMY16_24",
43640 + "BFD_RELOC_XSTORMY16_FPTR16",
43641 + "BFD_RELOC_RELC",
43642 +
43643 + "BFD_RELOC_XC16X_PAG",
43644 + "BFD_RELOC_XC16X_POF",
43645 + "BFD_RELOC_XC16X_SEG",
43646 + "BFD_RELOC_XC16X_SOF",
43647 + "BFD_RELOC_VAX_GLOB_DAT",
43648 + "BFD_RELOC_VAX_JMP_SLOT",
43649 + "BFD_RELOC_VAX_RELATIVE",
43650 + "BFD_RELOC_MT_PC16",
43651 + "BFD_RELOC_MT_HI16",
43652 + "BFD_RELOC_MT_LO16",
43653 + "BFD_RELOC_MT_GNU_VTINHERIT",
43654 + "BFD_RELOC_MT_GNU_VTENTRY",
43655 + "BFD_RELOC_MT_PCINSN8",
43656 + "BFD_RELOC_MSP430_10_PCREL",
43657 + "BFD_RELOC_MSP430_16_PCREL",
43658 + "BFD_RELOC_MSP430_16",
43659 + "BFD_RELOC_MSP430_16_PCREL_BYTE",
43660 + "BFD_RELOC_MSP430_16_BYTE",
43661 + "BFD_RELOC_MSP430_2X_PCREL",
43662 + "BFD_RELOC_MSP430_RL_PCREL",
43663 + "BFD_RELOC_IQ2000_OFFSET_16",
43664 + "BFD_RELOC_IQ2000_OFFSET_21",
43665 + "BFD_RELOC_IQ2000_UHI16",
43666 + "BFD_RELOC_XTENSA_RTLD",
43667 + "BFD_RELOC_XTENSA_GLOB_DAT",
43668 + "BFD_RELOC_XTENSA_JMP_SLOT",
43669 + "BFD_RELOC_XTENSA_RELATIVE",
43670 + "BFD_RELOC_XTENSA_PLT",
43671 + "BFD_RELOC_XTENSA_DIFF8",
43672 + "BFD_RELOC_XTENSA_DIFF16",
43673 + "BFD_RELOC_XTENSA_DIFF32",
43674 + "BFD_RELOC_XTENSA_SLOT0_OP",
43675 + "BFD_RELOC_XTENSA_SLOT1_OP",
43676 + "BFD_RELOC_XTENSA_SLOT2_OP",
43677 + "BFD_RELOC_XTENSA_SLOT3_OP",
43678 + "BFD_RELOC_XTENSA_SLOT4_OP",
43679 + "BFD_RELOC_XTENSA_SLOT5_OP",
43680 + "BFD_RELOC_XTENSA_SLOT6_OP",
43681 + "BFD_RELOC_XTENSA_SLOT7_OP",
43682 + "BFD_RELOC_XTENSA_SLOT8_OP",
43683 + "BFD_RELOC_XTENSA_SLOT9_OP",
43684 + "BFD_RELOC_XTENSA_SLOT10_OP",
43685 + "BFD_RELOC_XTENSA_SLOT11_OP",
43686 + "BFD_RELOC_XTENSA_SLOT12_OP",
43687 + "BFD_RELOC_XTENSA_SLOT13_OP",
43688 + "BFD_RELOC_XTENSA_SLOT14_OP",
43689 + "BFD_RELOC_XTENSA_SLOT0_ALT",
43690 + "BFD_RELOC_XTENSA_SLOT1_ALT",
43691 + "BFD_RELOC_XTENSA_SLOT2_ALT",
43692 + "BFD_RELOC_XTENSA_SLOT3_ALT",
43693 + "BFD_RELOC_XTENSA_SLOT4_ALT",
43694 + "BFD_RELOC_XTENSA_SLOT5_ALT",
43695 + "BFD_RELOC_XTENSA_SLOT6_ALT",
43696 + "BFD_RELOC_XTENSA_SLOT7_ALT",
43697 + "BFD_RELOC_XTENSA_SLOT8_ALT",
43698 + "BFD_RELOC_XTENSA_SLOT9_ALT",
43699 + "BFD_RELOC_XTENSA_SLOT10_ALT",
43700 + "BFD_RELOC_XTENSA_SLOT11_ALT",
43701 + "BFD_RELOC_XTENSA_SLOT12_ALT",
43702 + "BFD_RELOC_XTENSA_SLOT13_ALT",
43703 + "BFD_RELOC_XTENSA_SLOT14_ALT",
43704 + "BFD_RELOC_XTENSA_OP0",
43705 + "BFD_RELOC_XTENSA_OP1",
43706 + "BFD_RELOC_XTENSA_OP2",
43707 + "BFD_RELOC_XTENSA_ASM_EXPAND",
43708 + "BFD_RELOC_XTENSA_ASM_SIMPLIFY",
43709 + "BFD_RELOC_Z80_DISP8",
43710 + "BFD_RELOC_Z8K_DISP7",
43711 + "BFD_RELOC_Z8K_CALLR",
43712 + "BFD_RELOC_Z8K_IMM4L",
43713 + "@@overflow: BFD_RELOC_UNUSED@@",
43714 +};
43715 +#endif
43716 +
43717 +reloc_howto_type *bfd_default_reloc_type_lookup
43718 + (bfd *abfd, bfd_reloc_code_real_type code);
43719 +
43720 +bfd_boolean bfd_generic_relax_section
43721 + (bfd *abfd,
43722 + asection *section,
43723 + struct bfd_link_info *,
43724 + bfd_boolean *);
43725 +
43726 +bfd_boolean bfd_generic_gc_sections
43727 + (bfd *, struct bfd_link_info *);
43728 +
43729 +bfd_boolean bfd_generic_merge_sections
43730 + (bfd *, struct bfd_link_info *);
43731 +
43732 +bfd_byte *bfd_generic_get_relocated_section_contents
43733 + (bfd *abfd,
43734 + struct bfd_link_info *link_info,
43735 + struct bfd_link_order *link_order,
43736 + bfd_byte *data,
43737 + bfd_boolean relocatable,
43738 + asymbol **symbols);
43739 +
43740 +/* Extracted from archures.c. */
43741 +extern const bfd_arch_info_type bfd_default_arch_struct;
43742 +bfd_boolean bfd_default_set_arch_mach
43743 + (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
43744 +
43745 +const bfd_arch_info_type *bfd_default_compatible
43746 + (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
43747 +
43748 +bfd_boolean bfd_default_scan
43749 + (const struct bfd_arch_info *info, const char *string);
43750 +
43751 +/* Extracted from elf.c. */
43752 +struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
43753 +
43754 --- /dev/null
43755 +++ b/bfd/doc/libcoff.h
43756 @@ -0,0 +1,936 @@
43757 +/* DO NOT EDIT! -*- buffer-read-only: t -*- This file is automatically
43758 + generated from "libcoff-in.h" and "coffcode.h".
43759 + Run "make headers" in your build bfd/ to regenerate. */
43760 +
43761 +/* BFD COFF object file private structure.
43762 + Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
43763 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
43764 + Free Software Foundation, Inc.
43765 + Written by Cygnus Support.
43766 +
43767 + This file is part of BFD, the Binary File Descriptor library.
43768 +
43769 + This program is free software; you can redistribute it and/or modify
43770 + it under the terms of the GNU General Public License as published by
43771 + the Free Software Foundation; either version 3 of the License, or
43772 + (at your option) any later version.
43773 +
43774 + This program is distributed in the hope that it will be useful,
43775 + but WITHOUT ANY WARRANTY; without even the implied warranty of
43776 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
43777 + GNU General Public License for more details.
43778 +
43779 + You should have received a copy of the GNU General Public License
43780 + along with this program; if not, write to the Free Software
43781 + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
43782 + MA 02110-1301, USA. */
43783 +
43784 +#include "bfdlink.h"
43785 +
43786 +/* Object file tdata; access macros. */
43787 +
43788 +#define coff_data(bfd) ((bfd)->tdata.coff_obj_data)
43789 +#define exec_hdr(bfd) (coff_data (bfd)->hdr)
43790 +#define obj_pe(bfd) (coff_data (bfd)->pe)
43791 +#define obj_symbols(bfd) (coff_data (bfd)->symbols)
43792 +#define obj_sym_filepos(bfd) (coff_data (bfd)->sym_filepos)
43793 +#define obj_relocbase(bfd) (coff_data (bfd)->relocbase)
43794 +#define obj_raw_syments(bfd) (coff_data (bfd)->raw_syments)
43795 +#define obj_raw_syment_count(bfd) (coff_data (bfd)->raw_syment_count)
43796 +#define obj_convert(bfd) (coff_data (bfd)->conversion_table)
43797 +#define obj_conv_table_size(bfd) (coff_data (bfd)->conv_table_size)
43798 +#define obj_coff_external_syms(bfd) (coff_data (bfd)->external_syms)
43799 +#define obj_coff_keep_syms(bfd) (coff_data (bfd)->keep_syms)
43800 +#define obj_coff_strings(bfd) (coff_data (bfd)->strings)
43801 +#define obj_coff_keep_strings(bfd) (coff_data (bfd)->keep_strings)
43802 +#define obj_coff_sym_hashes(bfd) (coff_data (bfd)->sym_hashes)
43803 +#define obj_coff_strings_written(bfd) (coff_data (bfd)->strings_written)
43804 +#define obj_coff_local_toc_table(bfd) (coff_data (bfd)->local_toc_sym_map)
43805 +
43806 +/* `Tdata' information kept for COFF files. */
43807 +
43808 +typedef struct coff_tdata
43809 +{
43810 + struct coff_symbol_struct *symbols; /* Symtab for input bfd. */
43811 + unsigned int *conversion_table;
43812 + int conv_table_size;
43813 + file_ptr sym_filepos;
43814 +
43815 + struct coff_ptr_struct *raw_syments;
43816 + unsigned long raw_syment_count;
43817 +
43818 + /* These are only valid once writing has begun. */
43819 + long int relocbase;
43820 +
43821 + /* These members communicate important constants about the symbol table
43822 + to GDB's symbol-reading code. These `constants' unfortunately vary
43823 + from coff implementation to implementation... */
43824 + unsigned local_n_btmask;
43825 + unsigned local_n_btshft;
43826 + unsigned local_n_tmask;
43827 + unsigned local_n_tshift;
43828 + unsigned local_symesz;
43829 + unsigned local_auxesz;
43830 + unsigned local_linesz;
43831 +
43832 + /* The unswapped external symbols. May be NULL. Read by
43833 + _bfd_coff_get_external_symbols. */
43834 + void * external_syms;
43835 + /* If this is TRUE, the external_syms may not be freed. */
43836 + bfd_boolean keep_syms;
43837 +
43838 + /* The string table. May be NULL. Read by
43839 + _bfd_coff_read_string_table. */
43840 + char *strings;
43841 + /* If this is TRUE, the strings may not be freed. */
43842 + bfd_boolean keep_strings;
43843 + /* If this is TRUE, the strings have been written out already. */
43844 + bfd_boolean strings_written;
43845 +
43846 + /* Is this a PE format coff file? */
43847 + int pe;
43848 + /* Used by the COFF backend linker. */
43849 + struct coff_link_hash_entry **sym_hashes;
43850 +
43851 + /* Used by the pe linker for PowerPC. */
43852 + int *local_toc_sym_map;
43853 +
43854 + struct bfd_link_info *link_info;
43855 +
43856 + /* Used by coff_find_nearest_line. */
43857 + void * line_info;
43858 +
43859 + /* A place to stash dwarf2 info for this bfd. */
43860 + void * dwarf2_find_line_info;
43861 +
43862 + /* The timestamp from the COFF file header. */
43863 + long timestamp;
43864 +
43865 + /* Copy of some of the f_flags bits in the COFF filehdr structure,
43866 + used by ARM code. */
43867 + flagword flags;
43868 +
43869 +} coff_data_type;
43870 +
43871 +/* Tdata for pe image files. */
43872 +typedef struct pe_tdata
43873 +{
43874 + coff_data_type coff;
43875 + struct internal_extra_pe_aouthdr pe_opthdr;
43876 + int dll;
43877 + int has_reloc_section;
43878 + bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
43879 + flagword real_flags;
43880 + int target_subsystem;
43881 + bfd_boolean force_minimum_alignment;
43882 +} pe_data_type;
43883 +
43884 +#define pe_data(bfd) ((bfd)->tdata.pe_obj_data)
43885 +
43886 +/* Tdata for XCOFF files. */
43887 +
43888 +struct xcoff_tdata
43889 +{
43890 + /* Basic COFF information. */
43891 + coff_data_type coff;
43892 +
43893 + /* TRUE if this is an XCOFF64 file. */
43894 + bfd_boolean xcoff64;
43895 +
43896 + /* TRUE if a large a.out header should be generated. */
43897 + bfd_boolean full_aouthdr;
43898 +
43899 + /* TOC value. */
43900 + bfd_vma toc;
43901 +
43902 + /* Index of section holding TOC. */
43903 + int sntoc;
43904 +
43905 + /* Index of section holding entry point. */
43906 + int snentry;
43907 +
43908 + /* .text alignment from optional header. */
43909 + int text_align_power;
43910 +
43911 + /* .data alignment from optional header. */
43912 + int data_align_power;
43913 +
43914 + /* modtype from optional header. */
43915 + short modtype;
43916 +
43917 + /* cputype from optional header. */
43918 + short cputype;
43919 +
43920 + /* maxdata from optional header. */
43921 + bfd_vma maxdata;
43922 +
43923 + /* maxstack from optional header. */
43924 + bfd_vma maxstack;
43925 +
43926 + /* Used by the XCOFF backend linker. */
43927 + asection **csects;
43928 + unsigned long *debug_indices;
43929 + unsigned int import_file_id;
43930 +};
43931 +
43932 +#define xcoff_data(abfd) ((abfd)->tdata.xcoff_obj_data)
43933 +
43934 +/* We take the address of the first element of an asymbol to ensure that the
43935 + macro is only ever applied to an asymbol. */
43936 +#define coffsymbol(asymbol) ((coff_symbol_type *)(&((asymbol)->the_bfd)))
43937 +
43938 +/* The used_by_bfd field of a section may be set to a pointer to this
43939 + structure. */
43940 +
43941 +struct coff_section_tdata
43942 +{
43943 + /* The relocs, swapped into COFF internal form. This may be NULL. */
43944 + struct internal_reloc *relocs;
43945 + /* If this is TRUE, the relocs entry may not be freed. */
43946 + bfd_boolean keep_relocs;
43947 + /* The section contents. This may be NULL. */
43948 + bfd_byte *contents;
43949 + /* If this is TRUE, the contents entry may not be freed. */
43950 + bfd_boolean keep_contents;
43951 + /* Information cached by coff_find_nearest_line. */
43952 + bfd_vma offset;
43953 + unsigned int i;
43954 + const char *function;
43955 + /* Optional information about a COMDAT entry; NULL if not COMDAT. */
43956 + struct coff_comdat_info *comdat;
43957 + int line_base;
43958 + /* A pointer used for .stab linking optimizations. */
43959 + void * stab_info;
43960 + /* Available for individual backends. */
43961 + void * tdata;
43962 +};
43963 +
43964 +/* An accessor macro for the coff_section_tdata structure. */
43965 +#define coff_section_data(abfd, sec) \
43966 + ((struct coff_section_tdata *) (sec)->used_by_bfd)
43967 +
43968 +/* Tdata for sections in XCOFF files. This is used by the linker. */
43969 +
43970 +struct xcoff_section_tdata
43971 +{
43972 + /* Used for XCOFF csects created by the linker; points to the real
43973 + XCOFF section which contains this csect. */
43974 + asection *enclosing;
43975 + /* The lineno_count field for the enclosing section, because we are
43976 + going to clobber it there. */
43977 + unsigned int lineno_count;
43978 + /* The first and one past the last symbol indices for symbols used
43979 + by this csect. */
43980 + unsigned long first_symndx;
43981 + unsigned long last_symndx;
43982 +};
43983 +
43984 +/* An accessor macro the xcoff_section_tdata structure. */
43985 +#define xcoff_section_data(abfd, sec) \
43986 + ((struct xcoff_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
43987 +
43988 +/* Tdata for sections in PE files. */
43989 +
43990 +struct pei_section_tdata
43991 +{
43992 + /* The virtual size of the section. */
43993 + bfd_size_type virt_size;
43994 + /* The PE section flags. */
43995 + long pe_flags;
43996 +};
43997 +
43998 +/* An accessor macro for the pei_section_tdata structure. */
43999 +#define pei_section_data(abfd, sec) \
44000 + ((struct pei_section_tdata *) coff_section_data ((abfd), (sec))->tdata)
44001 +
44002 +/* COFF linker hash table entries. */
44003 +
44004 +struct coff_link_hash_entry
44005 +{
44006 + struct bfd_link_hash_entry root;
44007 +
44008 + /* Symbol index in output file. Set to -1 initially. Set to -2 if
44009 + there is a reloc against this symbol. */
44010 + long indx;
44011 +
44012 + /* Symbol type. */
44013 + unsigned short type;
44014 +
44015 + /* Symbol class. */
44016 + unsigned char class;
44017 +
44018 + /* Number of auxiliary entries. */
44019 + char numaux;
44020 +
44021 + /* BFD to take auxiliary entries from. */
44022 + bfd *auxbfd;
44023 +
44024 + /* Pointer to array of auxiliary entries, if any. */
44025 + union internal_auxent *aux;
44026 +
44027 + /* Flag word; legal values follow. */
44028 + unsigned short coff_link_hash_flags;
44029 + /* Symbol is a PE section symbol. */
44030 +#define COFF_LINK_HASH_PE_SECTION_SYMBOL (01)
44031 +};
44032 +
44033 +/* COFF linker hash table. */
44034 +
44035 +struct coff_link_hash_table
44036 +{
44037 + struct bfd_link_hash_table root;
44038 + /* A pointer to information used to link stabs in sections. */
44039 + struct stab_info stab_info;
44040 +};
44041 +
44042 +/* Look up an entry in a COFF linker hash table. */
44043 +
44044 +#define coff_link_hash_lookup(table, string, create, copy, follow) \
44045 + ((struct coff_link_hash_entry *) \
44046 + bfd_link_hash_lookup (&(table)->root, (string), (create), \
44047 + (copy), (follow)))
44048 +
44049 +/* Traverse a COFF linker hash table. */
44050 +
44051 +#define coff_link_hash_traverse(table, func, info) \
44052 + (bfd_link_hash_traverse \
44053 + (&(table)->root, \
44054 + (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
44055 + (info)))
44056 +
44057 +/* Get the COFF linker hash table from a link_info structure. */
44058 +
44059 +#define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
44060 +
44061 +/* Functions in coffgen.c. */
44062 +extern const bfd_target *coff_object_p
44063 + (bfd *);
44064 +extern struct bfd_section *coff_section_from_bfd_index
44065 + (bfd *, int);
44066 +extern long coff_get_symtab_upper_bound
44067 + (bfd *);
44068 +extern long coff_canonicalize_symtab
44069 + (bfd *, asymbol **);
44070 +extern int coff_count_linenumbers
44071 + (bfd *);
44072 +extern struct coff_symbol_struct *coff_symbol_from
44073 + (bfd *, asymbol *);
44074 +extern bfd_boolean coff_renumber_symbols
44075 + (bfd *, int *);
44076 +extern void coff_mangle_symbols
44077 + (bfd *);
44078 +extern bfd_boolean coff_write_symbols
44079 + (bfd *);
44080 +extern bfd_boolean coff_write_linenumbers
44081 + (bfd *);
44082 +extern alent *coff_get_lineno
44083 + (bfd *, asymbol *);
44084 +extern asymbol *coff_section_symbol
44085 + (bfd *, char *);
44086 +extern bfd_boolean _bfd_coff_get_external_symbols
44087 + (bfd *);
44088 +extern const char *_bfd_coff_read_string_table
44089 + (bfd *);
44090 +extern bfd_boolean _bfd_coff_free_symbols
44091 + (bfd *);
44092 +extern struct coff_ptr_struct *coff_get_normalized_symtab
44093 + (bfd *);
44094 +extern long coff_get_reloc_upper_bound
44095 + (bfd *, sec_ptr);
44096 +extern asymbol *coff_make_empty_symbol
44097 + (bfd *);
44098 +extern void coff_print_symbol
44099 + (bfd *, void * filep, asymbol *, bfd_print_symbol_type);
44100 +extern void coff_get_symbol_info
44101 + (bfd *, asymbol *, symbol_info *ret);
44102 +extern bfd_boolean _bfd_coff_is_local_label_name
44103 + (bfd *, const char *);
44104 +extern asymbol *coff_bfd_make_debug_symbol
44105 + (bfd *, void *, unsigned long);
44106 +extern bfd_boolean coff_find_nearest_line
44107 + (bfd *, asection *, asymbol **, bfd_vma, const char **,
44108 + const char **, unsigned int *);
44109 +extern bfd_boolean coff_find_inliner_info
44110 + (bfd *, const char **, const char **, unsigned int *);
44111 +extern int coff_sizeof_headers
44112 + (bfd *, struct bfd_link_info *);
44113 +extern bfd_boolean bfd_coff_reloc16_relax_section
44114 + (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
44115 +extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
44116 + (bfd *, struct bfd_link_info *, struct bfd_link_order *,
44117 + bfd_byte *, bfd_boolean, asymbol **);
44118 +extern bfd_vma bfd_coff_reloc16_get_value
44119 + (arelent *, struct bfd_link_info *, asection *);
44120 +extern void bfd_perform_slip
44121 + (bfd *, unsigned int, asection *, bfd_vma);
44122 +
44123 +/* Functions and types in cofflink.c. */
44124 +
44125 +#define STRING_SIZE_SIZE 4
44126 +
44127 +/* We use a hash table to merge identical enum, struct, and union
44128 + definitions in the linker. */
44129 +
44130 +/* Information we keep for a single element (an enum value, a
44131 + structure or union field) in the debug merge hash table. */
44132 +
44133 +struct coff_debug_merge_element
44134 +{
44135 + /* Next element. */
44136 + struct coff_debug_merge_element *next;
44137 +
44138 + /* Name. */
44139 + const char *name;
44140 +
44141 + /* Type. */
44142 + unsigned int type;
44143 +
44144 + /* Symbol index for complex type. */
44145 + long tagndx;
44146 +};
44147 +
44148 +/* A linked list of debug merge entries for a given name. */
44149 +
44150 +struct coff_debug_merge_type
44151 +{
44152 + /* Next type with the same name. */
44153 + struct coff_debug_merge_type *next;
44154 +
44155 + /* Class of type. */
44156 + int class;
44157 +
44158 + /* Symbol index where this type is defined. */
44159 + long indx;
44160 +
44161 + /* List of elements. */
44162 + struct coff_debug_merge_element *elements;
44163 +};
44164 +
44165 +/* Information we store in the debug merge hash table. */
44166 +
44167 +struct coff_debug_merge_hash_entry
44168 +{
44169 + struct bfd_hash_entry root;
44170 +
44171 + /* A list of types with this name. */
44172 + struct coff_debug_merge_type *types;
44173 +};
44174 +
44175 +/* The debug merge hash table. */
44176 +
44177 +struct coff_debug_merge_hash_table
44178 +{
44179 + struct bfd_hash_table root;
44180 +};
44181 +
44182 +/* Initialize a COFF debug merge hash table. */
44183 +
44184 +#define coff_debug_merge_hash_table_init(table) \
44185 + (bfd_hash_table_init (&(table)->root, _bfd_coff_debug_merge_hash_newfunc, \
44186 + sizeof (struct coff_debug_merge_hash_entry)))
44187 +
44188 +/* Free a COFF debug merge hash table. */
44189 +
44190 +#define coff_debug_merge_hash_table_free(table) \
44191 + (bfd_hash_table_free (&(table)->root))
44192 +
44193 +/* Look up an entry in a COFF debug merge hash table. */
44194 +
44195 +#define coff_debug_merge_hash_lookup(table, string, create, copy) \
44196 + ((struct coff_debug_merge_hash_entry *) \
44197 + bfd_hash_lookup (&(table)->root, (string), (create), (copy)))
44198 +
44199 +/* Information we keep for each section in the output file when doing
44200 + a relocatable link. */
44201 +
44202 +struct coff_link_section_info
44203 +{
44204 + /* The relocs to be output. */
44205 + struct internal_reloc *relocs;
44206 + /* For each reloc against a global symbol whose index was not known
44207 + when the reloc was handled, the global hash table entry. */
44208 + struct coff_link_hash_entry **rel_hashes;
44209 +};
44210 +
44211 +/* Information that we pass around while doing the final link step. */
44212 +
44213 +struct coff_final_link_info
44214 +{
44215 + /* General link information. */
44216 + struct bfd_link_info *info;
44217 + /* Output BFD. */
44218 + bfd *output_bfd;
44219 + /* Used to indicate failure in traversal routine. */
44220 + bfd_boolean failed;
44221 + /* If doing "task linking" set only during the time when we want the
44222 + global symbol writer to convert the storage class of defined global
44223 + symbols from global to static. */
44224 + bfd_boolean global_to_static;
44225 + /* Hash table for long symbol names. */
44226 + struct bfd_strtab_hash *strtab;
44227 + /* When doing a relocatable link, an array of information kept for
44228 + each output section, indexed by the target_index field. */
44229 + struct coff_link_section_info *section_info;
44230 + /* Symbol index of last C_FILE symbol (-1 if none). */
44231 + long last_file_index;
44232 + /* Contents of last C_FILE symbol. */
44233 + struct internal_syment last_file;
44234 + /* Symbol index of first aux entry of last .bf symbol with an empty
44235 + endndx field (-1 if none). */
44236 + long last_bf_index;
44237 + /* Contents of last_bf_index aux entry. */
44238 + union internal_auxent last_bf;
44239 + /* Hash table used to merge debug information. */
44240 + struct coff_debug_merge_hash_table debug_merge;
44241 + /* Buffer large enough to hold swapped symbols of any input file. */
44242 + struct internal_syment *internal_syms;
44243 + /* Buffer large enough to hold sections of symbols of any input file. */
44244 + asection **sec_ptrs;
44245 + /* Buffer large enough to hold output indices of symbols of any
44246 + input file. */
44247 + long *sym_indices;
44248 + /* Buffer large enough to hold output symbols for any input file. */
44249 + bfd_byte *outsyms;
44250 + /* Buffer large enough to hold external line numbers for any input
44251 + section. */
44252 + bfd_byte *linenos;
44253 + /* Buffer large enough to hold any input section. */
44254 + bfd_byte *contents;
44255 + /* Buffer large enough to hold external relocs of any input section. */
44256 + bfd_byte *external_relocs;
44257 + /* Buffer large enough to hold swapped relocs of any input section. */
44258 + struct internal_reloc *internal_relocs;
44259 +};
44260 +
44261 +/* Most COFF variants have no way to record the alignment of a
44262 + section. This struct is used to set a specific alignment based on
44263 + the name of the section. */
44264 +
44265 +struct coff_section_alignment_entry
44266 +{
44267 + /* The section name. */
44268 + const char *name;
44269 +
44270 + /* This is either (unsigned int) -1, indicating that the section
44271 + name must match exactly, or it is the number of letters which
44272 + must match at the start of the name. */
44273 + unsigned int comparison_length;
44274 +
44275 + /* These macros may be used to fill in the first two fields in a
44276 + structure initialization. */
44277 +#define COFF_SECTION_NAME_EXACT_MATCH(name) (name), ((unsigned int) -1)
44278 +#define COFF_SECTION_NAME_PARTIAL_MATCH(name) (name), (sizeof (name) - 1)
44279 +
44280 + /* Only use this entry if the default section alignment for this
44281 + target is at least that much (as a power of two). If this field
44282 + is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
44283 + unsigned int default_alignment_min;
44284 +
44285 + /* Only use this entry if the default section alignment for this
44286 + target is no greater than this (as a power of two). If this
44287 + field is COFF_ALIGNMENT_FIELD_EMPTY, it should be ignored. */
44288 + unsigned int default_alignment_max;
44289 +
44290 +#define COFF_ALIGNMENT_FIELD_EMPTY ((unsigned int) -1)
44291 +
44292 + /* The desired alignment for this section (as a power of two). */
44293 + unsigned int alignment_power;
44294 +};
44295 +
44296 +extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
44297 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
44298 +extern bfd_boolean _bfd_coff_link_hash_table_init
44299 + (struct coff_link_hash_table *, bfd *,
44300 + struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
44301 + struct bfd_hash_table *,
44302 + const char *),
44303 + unsigned int);
44304 +extern struct bfd_link_hash_table *_bfd_coff_link_hash_table_create
44305 + (bfd *);
44306 +extern const char *_bfd_coff_internal_syment_name
44307 + (bfd *, const struct internal_syment *, char *);
44308 +extern bfd_boolean _bfd_coff_link_add_symbols
44309 + (bfd *, struct bfd_link_info *);
44310 +extern bfd_boolean _bfd_coff_final_link
44311 + (bfd *, struct bfd_link_info *);
44312 +extern struct internal_reloc *_bfd_coff_read_internal_relocs
44313 + (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
44314 + struct internal_reloc *);
44315 +extern bfd_boolean _bfd_coff_generic_relocate_section
44316 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44317 + struct internal_reloc *, struct internal_syment *, asection **);
44318 +extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
44319 + (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
44320 +extern bfd_boolean _bfd_coff_write_global_sym
44321 + (struct coff_link_hash_entry *, void *);
44322 +extern bfd_boolean _bfd_coff_write_task_globals
44323 + (struct coff_link_hash_entry *, void *);
44324 +extern bfd_boolean _bfd_coff_link_input_bfd
44325 + (struct coff_final_link_info *, bfd *);
44326 +extern bfd_boolean _bfd_coff_reloc_link_order
44327 + (bfd *, struct coff_final_link_info *, asection *,
44328 + struct bfd_link_order *);
44329 +
44330 +
44331 +#define coff_get_section_contents_in_window \
44332 + _bfd_generic_get_section_contents_in_window
44333 +
44334 +/* Functions in xcofflink.c. */
44335 +
44336 +extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
44337 + (bfd *);
44338 +extern long _bfd_xcoff_canonicalize_dynamic_symtab
44339 + (bfd *, asymbol **);
44340 +extern long _bfd_xcoff_get_dynamic_reloc_upper_bound
44341 + (bfd *);
44342 +extern long _bfd_xcoff_canonicalize_dynamic_reloc
44343 + (bfd *, arelent **, asymbol **);
44344 +extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
44345 + (bfd *);
44346 +extern void _bfd_xcoff_bfd_link_hash_table_free
44347 + (struct bfd_link_hash_table *);
44348 +extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
44349 + (bfd *, struct bfd_link_info *);
44350 +extern bfd_boolean _bfd_xcoff_bfd_final_link
44351 + (bfd *, struct bfd_link_info *);
44352 +extern bfd_boolean _bfd_ppc_xcoff_relocate_section
44353 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44354 + struct internal_reloc *, struct internal_syment *, asection **);
44355 +
44356 +/* Functions in coff-ppc.c. FIXME: These are called be pe.em in the
44357 + linker, and so should start with bfd and be declared in bfd.h. */
44358 +
44359 +extern bfd_boolean ppc_allocate_toc_section
44360 + (struct bfd_link_info *);
44361 +extern bfd_boolean ppc_process_before_allocation
44362 + (bfd *, struct bfd_link_info *);
44363 +
44364 +/* Extracted from coffcode.h. */
44365 +typedef struct coff_ptr_struct
44366 +{
44367 + /* Remembers the offset from the first symbol in the file for
44368 + this symbol. Generated by coff_renumber_symbols. */
44369 + unsigned int offset;
44370 +
44371 + /* Should the value of this symbol be renumbered. Used for
44372 + XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. */
44373 + unsigned int fix_value : 1;
44374 +
44375 + /* Should the tag field of this symbol be renumbered.
44376 + Created by coff_pointerize_aux. */
44377 + unsigned int fix_tag : 1;
44378 +
44379 + /* Should the endidx field of this symbol be renumbered.
44380 + Created by coff_pointerize_aux. */
44381 + unsigned int fix_end : 1;
44382 +
44383 + /* Should the x_csect.x_scnlen field be renumbered.
44384 + Created by coff_pointerize_aux. */
44385 + unsigned int fix_scnlen : 1;
44386 +
44387 + /* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the
44388 + index into the line number entries. Set by coff_slurp_symbol_table. */
44389 + unsigned int fix_line : 1;
44390 +
44391 + /* The container for the symbol structure as read and translated
44392 + from the file. */
44393 + union
44394 + {
44395 + union internal_auxent auxent;
44396 + struct internal_syment syment;
44397 + } u;
44398 +} combined_entry_type;
44399 +
44400 +
44401 +/* Each canonical asymbol really looks like this: */
44402 +
44403 +typedef struct coff_symbol_struct
44404 +{
44405 + /* The actual symbol which the rest of BFD works with */
44406 + asymbol symbol;
44407 +
44408 + /* A pointer to the hidden information for this symbol */
44409 + combined_entry_type *native;
44410 +
44411 + /* A pointer to the linenumber information for this symbol */
44412 + struct lineno_cache_entry *lineno;
44413 +
44414 + /* Have the line numbers been relocated yet ? */
44415 + bfd_boolean done_lineno;
44416 +} coff_symbol_type;
44417 +/* COFF symbol classifications. */
44418 +
44419 +enum coff_symbol_classification
44420 +{
44421 + /* Global symbol. */
44422 + COFF_SYMBOL_GLOBAL,
44423 + /* Common symbol. */
44424 + COFF_SYMBOL_COMMON,
44425 + /* Undefined symbol. */
44426 + COFF_SYMBOL_UNDEFINED,
44427 + /* Local symbol. */
44428 + COFF_SYMBOL_LOCAL,
44429 + /* PE section symbol. */
44430 + COFF_SYMBOL_PE_SECTION
44431 +};
44432 +
44433 +typedef struct
44434 +{
44435 + void (*_bfd_coff_swap_aux_in)
44436 + (bfd *, void *, int, int, int, int, void *);
44437 +
44438 + void (*_bfd_coff_swap_sym_in)
44439 + (bfd *, void *, void *);
44440 +
44441 + void (*_bfd_coff_swap_lineno_in)
44442 + (bfd *, void *, void *);
44443 +
44444 + unsigned int (*_bfd_coff_swap_aux_out)
44445 + (bfd *, void *, int, int, int, int, void *);
44446 +
44447 + unsigned int (*_bfd_coff_swap_sym_out)
44448 + (bfd *, void *, void *);
44449 +
44450 + unsigned int (*_bfd_coff_swap_lineno_out)
44451 + (bfd *, void *, void *);
44452 +
44453 + unsigned int (*_bfd_coff_swap_reloc_out)
44454 + (bfd *, void *, void *);
44455 +
44456 + unsigned int (*_bfd_coff_swap_filehdr_out)
44457 + (bfd *, void *, void *);
44458 +
44459 + unsigned int (*_bfd_coff_swap_aouthdr_out)
44460 + (bfd *, void *, void *);
44461 +
44462 + unsigned int (*_bfd_coff_swap_scnhdr_out)
44463 + (bfd *, void *, void *);
44464 +
44465 + unsigned int _bfd_filhsz;
44466 + unsigned int _bfd_aoutsz;
44467 + unsigned int _bfd_scnhsz;
44468 + unsigned int _bfd_symesz;
44469 + unsigned int _bfd_auxesz;
44470 + unsigned int _bfd_relsz;
44471 + unsigned int _bfd_linesz;
44472 + unsigned int _bfd_filnmlen;
44473 + bfd_boolean _bfd_coff_long_filenames;
44474 + bfd_boolean _bfd_coff_long_section_names;
44475 + unsigned int _bfd_coff_default_section_alignment_power;
44476 + bfd_boolean _bfd_coff_force_symnames_in_strings;
44477 + unsigned int _bfd_coff_debug_string_prefix_length;
44478 +
44479 + void (*_bfd_coff_swap_filehdr_in)
44480 + (bfd *, void *, void *);
44481 +
44482 + void (*_bfd_coff_swap_aouthdr_in)
44483 + (bfd *, void *, void *);
44484 +
44485 + void (*_bfd_coff_swap_scnhdr_in)
44486 + (bfd *, void *, void *);
44487 +
44488 + void (*_bfd_coff_swap_reloc_in)
44489 + (bfd *abfd, void *, void *);
44490 +
44491 + bfd_boolean (*_bfd_coff_bad_format_hook)
44492 + (bfd *, void *);
44493 +
44494 + bfd_boolean (*_bfd_coff_set_arch_mach_hook)
44495 + (bfd *, void *);
44496 +
44497 + void * (*_bfd_coff_mkobject_hook)
44498 + (bfd *, void *, void *);
44499 +
44500 + bfd_boolean (*_bfd_styp_to_sec_flags_hook)
44501 + (bfd *, void *, const char *, asection *, flagword *);
44502 +
44503 + void (*_bfd_set_alignment_hook)
44504 + (bfd *, asection *, void *);
44505 +
44506 + bfd_boolean (*_bfd_coff_slurp_symbol_table)
44507 + (bfd *);
44508 +
44509 + bfd_boolean (*_bfd_coff_symname_in_debug)
44510 + (bfd *, struct internal_syment *);
44511 +
44512 + bfd_boolean (*_bfd_coff_pointerize_aux_hook)
44513 + (bfd *, combined_entry_type *, combined_entry_type *,
44514 + unsigned int, combined_entry_type *);
44515 +
44516 + bfd_boolean (*_bfd_coff_print_aux)
44517 + (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
44518 + combined_entry_type *, unsigned int);
44519 +
44520 + void (*_bfd_coff_reloc16_extra_cases)
44521 + (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
44522 + bfd_byte *, unsigned int *, unsigned int *);
44523 +
44524 + int (*_bfd_coff_reloc16_estimate)
44525 + (bfd *, asection *, arelent *, unsigned int,
44526 + struct bfd_link_info *);
44527 +
44528 + enum coff_symbol_classification (*_bfd_coff_classify_symbol)
44529 + (bfd *, struct internal_syment *);
44530 +
44531 + bfd_boolean (*_bfd_coff_compute_section_file_positions)
44532 + (bfd *);
44533 +
44534 + bfd_boolean (*_bfd_coff_start_final_link)
44535 + (bfd *, struct bfd_link_info *);
44536 +
44537 + bfd_boolean (*_bfd_coff_relocate_section)
44538 + (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
44539 + struct internal_reloc *, struct internal_syment *, asection **);
44540 +
44541 + reloc_howto_type *(*_bfd_coff_rtype_to_howto)
44542 + (bfd *, asection *, struct internal_reloc *,
44543 + struct coff_link_hash_entry *, struct internal_syment *,
44544 + bfd_vma *);
44545 +
44546 + bfd_boolean (*_bfd_coff_adjust_symndx)
44547 + (bfd *, struct bfd_link_info *, bfd *, asection *,
44548 + struct internal_reloc *, bfd_boolean *);
44549 +
44550 + bfd_boolean (*_bfd_coff_link_add_one_symbol)
44551 + (struct bfd_link_info *, bfd *, const char *, flagword,
44552 + asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
44553 + struct bfd_link_hash_entry **);
44554 +
44555 + bfd_boolean (*_bfd_coff_link_output_has_begun)
44556 + (bfd *, struct coff_final_link_info *);
44557 +
44558 + bfd_boolean (*_bfd_coff_final_link_postscript)
44559 + (bfd *, struct coff_final_link_info *);
44560 +
44561 +} bfd_coff_backend_data;
44562 +
44563 +#define coff_backend_info(abfd) \
44564 + ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
44565 +
44566 +#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
44567 + ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
44568 +
44569 +#define bfd_coff_swap_sym_in(a,e,i) \
44570 + ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
44571 +
44572 +#define bfd_coff_swap_lineno_in(a,e,i) \
44573 + ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
44574 +
44575 +#define bfd_coff_swap_reloc_out(abfd, i, o) \
44576 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
44577 +
44578 +#define bfd_coff_swap_lineno_out(abfd, i, o) \
44579 + ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
44580 +
44581 +#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
44582 + ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
44583 +
44584 +#define bfd_coff_swap_sym_out(abfd, i,o) \
44585 + ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
44586 +
44587 +#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
44588 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
44589 +
44590 +#define bfd_coff_swap_filehdr_out(abfd, i,o) \
44591 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
44592 +
44593 +#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
44594 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
44595 +
44596 +#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
44597 +#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
44598 +#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
44599 +#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
44600 +#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
44601 +#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz)
44602 +#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
44603 +#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
44604 +#define bfd_coff_long_filenames(abfd) \
44605 + (coff_backend_info (abfd)->_bfd_coff_long_filenames)
44606 +#define bfd_coff_long_section_names(abfd) \
44607 + (coff_backend_info (abfd)->_bfd_coff_long_section_names)
44608 +#define bfd_coff_default_section_alignment_power(abfd) \
44609 + (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
44610 +#define bfd_coff_swap_filehdr_in(abfd, i,o) \
44611 + ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
44612 +
44613 +#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
44614 + ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
44615 +
44616 +#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
44617 + ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
44618 +
44619 +#define bfd_coff_swap_reloc_in(abfd, i, o) \
44620 + ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
44621 +
44622 +#define bfd_coff_bad_format_hook(abfd, filehdr) \
44623 + ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
44624 +
44625 +#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
44626 + ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
44627 +#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
44628 + ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
44629 + (abfd, filehdr, aouthdr))
44630 +
44631 +#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
44632 + ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
44633 + (abfd, scnhdr, name, section, flags_ptr))
44634 +
44635 +#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
44636 + ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
44637 +
44638 +#define bfd_coff_slurp_symbol_table(abfd)\
44639 + ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
44640 +
44641 +#define bfd_coff_symname_in_debug(abfd, sym)\
44642 + ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
44643 +
44644 +#define bfd_coff_force_symnames_in_strings(abfd)\
44645 + (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
44646 +
44647 +#define bfd_coff_debug_string_prefix_length(abfd)\
44648 + (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
44649 +
44650 +#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
44651 + ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
44652 + (abfd, file, base, symbol, aux, indaux))
44653 +
44654 +#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
44655 + reloc, data, src_ptr, dst_ptr)\
44656 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
44657 + (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
44658 +
44659 +#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
44660 + ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
44661 + (abfd, section, reloc, shrink, link_info))
44662 +
44663 +#define bfd_coff_classify_symbol(abfd, sym)\
44664 + ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
44665 + (abfd, sym))
44666 +
44667 +#define bfd_coff_compute_section_file_positions(abfd)\
44668 + ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
44669 + (abfd))
44670 +
44671 +#define bfd_coff_start_final_link(obfd, info)\
44672 + ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
44673 + (obfd, info))
44674 +#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
44675 + ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
44676 + (obfd, info, ibfd, o, con, rel, isyms, secs))
44677 +#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
44678 + ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
44679 + (abfd, sec, rel, h, sym, addendp))
44680 +#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
44681 + ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
44682 + (obfd, info, ibfd, sec, rel, adjustedp))
44683 +#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
44684 + value, string, cp, coll, hashp)\
44685 + ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
44686 + (info, abfd, name, flags, section, value, string, cp, coll, hashp))
44687 +
44688 +#define bfd_coff_link_output_has_begun(a,p) \
44689 + ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
44690 +#define bfd_coff_final_link_postscript(a,p) \
44691 + ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
44692 +
44693 --- a/bfd/libbfd.h
44694 +++ b/bfd/libbfd.h
44695 @@ -1601,6 +1601,48 @@ static const char *const bfd_reloc_code_
44696 "BFD_RELOC_AVR_LDI",
44697 "BFD_RELOC_AVR_6",
44698 "BFD_RELOC_AVR_6_ADIW",
44699 + "BFD_RELOC_AVR32_DIFF32",
44700 + "BFD_RELOC_AVR32_DIFF16",
44701 + "BFD_RELOC_AVR32_DIFF8",
44702 + "BFD_RELOC_AVR32_GOT32",
44703 + "BFD_RELOC_AVR32_GOT16",
44704 + "BFD_RELOC_AVR32_GOT8",
44705 + "BFD_RELOC_AVR32_21S",
44706 + "BFD_RELOC_AVR32_16U",
44707 + "BFD_RELOC_AVR32_16S",
44708 + "BFD_RELOC_AVR32_SUB5",
44709 + "BFD_RELOC_AVR32_8S_EXT",
44710 + "BFD_RELOC_AVR32_8S",
44711 + "BFD_RELOC_AVR32_15S",
44712 + "BFD_RELOC_AVR32_22H_PCREL",
44713 + "BFD_RELOC_AVR32_18W_PCREL",
44714 + "BFD_RELOC_AVR32_16B_PCREL",
44715 + "BFD_RELOC_AVR32_16N_PCREL",
44716 + "BFD_RELOC_AVR32_14UW_PCREL",
44717 + "BFD_RELOC_AVR32_11H_PCREL",
44718 + "BFD_RELOC_AVR32_10UW_PCREL",
44719 + "BFD_RELOC_AVR32_9H_PCREL",
44720 + "BFD_RELOC_AVR32_9UW_PCREL",
44721 + "BFD_RELOC_AVR32_GOTPC",
44722 + "BFD_RELOC_AVR32_GOTCALL",
44723 + "BFD_RELOC_AVR32_LDA_GOT",
44724 + "BFD_RELOC_AVR32_GOT21S",
44725 + "BFD_RELOC_AVR32_GOT18SW",
44726 + "BFD_RELOC_AVR32_GOT16S",
44727 + "BFD_RELOC_AVR32_32_CPENT",
44728 + "BFD_RELOC_AVR32_CPCALL",
44729 + "BFD_RELOC_AVR32_16_CP",
44730 + "BFD_RELOC_AVR32_9W_CP",
44731 + "BFD_RELOC_AVR32_ALIGN",
44732 + "BFD_RELOC_AVR32_14UW",
44733 + "BFD_RELOC_AVR32_10UW",
44734 + "BFD_RELOC_AVR32_10SW",
44735 + "BFD_RELOC_AVR32_STHH_W",
44736 + "BFD_RELOC_AVR32_7UW",
44737 + "BFD_RELOC_AVR32_6S",
44738 + "BFD_RELOC_AVR32_6UW",
44739 + "BFD_RELOC_AVR32_4UH",
44740 + "BFD_RELOC_AVR32_3U",
44741 "BFD_RELOC_390_12",
44742 "BFD_RELOC_390_GOT12",
44743 "BFD_RELOC_390_PLT32",
44744 --- /dev/null
44745 +++ b/bfd/libtool
44746 @@ -0,0 +1,7871 @@
44747 +#! /bin/bash
44748 +
44749 +# libtool - Provide generalized library-building support services.
44750 +# Generated automatically by config.status (bfd) 2.18
44751 +# Libtool was configured on host hcegtvedt:
44752 +# NOTE: Changes made to this file will be lost: look at ltmain.sh.
44753 +#
44754 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
44755 +# 2006, 2007, 2008 Free Software Foundation, Inc.
44756 +# Written by Gordon Matzigkeit, 1996
44757 +#
44758 +# This file is part of GNU Libtool.
44759 +#
44760 +# GNU Libtool is free software; you can redistribute it and/or
44761 +# modify it under the terms of the GNU General Public License as
44762 +# published by the Free Software Foundation; either version 2 of
44763 +# the License, or (at your option) any later version.
44764 +#
44765 +# As a special exception to the GNU General Public License,
44766 +# if you distribute this file as part of a program or library that
44767 +# is built using GNU Libtool, you may include this file under the
44768 +# same distribution terms that you use for the rest of that program.
44769 +#
44770 +# GNU Libtool is distributed in the hope that it will be useful,
44771 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
44772 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
44773 +# GNU General Public License for more details.
44774 +#
44775 +# You should have received a copy of the GNU General Public License
44776 +# along with GNU Libtool; see the file COPYING. If not, a copy
44777 +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
44778 +# obtained by writing to the Free Software Foundation, Inc.,
44779 +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
44780 +
44781 +
44782 +# The names of the tagged configurations supported by this script.
44783 +available_tags=""
44784 +
44785 +# ### BEGIN LIBTOOL CONFIG
44786 +
44787 +# Whether or not to build shared libraries.
44788 +build_libtool_libs=no
44789 +
44790 +# Which release of libtool.m4 was used?
44791 +macro_version=2.2.4
44792 +macro_revision=1.2976
44793 +
44794 +# Whether or not to build static libraries.
44795 +build_old_libs=yes
44796 +
44797 +# What type of objects to build.
44798 +pic_mode=default
44799 +
44800 +# Whether or not to optimize for fast installation.
44801 +fast_install=needless
44802 +
44803 +# The host system.
44804 +host_alias=i686-pc-linux-gnu
44805 +host=i686-pc-linux-gnu
44806 +host_os=linux-gnu
44807 +
44808 +# The build system.
44809 +build_alias=i686-pc-linux-gnu
44810 +build=i686-pc-linux-gnu
44811 +build_os=linux-gnu
44812 +
44813 +# A sed program that does not truncate output.
44814 +SED="/bin/sed"
44815 +
44816 +# Sed that helps us avoid accidentally triggering echo(1) options like -n.
44817 +Xsed="$SED -e 1s/^X//"
44818 +
44819 +# A grep program that handles long lines.
44820 +GREP="/bin/grep"
44821 +
44822 +# An ERE matcher.
44823 +EGREP="/bin/grep -E"
44824 +
44825 +# A literal string matcher.
44826 +FGREP="/bin/grep -F"
44827 +
44828 +# A BSD- or MS-compatible name lister.
44829 +NM="nm"
44830 +
44831 +# Whether we need soft or hard links.
44832 +LN_S="ln -s"
44833 +
44834 +# What is the maximum length of a command?
44835 +max_cmd_len=805306365
44836 +
44837 +# Object file suffix (normally "o").
44838 +objext=o
44839 +
44840 +# Executable file suffix (normally "").
44841 +exeext=
44842 +
44843 +# whether the shell understands "unset".
44844 +lt_unset=unset
44845 +
44846 +# turn spaces into newlines.
44847 +SP2NL="tr \\040 \\012"
44848 +
44849 +# turn newlines into spaces.
44850 +NL2SP="tr \\015\\012 \\040\\040"
44851 +
44852 +# How to create reloadable object files.
44853 +reload_flag=" -r"
44854 +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
44855 +
44856 +# Method to check whether dependent libraries are shared objects.
44857 +deplibs_check_method="pass_all"
44858 +
44859 +# Command to use when deplibs_check_method == "file_magic".
44860 +file_magic_cmd="\$MAGIC_CMD"
44861 +
44862 +# The archiver.
44863 +AR="ar"
44864 +AR_FLAGS="cru"
44865 +
44866 +# A symbol stripping program.
44867 +STRIP="strip"
44868 +
44869 +# Commands used to install an old-style archive.
44870 +RANLIB="ranlib"
44871 +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
44872 +old_postuninstall_cmds=""
44873 +
44874 +# A C compiler.
44875 +LTCC="gcc"
44876 +
44877 +# LTCC compiler flags.
44878 +LTCFLAGS="-g -O2"
44879 +
44880 +# Take the output of nm and produce a listing of raw symbols and C names.
44881 +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
44882 +
44883 +# Transform the output of nm in a proper C declaration.
44884 +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'"
44885 +
44886 +# Transform the output of nm in a C name address pair.
44887 +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'"
44888 +
44889 +# Transform the output of nm in a C name address pair when lib prefix is needed.
44890 +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'"
44891 +
44892 +# The name of the directory that contains temporary libtool files.
44893 +objdir=.libs
44894 +
44895 +# Shell to use when invoking shell scripts.
44896 +SHELL="/bin/bash"
44897 +
44898 +# An echo program that does not interpret backslashes.
44899 +ECHO="echo"
44900 +
44901 +# Used to examine libraries when file_magic_cmd begins with "file".
44902 +MAGIC_CMD=file
44903 +
44904 +# Must we lock files when doing compilation?
44905 +need_locks="no"
44906 +
44907 +# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
44908 +DSYMUTIL=""
44909 +
44910 +# Tool to change global to local symbols on Mac OS X.
44911 +NMEDIT=""
44912 +
44913 +# Tool to manipulate fat objects and archives on Mac OS X.
44914 +LIPO=""
44915 +
44916 +# ldd/readelf like tool for Mach-O binaries on Mac OS X.
44917 +OTOOL=""
44918 +
44919 +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
44920 +OTOOL64=""
44921 +
44922 +# Old archive suffix (normally "a").
44923 +libext=a
44924 +
44925 +# Shared library suffix (normally ".so").
44926 +shrext_cmds=".so"
44927 +
44928 +# The commands to extract the exported symbol list from a shared archive.
44929 +extract_expsyms_cmds=""
44930 +
44931 +# Variables whose values should be saved in libtool wrapper scripts and
44932 +# restored at link time.
44933 +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
44934 +
44935 +# Do we need the "lib" prefix for modules?
44936 +need_lib_prefix=no
44937 +
44938 +# Do we need a version for libraries?
44939 +need_version=no
44940 +
44941 +# Library versioning type.
44942 +version_type=linux
44943 +
44944 +# Shared library runtime path variable.
44945 +runpath_var=LD_RUN_PATH
44946 +
44947 +# Shared library path variable.
44948 +shlibpath_var=LD_LIBRARY_PATH
44949 +
44950 +# Is shlibpath searched before the hard-coded library search path?
44951 +shlibpath_overrides_runpath=no
44952 +
44953 +# Format of library name prefix.
44954 +libname_spec="lib\$name"
44955 +
44956 +# List of archive names. First name is the real one, the rest are links.
44957 +# The last name is the one that the linker finds with -lNAME
44958 +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
44959 +
44960 +# The coded name of the library, if different from the real name.
44961 +soname_spec="\${libname}\${release}\${shared_ext}\$major"
44962 +
44963 +# Command to use after installation of a shared archive.
44964 +postinstall_cmds=""
44965 +
44966 +# Command to use after uninstallation of a shared archive.
44967 +postuninstall_cmds=""
44968 +
44969 +# Commands used to finish a libtool library installation in a directory.
44970 +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
44971 +
44972 +# As "finish_cmds", except a single script fragment to be evaled but
44973 +# not shown.
44974 +finish_eval=""
44975 +
44976 +# Whether we should hardcode library paths into libraries.
44977 +hardcode_into_libs=yes
44978 +
44979 +# Compile-time system search path for libraries.
44980 +sys_lib_search_path_spec="/usr/lib/gcc/i486-linux-gnu/4.2.4 /usr/lib /lib"
44981 +
44982 +# Run-time system search path for libraries.
44983 +sys_lib_dlsearch_path_spec="/lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib/alsa-lib /usr/local/lib "
44984 +
44985 +# Whether dlopen is supported.
44986 +dlopen_support=unknown
44987 +
44988 +# Whether dlopen of programs is supported.
44989 +dlopen_self=unknown
44990 +
44991 +# Whether dlopen of statically linked programs is supported.
44992 +dlopen_self_static=unknown
44993 +
44994 +# Commands to strip libraries.
44995 +old_striplib="strip --strip-debug"
44996 +striplib="strip --strip-unneeded"
44997 +
44998 +
44999 +# The linker used to build libraries.
45000 +LD="ld"
45001 +
45002 +# Commands used to build an old-style archive.
45003 +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$oldlib"
45004 +
45005 +# A language specific compiler.
45006 +CC="gcc"
45007 +
45008 +# Is the compiler the GNU compiler?
45009 +with_gcc=yes
45010 +
45011 +# Compiler flag to turn off builtin functions.
45012 +no_builtin_flag=" -fno-builtin"
45013 +
45014 +# How to pass a linker flag through the compiler.
45015 +wl="-Wl,"
45016 +
45017 +# Additional compiler flags for building library objects.
45018 +pic_flag=" -fPIC -DPIC"
45019 +
45020 +# Compiler flag to prevent dynamic linking.
45021 +link_static_flag="-static"
45022 +
45023 +# Does compiler simultaneously support -c and -o options?
45024 +compiler_c_o="yes"
45025 +
45026 +# Whether or not to add -lc for building shared libraries.
45027 +build_libtool_need_lc=yes
45028 +
45029 +# Whether or not to disallow shared libs when runtime libs are static.
45030 +allow_libtool_libs_with_static_runtimes=no
45031 +
45032 +# Compiler flag to allow reflexive dlopens.
45033 +export_dynamic_flag_spec="\${wl}--export-dynamic"
45034 +
45035 +# Compiler flag to generate shared objects directly from archives.
45036 +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
45037 +
45038 +# Whether the compiler copes with passing no objects directly.
45039 +compiler_needs_object="no"
45040 +
45041 +# Create an old-style archive from a shared archive.
45042 +old_archive_from_new_cmds=""
45043 +
45044 +# Create a temporary old-style archive to link instead of a shared archive.
45045 +old_archive_from_expsyms_cmds=""
45046 +
45047 +# Commands used to build a shared archive.
45048 +archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
45049 +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
45050 + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
45051 + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
45052 + \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
45053 +
45054 +# Commands used to build a loadable module if different from building
45055 +# a shared archive.
45056 +module_cmds=""
45057 +module_expsym_cmds=""
45058 +
45059 +# Whether we are building with GNU ld or not.
45060 +with_gnu_ld="yes"
45061 +
45062 +# Flag that allows shared libraries with undefined symbols to be built.
45063 +allow_undefined_flag=""
45064 +
45065 +# Flag that enforces no undefined symbols.
45066 +no_undefined_flag=""
45067 +
45068 +# Flag to hardcode $libdir into a binary during linking.
45069 +# This must work even if $libdir does not exist
45070 +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir"
45071 +
45072 +# If ld is used when linking, flag to hardcode $libdir into a binary
45073 +# during linking. This must work even if $libdir does not exist.
45074 +hardcode_libdir_flag_spec_ld=""
45075 +
45076 +# Whether we need a single "-rpath" flag with a separated argument.
45077 +hardcode_libdir_separator=""
45078 +
45079 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
45080 +# DIR into the resulting binary.
45081 +hardcode_direct=no
45082 +
45083 +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
45084 +# DIR into the resulting binary and the resulting library dependency is
45085 +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the
45086 +# library is relocated.
45087 +hardcode_direct_absolute=no
45088 +
45089 +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
45090 +# into the resulting binary.
45091 +hardcode_minus_L=no
45092 +
45093 +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
45094 +# into the resulting binary.
45095 +hardcode_shlibpath_var=unsupported
45096 +
45097 +# Set to "yes" if building a shared library automatically hardcodes DIR
45098 +# into the library and all subsequent libraries and executables linked
45099 +# against it.
45100 +hardcode_automatic=no
45101 +
45102 +# Set to yes if linker adds runtime paths of dependent libraries
45103 +# to runtime path list.
45104 +inherit_rpath=no
45105 +
45106 +# Whether libtool must link a program against all its dependency libraries.
45107 +link_all_deplibs=unknown
45108 +
45109 +# Fix the shell variable $srcfile for the compiler.
45110 +fix_srcfile_path=""
45111 +
45112 +# Set to "yes" if exported symbols are required.
45113 +always_export_symbols=no
45114 +
45115 +# The commands to list exported symbols.
45116 +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
45117 +
45118 +# Symbols that should not be listed in the preloaded symbols.
45119 +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*"
45120 +
45121 +# Symbols that must always be exported.
45122 +include_expsyms=""
45123 +
45124 +# Commands necessary for linking programs (against libraries) with templates.
45125 +prelink_cmds=""
45126 +
45127 +# Specify filename containing input files.
45128 +file_list_spec=""
45129 +
45130 +# How to hardcode a shared library path into an executable.
45131 +hardcode_action=immediate
45132 +
45133 +# ### END LIBTOOL CONFIG
45134 +
45135 +# Generated from ltmain.m4sh; do not edit by hand
45136 +
45137 +# ltmain.sh (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
45138 +# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
45139 +
45140 +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
45141 +# This is free software; see the source for copying conditions. There is NO
45142 +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
45143 +
45144 +# This program is free software; you can redistribute it and/or modify
45145 +# it under the terms of the GNU General Public License as published by
45146 +# the Free Software Foundation; either version 2 of the License, or
45147 +# (at your option) any later version.
45148 +#
45149 +# This program is distributed in the hope that it will be useful, but
45150 +# WITHOUT ANY WARRANTY; without even the implied warranty of
45151 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
45152 +# General Public License for more details.
45153 +#
45154 +# You should have received a copy of the GNU General Public License
45155 +# along with this program; if not, write to the Free Software
45156 +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
45157 +#
45158 +# As a special exception to the GNU General Public License, if you
45159 +# distribute this file as part of a program that contains a
45160 +# configuration script generated by Autoconf, you may include it under
45161 +# the same distribution terms that you use for the rest of that program.
45162 +
45163 +# Usage: $progname [OPTION]... [MODE-ARG]...
45164 +#
45165 +# Provide generalized library-building support services.
45166 +#
45167 +# --config show all configuration variables
45168 +# --debug enable verbose shell tracing
45169 +# -n, --dry-run display commands without modifying any files
45170 +# --features display basic configuration information and exit
45171 +# --mode=MODE use operation mode MODE
45172 +# --preserve-dup-deps don't remove duplicate dependency libraries
45173 +# --quiet, --silent don't print informational messages
45174 +# --tag=TAG use configuration variables from tag TAG
45175 +# -v, --verbose print informational messages (default)
45176 +# --version print version information
45177 +# -h, --help print short or long help message
45178 +#
45179 +# MODE must be one of the following:
45180 +#
45181 +# clean remove files from the build directory
45182 +# compile compile a source file into a libtool object
45183 +# execute automatically set library path, then run a program
45184 +# finish complete the installation of libtool libraries
45185 +# install install libraries or executables
45186 +# link create a library or an executable
45187 +# uninstall remove libraries from an installed directory
45188 +#
45189 +# MODE-ARGS vary depending on the MODE.
45190 +# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
45191 +#
45192 +# When reporting a bug, please describe a test case to reproduce it and
45193 +# include the following information:
45194 +#
45195 +# host-triplet: $host
45196 +# shell: $SHELL
45197 +# compiler: $LTCC
45198 +# compiler flags: $LTCFLAGS
45199 +# linker: $LD (gnu? $with_gnu_ld)
45200 +# $progname: (GNU libtool 1.2435 2007/03/18 18:44:42) 2.1a
45201 +# automake: $automake_version
45202 +# autoconf: $autoconf_version
45203 +#
45204 +# Report bugs to <bug-libtool@gnu.org>.
45205 +
45206 +PROGRAM=ltmain.sh
45207 +PACKAGE=libtool
45208 +VERSION=2.1a
45209 +TIMESTAMP=" 1.2435 2007/03/18 18:44:42"
45210 +package_revision=1.2435
45211 +
45212 +# Be Bourne compatible
45213 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
45214 + emulate sh
45215 + NULLCMD=:
45216 + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
45217 + # is contrary to our usage. Disable this feature.
45218 + alias -g '${1+"$@"}'='"$@"'
45219 + setopt NO_GLOB_SUBST
45220 +else
45221 + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
45222 +fi
45223 +BIN_SH=xpg4; export BIN_SH # for Tru64
45224 +DUALCASE=1; export DUALCASE # for MKS sh
45225 +
45226 +# NLS nuisances: We save the old values to restore during execute mode.
45227 +# Only set LANG and LC_ALL to C if already set.
45228 +# These must not be set unconditionally because not all systems understand
45229 +# e.g. LANG=C (notably SCO).
45230 +for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
45231 +do
45232 + eval "if test \"\${$lt_var+set}\" = set; then
45233 + save_$lt_var=\$$lt_var
45234 + $lt_var=C
45235 + export $lt_var
45236 + fi"
45237 +done
45238 +
45239 +$lt_unset CDPATH
45240 +
45241 +
45242 +
45243 +
45244 +
45245 +: ${CP="cp -f"}
45246 +: ${ECHO="echo"}
45247 +: ${EGREP="/bin/grep -E"}
45248 +: ${FGREP="/bin/grep -F"}
45249 +: ${GREP="/bin/grep"}
45250 +: ${LN_S="ln -s"}
45251 +: ${MAKE="make"}
45252 +: ${MKDIR="mkdir"}
45253 +: ${MV="mv -f"}
45254 +: ${RM="rm -f"}
45255 +: ${SED="/bin/sed"}
45256 +: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
45257 +: ${Xsed="$SED -e 1s/^X//"}
45258 +
45259 +# Global variables:
45260 +EXIT_SUCCESS=0
45261 +EXIT_FAILURE=1
45262 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
45263 +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
45264 +
45265 +exit_status=$EXIT_SUCCESS
45266 +
45267 +# Make sure IFS has a sensible default
45268 +lt_nl='
45269 +'
45270 +IFS=" $lt_nl"
45271 +
45272 +dirname="s,/[^/]*$,,"
45273 +basename="s,^.*/,,"
45274 +
45275 +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
45276 +# is ksh but when the shell is invoked as "sh" and the current value of
45277 +# the _XPG environment variable is not equal to 1 (one), the special
45278 +# positional parameter $0, within a function call, is the name of the
45279 +# function.
45280 +progpath="$0"
45281 +
45282 +# The name of this program:
45283 +# In the unlikely event $progname began with a '-', it would play havoc with
45284 +# func_echo (imagine progname=-n), so we prepend ./ in that case:
45285 +progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
45286 +
45287 +# Make sure we have an absolute path for reexecution:
45288 +case $progpath in
45289 + [\\/]*|[A-Za-z]:\\*) ;;
45290 + *[\\/]*)
45291 + progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
45292 + progdir=`cd "$progdir" && pwd`
45293 + progpath="$progdir/$progname"
45294 + ;;
45295 + *)
45296 + save_IFS="$IFS"
45297 + IFS=:
45298 + for progdir in $PATH; do
45299 + IFS="$save_IFS"
45300 + test -x "$progdir/$progname" && break
45301 + done
45302 + IFS="$save_IFS"
45303 + test -n "$progdir" || progdir=`pwd`
45304 + progpath="$progdir/$progname"
45305 + ;;
45306 +esac
45307 +
45308 +# Sed substitution that helps us do robust quoting. It backslashifies
45309 +# metacharacters that are still active within double-quoted strings.
45310 +Xsed="${SED}"' -e 1s/^X//'
45311 +sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
45312 +
45313 +# Same as above, but do not quote variable references.
45314 +double_quote_subst='s/\(["`\\]\)/\\\1/g'
45315 +
45316 +# Re-`\' parameter expansions in output of double_quote_subst that were
45317 +# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
45318 +# in input to double_quote_subst, that '$' was protected from expansion.
45319 +# Since each input `\' is now two `\'s, look for any number of runs of
45320 +# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
45321 +bs='\\'
45322 +bs2='\\\\'
45323 +bs4='\\\\\\\\'
45324 +dollar='\$'
45325 +sed_double_backslash="\
45326 + s/$bs4/&\\
45327 +/g
45328 + s/^$bs2$dollar/$bs&/
45329 + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
45330 + s/\n//g"
45331 +
45332 +# Standard options:
45333 +opt_dry_run=false
45334 +opt_help=false
45335 +opt_quiet=false
45336 +opt_verbose=false
45337 +
45338 +# func_echo arg...
45339 +# Echo program name prefixed message, along with the current mode
45340 +# name if it has been set yet.
45341 +func_echo ()
45342 +{
45343 + $ECHO "$progname${mode+: }$mode: "${1+"$@"}
45344 +}
45345 +
45346 +# func_verbose arg...
45347 +# Echo program name prefixed message in verbose mode only.
45348 +func_verbose ()
45349 +{
45350 + $opt_verbose && func_echo ${1+"$@"}
45351 +
45352 + # A bug in bash halts the script if the last line of a function
45353 + # fails when set -e is in force, so we need another command to
45354 + # work around that:
45355 + :
45356 +}
45357 +
45358 +# func_error arg...
45359 +# Echo program name prefixed message to standard error.
45360 +func_error ()
45361 +{
45362 + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
45363 +}
45364 +
45365 +# func_warning arg...
45366 +# Echo program name prefixed warning message to standard error.
45367 +func_warning ()
45368 +{
45369 + $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
45370 +}
45371 +
45372 +# func_fatal_error arg...
45373 +# Echo program name prefixed message to standard error, and exit.
45374 +func_fatal_error ()
45375 +{
45376 + func_error ${1+"$@"}
45377 + exit $EXIT_FAILURE
45378 +}
45379 +
45380 +# func_fatal_help arg...
45381 +# Echo program name prefixed message to standard error, followed by
45382 +# a help hint, and exit.
45383 +func_fatal_help ()
45384 +{
45385 + func_error ${1+"$@"}
45386 + func_fatal_error "$help"
45387 +}
45388 +help="Try \`$progname --help' for more information." ## default
45389 +
45390 +
45391 +# func_grep expression filename
45392 +# Check whether EXPRESSION matches any line of FILENAME, without output.
45393 +func_grep ()
45394 +{
45395 + $GREP "$1" "$2" >/dev/null 2>&1
45396 +}
45397 +
45398 +
45399 +# func_mkdir_p directory-path
45400 +# Make sure the entire path to DIRECTORY-PATH is available.
45401 +func_mkdir_p ()
45402 +{
45403 + my_directory_path="$1"
45404 + my_dir_list=
45405 +
45406 + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
45407 +
45408 + # Protect directory names starting with `-'
45409 + case $my_directory_path in
45410 + -*) my_directory_path="./$my_directory_path" ;;
45411 + esac
45412 +
45413 + # While some portion of DIR does not yet exist...
45414 + while test ! -d "$my_directory_path"; do
45415 + # ...make a list in topmost first order. Use a colon delimited
45416 + # list incase some portion of path contains whitespace.
45417 + my_dir_list="$my_directory_path:$my_dir_list"
45418 +
45419 + # If the last portion added has no slash in it, the list is done
45420 + case $my_directory_path in */*) ;; *) break ;; esac
45421 +
45422 + # ...otherwise throw away the child directory and loop
45423 + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
45424 + done
45425 + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
45426 +
45427 + save_mkdir_p_IFS="$IFS"; IFS=':'
45428 + for my_dir in $my_dir_list; do
45429 + IFS="$save_mkdir_p_IFS"
45430 + # mkdir can fail with a `File exist' error if two processes
45431 + # try to create one of the directories concurrently. Don't
45432 + # stop in that case!
45433 + $MKDIR "$my_dir" 2>/dev/null || :
45434 + done
45435 + IFS="$save_mkdir_p_IFS"
45436 +
45437 + # Bail out if we (or some other process) failed to create a directory.
45438 + test -d "$my_directory_path" || \
45439 + func_fatal_error "Failed to create \`$1'"
45440 + fi
45441 +}
45442 +
45443 +
45444 +# func_mktempdir [string]
45445 +# Make a temporary directory that won't clash with other running
45446 +# libtool processes, and avoids race conditions if possible. If
45447 +# given, STRING is the basename for that directory.
45448 +func_mktempdir ()
45449 +{
45450 + my_template="${TMPDIR-/tmp}/${1-$progname}"
45451 +
45452 + if test "$opt_dry_run" = ":"; then
45453 + # Return a directory name, but don't create it in dry-run mode
45454 + my_tmpdir="${my_template}-$$"
45455 + else
45456 +
45457 + # If mktemp works, use that first and foremost
45458 + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
45459 +
45460 + if test ! -d "$my_tmpdir"; then
45461 + # Failing that, at least try and use $RANDOM to avoid a race
45462 + my_tmpdir="${my_template}-${RANDOM-0}$$"
45463 +
45464 + save_mktempdir_umask=`umask`
45465 + umask 0077
45466 + $MKDIR "$my_tmpdir"
45467 + umask $save_mktempdir_umask
45468 + fi
45469 +
45470 + # If we're not in dry-run mode, bomb out on failure
45471 + test -d "$my_tmpdir" || \
45472 + func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
45473 + fi
45474 +
45475 + $ECHO "X$my_tmpdir" | $Xsed
45476 +}
45477 +
45478 +
45479 +# func_quote_for_eval arg
45480 +# Aesthetically quote ARG to be evaled later.
45481 +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
45482 +# is double-quoted, suitable for a subsequent eval, whereas
45483 +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
45484 +# which are still active within double quotes backslashified.
45485 +func_quote_for_eval ()
45486 +{
45487 + case $1 in
45488 + *[\\\`\"\$]*)
45489 + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
45490 + *)
45491 + func_quote_for_eval_unquoted_result="$1" ;;
45492 + esac
45493 +
45494 + case $func_quote_for_eval_unquoted_result in
45495 + # Double-quote args containing shell metacharacters to delay
45496 + # word splitting, command substitution and and variable
45497 + # expansion for a subsequent eval.
45498 + # Many Bourne shells cannot handle close brackets correctly
45499 + # in scan sets, so we specify it separately.
45500 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45501 + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
45502 + ;;
45503 + *)
45504 + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
45505 + esac
45506 +}
45507 +
45508 +
45509 +# func_quote_for_expand arg
45510 +# Aesthetically quote ARG to be evaled later; same as above,
45511 +# but do not quote variable references.
45512 +func_quote_for_expand ()
45513 +{
45514 + case $1 in
45515 + *[\\\`\"]*)
45516 + my_arg=`$ECHO "X$1" | $Xsed \
45517 + -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
45518 + *)
45519 + my_arg="$1" ;;
45520 + esac
45521 +
45522 + case $my_arg in
45523 + # Double-quote args containing shell metacharacters to delay
45524 + # word splitting and command substitution for a subsequent eval.
45525 + # Many Bourne shells cannot handle close brackets correctly
45526 + # in scan sets, so we specify it separately.
45527 + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
45528 + my_arg="\"$my_arg\""
45529 + ;;
45530 + esac
45531 +
45532 + func_quote_for_expand_result="$my_arg"
45533 +}
45534 +
45535 +
45536 +# func_show_eval cmd [fail_exp]
45537 +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
45538 +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
45539 +# is given, then evaluate it.
45540 +func_show_eval ()
45541 +{
45542 + my_cmd="$1"
45543 + my_fail_exp="${2-:}"
45544 +
45545 + ${opt_silent-false} || {
45546 + func_quote_for_expand "$my_cmd"
45547 + eval "func_echo $func_quote_for_expand_result"
45548 + }
45549 +
45550 + if ${opt_dry_run-false}; then :; else
45551 + eval "$my_cmd"
45552 + my_status=$?
45553 + if test "$my_status" -eq 0; then :; else
45554 + eval "(exit $my_status); $my_fail_exp"
45555 + fi
45556 + fi
45557 +}
45558 +
45559 +
45560 +
45561 +
45562 +
45563 +# func_version
45564 +# Echo version message to standard output and exit.
45565 +func_version ()
45566 +{
45567 + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
45568 + s/^# //
45569 + s/^# *$//
45570 + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
45571 + p
45572 + }' < "$progpath"
45573 + exit $?
45574 +}
45575 +
45576 +# func_usage
45577 +# Echo short help message to standard output and exit.
45578 +func_usage ()
45579 +{
45580 + $SED -n '/^# Usage:/,/# -h/ {
45581 + s/^# //
45582 + s/^# *$//
45583 + s/\$progname/'$progname'/
45584 + p
45585 + }' < "$progpath"
45586 + $ECHO
45587 + $ECHO "run \`$progname --help | more' for full usage"
45588 + exit $?
45589 +}
45590 +
45591 +# func_help
45592 +# Echo long help message to standard output and exit.
45593 +func_help ()
45594 +{
45595 + $SED -n '/^# Usage:/,/# Report bugs to/ {
45596 + s/^# //
45597 + s/^# *$//
45598 + s*\$progname*'$progname'*
45599 + s*\$host*'"$host"'*
45600 + s*\$SHELL*'"$SHELL"'*
45601 + s*\$LTCC*'"$LTCC"'*
45602 + s*\$LTCFLAGS*'"$LTCFLAGS"'*
45603 + s*\$LD*'"$LD"'*
45604 + s/\$with_gnu_ld/'"$with_gnu_ld"'/
45605 + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
45606 + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
45607 + p
45608 + }' < "$progpath"
45609 + exit $?
45610 +}
45611 +
45612 +# func_missing_arg argname
45613 +# Echo program name prefixed message to standard error and set global
45614 +# exit_cmd.
45615 +func_missing_arg ()
45616 +{
45617 + func_error "missing argument for $1"
45618 + exit_cmd=exit
45619 +}
45620 +
45621 +exit_cmd=:
45622 +
45623 +
45624 +
45625 +
45626 +
45627 +# Check that we have a working $ECHO.
45628 +if test "X$1" = X--no-reexec; then
45629 + # Discard the --no-reexec flag, and continue.
45630 + shift
45631 +elif test "X$1" = X--fallback-echo; then
45632 + # Avoid inline document here, it may be left over
45633 + :
45634 +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
45635 + # Yippee, $ECHO works!
45636 + :
45637 +else
45638 + # Restart under the correct shell, and then maybe $ECHO will work.
45639 + exec $SHELL "$progpath" --no-reexec ${1+"$@"}
45640 +fi
45641 +
45642 +if test "X$1" = X--fallback-echo; then
45643 + # used as fallback echo
45644 + shift
45645 + cat <<EOF
45646 +$*
45647 +EOF
45648 + exit $EXIT_SUCCESS
45649 +fi
45650 +
45651 +magic="%%%MAGIC variable%%%"
45652 +
45653 +
45654 +# Global variables.
45655 +# $mode is unset
45656 +nonopt=
45657 +execute_dlfiles=
45658 +preserve_args=
45659 +lo2o="s/\\.lo\$/.${objext}/"
45660 +o2lo="s/\\.${objext}\$/.lo/"
45661 +extracted_archives=
45662 +extracted_serial=0
45663 +
45664 +opt_dry_run=false
45665 +opt_duplicate_deps=false
45666 +opt_silent=false
45667 +opt_debug=:
45668 +
45669 +# If this variable is set in any of the actions, the command in it
45670 +# will be execed at the end. This prevents here-documents from being
45671 +# left over by shells.
45672 +exec_cmd=
45673 +
45674 +# func_fatal_configuration arg...
45675 +# Echo program name prefixed message to standard error, followed by
45676 +# a configuration failure hint, and exit.
45677 +func_fatal_configuration ()
45678 +{
45679 + func_error ${1+"$@"}
45680 + func_error "See the $PACKAGE documentation for more information."
45681 + func_fatal_error "Fatal configuration error."
45682 +}
45683 +
45684 +
45685 +# func_config
45686 +# Display the configuration for all the tags in this script.
45687 +func_config ()
45688 +{
45689 + re_begincf='^# ### BEGIN LIBTOOL'
45690 + re_endcf='^# ### END LIBTOOL'
45691 +
45692 + # Default configuration.
45693 + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
45694 +
45695 + # Now print the configurations for the tags.
45696 + for tagname in $taglist; do
45697 + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
45698 + done
45699 +
45700 + exit $?
45701 +}
45702 +
45703 +# func_features
45704 +# Display the features supported by this script.
45705 +func_features ()
45706 +{
45707 + $ECHO "host: $host"
45708 + if test "$build_libtool_libs" = yes; then
45709 + $ECHO "enable shared libraries"
45710 + else
45711 + $ECHO "disable shared libraries"
45712 + fi
45713 + if test "$build_old_libs" = yes; then
45714 + $ECHO "enable static libraries"
45715 + else
45716 + $ECHO "disable static libraries"
45717 + fi
45718 +
45719 + exit $?
45720 +}
45721 +
45722 +# func_enable_tag tagname
45723 +# Verify that TAGNAME is valid, and either flag an error and exit, or
45724 +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist
45725 +# variable here.
45726 +func_enable_tag ()
45727 +{
45728 + # Global variable:
45729 + tagname="$1"
45730 +
45731 + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
45732 + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
45733 + sed_extractcf="/$re_begincf/,/$re_endcf/p"
45734 +
45735 + # Validate tagname.
45736 + case $tagname in
45737 + *[!-_A-Za-z0-9,/]*)
45738 + func_fatal_error "invalid tag name: $tagname"
45739 + ;;
45740 + esac
45741 +
45742 + # Don't test for the "default" C tag, as we know it's
45743 + # there but not specially marked.
45744 + case $tagname in
45745 + CC) ;;
45746 + *)
45747 + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
45748 + taglist="$taglist $tagname"
45749 +
45750 + # Evaluate the configuration. Be careful to quote the path
45751 + # and the sed script, to avoid splitting on whitespace, but
45752 + # also don't use non-portable quotes within backquotes within
45753 + # quotes we have to do it in 2 steps:
45754 + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
45755 + eval "$extractedcf"
45756 + else
45757 + func_error "ignoring unknown tag $tagname"
45758 + fi
45759 + ;;
45760 + esac
45761 +}
45762 +
45763 +
45764 +func_mode_help ()
45765 +{
45766 + # We need to display help for each of the modes.
45767 + case $mode in
45768 + "")
45769 + # Generic help is extracted from the usage comments
45770 + # at the start of this file.
45771 + func_help
45772 + ;;
45773 +
45774 + clean)
45775 + $ECHO \
45776 +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
45777 +
45778 +Remove files from the build directory.
45779 +
45780 +RM is the name of the program to use to delete files associated with each FILE
45781 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
45782 +to RM.
45783 +
45784 +If FILE is a libtool library, object or program, all the files associated
45785 +with it are deleted. Otherwise, only FILE itself is deleted using RM."
45786 + ;;
45787 +
45788 + compile)
45789 + $ECHO \
45790 +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
45791 +
45792 +Compile a source file into a libtool library object.
45793 +
45794 +This mode accepts the following additional options:
45795 +
45796 + -o OUTPUT-FILE set the output file name to OUTPUT-FILE
45797 + -no-suppress do not suppress compiler output for multiple passes
45798 + -prefer-pic try to building PIC objects only
45799 + -prefer-non-pic try to building non-PIC objects only
45800 + -shared do not build a \`.o' file suitable for static linking
45801 + -static only build a \`.o' file suitable for static linking
45802 +
45803 +COMPILE-COMMAND is a command to be used in creating a \`standard' object file
45804 +from the given SOURCEFILE.
45805 +
45806 +The output file name is determined by removing the directory component from
45807 +SOURCEFILE, then substituting the C source code suffix \`.c' with the
45808 +library object suffix, \`.lo'."
45809 + ;;
45810 +
45811 + execute)
45812 + $ECHO \
45813 +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
45814 +
45815 +Automatically set library path, then run a program.
45816 +
45817 +This mode accepts the following additional options:
45818 +
45819 + -dlopen FILE add the directory containing FILE to the library path
45820 +
45821 +This mode sets the library path environment variable according to \`-dlopen'
45822 +flags.
45823 +
45824 +If any of the ARGS are libtool executable wrappers, then they are translated
45825 +into their corresponding uninstalled binary, and any of their required library
45826 +directories are added to the library path.
45827 +
45828 +Then, COMMAND is executed, with ARGS as arguments."
45829 + ;;
45830 +
45831 + finish)
45832 + $ECHO \
45833 +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
45834 +
45835 +Complete the installation of libtool libraries.
45836 +
45837 +Each LIBDIR is a directory that contains libtool libraries.
45838 +
45839 +The commands that this mode executes may require superuser privileges. Use
45840 +the \`--dry-run' option if you just want to see what would be executed."
45841 + ;;
45842 +
45843 + install)
45844 + $ECHO \
45845 +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
45846 +
45847 +Install executables or libraries.
45848 +
45849 +INSTALL-COMMAND is the installation command. The first component should be
45850 +either the \`install' or \`cp' program.
45851 +
45852 +The following components of INSTALL-COMMAND are treated specially:
45853 +
45854 + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation
45855 +
45856 +The rest of the components are interpreted as arguments to that command (only
45857 +BSD-compatible install options are recognized)."
45858 + ;;
45859 +
45860 + link)
45861 + $ECHO \
45862 +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
45863 +
45864 +Link object files or libraries together to form another library, or to
45865 +create an executable program.
45866 +
45867 +LINK-COMMAND is a command using the C compiler that you would use to create
45868 +a program from several object files.
45869 +
45870 +The following components of LINK-COMMAND are treated specially:
45871 +
45872 + -all-static do not do any dynamic linking at all
45873 + -avoid-version do not add a version suffix if possible
45874 + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime
45875 + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
45876 + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
45877 + -export-symbols SYMFILE
45878 + try to export only the symbols listed in SYMFILE
45879 + -export-symbols-regex REGEX
45880 + try to export only the symbols matching REGEX
45881 + -LLIBDIR search LIBDIR for required installed libraries
45882 + -lNAME OUTPUT-FILE requires the installed library libNAME
45883 + -module build a library that can dlopened
45884 + -no-fast-install disable the fast-install mode
45885 + -no-install link a not-installable executable
45886 + -no-undefined declare that a library does not refer to external symbols
45887 + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects
45888 + -objectlist FILE Use a list of object files found in FILE to specify objects
45889 + -precious-files-regex REGEX
45890 + don't remove output files matching REGEX
45891 + -release RELEASE specify package release information
45892 + -rpath LIBDIR the created library will eventually be installed in LIBDIR
45893 + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
45894 + -shared only do dynamic linking of libtool libraries
45895 + -shrext SUFFIX override the standard shared library file extension
45896 + -static do not do any dynamic linking of uninstalled libtool libraries
45897 + -static-libtool-libs
45898 + do not do any dynamic linking of libtool libraries
45899 + -version-info CURRENT[:REVISION[:AGE]]
45900 + specify library version info [each variable defaults to 0]
45901 + -weak LIBNAME declare that the target provides the LIBNAME interface
45902 +
45903 +All other options (arguments beginning with \`-') are ignored.
45904 +
45905 +Every other argument is treated as a filename. Files ending in \`.la' are
45906 +treated as uninstalled libtool libraries, other files are standard or library
45907 +object files.
45908 +
45909 +If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
45910 +only library objects (\`.lo' files) may be specified, and \`-rpath' is
45911 +required, except when creating a convenience library.
45912 +
45913 +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
45914 +using \`ar' and \`ranlib', or on Windows using \`lib'.
45915 +
45916 +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
45917 +is created, otherwise an executable program is created."
45918 + ;;
45919 +
45920 + uninstall)
45921 + $ECHO \
45922 +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
45923 +
45924 +Remove libraries from an installation directory.
45925 +
45926 +RM is the name of the program to use to delete files associated with each FILE
45927 +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed
45928 +to RM.
45929 +
45930 +If FILE is a libtool library, all the files associated with it are deleted.
45931 +Otherwise, only FILE itself is deleted using RM."
45932 + ;;
45933 +
45934 + *)
45935 + func_fatal_help "invalid operation mode \`$mode'"
45936 + ;;
45937 + esac
45938 +
45939 + $ECHO
45940 + $ECHO "Try \`$progname --help' for more information about other modes."
45941 +
45942 + exit $?
45943 +}
45944 +
45945 +# Generated shell functions inserted here.
45946 +
45947 +# func_dirname file append nondir_replacement
45948 +# Compute the dirname of FILE. If nonempty, add APPEND to the result,
45949 +# otherwise set result to NONDIR_REPLACEMENT.
45950 +func_dirname ()
45951 +{
45952 + case ${1} in
45953 + */*) func_dirname_result="${1%/*}${2}" ;;
45954 + * ) func_dirname_result="${3}" ;;
45955 + esac
45956 +}
45957 +
45958 +# func_basename file
45959 +func_basename ()
45960 +{
45961 + func_basename_result="${1##*/}"
45962 +}
45963 +
45964 +# func_dirname_and_basename file append nondir_replacement
45965 +# perform func_basename and func_dirname in a single function
45966 +# call:
45967 +# dirname: Compute the dirname of FILE. If nonempty,
45968 +# add APPEND to the result, otherwise set result
45969 +# to NONDIR_REPLACEMENT.
45970 +# value returned in "$func_dirname_result"
45971 +# basename: Compute filename of FILE.
45972 +# value retuned in "$func_basename_result"
45973 +# Implementation must be kept synchronized with func_dirname
45974 +# and func_basename. For efficiency, we do not delegate to
45975 +# those functions but instead duplicate the functionality here.
45976 +func_dirname_and_basename ()
45977 +{
45978 + case ${1} in
45979 + */*) func_dirname_result="${1%/*}${2}" ;;
45980 + * ) func_dirname_result="${3}" ;;
45981 + esac
45982 + func_basename_result="${1##*/}"
45983 +}
45984 +
45985 +# func_stripname prefix suffix name
45986 +# strip PREFIX and SUFFIX off of NAME.
45987 +# PREFIX and SUFFIX must not contain globbing or regex special
45988 +# characters, hashes, percent signs, but SUFFIX may contain a leading
45989 +# dot (in which case that matches only a dot).
45990 +func_stripname ()
45991 +{
45992 + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
45993 + # positional parameters, so assign one to ordinary parameter first.
45994 + func_stripname_result=${3}
45995 + func_stripname_result=${func_stripname_result#"${1}"}
45996 + func_stripname_result=${func_stripname_result%"${2}"}
45997 +}
45998 +
45999 +# func_opt_split
46000 +func_opt_split ()
46001 +{
46002 + func_opt_split_opt=${1%%=*}
46003 + func_opt_split_arg=${1#*=}
46004 +}
46005 +
46006 +# func_lo2o object
46007 +func_lo2o ()
46008 +{
46009 + case ${1} in
46010 + *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
46011 + *) func_lo2o_result=${1} ;;
46012 + esac
46013 +}
46014 +
46015 +# func_xform libobj-or-source
46016 +func_xform ()
46017 +{
46018 + func_xform_result=${1%.*}.lo
46019 +}
46020 +
46021 +# func_arith arithmetic-term...
46022 +func_arith ()
46023 +{
46024 + func_arith_result=$(( $* ))
46025 +}
46026 +
46027 +# func_len string
46028 +# STRING may not start with a hyphen.
46029 +func_len ()
46030 +{
46031 + func_len_result=${#1}
46032 +}
46033 +
46034 +
46035 +# func_append var value
46036 +# Append VALUE to the end of shell variable VAR.
46037 +func_append ()
46038 +{
46039 + eval "$1+=\$2"
46040 +}
46041 +# Generated shell functions inserted here.
46042 +
46043 +
46044 +# Parse options once, thoroughly. This comes as soon as possible in
46045 +# the script to make things like `libtool --version' happen quickly.
46046 +{
46047 +
46048 + # Shorthand for --mode=foo, only valid as the first argument
46049 + case $1 in
46050 + clean|clea|cle|cl)
46051 + shift; set dummy --mode clean ${1+"$@"}; shift
46052 + ;;
46053 + compile|compil|compi|comp|com|co|c)
46054 + shift; set dummy --mode compile ${1+"$@"}; shift
46055 + ;;
46056 + execute|execut|execu|exec|exe|ex|e)
46057 + shift; set dummy --mode execute ${1+"$@"}; shift
46058 + ;;
46059 + finish|finis|fini|fin|fi|f)
46060 + shift; set dummy --mode finish ${1+"$@"}; shift
46061 + ;;
46062 + install|instal|insta|inst|ins|in|i)
46063 + shift; set dummy --mode install ${1+"$@"}; shift
46064 + ;;
46065 + link|lin|li|l)
46066 + shift; set dummy --mode link ${1+"$@"}; shift
46067 + ;;
46068 + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
46069 + shift; set dummy --mode uninstall ${1+"$@"}; shift
46070 + ;;
46071 + esac
46072 +
46073 + # Parse non-mode specific arguments:
46074 + while test "$#" -gt 0; do
46075 + opt="$1"
46076 + shift
46077 +
46078 + case $opt in
46079 + --config) func_config ;;
46080 +
46081 + --debug) preserve_args="$preserve_args $opt"
46082 + func_echo "enabling shell trace mode"
46083 + opt_debug='set -x'
46084 + $opt_debug
46085 + ;;
46086 +
46087 + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break
46088 + execute_dlfiles="$execute_dlfiles $1"
46089 + shift
46090 + ;;
46091 +
46092 + --dry-run | -n) opt_dry_run=: ;;
46093 + --features) func_features ;;
46094 + --finish) mode="finish" ;;
46095 +
46096 + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break
46097 + case $1 in
46098 + # Valid mode arguments:
46099 + clean) ;;
46100 + compile) ;;
46101 + execute) ;;
46102 + finish) ;;
46103 + install) ;;
46104 + link) ;;
46105 + relink) ;;
46106 + uninstall) ;;
46107 +
46108 + # Catch anything else as an error
46109 + *) func_error "invalid argument for $opt"
46110 + exit_cmd=exit
46111 + break
46112 + ;;
46113 + esac
46114 +
46115 + mode="$1"
46116 + shift
46117 + ;;
46118 +
46119 + --preserve-dup-deps)
46120 + opt_duplicate_deps=: ;;
46121 +
46122 + --quiet|--silent) preserve_args="$preserve_args $opt"
46123 + opt_silent=:
46124 + ;;
46125 +
46126 + --verbose| -v) preserve_args="$preserve_args $opt"
46127 + opt_silent=false
46128 + ;;
46129 +
46130 + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break
46131 + preserve_args="$preserve_args $opt $1"
46132 + func_enable_tag "$1" # tagname is set here
46133 + shift
46134 + ;;
46135 +
46136 + # Separate optargs to long options:
46137 + -dlopen=*|--mode=*|--tag=*)
46138 + func_opt_split "$opt"
46139 + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
46140 + shift
46141 + ;;
46142 +
46143 + -\?|-h) func_usage ;;
46144 + --help) opt_help=: ;;
46145 + --version) func_version ;;
46146 +
46147 + -*) func_fatal_help "unrecognized option \`$opt'" ;;
46148 +
46149 + *) nonopt="$opt"
46150 + break
46151 + ;;
46152 + esac
46153 + done
46154 +
46155 + # Now that we've collected a possible --mode arg, show help if necessary
46156 + $opt_help && func_mode_help
46157 +
46158 + case $host in
46159 + *cygwin* | *mingw* | *pw32*)
46160 + # don't eliminate duplications in $postdeps and $predeps
46161 + opt_duplicate_compiler_generated_deps=:
46162 + ;;
46163 + *)
46164 + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
46165 + ;;
46166 + esac
46167 +
46168 + # Having warned about all mis-specified options, bail out if
46169 + # anything was wrong.
46170 + $exit_cmd $EXIT_FAILURE
46171 +}
46172 +
46173 +# func_check_version_match
46174 +# Ensure that we are using m4 macros, and libtool script from the same
46175 +# release of libtool.
46176 +func_check_version_match ()
46177 +{
46178 + if test "$package_revision" != "$macro_revision"; then
46179 + if test "$VERSION" != "$macro_version"; then
46180 + if test -z "$macro_version"; then
46181 + cat >&2 <<_LT_EOF
46182 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
46183 +$progname: definition of this LT_INIT comes from an older release.
46184 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
46185 +$progname: and run autoconf again.
46186 +_LT_EOF
46187 + else
46188 + cat >&2 <<_LT_EOF
46189 +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the
46190 +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
46191 +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
46192 +$progname: and run autoconf again.
46193 +_LT_EOF
46194 + fi
46195 + else
46196 + cat >&2 <<_LT_EOF
46197 +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision,
46198 +$progname: but the definition of this LT_INIT comes from revision $macro_revision.
46199 +$progname: You should recreate aclocal.m4 with macros from revision $package_revision
46200 +$progname: of $PACKAGE $VERSION and run autoconf again.
46201 +_LT_EOF
46202 + fi
46203 +
46204 + exit $EXIT_MISMATCH
46205 + fi
46206 +}
46207 +
46208 +
46209 +## ----------- ##
46210 +## Main. ##
46211 +## ----------- ##
46212 +
46213 +{
46214 + # Sanity checks first:
46215 + func_check_version_match
46216 +
46217 + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
46218 + func_fatal_configuration "not configured to build any kind of library"
46219 + fi
46220 +
46221 + test -z "$mode" && func_fatal_error "error: you must specify a MODE."
46222 +
46223 +
46224 + # Darwin sucks
46225 + eval std_shrext=\"$shrext_cmds\"
46226 +
46227 +
46228 + # Only execute mode is allowed to have -dlopen flags.
46229 + if test -n "$execute_dlfiles" && test "$mode" != execute; then
46230 + func_error "unrecognized option \`-dlopen'"
46231 + $ECHO "$help" 1>&2
46232 + exit $EXIT_FAILURE
46233 + fi
46234 +
46235 + # Change the help message to a mode-specific one.
46236 + generic_help="$help"
46237 + help="Try \`$progname --help --mode=$mode' for more information."
46238 +}
46239 +
46240 +
46241 +# func_lalib_p file
46242 +# True iff FILE is a libtool `.la' library or `.lo' object file.
46243 +# This function is only a basic sanity check; it will hardly flush out
46244 +# determined imposters.
46245 +func_lalib_p ()
46246 +{
46247 + $SED -e 4q "$1" 2>/dev/null \
46248 + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
46249 +}
46250 +
46251 +# func_lalib_unsafe_p file
46252 +# True iff FILE is a libtool `.la' library or `.lo' object file.
46253 +# This function implements the same check as func_lalib_p without
46254 +# resorting to external programs. To this end, it redirects stdin and
46255 +# closes it afterwards, without saving the original file descriptor.
46256 +# As a safety measure, use it only where a negative result would be
46257 +# fatal anyway. Works if `file' does not exist.
46258 +func_lalib_unsafe_p ()
46259 +{
46260 + lalib_p=no
46261 + if test -r "$1" && exec 5<&1 <"$1"; then
46262 + for lalib_p_l in 1 2 3 4
46263 + do
46264 + read lalib_p_line
46265 + case "$lalib_p_line" in
46266 + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
46267 + esac
46268 + done
46269 + exec 1<&5 5<&-
46270 + fi
46271 + test "$lalib_p" = yes
46272 +}
46273 +
46274 +# func_ltwrapper_p file
46275 +# True iff FILE is a libtool wrapper script.
46276 +# This function is only a basic sanity check; it will hardly flush out
46277 +# determined imposters.
46278 +func_ltwrapper_p ()
46279 +{
46280 + func_lalib_p "$1"
46281 +}
46282 +
46283 +
46284 +# func_execute_cmds commands fail_cmd
46285 +# Execute tilde-delimited COMMANDS.
46286 +# If FAIL_CMD is given, eval that upon failure.
46287 +# FAIL_CMD may read-access the current command in variable CMD!
46288 +func_execute_cmds ()
46289 +{
46290 + $opt_debug
46291 + save_ifs=$IFS; IFS='~'
46292 + for cmd in $1; do
46293 + IFS=$save_ifs
46294 + eval cmd=\"$cmd\"
46295 + func_show_eval "$cmd" "${2-:}"
46296 + done
46297 + IFS=$save_ifs
46298 +}
46299 +
46300 +
46301 +# func_source file
46302 +# Source FILE, adding directory component if necessary.
46303 +# Note that it is not necessary on cygwin/mingw to append a dot to
46304 +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
46305 +# behavior happens only for exec(3), not for open(2)! Also, sourcing
46306 +# `FILE.' does not work on cygwin managed mounts.
46307 +func_source ()
46308 +{
46309 + $opt_debug
46310 + case $1 in
46311 + */* | *\\*) . "$1" ;;
46312 + *) . "./$1" ;;
46313 + esac
46314 +}
46315 +
46316 +
46317 +# func_win32_libid arg
46318 +# return the library type of file 'arg'
46319 +#
46320 +# Need a lot of goo to handle *both* DLLs and import libs
46321 +# Has to be a shell function in order to 'eat' the argument
46322 +# that is supplied when $file_magic_command is called.
46323 +func_win32_libid ()
46324 +{
46325 + $opt_debug
46326 + win32_libid_type="unknown"
46327 + win32_fileres=`file -L $1 2>/dev/null`
46328 + case $win32_fileres in
46329 + *ar\ archive\ import\ library*) # definitely import
46330 + win32_libid_type="x86 archive import"
46331 + ;;
46332 + *ar\ archive*) # could be an import, or static
46333 + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
46334 + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
46335 + win32_nmres=`eval $NM -f posix -A $1 |
46336 + $SED -n -e '
46337 + 1,100{
46338 + / I /{
46339 + s,.*,import,
46340 + p
46341 + q
46342 + }
46343 + }'`
46344 + case $win32_nmres in
46345 + import*) win32_libid_type="x86 archive import";;
46346 + *) win32_libid_type="x86 archive static";;
46347 + esac
46348 + fi
46349 + ;;
46350 + *DLL*)
46351 + win32_libid_type="x86 DLL"
46352 + ;;
46353 + *executable*) # but shell scripts are "executable" too...
46354 + case $win32_fileres in
46355 + *MS\ Windows\ PE\ Intel*)
46356 + win32_libid_type="x86 DLL"
46357 + ;;
46358 + esac
46359 + ;;
46360 + esac
46361 + $ECHO "$win32_libid_type"
46362 +}
46363 +
46364 +
46365 +
46366 +# func_infer_tag arg
46367 +# Infer tagged configuration to use if any are available and
46368 +# if one wasn't chosen via the "--tag" command line option.
46369 +# Only attempt this if the compiler in the base compile
46370 +# command doesn't match the default compiler.
46371 +# arg is usually of the form 'gcc ...'
46372 +func_infer_tag ()
46373 +{
46374 + $opt_debug
46375 + if test -n "$available_tags" && test -z "$tagname"; then
46376 + CC_quoted=
46377 + for arg in $CC; do
46378 + func_quote_for_eval "$arg"
46379 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
46380 + done
46381 + case $@ in
46382 + # Blanks in the command may have been stripped by the calling shell,
46383 + # but not from the CC environment variable when configure was run.
46384 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
46385 + # Blanks at the start of $base_compile will cause this to fail
46386 + # if we don't check for them as well.
46387 + *)
46388 + for z in $available_tags; do
46389 + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
46390 + # Evaluate the configuration.
46391 + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
46392 + CC_quoted=
46393 + for arg in $CC; do
46394 + # Double-quote args containing other shell metacharacters.
46395 + func_quote_for_eval "$arg"
46396 + CC_quoted="$CC_quoted $func_quote_for_eval_result"
46397 + done
46398 + case "$@ " in
46399 + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
46400 + # The compiler in the base compile command matches
46401 + # the one in the tagged configuration.
46402 + # Assume this is the tagged configuration we want.
46403 + tagname=$z
46404 + break
46405 + ;;
46406 + esac
46407 + fi
46408 + done
46409 + # If $tagname still isn't set, then no tagged configuration
46410 + # was found and let the user know that the "--tag" command
46411 + # line option must be used.
46412 + if test -z "$tagname"; then
46413 + func_echo "unable to infer tagged configuration"
46414 + func_fatal_error "specify a tag with \`--tag'"
46415 +# else
46416 +# func_verbose "using $tagname tagged configuration"
46417 + fi
46418 + ;;
46419 + esac
46420 + fi
46421 +}
46422 +
46423 +
46424 +
46425 +# func_generate_dlsyms outputname originator pic_p
46426 +# Extract symbols from dlprefiles and create ${outputname}S.o with
46427 +# a dlpreopen symbol table.
46428 +func_generate_dlsyms ()
46429 +{
46430 + $opt_debug
46431 + my_outputname="$1"
46432 + my_originator="$2"
46433 + my_pic_p="${3-no}"
46434 + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
46435 + my_dlsyms=
46436 +
46437 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
46438 + if test -n "$NM" && test -n "$global_symbol_pipe"; then
46439 + my_dlsyms="${my_outputname}S.c"
46440 + else
46441 + func_error "not configured to extract global symbols from dlpreopened files"
46442 + fi
46443 + fi
46444 +
46445 + if test -n "$my_dlsyms"; then
46446 + case $my_dlsyms in
46447 + "") ;;
46448 + *.c)
46449 + # Discover the nlist of each of the dlfiles.
46450 + nlist="$output_objdir/${my_outputname}.nm"
46451 +
46452 + func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
46453 +
46454 + # Parse the name list into a source file.
46455 + func_echo "creating $output_objdir/$my_dlsyms"
46456 +
46457 + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
46458 +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
46459 +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
46460 +
46461 +#ifdef __cplusplus
46462 +extern \"C\" {
46463 +#endif
46464 +
46465 +/* External symbol declarations for the compiler. */\
46466 +"
46467 +
46468 + if test "$dlself" = yes; then
46469 + func_echo "generating symbol list for \`$output'"
46470 +
46471 + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
46472 +
46473 + # Add our own program objects to the symbol list.
46474 + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
46475 + for progfile in $progfiles; do
46476 + func_echo "extracting global C symbols from \`$progfile'"
46477 + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
46478 + done
46479 +
46480 + if test -n "$exclude_expsyms"; then
46481 + $opt_dry_run || {
46482 + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
46483 + eval '$MV "$nlist"T "$nlist"'
46484 + }
46485 + fi
46486 +
46487 + if test -n "$export_symbols_regex"; then
46488 + $opt_dry_run || {
46489 + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
46490 + eval '$MV "$nlist"T "$nlist"'
46491 + }
46492 + fi
46493 +
46494 + # Prepare the list of exported symbols
46495 + if test -z "$export_symbols"; then
46496 + export_symbols="$output_objdir/$outputname.exp"
46497 + $opt_dry_run || {
46498 + $RM $export_symbols
46499 + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
46500 + case $host in
46501 + *cygwin* | *mingw* )
46502 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46503 + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
46504 + ;;
46505 + esac
46506 + }
46507 + else
46508 + $opt_dry_run || {
46509 + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
46510 + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
46511 + eval '$MV "$nlist"T "$nlist"'
46512 + case $host in
46513 + *cygwin | *mingw* )
46514 + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
46515 + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
46516 + ;;
46517 + esac
46518 + }
46519 + fi
46520 + fi
46521 +
46522 + for dlprefile in $dlprefiles; do
46523 + func_echo "extracting global C symbols from \`$dlprefile'"
46524 + func_basename "$dlprefile"
46525 + name="$func_basename_result"
46526 + $opt_dry_run || {
46527 + eval '$ECHO ": $name " >> "$nlist"'
46528 + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
46529 + }
46530 + done
46531 +
46532 + $opt_dry_run || {
46533 + # Make sure we have at least an empty file.
46534 + test -f "$nlist" || : > "$nlist"
46535 +
46536 + if test -n "$exclude_expsyms"; then
46537 + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
46538 + $MV "$nlist"T "$nlist"
46539 + fi
46540 +
46541 + # Try sorting and uniquifying the output.
46542 + if $GREP -v "^: " < "$nlist" |
46543 + if sort -k 3 </dev/null >/dev/null 2>&1; then
46544 + sort -k 3
46545 + else
46546 + sort +2
46547 + fi |
46548 + uniq > "$nlist"S; then
46549 + :
46550 + else
46551 + $GREP -v "^: " < "$nlist" > "$nlist"S
46552 + fi
46553 +
46554 + if test -f "$nlist"S; then
46555 + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
46556 + else
46557 + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
46558 + fi
46559 +
46560 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46561 +
46562 +/* The mapping between symbol names and symbols. */
46563 +typedef struct {
46564 + const char *name;
46565 + void *address;
46566 +} lt_dlsymlist;
46567 +"
46568 + case $host in
46569 + *cygwin* | *mingw* )
46570 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46571 +/* DATA imports from DLLs on WIN32 con't be const, because
46572 + runtime relocations are performed -- see ld's documentation
46573 + on pseudo-relocs. */"
46574 + lt_dlsym_const= ;;
46575 + *osf5*)
46576 + echo >> "$output_objdir/$my_dlsyms" "\
46577 +/* This system does not cope well with relocations in const data */"
46578 + lt_dlsym_const= ;;
46579 + *)
46580 + lt_dlsym_const=const ;;
46581 + esac
46582 +
46583 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46584 +extern $lt_dlsym_const lt_dlsymlist
46585 +lt_${my_prefix}_LTX_preloaded_symbols[];
46586 +$lt_dlsym_const lt_dlsymlist
46587 +lt_${my_prefix}_LTX_preloaded_symbols[] =
46588 +{\
46589 + { \"$my_originator\", (void *) 0 },"
46590 +
46591 + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
46592 +
46593 + $ECHO >> "$output_objdir/$my_dlsyms" "\
46594 + {0, (void *) 0}
46595 +};
46596 +
46597 +/* This works around a problem in FreeBSD linker */
46598 +#ifdef FREEBSD_WORKAROUND
46599 +static const void *lt_preloaded_setup() {
46600 + return lt_${my_prefix}_LTX_preloaded_symbols;
46601 +}
46602 +#endif
46603 +
46604 +#ifdef __cplusplus
46605 +}
46606 +#endif\
46607 +"
46608 + } # !$opt_dry_run
46609 +
46610 + pic_flag_for_symtable=
46611 + case "$compile_command " in
46612 + *" -static "*) ;;
46613 + *)
46614 + case $host in
46615 + # compiling the symbol table file with pic_flag works around
46616 + # a FreeBSD bug that causes programs to crash when -lm is
46617 + # linked before any other PIC object. But we must not use
46618 + # pic_flag when linking with -static. The problem exists in
46619 + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
46620 + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
46621 + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
46622 + *-*-hpux*)
46623 + pic_flag_for_symtable=" $pic_flag" ;;
46624 + *)
46625 + if test "X$my_pic_p" != Xno; then
46626 + pic_flag_for_symtable=" $pic_flag"
46627 + fi
46628 + ;;
46629 + esac
46630 + ;;
46631 + esac
46632 + symtab_cflags=
46633 + for arg in $LTCFLAGS; do
46634 + case $arg in
46635 + -pie | -fpie | -fPIE) ;;
46636 + *) symtab_cflags="$symtab_cflags $arg" ;;
46637 + esac
46638 + done
46639 +
46640 + # Now compile the dynamic symbol file.
46641 + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
46642 +
46643 + # Clean up the generated files.
46644 + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
46645 +
46646 + # Transform the symbol file into the correct name.
46647 + symfileobj="$output_objdir/${my_outputname}S.$objext"
46648 + case $host in
46649 + *cygwin* | *mingw* )
46650 + if test -f "$output_objdir/$my_outputname.def"; then
46651 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46652 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
46653 + else
46654 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46655 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46656 + fi
46657 + ;;
46658 + *)
46659 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46660 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
46661 + ;;
46662 + esac
46663 + ;;
46664 + *)
46665 + func_fatal_error "unknown suffix for \`$my_dlsyms'"
46666 + ;;
46667 + esac
46668 + else
46669 + # We keep going just in case the user didn't refer to
46670 + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe
46671 + # really was required.
46672 +
46673 + # Nullify the symbol file.
46674 + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
46675 + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
46676 + fi
46677 +}
46678 +
46679 +# func_extract_an_archive dir oldlib
46680 +func_extract_an_archive ()
46681 +{
46682 + $opt_debug
46683 + f_ex_an_ar_dir="$1"; shift
46684 + f_ex_an_ar_oldlib="$1"
46685 + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
46686 + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
46687 + :
46688 + else
46689 + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
46690 + fi
46691 +}
46692 +
46693 +
46694 +# func_extract_archives gentop oldlib ...
46695 +func_extract_archives ()
46696 +{
46697 + $opt_debug
46698 + my_gentop="$1"; shift
46699 + my_oldlibs=${1+"$@"}
46700 + my_oldobjs=""
46701 + my_xlib=""
46702 + my_xabs=""
46703 + my_xdir=""
46704 +
46705 + for my_xlib in $my_oldlibs; do
46706 + # Extract the objects.
46707 + case $my_xlib in
46708 + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
46709 + *) my_xabs=`pwd`"/$my_xlib" ;;
46710 + esac
46711 + func_basename "$my_xlib"
46712 + my_xlib="$func_basename_result"
46713 + my_xlib_u=$my_xlib
46714 + while :; do
46715 + case " $extracted_archives " in
46716 + *" $my_xlib_u "*)
46717 + extracted_serial=`expr $extracted_serial + 1`
46718 + my_xlib_u=lt$extracted_serial-$my_xlib ;;
46719 + *) break ;;
46720 + esac
46721 + done
46722 + extracted_archives="$extracted_archives $my_xlib_u"
46723 + my_xdir="$my_gentop/$my_xlib_u"
46724 +
46725 + func_mkdir_p "$my_xdir"
46726 +
46727 + case $host in
46728 + *-darwin*)
46729 + func_echo "Extracting $my_xabs"
46730 + # Do not bother doing anything if just a dry run
46731 + $opt_dry_run || {
46732 + darwin_orig_dir=`pwd`
46733 + cd $my_xdir || exit $?
46734 + darwin_archive=$my_xabs
46735 + darwin_curdir=`pwd`
46736 + darwin_base_archive=`basename $darwin_archive`
46737 + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
46738 + if test -n "$darwin_arches"; then
46739 + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
46740 + darwin_arch=
46741 + func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
46742 + for darwin_arch in $darwin_arches ; do
46743 + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46744 + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
46745 + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
46746 + func_extract_an_archive "`pwd`" "${darwin_base_archive}"
46747 + cd "$darwin_curdir"
46748 + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
46749 + done # $darwin_arches
46750 + ## Okay now we've a bunch of thin objects, gotta fatten them up :)
46751 + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
46752 + darwin_file=
46753 + darwin_files=
46754 + for darwin_file in $darwin_filelist; do
46755 + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
46756 + lipo -create -output "$darwin_file" $darwin_files
46757 + done # $darwin_filelist
46758 + $RM -rf unfat-$$
46759 + cd "$darwin_orig_dir"
46760 + else
46761 + cd $darwin_orig_dir
46762 + func_extract_an_archive "$my_xdir" "$my_xabs"
46763 + fi # $darwin_arches
46764 + } # !$opt_dry_run
46765 + ;;
46766 + *)
46767 + func_extract_an_archive "$my_xdir" "$my_xabs"
46768 + ;;
46769 + esac
46770 + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
46771 + done
46772 +
46773 + func_extract_archives_result="$my_oldobjs"
46774 +}
46775 +
46776 +
46777 +
46778 +# func_write_libtool_object output_name pic_name nonpic_name
46779 +# Create a libtool object file (analogous to a ".la" file),
46780 +# but don't create it if we're doing a dry run.
46781 +func_write_libtool_object ()
46782 +{
46783 + write_libobj=${1}
46784 + if test "$build_libtool_libs" = yes; then
46785 + write_lobj=\'${2}\'
46786 + else
46787 + write_lobj=none
46788 + fi
46789 +
46790 + if test "$build_old_libs" = yes; then
46791 + write_oldobj=\'${3}\'
46792 + else
46793 + write_oldobj=none
46794 + fi
46795 +
46796 + $opt_dry_run || {
46797 + cat >${write_libobj}T <<EOF
46798 +# $write_libobj - a libtool object file
46799 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
46800 +#
46801 +# Please DO NOT delete this file!
46802 +# It is necessary for linking the library.
46803 +
46804 +# Name of the PIC object.
46805 +pic_object=$write_lobj
46806 +
46807 +# Name of the non-PIC object
46808 +non_pic_object=$write_oldobj
46809 +
46810 +EOF
46811 + mv -f "${write_libobj}T" "${write_libobj}"
46812 + }
46813 +}
46814 +
46815 +# func_mode_compile arg...
46816 +func_mode_compile ()
46817 +{
46818 + $opt_debug
46819 + # Get the compilation command and the source file.
46820 + base_compile=
46821 + srcfile="$nonopt" # always keep a non-empty value in "srcfile"
46822 + suppress_opt=yes
46823 + suppress_output=
46824 + arg_mode=normal
46825 + libobj=
46826 + later=
46827 + pie_flag=
46828 +
46829 + for arg
46830 + do
46831 + case $arg_mode in
46832 + arg )
46833 + # do not "continue". Instead, add this to base_compile
46834 + lastarg="$arg"
46835 + arg_mode=normal
46836 + ;;
46837 +
46838 + target )
46839 + libobj="$arg"
46840 + arg_mode=normal
46841 + continue
46842 + ;;
46843 +
46844 + normal )
46845 + # Accept any command-line options.
46846 + case $arg in
46847 + -o)
46848 + test -n "$libobj" && \
46849 + func_fatal_error "you cannot specify \`-o' more than once"
46850 + arg_mode=target
46851 + continue
46852 + ;;
46853 +
46854 + -pie | -fpie | -fPIE)
46855 + pie_flag="$pie_flag $arg"
46856 + continue
46857 + ;;
46858 +
46859 + -shared | -static | -prefer-pic | -prefer-non-pic)
46860 + later="$later $arg"
46861 + continue
46862 + ;;
46863 +
46864 + -no-suppress)
46865 + suppress_opt=no
46866 + continue
46867 + ;;
46868 +
46869 + -Xcompiler)
46870 + arg_mode=arg # the next one goes into the "base_compile" arg list
46871 + continue # The current "srcfile" will either be retained or
46872 + ;; # replaced later. I would guess that would be a bug.
46873 +
46874 + -Wc,*)
46875 + func_stripname '-Wc,' '' "$arg"
46876 + args=$func_stripname_result
46877 + lastarg=
46878 + save_ifs="$IFS"; IFS=','
46879 + for arg in $args; do
46880 + IFS="$save_ifs"
46881 + func_quote_for_eval "$arg"
46882 + lastarg="$lastarg $func_quote_for_eval_result"
46883 + done
46884 + IFS="$save_ifs"
46885 + func_stripname ' ' '' "$lastarg"
46886 + lastarg=$func_stripname_result
46887 +
46888 + # Add the arguments to base_compile.
46889 + base_compile="$base_compile $lastarg"
46890 + continue
46891 + ;;
46892 +
46893 + *)
46894 + # Accept the current argument as the source file.
46895 + # The previous "srcfile" becomes the current argument.
46896 + #
46897 + lastarg="$srcfile"
46898 + srcfile="$arg"
46899 + ;;
46900 + esac # case $arg
46901 + ;;
46902 + esac # case $arg_mode
46903 +
46904 + # Aesthetically quote the previous argument.
46905 + func_quote_for_eval "$lastarg"
46906 + base_compile="$base_compile $func_quote_for_eval_result"
46907 + done # for arg
46908 +
46909 + case $arg_mode in
46910 + arg)
46911 + func_fatal_error "you must specify an argument for -Xcompile"
46912 + ;;
46913 + target)
46914 + func_fatal_error "you must specify a target with \`-o'"
46915 + ;;
46916 + *)
46917 + # Get the name of the library object.
46918 + test -z "$libobj" && {
46919 + func_basename "$srcfile"
46920 + libobj="$func_basename_result"
46921 + }
46922 + ;;
46923 + esac
46924 +
46925 + # Recognize several different file suffixes.
46926 + # If the user specifies -o file.o, it is replaced with file.lo
46927 + xform='[cCFSifmso]'
46928 + case $libobj in
46929 + *.ada) xform=ada ;;
46930 + *.adb) xform=adb ;;
46931 + *.ads) xform=ads ;;
46932 + *.asm) xform=asm ;;
46933 + *.c++) xform=c++ ;;
46934 + *.cc) xform=cc ;;
46935 + *.ii) xform=ii ;;
46936 + *.class) xform=class ;;
46937 + *.cpp) xform=cpp ;;
46938 + *.cxx) xform=cxx ;;
46939 + *.[fF][09]?) xform='[fF][09].' ;;
46940 + *.for) xform=for ;;
46941 + *.java) xform=java ;;
46942 + *.obj) xform=obj ;;
46943 + esac
46944 +
46945 + libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
46946 +
46947 + case $libobj in
46948 + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
46949 + *)
46950 + func_fatal_error "cannot determine name of library object from \`$libobj'"
46951 + ;;
46952 + esac
46953 +
46954 + func_infer_tag $base_compile
46955 +
46956 + for arg in $later; do
46957 + case $arg in
46958 + -shared)
46959 + test "$build_libtool_libs" != yes && \
46960 + func_fatal_configuration "can not build a shared library"
46961 + build_old_libs=no
46962 + continue
46963 + ;;
46964 +
46965 + -static)
46966 + build_libtool_libs=no
46967 + build_old_libs=yes
46968 + continue
46969 + ;;
46970 +
46971 + -prefer-pic)
46972 + pic_mode=yes
46973 + continue
46974 + ;;
46975 +
46976 + -prefer-non-pic)
46977 + pic_mode=no
46978 + continue
46979 + ;;
46980 + esac
46981 + done
46982 +
46983 + func_quote_for_eval "$libobj"
46984 + test "X$libobj" != "X$func_quote_for_eval_result" \
46985 + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \
46986 + && func_warning "libobj name \`$libobj' may not contain shell special characters."
46987 + func_basename "$obj"
46988 + objname="$func_basename_result"
46989 + func_dirname "$obj" "/" ""
46990 + xdir="$func_dirname_result"
46991 + lobj=${xdir}$objdir/$objname
46992 +
46993 + test -z "$base_compile" && \
46994 + func_fatal_help "you must specify a compilation command"
46995 +
46996 + # Delete any leftover library objects.
46997 + if test "$build_old_libs" = yes; then
46998 + removelist="$obj $lobj $libobj ${libobj}T"
46999 + else
47000 + removelist="$lobj $libobj ${libobj}T"
47001 + fi
47002 +
47003 + $opt_dry_run || $RM $removelist
47004 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47005 +
47006 + # On Cygwin there's no "real" PIC flag so we must build both object types
47007 + case $host_os in
47008 + cygwin* | mingw* | pw32* | os2*)
47009 + pic_mode=default
47010 + ;;
47011 + esac
47012 + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
47013 + # non-PIC code in shared libraries is not supported
47014 + pic_mode=default
47015 + fi
47016 +
47017 + # Calculate the filename of the output object if compiler does
47018 + # not support -o with -c
47019 + if test "$compiler_c_o" = no; then
47020 + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
47021 + lockfile="$output_obj.lock"
47022 + removelist="$removelist $output_obj $lockfile"
47023 + trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
47024 + else
47025 + output_obj=
47026 + need_locks=no
47027 + lockfile=
47028 + fi
47029 +
47030 + # Lock this critical section if it is needed
47031 + # We use this script file to make the link, it avoids creating a new file
47032 + if test "$need_locks" = yes; then
47033 + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
47034 + func_echo "Waiting for $lockfile to be removed"
47035 + sleep 2
47036 + done
47037 + elif test "$need_locks" = warn; then
47038 + if test -f "$lockfile"; then
47039 + $ECHO "\
47040 +*** ERROR, $lockfile exists and contains:
47041 +`cat $lockfile 2>/dev/null`
47042 +
47043 +This indicates that another process is trying to use the same
47044 +temporary object file, and libtool could not work around it because
47045 +your compiler does not support \`-c' and \`-o' together. If you
47046 +repeat this compilation, it may succeed, by chance, but you had better
47047 +avoid parallel builds (make -j) in this platform, or get a better
47048 +compiler."
47049 +
47050 + $opt_dry_run || $RM $removelist
47051 + exit $EXIT_FAILURE
47052 + fi
47053 + $ECHO "$srcfile" > "$lockfile"
47054 + fi
47055 +
47056 + if test -n "$fix_srcfile_path"; then
47057 + eval srcfile=\"$fix_srcfile_path\"
47058 + fi
47059 + func_quote_for_eval "$srcfile"
47060 + qsrcfile=$func_quote_for_eval_result
47061 +
47062 + $opt_dry_run || $RM "$libobj" "${libobj}T"
47063 +
47064 + # Only build a PIC object if we are building libtool libraries.
47065 + if test "$build_libtool_libs" = yes; then
47066 + # Without this assignment, base_compile gets emptied.
47067 + fbsd_hideous_sh_bug=$base_compile
47068 +
47069 + if test "$pic_mode" != no; then
47070 + command="$base_compile $qsrcfile $pic_flag"
47071 + else
47072 + # Don't build PIC code
47073 + command="$base_compile $qsrcfile"
47074 + fi
47075 +
47076 + func_mkdir_p "$xdir$objdir"
47077 +
47078 + if test -z "$output_obj"; then
47079 + # Place PIC objects in $objdir
47080 + command="$command -o $lobj"
47081 + fi
47082 +
47083 + $opt_dry_run || $RM "$lobj" "$output_obj"
47084 +
47085 + func_show_eval "$command" \
47086 + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
47087 +
47088 + if test "$need_locks" = warn &&
47089 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47090 + $ECHO "\
47091 +*** ERROR, $lockfile contains:
47092 +`cat $lockfile 2>/dev/null`
47093 +
47094 +but it should contain:
47095 +$srcfile
47096 +
47097 +This indicates that another process is trying to use the same
47098 +temporary object file, and libtool could not work around it because
47099 +your compiler does not support \`-c' and \`-o' together. If you
47100 +repeat this compilation, it may succeed, by chance, but you had better
47101 +avoid parallel builds (make -j) in this platform, or get a better
47102 +compiler."
47103 +
47104 + $opt_dry_run || $RM $removelist
47105 + exit $EXIT_FAILURE
47106 + fi
47107 +
47108 + # Just move the object if needed, then go on to compile the next one
47109 + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
47110 + func_show_eval '$MV "$output_obj" "$lobj"' \
47111 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47112 + fi
47113 +
47114 + # Allow error messages only from the first compilation.
47115 + if test "$suppress_opt" = yes; then
47116 + suppress_output=' >/dev/null 2>&1'
47117 + fi
47118 + fi
47119 +
47120 + # Only build a position-dependent object if we build old libraries.
47121 + if test "$build_old_libs" = yes; then
47122 + if test "$pic_mode" != yes; then
47123 + # Don't build PIC code
47124 + command="$base_compile $qsrcfile$pie_flag"
47125 + else
47126 + command="$base_compile $qsrcfile $pic_flag"
47127 + fi
47128 + if test "$compiler_c_o" = yes; then
47129 + command="$command -o $obj"
47130 + fi
47131 +
47132 + # Suppress compiler output if we already did a PIC compilation.
47133 + command="$command$suppress_output"
47134 + $opt_dry_run || $RM "$obj" "$output_obj"
47135 + func_show_eval "$command" \
47136 + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
47137 +
47138 + if test "$need_locks" = warn &&
47139 + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
47140 + $ECHO "\
47141 +*** ERROR, $lockfile contains:
47142 +`cat $lockfile 2>/dev/null`
47143 +
47144 +but it should contain:
47145 +$srcfile
47146 +
47147 +This indicates that another process is trying to use the same
47148 +temporary object file, and libtool could not work around it because
47149 +your compiler does not support \`-c' and \`-o' together. If you
47150 +repeat this compilation, it may succeed, by chance, but you had better
47151 +avoid parallel builds (make -j) in this platform, or get a better
47152 +compiler."
47153 +
47154 + $opt_dry_run || $RM $removelist
47155 + exit $EXIT_FAILURE
47156 + fi
47157 +
47158 + # Just move the object if needed
47159 + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
47160 + func_show_eval '$MV "$output_obj" "$obj"' \
47161 + 'error=$?; $opt_dry_run || $RM $removelist; exit $error'
47162 + fi
47163 + fi
47164 +
47165 + $opt_dry_run || {
47166 + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
47167 +
47168 + # Unlock the critical section if it was locked
47169 + if test "$need_locks" != no; then
47170 + $RM "$lockfile"
47171 + fi
47172 + }
47173 +
47174 + exit $EXIT_SUCCESS
47175 +}
47176 +
47177 +test "$mode" = compile && func_mode_compile ${1+"$@"}
47178 +
47179 +
47180 +# func_mode_execute arg...
47181 +func_mode_execute ()
47182 +{
47183 + $opt_debug
47184 + # The first argument is the command name.
47185 + cmd="$nonopt"
47186 + test -z "$cmd" && \
47187 + func_fatal_help "you must specify a COMMAND"
47188 +
47189 + # Handle -dlopen flags immediately.
47190 + for file in $execute_dlfiles; do
47191 + test -f "$file" \
47192 + || func_fatal_help "\`$file' is not a file"
47193 +
47194 + dir=
47195 + case $file in
47196 + *.la)
47197 + # Check to see that this really is a libtool archive.
47198 + func_lalib_unsafe_p "$file" \
47199 + || func_fatal_help "\`$lib' is not a valid libtool archive"
47200 +
47201 + # Read the libtool library.
47202 + dlname=
47203 + library_names=
47204 + func_source "$file"
47205 +
47206 + # Skip this library if it cannot be dlopened.
47207 + if test -z "$dlname"; then
47208 + # Warn if it was a shared library.
47209 + test -n "$library_names" && \
47210 + func_warning "\`$file' was not linked with \`-export-dynamic'"
47211 + continue
47212 + fi
47213 +
47214 + func_dirname "$file" "" "."
47215 + dir="$func_dirname_result"
47216 +
47217 + if test -f "$dir/$objdir/$dlname"; then
47218 + dir="$dir/$objdir"
47219 + else
47220 + if test ! -f "$dir/$dlname"; then
47221 + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
47222 + fi
47223 + fi
47224 + ;;
47225 +
47226 + *.lo)
47227 + # Just add the directory containing the .lo file.
47228 + func_dirname "$file" "" "."
47229 + dir="$func_dirname_result"
47230 + ;;
47231 +
47232 + *)
47233 + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
47234 + continue
47235 + ;;
47236 + esac
47237 +
47238 + # Get the absolute pathname.
47239 + absdir=`cd "$dir" && pwd`
47240 + test -n "$absdir" && dir="$absdir"
47241 +
47242 + # Now add the directory to shlibpath_var.
47243 + if eval "test -z \"\$$shlibpath_var\""; then
47244 + eval "$shlibpath_var=\"\$dir\""
47245 + else
47246 + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
47247 + fi
47248 + done
47249 +
47250 + # This variable tells wrapper scripts just to set shlibpath_var
47251 + # rather than running their programs.
47252 + libtool_execute_magic="$magic"
47253 +
47254 + # Check if any of the arguments is a wrapper script.
47255 + args=
47256 + for file
47257 + do
47258 + case $file in
47259 + -*) ;;
47260 + *)
47261 + # Do a test to see if this is really a libtool program.
47262 + if func_ltwrapper_p "$file"; then
47263 + func_source "$file"
47264 +
47265 + # Transform arg to wrapped name.
47266 + file="$progdir/$program"
47267 + fi
47268 + ;;
47269 + esac
47270 + # Quote arguments (to preserve shell metacharacters).
47271 + func_quote_for_eval "$file"
47272 + args="$args $func_quote_for_eval_result"
47273 + done
47274 +
47275 + if test "X$opt_dry_run" = Xfalse; then
47276 + if test -n "$shlibpath_var"; then
47277 + # Export the shlibpath_var.
47278 + eval "export $shlibpath_var"
47279 + fi
47280 +
47281 + # Restore saved environment variables
47282 + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
47283 + do
47284 + eval "if test \"\${save_$lt_var+set}\" = set; then
47285 + $lt_var=\$save_$lt_var; export $lt_var
47286 + else
47287 + $lt_unset $lt_var
47288 + fi"
47289 + done
47290 +
47291 + # Now prepare to actually exec the command.
47292 + exec_cmd="\$cmd$args"
47293 + else
47294 + # Display what would be done.
47295 + if test -n "$shlibpath_var"; then
47296 + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
47297 + $ECHO "export $shlibpath_var"
47298 + fi
47299 + $ECHO "$cmd$args"
47300 + exit $EXIT_SUCCESS
47301 + fi
47302 +}
47303 +
47304 +test "$mode" = execute && func_mode_execute ${1+"$@"}
47305 +
47306 +
47307 +# func_mode_finish arg...
47308 +func_mode_finish ()
47309 +{
47310 + $opt_debug
47311 + libdirs="$nonopt"
47312 + admincmds=
47313 +
47314 + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
47315 + for dir
47316 + do
47317 + libdirs="$libdirs $dir"
47318 + done
47319 +
47320 + for libdir in $libdirs; do
47321 + if test -n "$finish_cmds"; then
47322 + # Do each command in the finish commands.
47323 + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
47324 +'"$cmd"'"'
47325 + fi
47326 + if test -n "$finish_eval"; then
47327 + # Do the single finish_eval.
47328 + eval cmds=\"$finish_eval\"
47329 + $opt_dry_run || eval "$cmds" || admincmds="$admincmds
47330 + $cmds"
47331 + fi
47332 + done
47333 + fi
47334 +
47335 + # Exit here if they wanted silent mode.
47336 + $opt_silent && exit $EXIT_SUCCESS
47337 +
47338 + $ECHO "X----------------------------------------------------------------------" | $Xsed
47339 + $ECHO "Libraries have been installed in:"
47340 + for libdir in $libdirs; do
47341 + $ECHO " $libdir"
47342 + done
47343 + $ECHO
47344 + $ECHO "If you ever happen to want to link against installed libraries"
47345 + $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
47346 + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
47347 + $ECHO "flag during linking and do at least one of the following:"
47348 + if test -n "$shlibpath_var"; then
47349 + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable"
47350 + $ECHO " during execution"
47351 + fi
47352 + if test -n "$runpath_var"; then
47353 + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable"
47354 + $ECHO " during linking"
47355 + fi
47356 + if test -n "$hardcode_libdir_flag_spec"; then
47357 + libdir=LIBDIR
47358 + eval flag=\"$hardcode_libdir_flag_spec\"
47359 +
47360 + $ECHO " - use the \`$flag' linker flag"
47361 + fi
47362 + if test -n "$admincmds"; then
47363 + $ECHO " - have your system administrator run these commands:$admincmds"
47364 + fi
47365 + if test -f /etc/ld.so.conf; then
47366 + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
47367 + fi
47368 + $ECHO
47369 +
47370 + $ECHO "See any operating system documentation about shared libraries for"
47371 + case $host in
47372 + solaris2.[6789]|solaris2.1[0-9])
47373 + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
47374 + $ECHO "pages."
47375 + ;;
47376 + *)
47377 + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
47378 + ;;
47379 + esac
47380 + $ECHO "X----------------------------------------------------------------------" | $Xsed
47381 + exit $EXIT_SUCCESS
47382 +}
47383 +
47384 +test "$mode" = finish && func_mode_finish ${1+"$@"}
47385 +
47386 +
47387 +# func_mode_install arg...
47388 +func_mode_install ()
47389 +{
47390 + $opt_debug
47391 + # There may be an optional sh(1) argument at the beginning of
47392 + # install_prog (especially on Windows NT).
47393 + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
47394 + # Allow the use of GNU shtool's install command.
47395 + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
47396 + # Aesthetically quote it.
47397 + func_quote_for_eval "$nonopt"
47398 + install_prog="$func_quote_for_eval_result "
47399 + arg=$1
47400 + shift
47401 + else
47402 + install_prog=
47403 + arg=$nonopt
47404 + fi
47405 +
47406 + # The real first argument should be the name of the installation program.
47407 + # Aesthetically quote it.
47408 + func_quote_for_eval "$arg"
47409 + install_prog="$install_prog$func_quote_for_eval_result"
47410 +
47411 + # We need to accept at least all the BSD install flags.
47412 + dest=
47413 + files=
47414 + opts=
47415 + prev=
47416 + install_type=
47417 + isdir=no
47418 + stripme=
47419 + for arg
47420 + do
47421 + if test -n "$dest"; then
47422 + files="$files $dest"
47423 + dest=$arg
47424 + continue
47425 + fi
47426 +
47427 + case $arg in
47428 + -d) isdir=yes ;;
47429 + -f)
47430 + case " $install_prog " in
47431 + *[\\\ /]cp\ *) ;;
47432 + *) prev=$arg ;;
47433 + esac
47434 + ;;
47435 + -g | -m | -o)
47436 + prev=$arg
47437 + ;;
47438 + -s)
47439 + stripme=" -s"
47440 + continue
47441 + ;;
47442 + -*)
47443 + ;;
47444 + *)
47445 + # If the previous option needed an argument, then skip it.
47446 + if test -n "$prev"; then
47447 + prev=
47448 + else
47449 + dest=$arg
47450 + continue
47451 + fi
47452 + ;;
47453 + esac
47454 +
47455 + # Aesthetically quote the argument.
47456 + func_quote_for_eval "$arg"
47457 + install_prog="$install_prog $func_quote_for_eval_result"
47458 + done
47459 +
47460 + test -z "$install_prog" && \
47461 + func_fatal_help "you must specify an install program"
47462 +
47463 + test -n "$prev" && \
47464 + func_fatal_help "the \`$prev' option requires an argument"
47465 +
47466 + if test -z "$files"; then
47467 + if test -z "$dest"; then
47468 + func_fatal_help "no file or destination specified"
47469 + else
47470 + func_fatal_help "you must specify a destination"
47471 + fi
47472 + fi
47473 +
47474 + # Strip any trailing slash from the destination.
47475 + func_stripname '' '/' "$dest"
47476 + dest=$func_stripname_result
47477 +
47478 + # Check to see that the destination is a directory.
47479 + test -d "$dest" && isdir=yes
47480 + if test "$isdir" = yes; then
47481 + destdir="$dest"
47482 + destname=
47483 + else
47484 + func_dirname "$dest" "" "."
47485 + destdir="$func_dirname_result"
47486 + func_basename "$dest"
47487 + destname="$func_basename_result"
47488 +
47489 + # Not a directory, so check to see that there is only one file specified.
47490 + set dummy $files; shift
47491 + test "$#" -gt 1 && \
47492 + func_fatal_help "\`$dest' is not a directory"
47493 + fi
47494 + case $destdir in
47495 + [\\/]* | [A-Za-z]:[\\/]*) ;;
47496 + *)
47497 + for file in $files; do
47498 + case $file in
47499 + *.lo) ;;
47500 + *)
47501 + func_fatal_help "\`$destdir' must be an absolute directory name"
47502 + ;;
47503 + esac
47504 + done
47505 + ;;
47506 + esac
47507 +
47508 + # This variable tells wrapper scripts just to set variables rather
47509 + # than running their programs.
47510 + libtool_install_magic="$magic"
47511 +
47512 + staticlibs=
47513 + future_libdirs=
47514 + current_libdirs=
47515 + for file in $files; do
47516 +
47517 + # Do each installation.
47518 + case $file in
47519 + *.$libext)
47520 + # Do the static libraries later.
47521 + staticlibs="$staticlibs $file"
47522 + ;;
47523 +
47524 + *.la)
47525 + # Check to see that this really is a libtool archive.
47526 + func_lalib_unsafe_p "$file" \
47527 + || func_fatal_help "\`$file' is not a valid libtool archive"
47528 +
47529 + library_names=
47530 + old_library=
47531 + relink_command=
47532 + func_source "$file"
47533 +
47534 + # Add the libdir to current_libdirs if it is the destination.
47535 + if test "X$destdir" = "X$libdir"; then
47536 + case "$current_libdirs " in
47537 + *" $libdir "*) ;;
47538 + *) current_libdirs="$current_libdirs $libdir" ;;
47539 + esac
47540 + else
47541 + # Note the libdir as a future libdir.
47542 + case "$future_libdirs " in
47543 + *" $libdir "*) ;;
47544 + *) future_libdirs="$future_libdirs $libdir" ;;
47545 + esac
47546 + fi
47547 +
47548 + func_dirname "$file" "/" ""
47549 + dir="$func_dirname_result"
47550 + dir="$dir$objdir"
47551 +
47552 + if test -n "$relink_command"; then
47553 + # Determine the prefix the user has applied to our future dir.
47554 + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
47555 +
47556 + # Don't allow the user to place us outside of our expected
47557 + # location b/c this prevents finding dependent libraries that
47558 + # are installed to the same prefix.
47559 + # At present, this check doesn't affect windows .dll's that
47560 + # are installed into $libdir/../bin (currently, that works fine)
47561 + # but it's something to keep an eye on.
47562 + test "$inst_prefix_dir" = "$destdir" && \
47563 + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
47564 +
47565 + if test -n "$inst_prefix_dir"; then
47566 + # Stick the inst_prefix_dir data into the link command.
47567 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
47568 + else
47569 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
47570 + fi
47571 +
47572 + func_warning "relinking \`$file'"
47573 + func_show_eval "$relink_command" \
47574 + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
47575 + fi
47576 +
47577 + # See the names of the shared library.
47578 + set dummy $library_names; shift
47579 + if test -n "$1"; then
47580 + realname="$1"
47581 + shift
47582 +
47583 + srcname="$realname"
47584 + test -n "$relink_command" && srcname="$realname"T
47585 +
47586 + # Install the shared library and build the symlinks.
47587 + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
47588 + 'exit $?'
47589 + tstripme="$stripme"
47590 + case $host_os in
47591 + cygwin* | mingw* | pw32*)
47592 + case $realname in
47593 + *.dll.a)
47594 + tstripme=""
47595 + ;;
47596 + esac
47597 + ;;
47598 + esac
47599 + if test -n "$tstripme" && test -n "$striplib"; then
47600 + func_show_eval "$striplib $destdir/$realname" 'exit $?'
47601 + fi
47602 +
47603 + if test "$#" -gt 0; then
47604 + # Delete the old symlinks, and create new ones.
47605 + # Try `ln -sf' first, because the `ln' binary might depend on
47606 + # the symlink we replace! Solaris /bin/ln does not understand -f,
47607 + # so we also need to try rm && ln -s.
47608 + for linkname
47609 + do
47610 + test "$linkname" != "$realname" \
47611 + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
47612 + done
47613 + fi
47614 +
47615 + # Do each command in the postinstall commands.
47616 + lib="$destdir/$realname"
47617 + func_execute_cmds "$postinstall_cmds" 'exit $?'
47618 + fi
47619 +
47620 + # Install the pseudo-library for information purposes.
47621 + func_basename "$file"
47622 + name="$func_basename_result"
47623 + instname="$dir/$name"i
47624 + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
47625 +
47626 + # Maybe install the static library, too.
47627 + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
47628 + ;;
47629 +
47630 + *.lo)
47631 + # Install (i.e. copy) a libtool object.
47632 +
47633 + # Figure out destination file name, if it wasn't already specified.
47634 + if test -n "$destname"; then
47635 + destfile="$destdir/$destname"
47636 + else
47637 + func_basename "$file"
47638 + destfile="$func_basename_result"
47639 + destfile="$destdir/$destfile"
47640 + fi
47641 +
47642 + # Deduce the name of the destination old-style object file.
47643 + case $destfile in
47644 + *.lo)
47645 + func_lo2o "$destfile"
47646 + staticdest=$func_lo2o_result
47647 + ;;
47648 + *.$objext)
47649 + staticdest="$destfile"
47650 + destfile=
47651 + ;;
47652 + *)
47653 + func_fatal_help "cannot copy a libtool object to \`$destfile'"
47654 + ;;
47655 + esac
47656 +
47657 + # Install the libtool object if requested.
47658 + test -n "$destfile" && \
47659 + func_show_eval "$install_prog $file $destfile" 'exit $?'
47660 +
47661 + # Install the old object if enabled.
47662 + if test "$build_old_libs" = yes; then
47663 + # Deduce the name of the old-style object file.
47664 + func_lo2o "$file"
47665 + staticobj=$func_lo2o_result
47666 + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
47667 + fi
47668 + exit $EXIT_SUCCESS
47669 + ;;
47670 +
47671 + *)
47672 + # Figure out destination file name, if it wasn't already specified.
47673 + if test -n "$destname"; then
47674 + destfile="$destdir/$destname"
47675 + else
47676 + func_basename "$file"
47677 + destfile="$func_basename_result"
47678 + destfile="$destdir/$destfile"
47679 + fi
47680 +
47681 + # If the file is missing, and there is a .exe on the end, strip it
47682 + # because it is most likely a libtool script we actually want to
47683 + # install
47684 + stripped_ext=""
47685 + case $file in
47686 + *.exe)
47687 + if test ! -f "$file"; then
47688 + func_stripname '' '.exe' "$file"
47689 + file=$func_stripname_result
47690 + stripped_ext=".exe"
47691 + fi
47692 + ;;
47693 + esac
47694 +
47695 + # Do a test to see if this is really a libtool program.
47696 + case $host in
47697 + *cygwin*|*mingw*)
47698 + func_stripname '' '.exe' "$file"
47699 + wrapper=$func_stripname_result
47700 + ;;
47701 + *)
47702 + wrapper=$file
47703 + ;;
47704 + esac
47705 + if func_ltwrapper_p "$wrapper"; then
47706 + notinst_deplibs=
47707 + relink_command=
47708 +
47709 + func_source "$wrapper"
47710 +
47711 + # Check the variables that should have been set.
47712 + test -z "$generated_by_libtool_version" && \
47713 + func_fatal_error "invalid libtool wrapper script \`$wrapper'"
47714 +
47715 + finalize=yes
47716 + for lib in $notinst_deplibs; do
47717 + # Check to see that each library is installed.
47718 + libdir=
47719 + if test -f "$lib"; then
47720 + func_source "$lib"
47721 + fi
47722 + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
47723 + if test -n "$libdir" && test ! -f "$libfile"; then
47724 + func_warning "\`$lib' has not been installed in \`$libdir'"
47725 + finalize=no
47726 + fi
47727 + done
47728 +
47729 + relink_command=
47730 + func_source "$wrapper"
47731 +
47732 + outputname=
47733 + if test "$fast_install" = no && test -n "$relink_command"; then
47734 + $opt_dry_run || {
47735 + if test "$finalize" = yes; then
47736 + tmpdir=`func_mktempdir`
47737 + func_basename "$file$stripped_ext"
47738 + file="$func_basename_result"
47739 + outputname="$tmpdir/$file"
47740 + # Replace the output file specification.
47741 + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
47742 +
47743 + $opt_silent || {
47744 + func_quote_for_expand "$relink_command"
47745 + eval "func_echo $func_quote_for_expand_result"
47746 + }
47747 + if eval "$relink_command"; then :
47748 + else
47749 + func_error "error: relink \`$file' with the above command before installing it"
47750 + $opt_dry_run || ${RM}r "$tmpdir"
47751 + continue
47752 + fi
47753 + file="$outputname"
47754 + else
47755 + func_warning "cannot relink \`$file'"
47756 + fi
47757 + }
47758 + else
47759 + # Install the binary that we compiled earlier.
47760 + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
47761 + fi
47762 + fi
47763 +
47764 + # remove .exe since cygwin /usr/bin/install will append another
47765 + # one anyway
47766 + case $install_prog,$host in
47767 + */usr/bin/install*,*cygwin*)
47768 + case $file:$destfile in
47769 + *.exe:*.exe)
47770 + # this is ok
47771 + ;;
47772 + *.exe:*)
47773 + destfile=$destfile.exe
47774 + ;;
47775 + *:*.exe)
47776 + func_stripname '' '.exe' "$destfile"
47777 + destfile=$func_stripname_result
47778 + ;;
47779 + esac
47780 + ;;
47781 + esac
47782 + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
47783 + $opt_dry_run || if test -n "$outputname"; then
47784 + ${RM}r "$tmpdir"
47785 + fi
47786 + ;;
47787 + esac
47788 + done
47789 +
47790 + for file in $staticlibs; do
47791 + func_basename "$file"
47792 + name="$func_basename_result"
47793 +
47794 + # Set up the ranlib parameters.
47795 + oldlib="$destdir/$name"
47796 +
47797 + func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
47798 +
47799 + if test -n "$stripme" && test -n "$old_striplib"; then
47800 + func_show_eval "$old_striplib $oldlib" 'exit $?'
47801 + fi
47802 +
47803 + # Do each command in the postinstall commands.
47804 + func_execute_cmds "$old_postinstall_cmds" 'exit $?'
47805 + done
47806 +
47807 + test -n "$future_libdirs" && \
47808 + func_warning "remember to run \`$progname --finish$future_libdirs'"
47809 +
47810 + if test -n "$current_libdirs"; then
47811 + # Maybe just do a dry run.
47812 + $opt_dry_run && current_libdirs=" -n$current_libdirs"
47813 + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
47814 + else
47815 + exit $EXIT_SUCCESS
47816 + fi
47817 +}
47818 +
47819 +test "$mode" = install && func_mode_install ${1+"$@"}
47820 +
47821 +
47822 +# func_mode_link arg...
47823 +func_mode_link ()
47824 +{
47825 + $opt_debug
47826 + case $host in
47827 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
47828 + # It is impossible to link a dll without this setting, and
47829 + # we shouldn't force the makefile maintainer to figure out
47830 + # which system we are compiling for in order to pass an extra
47831 + # flag for every libtool invocation.
47832 + # allow_undefined=no
47833 +
47834 + # FIXME: Unfortunately, there are problems with the above when trying
47835 + # to make a dll which has undefined symbols, in which case not
47836 + # even a static library is built. For now, we need to specify
47837 + # -no-undefined on the libtool link line when we can be certain
47838 + # that all symbols are satisfied, otherwise we get a static library.
47839 + allow_undefined=yes
47840 + ;;
47841 + *)
47842 + allow_undefined=yes
47843 + ;;
47844 + esac
47845 + libtool_args=$nonopt
47846 + base_compile="$nonopt $@"
47847 + compile_command=$nonopt
47848 + finalize_command=$nonopt
47849 +
47850 + compile_rpath=
47851 + finalize_rpath=
47852 + compile_shlibpath=
47853 + finalize_shlibpath=
47854 + convenience=
47855 + old_convenience=
47856 + deplibs=
47857 + old_deplibs=
47858 + compiler_flags=
47859 + linker_flags=
47860 + dllsearchpath=
47861 + lib_search_path=`pwd`
47862 + inst_prefix_dir=
47863 + new_inherited_linker_flags=
47864 +
47865 + avoid_version=no
47866 + dlfiles=
47867 + dlprefiles=
47868 + dlself=no
47869 + export_dynamic=no
47870 + export_symbols=
47871 + export_symbols_regex=
47872 + generated=
47873 + libobjs=
47874 + ltlibs=
47875 + module=no
47876 + no_install=no
47877 + objs=
47878 + non_pic_objects=
47879 + precious_files_regex=
47880 + prefer_static_libs=no
47881 + preload=no
47882 + prev=
47883 + prevarg=
47884 + release=
47885 + rpath=
47886 + xrpath=
47887 + perm_rpath=
47888 + temp_rpath=
47889 + thread_safe=no
47890 + vinfo=
47891 + vinfo_number=no
47892 + weak_libs=
47893 + single_module="${wl}-single_module"
47894 + func_infer_tag $base_compile
47895 +
47896 + # We need to know -static, to get the right output filenames.
47897 + for arg
47898 + do
47899 + case $arg in
47900 + -shared)
47901 + test "$build_libtool_libs" != yes && \
47902 + func_fatal_configuration "can not build a shared library"
47903 + build_old_libs=no
47904 + break
47905 + ;;
47906 + -all-static | -static | -static-libtool-libs)
47907 + case $arg in
47908 + -all-static)
47909 + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
47910 + func_warning "complete static linking is impossible in this configuration"
47911 + fi
47912 + if test -n "$link_static_flag"; then
47913 + dlopen_self=$dlopen_self_static
47914 + # See comment for -static flag below, for more details.
47915 + func_append compile_command " $link_static_flag"
47916 + func_append finalize_command " $link_static_flag"
47917 + fi
47918 + prefer_static_libs=yes
47919 + ;;
47920 + -static)
47921 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
47922 + dlopen_self=$dlopen_self_static
47923 + fi
47924 + prefer_static_libs=built
47925 + ;;
47926 + -static-libtool-libs)
47927 + if test -z "$pic_flag" && test -n "$link_static_flag"; then
47928 + dlopen_self=$dlopen_self_static
47929 + fi
47930 + prefer_static_libs=yes
47931 + ;;
47932 + esac
47933 + build_libtool_libs=no
47934 + build_old_libs=yes
47935 + break
47936 + ;;
47937 + esac
47938 + done
47939 +
47940 + # See if our shared archives depend on static archives.
47941 + test -n "$old_archive_from_new_cmds" && build_old_libs=yes
47942 +
47943 + # Go through the arguments, transforming them on the way.
47944 + while test "$#" -gt 0; do
47945 + arg="$1"
47946 + shift
47947 + func_quote_for_eval "$arg"
47948 + qarg=$func_quote_for_eval_unquoted_result
47949 + func_append libtool_args " $func_quote_for_eval_result"
47950 +
47951 + # If the previous option needs an argument, assign it.
47952 + if test -n "$prev"; then
47953 + case $prev in
47954 + output)
47955 + func_append compile_command " @OUTPUT@"
47956 + func_append finalize_command " @OUTPUT@"
47957 + ;;
47958 + esac
47959 +
47960 + case $prev in
47961 + dlfiles|dlprefiles)
47962 + if test "$preload" = no; then
47963 + # Add the symbol object into the linking commands.
47964 + func_append compile_command " @SYMFILE@"
47965 + func_append finalize_command " @SYMFILE@"
47966 + preload=yes
47967 + fi
47968 + case $arg in
47969 + *.la | *.lo) ;; # We handle these cases below.
47970 + force)
47971 + if test "$dlself" = no; then
47972 + dlself=needless
47973 + export_dynamic=yes
47974 + fi
47975 + prev=
47976 + continue
47977 + ;;
47978 + self)
47979 + if test "$prev" = dlprefiles; then
47980 + dlself=yes
47981 + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
47982 + dlself=yes
47983 + else
47984 + dlself=needless
47985 + export_dynamic=yes
47986 + fi
47987 + prev=
47988 + continue
47989 + ;;
47990 + *)
47991 + if test "$prev" = dlfiles; then
47992 + dlfiles="$dlfiles $arg"
47993 + else
47994 + dlprefiles="$dlprefiles $arg"
47995 + fi
47996 + prev=
47997 + continue
47998 + ;;
47999 + esac
48000 + ;;
48001 + expsyms)
48002 + export_symbols="$arg"
48003 + test -f "$arg" \
48004 + || func_fatal_error "symbol file \`$arg' does not exist"
48005 + prev=
48006 + continue
48007 + ;;
48008 + expsyms_regex)
48009 + export_symbols_regex="$arg"
48010 + prev=
48011 + continue
48012 + ;;
48013 + framework)
48014 + case $host in
48015 + *-*-darwin*)
48016 + case "$deplibs " in
48017 + *" $qarg.ltframework "*) ;;
48018 + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
48019 + ;;
48020 + esac
48021 + ;;
48022 + esac
48023 + prev=
48024 + continue
48025 + ;;
48026 + inst_prefix)
48027 + inst_prefix_dir="$arg"
48028 + prev=
48029 + continue
48030 + ;;
48031 + objectlist)
48032 + if test -f "$arg"; then
48033 + save_arg=$arg
48034 + moreargs=
48035 + for fil in `cat "$save_arg"`
48036 + do
48037 +# moreargs="$moreargs $fil"
48038 + arg=$fil
48039 + # A libtool-controlled object.
48040 +
48041 + # Check to see that this really is a libtool object.
48042 + if func_lalib_unsafe_p "$arg"; then
48043 + pic_object=
48044 + non_pic_object=
48045 +
48046 + # Read the .lo file
48047 + func_source "$arg"
48048 +
48049 + if test -z "$pic_object" ||
48050 + test -z "$non_pic_object" ||
48051 + test "$pic_object" = none &&
48052 + test "$non_pic_object" = none; then
48053 + func_fatal_error "cannot find name of object for \`$arg'"
48054 + fi
48055 +
48056 + # Extract subdirectory from the argument.
48057 + func_dirname "$arg" "/" ""
48058 + xdir="$func_dirname_result"
48059 +
48060 + if test "$pic_object" != none; then
48061 + # Prepend the subdirectory the object is found in.
48062 + pic_object="$xdir$pic_object"
48063 +
48064 + if test "$prev" = dlfiles; then
48065 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48066 + dlfiles="$dlfiles $pic_object"
48067 + prev=
48068 + continue
48069 + else
48070 + # If libtool objects are unsupported, then we need to preload.
48071 + prev=dlprefiles
48072 + fi
48073 + fi
48074 +
48075 + # CHECK ME: I think I busted this. -Ossama
48076 + if test "$prev" = dlprefiles; then
48077 + # Preload the old-style object.
48078 + dlprefiles="$dlprefiles $pic_object"
48079 + prev=
48080 + fi
48081 +
48082 + # A PIC object.
48083 + func_append libobjs " $pic_object"
48084 + arg="$pic_object"
48085 + fi
48086 +
48087 + # Non-PIC object.
48088 + if test "$non_pic_object" != none; then
48089 + # Prepend the subdirectory the object is found in.
48090 + non_pic_object="$xdir$non_pic_object"
48091 +
48092 + # A standard non-PIC object
48093 + func_append non_pic_objects " $non_pic_object"
48094 + if test -z "$pic_object" || test "$pic_object" = none ; then
48095 + arg="$non_pic_object"
48096 + fi
48097 + else
48098 + # If the PIC object exists, use it instead.
48099 + # $xdir was prepended to $pic_object above.
48100 + non_pic_object="$pic_object"
48101 + func_append non_pic_objects " $non_pic_object"
48102 + fi
48103 + else
48104 + # Only an error if not doing a dry-run.
48105 + if $opt_dry_run; then
48106 + # Extract subdirectory from the argument.
48107 + func_dirname "$arg" "/" ""
48108 + xdir="$func_dirname_result"
48109 +
48110 + func_lo2o "$arg"
48111 + pic_object=$xdir$objdir/$func_lo2o_result
48112 + non_pic_object=$xdir$func_lo2o_result
48113 + func_append libobjs " $pic_object"
48114 + func_append non_pic_objects " $non_pic_object"
48115 + else
48116 + func_fatal_error "\`$arg' is not a valid libtool object"
48117 + fi
48118 + fi
48119 + done
48120 + else
48121 + func_fatal_error "link input file \`$arg' does not exist"
48122 + fi
48123 + arg=$save_arg
48124 + prev=
48125 + continue
48126 + ;;
48127 + precious_regex)
48128 + precious_files_regex="$arg"
48129 + prev=
48130 + continue
48131 + ;;
48132 + release)
48133 + release="-$arg"
48134 + prev=
48135 + continue
48136 + ;;
48137 + rpath | xrpath)
48138 + # We need an absolute path.
48139 + case $arg in
48140 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48141 + *)
48142 + func_fatal_error "only absolute run-paths are allowed"
48143 + ;;
48144 + esac
48145 + if test "$prev" = rpath; then
48146 + case "$rpath " in
48147 + *" $arg "*) ;;
48148 + *) rpath="$rpath $arg" ;;
48149 + esac
48150 + else
48151 + case "$xrpath " in
48152 + *" $arg "*) ;;
48153 + *) xrpath="$xrpath $arg" ;;
48154 + esac
48155 + fi
48156 + prev=
48157 + continue
48158 + ;;
48159 + shrext)
48160 + shrext_cmds="$arg"
48161 + prev=
48162 + continue
48163 + ;;
48164 + weak)
48165 + weak_libs="$weak_libs $arg"
48166 + prev=
48167 + continue
48168 + ;;
48169 + xcclinker)
48170 + linker_flags="$linker_flags $qarg"
48171 + compiler_flags="$compiler_flags $qarg"
48172 + prev=
48173 + func_append compile_command " $qarg"
48174 + func_append finalize_command " $qarg"
48175 + continue
48176 + ;;
48177 + xcompiler)
48178 + compiler_flags="$compiler_flags $qarg"
48179 + prev=
48180 + func_append compile_command " $qarg"
48181 + func_append finalize_command " $qarg"
48182 + continue
48183 + ;;
48184 + xlinker)
48185 + linker_flags="$linker_flags $qarg"
48186 + compiler_flags="$compiler_flags $wl$qarg"
48187 + prev=
48188 + func_append compile_command " $wl$qarg"
48189 + func_append finalize_command " $wl$qarg"
48190 + continue
48191 + ;;
48192 + *)
48193 + eval "$prev=\"\$arg\""
48194 + prev=
48195 + continue
48196 + ;;
48197 + esac
48198 + fi # test -n "$prev"
48199 +
48200 + prevarg="$arg"
48201 +
48202 + case $arg in
48203 + -all-static)
48204 + # The effects of -all-static are defined in a previous loop.
48205 + continue
48206 + ;;
48207 +
48208 + -allow-undefined)
48209 + # FIXME: remove this flag sometime in the future.
48210 + func_fatal_error "\`-allow-undefined' must not be used because it is the default"
48211 + ;;
48212 +
48213 + -avoid-version)
48214 + avoid_version=yes
48215 + continue
48216 + ;;
48217 +
48218 + -dlopen)
48219 + prev=dlfiles
48220 + continue
48221 + ;;
48222 +
48223 + -dlpreopen)
48224 + prev=dlprefiles
48225 + continue
48226 + ;;
48227 +
48228 + -export-dynamic)
48229 + export_dynamic=yes
48230 + continue
48231 + ;;
48232 +
48233 + -export-symbols | -export-symbols-regex)
48234 + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
48235 + func_fatal_error "more than one -exported-symbols argument is not allowed"
48236 + fi
48237 + if test "X$arg" = "X-export-symbols"; then
48238 + prev=expsyms
48239 + else
48240 + prev=expsyms_regex
48241 + fi
48242 + continue
48243 + ;;
48244 +
48245 + -framework)
48246 + prev=framework
48247 + continue
48248 + ;;
48249 +
48250 + -inst-prefix-dir)
48251 + prev=inst_prefix
48252 + continue
48253 + ;;
48254 +
48255 + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
48256 + # so, if we see these flags be careful not to treat them like -L
48257 + -L[A-Z][A-Z]*:*)
48258 + case $with_gcc/$host in
48259 + no/*-*-irix* | /*-*-irix*)
48260 + func_append compile_command " $arg"
48261 + func_append finalize_command " $arg"
48262 + ;;
48263 + esac
48264 + continue
48265 + ;;
48266 +
48267 + -L*)
48268 + func_stripname '-L' '' "$arg"
48269 + dir=$func_stripname_result
48270 + # We need an absolute path.
48271 + case $dir in
48272 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48273 + *)
48274 + absdir=`cd "$dir" && pwd`
48275 + test -z "$absdir" && \
48276 + func_fatal_error "cannot determine absolute directory name of \`$dir'"
48277 + dir="$absdir"
48278 + ;;
48279 + esac
48280 + case "$deplibs " in
48281 + *" -L$dir "*) ;;
48282 + *)
48283 + deplibs="$deplibs -L$dir"
48284 + lib_search_path="$lib_search_path $dir"
48285 + ;;
48286 + esac
48287 + case $host in
48288 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
48289 + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
48290 + case :$dllsearchpath: in
48291 + *":$dir:"*) ;;
48292 + *) dllsearchpath="$dllsearchpath:$dir";;
48293 + esac
48294 + case :$dllsearchpath: in
48295 + *":$testbindir:"*) ;;
48296 + *) dllsearchpath="$dllsearchpath:$testbindir";;
48297 + esac
48298 + ;;
48299 + esac
48300 + continue
48301 + ;;
48302 +
48303 + -l*)
48304 + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
48305 + case $host in
48306 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
48307 + # These systems don't actually have a C or math library (as such)
48308 + continue
48309 + ;;
48310 + *-*-os2*)
48311 + # These systems don't actually have a C library (as such)
48312 + test "X$arg" = "X-lc" && continue
48313 + ;;
48314 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48315 + # Do not include libc due to us having libc/libc_r.
48316 + test "X$arg" = "X-lc" && continue
48317 + ;;
48318 + *-*-rhapsody* | *-*-darwin1.[012])
48319 + # Rhapsody C and math libraries are in the System framework
48320 + deplibs="$deplibs System.ltframework"
48321 + continue
48322 + ;;
48323 + *-*-sco3.2v5* | *-*-sco5v6*)
48324 + # Causes problems with __ctype
48325 + test "X$arg" = "X-lc" && continue
48326 + ;;
48327 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
48328 + # Compiler inserts libc in the correct place for threads to work
48329 + test "X$arg" = "X-lc" && continue
48330 + ;;
48331 + esac
48332 + elif test "X$arg" = "X-lc_r"; then
48333 + case $host in
48334 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
48335 + # Do not include libc_r directly, use -pthread flag.
48336 + continue
48337 + ;;
48338 + esac
48339 + fi
48340 + deplibs="$deplibs $arg"
48341 + continue
48342 + ;;
48343 +
48344 + -module)
48345 + module=yes
48346 + continue
48347 + ;;
48348 +
48349 + # Tru64 UNIX uses -model [arg] to determine the layout of C++
48350 + # classes, name mangling, and exception handling.
48351 + # Darwin uses the -arch flag to determine output architecture.
48352 + -model|-arch|-isysroot)
48353 + compiler_flags="$compiler_flags $arg"
48354 + func_append compile_command " $arg"
48355 + func_append finalize_command " $arg"
48356 + prev=xcompiler
48357 + continue
48358 + ;;
48359 +
48360 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
48361 + compiler_flags="$compiler_flags $arg"
48362 + func_append compile_command " $arg"
48363 + func_append finalize_command " $arg"
48364 + case "$new_inherited_linker_flags " in
48365 + *" $arg "*) ;;
48366 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
48367 + esac
48368 + continue
48369 + ;;
48370 +
48371 + -multi_module)
48372 + single_module="${wl}-multi_module"
48373 + continue
48374 + ;;
48375 +
48376 + -no-fast-install)
48377 + fast_install=no
48378 + continue
48379 + ;;
48380 +
48381 + -no-install)
48382 + case $host in
48383 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
48384 + # The PATH hackery in wrapper scripts is required on Windows
48385 + # in order for the loader to find any dlls it needs.
48386 + func_warning "\`-no-install' is ignored for $host"
48387 + func_warning "assuming \`-no-fast-install' instead"
48388 + fast_install=no
48389 + ;;
48390 + *) no_install=yes ;;
48391 + esac
48392 + continue
48393 + ;;
48394 +
48395 + -no-undefined)
48396 + allow_undefined=no
48397 + continue
48398 + ;;
48399 +
48400 + -objectlist)
48401 + prev=objectlist
48402 + continue
48403 + ;;
48404 +
48405 + -o) prev=output ;;
48406 +
48407 + -precious-files-regex)
48408 + prev=precious_regex
48409 + continue
48410 + ;;
48411 +
48412 + -release)
48413 + prev=release
48414 + continue
48415 + ;;
48416 +
48417 + -rpath)
48418 + prev=rpath
48419 + continue
48420 + ;;
48421 +
48422 + -R)
48423 + prev=xrpath
48424 + continue
48425 + ;;
48426 +
48427 + -R*)
48428 + func_stripname '-R' '' "$arg"
48429 + dir=$func_stripname_result
48430 + # We need an absolute path.
48431 + case $dir in
48432 + [\\/]* | [A-Za-z]:[\\/]*) ;;
48433 + *)
48434 + func_fatal_error "only absolute run-paths are allowed"
48435 + ;;
48436 + esac
48437 + case "$xrpath " in
48438 + *" $dir "*) ;;
48439 + *) xrpath="$xrpath $dir" ;;
48440 + esac
48441 + continue
48442 + ;;
48443 +
48444 + -shared)
48445 + # The effects of -shared are defined in a previous loop.
48446 + continue
48447 + ;;
48448 +
48449 + -shrext)
48450 + prev=shrext
48451 + continue
48452 + ;;
48453 +
48454 + -static | -static-libtool-libs)
48455 + # The effects of -static are defined in a previous loop.
48456 + # We used to do the same as -all-static on platforms that
48457 + # didn't have a PIC flag, but the assumption that the effects
48458 + # would be equivalent was wrong. It would break on at least
48459 + # Digital Unix and AIX.
48460 + continue
48461 + ;;
48462 +
48463 + -thread-safe)
48464 + thread_safe=yes
48465 + continue
48466 + ;;
48467 +
48468 + -version-info)
48469 + prev=vinfo
48470 + continue
48471 + ;;
48472 +
48473 + -version-number)
48474 + prev=vinfo
48475 + vinfo_number=yes
48476 + continue
48477 + ;;
48478 +
48479 + -weak)
48480 + prev=weak
48481 + continue
48482 + ;;
48483 +
48484 + -Wc,*)
48485 + func_stripname '-Wc,' '' "$arg"
48486 + args=$func_stripname_result
48487 + arg=
48488 + save_ifs="$IFS"; IFS=','
48489 + for flag in $args; do
48490 + IFS="$save_ifs"
48491 + func_quote_for_eval "$flag"
48492 + arg="$arg $wl$func_quote_for_eval_result"
48493 + compiler_flags="$compiler_flags $func_quote_for_eval_result"
48494 + done
48495 + IFS="$save_ifs"
48496 + func_stripname ' ' '' "$arg"
48497 + arg=$func_stripname_result
48498 + ;;
48499 +
48500 + -Wl,*)
48501 + func_stripname '-Wl,' '' "$arg"
48502 + args=$func_stripname_result
48503 + arg=
48504 + save_ifs="$IFS"; IFS=','
48505 + for flag in $args; do
48506 + IFS="$save_ifs"
48507 + func_quote_for_eval "$flag"
48508 + arg="$arg $wl$func_quote_for_eval_result"
48509 + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
48510 + linker_flags="$linker_flags $func_quote_for_eval_result"
48511 + done
48512 + IFS="$save_ifs"
48513 + func_stripname ' ' '' "$arg"
48514 + arg=$func_stripname_result
48515 + ;;
48516 +
48517 + -Xcompiler)
48518 + prev=xcompiler
48519 + continue
48520 + ;;
48521 +
48522 + -Xlinker)
48523 + prev=xlinker
48524 + continue
48525 + ;;
48526 +
48527 + -XCClinker)
48528 + prev=xcclinker
48529 + continue
48530 + ;;
48531 +
48532 + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
48533 + # -r[0-9][0-9]* specifies the processor on the SGI compiler
48534 + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
48535 + # +DA*, +DD* enable 64-bit mode on the HP compiler
48536 + # -q* pass through compiler args for the IBM compiler
48537 + # -m*, -t[45]*, -txscale* pass through architecture-specific
48538 + # compiler args for GCC
48539 + # -F/path gives path to uninstalled frameworks, gcc on darwin
48540 + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
48541 + # @file GCC response files
48542 + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
48543 + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
48544 + func_quote_for_eval "$arg"
48545 + arg="$func_quote_for_eval_result"
48546 + func_append compile_command " $arg"
48547 + func_append finalize_command " $arg"
48548 + compiler_flags="$compiler_flags $arg"
48549 + continue
48550 + ;;
48551 +
48552 + # Some other compiler flag.
48553 + -* | +*)
48554 + func_quote_for_eval "$arg"
48555 + arg="$func_quote_for_eval_result"
48556 + ;;
48557 +
48558 + *.$objext)
48559 + # A standard object.
48560 + objs="$objs $arg"
48561 + ;;
48562 +
48563 + *.lo)
48564 + # A libtool-controlled object.
48565 +
48566 + # Check to see that this really is a libtool object.
48567 + if func_lalib_unsafe_p "$arg"; then
48568 + pic_object=
48569 + non_pic_object=
48570 +
48571 + # Read the .lo file
48572 + func_source "$arg"
48573 +
48574 + if test -z "$pic_object" ||
48575 + test -z "$non_pic_object" ||
48576 + test "$pic_object" = none &&
48577 + test "$non_pic_object" = none; then
48578 + func_fatal_error "cannot find name of object for \`$arg'"
48579 + fi
48580 +
48581 + # Extract subdirectory from the argument.
48582 + func_dirname "$arg" "/" ""
48583 + xdir="$func_dirname_result"
48584 +
48585 + if test "$pic_object" != none; then
48586 + # Prepend the subdirectory the object is found in.
48587 + pic_object="$xdir$pic_object"
48588 +
48589 + if test "$prev" = dlfiles; then
48590 + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48591 + dlfiles="$dlfiles $pic_object"
48592 + prev=
48593 + continue
48594 + else
48595 + # If libtool objects are unsupported, then we need to preload.
48596 + prev=dlprefiles
48597 + fi
48598 + fi
48599 +
48600 + # CHECK ME: I think I busted this. -Ossama
48601 + if test "$prev" = dlprefiles; then
48602 + # Preload the old-style object.
48603 + dlprefiles="$dlprefiles $pic_object"
48604 + prev=
48605 + fi
48606 +
48607 + # A PIC object.
48608 + func_append libobjs " $pic_object"
48609 + arg="$pic_object"
48610 + fi
48611 +
48612 + # Non-PIC object.
48613 + if test "$non_pic_object" != none; then
48614 + # Prepend the subdirectory the object is found in.
48615 + non_pic_object="$xdir$non_pic_object"
48616 +
48617 + # A standard non-PIC object
48618 + func_append non_pic_objects " $non_pic_object"
48619 + if test -z "$pic_object" || test "$pic_object" = none ; then
48620 + arg="$non_pic_object"
48621 + fi
48622 + else
48623 + # If the PIC object exists, use it instead.
48624 + # $xdir was prepended to $pic_object above.
48625 + non_pic_object="$pic_object"
48626 + func_append non_pic_objects " $non_pic_object"
48627 + fi
48628 + else
48629 + # Only an error if not doing a dry-run.
48630 + if $opt_dry_run; then
48631 + # Extract subdirectory from the argument.
48632 + func_dirname "$arg" "/" ""
48633 + xdir="$func_dirname_result"
48634 +
48635 + func_lo2o "$arg"
48636 + pic_object=$xdir$objdir/$func_lo2o_result
48637 + non_pic_object=$xdir$func_lo2o_result
48638 + func_append libobjs " $pic_object"
48639 + func_append non_pic_objects " $non_pic_object"
48640 + else
48641 + func_fatal_error "\`$arg' is not a valid libtool object"
48642 + fi
48643 + fi
48644 + ;;
48645 +
48646 + *.$libext)
48647 + # An archive.
48648 + deplibs="$deplibs $arg"
48649 + old_deplibs="$old_deplibs $arg"
48650 + continue
48651 + ;;
48652 +
48653 + *.la)
48654 + # A libtool-controlled library.
48655 +
48656 + if test "$prev" = dlfiles; then
48657 + # This library was specified with -dlopen.
48658 + dlfiles="$dlfiles $arg"
48659 + prev=
48660 + elif test "$prev" = dlprefiles; then
48661 + # The library was specified with -dlpreopen.
48662 + dlprefiles="$dlprefiles $arg"
48663 + prev=
48664 + else
48665 + deplibs="$deplibs $arg"
48666 + fi
48667 + continue
48668 + ;;
48669 +
48670 + # Some other compiler argument.
48671 + *)
48672 + # Unknown arguments in both finalize_command and compile_command need
48673 + # to be aesthetically quoted because they are evaled later.
48674 + func_quote_for_eval "$arg"
48675 + arg="$func_quote_for_eval_result"
48676 + ;;
48677 + esac # arg
48678 +
48679 + # Now actually substitute the argument into the commands.
48680 + if test -n "$arg"; then
48681 + func_append compile_command " $arg"
48682 + func_append finalize_command " $arg"
48683 + fi
48684 + done # argument parsing loop
48685 +
48686 + test -n "$prev" && \
48687 + func_fatal_help "the \`$prevarg' option requires an argument"
48688 +
48689 + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
48690 + eval arg=\"$export_dynamic_flag_spec\"
48691 + func_append compile_command " $arg"
48692 + func_append finalize_command " $arg"
48693 + fi
48694 +
48695 + oldlibs=
48696 + # calculate the name of the file, without its directory
48697 + func_basename "$output"
48698 + outputname="$func_basename_result"
48699 + libobjs_save="$libobjs"
48700 +
48701 + if test -n "$shlibpath_var"; then
48702 + # get the directories listed in $shlibpath_var
48703 + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
48704 + else
48705 + shlib_search_path=
48706 + fi
48707 + eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
48708 + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
48709 +
48710 + func_dirname "$output" "/" ""
48711 + output_objdir="$func_dirname_result$objdir"
48712 + # Create the object directory.
48713 + func_mkdir_p "$output_objdir"
48714 +
48715 + # Determine the type of output
48716 + case $output in
48717 + "")
48718 + func_fatal_help "you must specify an output file"
48719 + ;;
48720 + *.$libext) linkmode=oldlib ;;
48721 + *.lo | *.$objext) linkmode=obj ;;
48722 + *.la) linkmode=lib ;;
48723 + *) linkmode=prog ;; # Anything else should be a program.
48724 + esac
48725 +
48726 + specialdeplibs=
48727 +
48728 + libs=
48729 + # Find all interdependent deplibs by searching for libraries
48730 + # that are linked more than once (e.g. -la -lb -la)
48731 + for deplib in $deplibs; do
48732 + if $opt_duplicate_deps ; then
48733 + case "$libs " in
48734 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
48735 + esac
48736 + fi
48737 + libs="$libs $deplib"
48738 + done
48739 +
48740 + if test "$linkmode" = lib; then
48741 + libs="$predeps $libs $compiler_lib_search_path $postdeps"
48742 +
48743 + # Compute libraries that are listed more than once in $predeps
48744 + # $postdeps and mark them as special (i.e., whose duplicates are
48745 + # not to be eliminated).
48746 + pre_post_deps=
48747 + if $opt_duplicate_compiler_generated_deps; then
48748 + for pre_post_dep in $predeps $postdeps; do
48749 + case "$pre_post_deps " in
48750 + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
48751 + esac
48752 + pre_post_deps="$pre_post_deps $pre_post_dep"
48753 + done
48754 + fi
48755 + pre_post_deps=
48756 + fi
48757 +
48758 + deplibs=
48759 + newdependency_libs=
48760 + newlib_search_path=
48761 + need_relink=no # whether we're linking any uninstalled libtool libraries
48762 + notinst_deplibs= # not-installed libtool libraries
48763 + notinst_path= # paths that contain not-installed libtool libraries
48764 +
48765 + case $linkmode in
48766 + lib)
48767 + passes="conv dlpreopen link"
48768 + for file in $dlfiles $dlprefiles; do
48769 + case $file in
48770 + *.la) ;;
48771 + *)
48772 + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
48773 + ;;
48774 + esac
48775 + done
48776 + ;;
48777 + prog)
48778 + compile_deplibs=
48779 + finalize_deplibs=
48780 + alldeplibs=no
48781 + newdlfiles=
48782 + newdlprefiles=
48783 + passes="conv scan dlopen dlpreopen link"
48784 + ;;
48785 + *) passes="conv"
48786 + ;;
48787 + esac
48788 +
48789 + for pass in $passes; do
48790 + # The preopen pass in lib mode reverses $deplibs; put it back here
48791 + # so that -L comes before libs that need it for instance...
48792 + if test "$linkmode,$pass" = "lib,link"; then
48793 + ## FIXME: Find the place where the list is rebuilt in the wrong
48794 + ## order, and fix it there properly
48795 + tmp_deplibs=
48796 + for deplib in $deplibs; do
48797 + tmp_deplibs="$deplib $tmp_deplibs"
48798 + done
48799 + deplibs="$tmp_deplibs"
48800 + fi
48801 +
48802 + if test "$linkmode,$pass" = "lib,link" ||
48803 + test "$linkmode,$pass" = "prog,scan"; then
48804 + libs="$deplibs"
48805 + deplibs=
48806 + fi
48807 + if test "$linkmode" = prog; then
48808 + case $pass in
48809 + dlopen) libs="$dlfiles" ;;
48810 + dlpreopen) libs="$dlprefiles" ;;
48811 + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
48812 + esac
48813 + fi
48814 + if test "$linkmode,$pass" = "lib,dlpreopen"; then
48815 + # Collect and forward deplibs of preopened libtool libs
48816 + for lib in $dlprefiles; do
48817 + # Ignore non-libtool-libs
48818 + dependency_libs=
48819 + case $lib in
48820 + *.la) func_source "$lib" ;;
48821 + esac
48822 +
48823 + # Collect preopened libtool deplibs, except any this library
48824 + # has declared as weak libs
48825 + for deplib in $dependency_libs; do
48826 + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
48827 + case " $weak_libs " in
48828 + *" $deplib_base "*) ;;
48829 + *) deplibs="$deplibs $deplib" ;;
48830 + esac
48831 + done
48832 + done
48833 + libs="$dlprefiles"
48834 + fi
48835 + if test "$pass" = dlopen; then
48836 + # Collect dlpreopened libraries
48837 + save_deplibs="$deplibs"
48838 + deplibs=
48839 + fi
48840 +
48841 + for deplib in $libs; do
48842 + lib=
48843 + found=no
48844 + case $deplib in
48845 + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
48846 + if test "$linkmode,$pass" = "prog,link"; then
48847 + compile_deplibs="$deplib $compile_deplibs"
48848 + finalize_deplibs="$deplib $finalize_deplibs"
48849 + else
48850 + compiler_flags="$compiler_flags $deplib"
48851 + if test "$linkmode" = lib ; then
48852 + case "$new_inherited_linker_flags " in
48853 + *" $deplib "*) ;;
48854 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
48855 + esac
48856 + fi
48857 + fi
48858 + continue
48859 + ;;
48860 + -l*)
48861 + if test "$linkmode" != lib && test "$linkmode" != prog; then
48862 + func_warning "\`-l' is ignored for archives/objects"
48863 + continue
48864 + fi
48865 + func_stripname '-l' '' "$deplib"
48866 + name=$func_stripname_result
48867 + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
48868 + for search_ext in .la $std_shrext .so .a; do
48869 + # Search the libtool library
48870 + lib="$searchdir/lib${name}${search_ext}"
48871 + if test -f "$lib"; then
48872 + if test "$search_ext" = ".la"; then
48873 + found=yes
48874 + else
48875 + found=no
48876 + fi
48877 + break 2
48878 + fi
48879 + done
48880 + done
48881 + if test "$found" != yes; then
48882 + # deplib doesn't seem to be a libtool library
48883 + if test "$linkmode,$pass" = "prog,link"; then
48884 + compile_deplibs="$deplib $compile_deplibs"
48885 + finalize_deplibs="$deplib $finalize_deplibs"
48886 + else
48887 + deplibs="$deplib $deplibs"
48888 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
48889 + fi
48890 + continue
48891 + else # deplib is a libtool library
48892 + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
48893 + # We need to do some special things here, and not later.
48894 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
48895 + case " $predeps $postdeps " in
48896 + *" $deplib "*)
48897 + if func_lalib_p "$lib"; then
48898 + library_names=
48899 + old_library=
48900 + func_source "$lib"
48901 + for l in $old_library $library_names; do
48902 + ll="$l"
48903 + done
48904 + if test "X$ll" = "X$old_library" ; then # only static version available
48905 + found=no
48906 + func_dirname "$lib" "" "."
48907 + ladir="$func_dirname_result"
48908 + lib=$ladir/$old_library
48909 + if test "$linkmode,$pass" = "prog,link"; then
48910 + compile_deplibs="$deplib $compile_deplibs"
48911 + finalize_deplibs="$deplib $finalize_deplibs"
48912 + else
48913 + deplibs="$deplib $deplibs"
48914 + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
48915 + fi
48916 + continue
48917 + fi
48918 + fi
48919 + ;;
48920 + *) ;;
48921 + esac
48922 + fi
48923 + fi
48924 + ;; # -l
48925 + *.ltframework)
48926 + if test "$linkmode,$pass" = "prog,link"; then
48927 + compile_deplibs="$deplib $compile_deplibs"
48928 + finalize_deplibs="$deplib $finalize_deplibs"
48929 + else
48930 + deplibs="$deplib $deplibs"
48931 + if test "$linkmode" = lib ; then
48932 + case "$new_inherited_linker_flags " in
48933 + *" $deplib "*) ;;
48934 + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
48935 + esac
48936 + fi
48937 + fi
48938 + continue
48939 + ;;
48940 + -L*)
48941 + case $linkmode in
48942 + lib)
48943 + deplibs="$deplib $deplibs"
48944 + test "$pass" = conv && continue
48945 + newdependency_libs="$deplib $newdependency_libs"
48946 + func_stripname '-L' '' "$deplib"
48947 + newlib_search_path="$newlib_search_path $func_stripname_result"
48948 + ;;
48949 + prog)
48950 + if test "$pass" = conv; then
48951 + deplibs="$deplib $deplibs"
48952 + continue
48953 + fi
48954 + if test "$pass" = scan; then
48955 + deplibs="$deplib $deplibs"
48956 + else
48957 + compile_deplibs="$deplib $compile_deplibs"
48958 + finalize_deplibs="$deplib $finalize_deplibs"
48959 + fi
48960 + func_stripname '-L' '' "$deplib"
48961 + newlib_search_path="$newlib_search_path $func_stripname_result"
48962 + ;;
48963 + *)
48964 + func_warning "\`-L' is ignored for archives/objects"
48965 + ;;
48966 + esac # linkmode
48967 + continue
48968 + ;; # -L
48969 + -R*)
48970 + if test "$pass" = link; then
48971 + func_stripname '-R' '' "$deplib"
48972 + dir=$func_stripname_result
48973 + # Make sure the xrpath contains only unique directories.
48974 + case "$xrpath " in
48975 + *" $dir "*) ;;
48976 + *) xrpath="$xrpath $dir" ;;
48977 + esac
48978 + fi
48979 + deplibs="$deplib $deplibs"
48980 + continue
48981 + ;;
48982 + *.la) lib="$deplib" ;;
48983 + *.$libext)
48984 + if test "$pass" = conv; then
48985 + deplibs="$deplib $deplibs"
48986 + continue
48987 + fi
48988 + case $linkmode in
48989 + lib)
48990 + # Linking convenience modules into shared libraries is allowed,
48991 + # but linking other static libraries is non-portable.
48992 + case " $dlpreconveniencelibs " in
48993 + *" $deplib "*) ;;
48994 + *)
48995 + valid_a_lib=no
48996 + case $deplibs_check_method in
48997 + match_pattern*)
48998 + set dummy $deplibs_check_method; shift
48999 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
49000 + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
49001 + | $EGREP "$match_pattern_regex" > /dev/null; then
49002 + valid_a_lib=yes
49003 + fi
49004 + ;;
49005 + pass_all)
49006 + valid_a_lib=yes
49007 + ;;
49008 + esac
49009 + if test "$valid_a_lib" != yes; then
49010 + $ECHO
49011 + $ECHO "*** Warning: Trying to link with static lib archive $deplib."
49012 + $ECHO "*** I have the capability to make that library automatically link in when"
49013 + $ECHO "*** you link to this library. But I can only do this if you have a"
49014 + $ECHO "*** shared version of the library, which you do not appear to have"
49015 + $ECHO "*** because the file extensions .$libext of this argument makes me believe"
49016 + $ECHO "*** that it is just a static archive that I should not use here."
49017 + else
49018 + $ECHO
49019 + $ECHO "*** Warning: Linking the shared library $output against the"
49020 + $ECHO "*** static library $deplib is not portable!"
49021 + deplibs="$deplib $deplibs"
49022 + fi
49023 + ;;
49024 + esac
49025 + continue
49026 + ;;
49027 + prog)
49028 + if test "$pass" != link; then
49029 + deplibs="$deplib $deplibs"
49030 + else
49031 + compile_deplibs="$deplib $compile_deplibs"
49032 + finalize_deplibs="$deplib $finalize_deplibs"
49033 + fi
49034 + continue
49035 + ;;
49036 + esac # linkmode
49037 + ;; # *.$libext
49038 + *.lo | *.$objext)
49039 + if test "$pass" = conv; then
49040 + deplibs="$deplib $deplibs"
49041 + elif test "$linkmode" = prog; then
49042 + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
49043 + # If there is no dlopen support or we're linking statically,
49044 + # we need to preload.
49045 + newdlprefiles="$newdlprefiles $deplib"
49046 + compile_deplibs="$deplib $compile_deplibs"
49047 + finalize_deplibs="$deplib $finalize_deplibs"
49048 + else
49049 + newdlfiles="$newdlfiles $deplib"
49050 + fi
49051 + fi
49052 + continue
49053 + ;;
49054 + %DEPLIBS%)
49055 + alldeplibs=yes
49056 + continue
49057 + ;;
49058 + esac # case $deplib
49059 +
49060 + if test "$found" = yes || test -f "$lib"; then :
49061 + else
49062 + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
49063 + fi
49064 +
49065 + # Check to see that this really is a libtool archive.
49066 + func_lalib_unsafe_p "$lib" \
49067 + || func_fatal_error "\`$lib' is not a valid libtool archive"
49068 +
49069 + func_dirname "$lib" "" "."
49070 + ladir="$func_dirname_result"
49071 +
49072 + dlname=
49073 + dlopen=
49074 + dlpreopen=
49075 + libdir=
49076 + library_names=
49077 + old_library=
49078 + inherited_linker_flags=
49079 + # If the library was installed with an old release of libtool,
49080 + # it will not redefine variables installed, or shouldnotlink
49081 + installed=yes
49082 + shouldnotlink=no
49083 + avoidtemprpath=
49084 +
49085 +
49086 + # Read the .la file
49087 + func_source "$lib"
49088 +
49089 + # Convert "-framework foo" to "foo.ltframework"
49090 + if test -n "$inherited_linker_flags"; then
49091 + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
49092 + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
49093 + case " $new_inherited_linker_flags " in
49094 + *" $tmp_inherited_linker_flag "*) ;;
49095 + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
49096 + esac
49097 + done
49098 + fi
49099 + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
49100 + if test "$linkmode,$pass" = "prog,link"; then
49101 + compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
49102 + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
49103 + else
49104 + compiler_flags="$compiler_flags $inherited_linker_flags"
49105 + fi
49106 + if test "$linkmode,$pass" = "lib,link" ||
49107 + test "$linkmode,$pass" = "prog,scan" ||
49108 + { test "$linkmode" != prog && test "$linkmode" != lib; }; then
49109 + test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
49110 + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
49111 + fi
49112 +
49113 + if test "$pass" = conv; then
49114 + # Only check for convenience libraries
49115 + deplibs="$lib $deplibs"
49116 + if test -z "$libdir"; then
49117 + if test -z "$old_library"; then
49118 + func_fatal_error "cannot find name of link library for \`$lib'"
49119 + fi
49120 + # It is a libtool convenience library, so add in its objects.
49121 + convenience="$convenience $ladir/$objdir/$old_library"
49122 + old_convenience="$old_convenience $ladir/$objdir/$old_library"
49123 + elif test "$linkmode" != prog && test "$linkmode" != lib; then
49124 + func_fatal_error "\`$lib' is not a convenience library"
49125 + fi
49126 + tmp_libs=
49127 + for deplib in $dependency_libs; do
49128 + deplibs="$deplib $deplibs"
49129 + if $opt_duplicate_deps ; then
49130 + case "$tmp_libs " in
49131 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49132 + esac
49133 + fi
49134 + tmp_libs="$tmp_libs $deplib"
49135 + done
49136 + continue
49137 + fi # $pass = conv
49138 +
49139 +
49140 + # Get the name of the library we link against.
49141 + linklib=
49142 + for l in $old_library $library_names; do
49143 + linklib="$l"
49144 + done
49145 + if test -z "$linklib"; then
49146 + func_fatal_error "cannot find name of link library for \`$lib'"
49147 + fi
49148 +
49149 + # This library was specified with -dlopen.
49150 + if test "$pass" = dlopen; then
49151 + if test -z "$libdir"; then
49152 + func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
49153 + fi
49154 + if test -z "$dlname" ||
49155 + test "$dlopen_support" != yes ||
49156 + test "$build_libtool_libs" = no; then
49157 + # If there is no dlname, no dlopen support or we're linking
49158 + # statically, we need to preload. We also need to preload any
49159 + # dependent libraries so libltdl's deplib preloader doesn't
49160 + # bomb out in the load deplibs phase.
49161 + dlprefiles="$dlprefiles $lib $dependency_libs"
49162 + else
49163 + newdlfiles="$newdlfiles $lib"
49164 + fi
49165 + continue
49166 + fi # $pass = dlopen
49167 +
49168 + # We need an absolute path.
49169 + case $ladir in
49170 + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
49171 + *)
49172 + abs_ladir=`cd "$ladir" && pwd`
49173 + if test -z "$abs_ladir"; then
49174 + func_warning "cannot determine absolute directory name of \`$ladir'"
49175 + func_warning "passing it literally to the linker, although it might fail"
49176 + abs_ladir="$ladir"
49177 + fi
49178 + ;;
49179 + esac
49180 + func_basename "$lib"
49181 + laname="$func_basename_result"
49182 +
49183 + # Find the relevant object directory and library name.
49184 + if test "X$installed" = Xyes; then
49185 + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
49186 + func_warning "library \`$lib' was moved."
49187 + dir="$ladir"
49188 + absdir="$abs_ladir"
49189 + libdir="$abs_ladir"
49190 + else
49191 + dir="$libdir"
49192 + absdir="$libdir"
49193 + fi
49194 + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
49195 + else
49196 + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
49197 + dir="$ladir"
49198 + absdir="$abs_ladir"
49199 + # Remove this search path later
49200 + notinst_path="$notinst_path $abs_ladir"
49201 + else
49202 + dir="$ladir/$objdir"
49203 + absdir="$abs_ladir/$objdir"
49204 + # Remove this search path later
49205 + notinst_path="$notinst_path $abs_ladir"
49206 + fi
49207 + fi # $installed = yes
49208 + func_stripname 'lib' '.la' "$laname"
49209 + name=$func_stripname_result
49210 +
49211 + # This library was specified with -dlpreopen.
49212 + if test "$pass" = dlpreopen; then
49213 + if test -z "$libdir" && test "$linkmode" = prog; then
49214 + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
49215 + fi
49216 + # Prefer using a static library (so that no silly _DYNAMIC symbols
49217 + # are required to link).
49218 + if test -n "$old_library"; then
49219 + newdlprefiles="$newdlprefiles $dir/$old_library"
49220 + # Keep a list of preopened convenience libraries to check
49221 + # that they are being used correctly in the link pass.
49222 + test -z "$libdir" && \
49223 + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
49224 + # Otherwise, use the dlname, so that lt_dlopen finds it.
49225 + elif test -n "$dlname"; then
49226 + newdlprefiles="$newdlprefiles $dir/$dlname"
49227 + else
49228 + newdlprefiles="$newdlprefiles $dir/$linklib"
49229 + fi
49230 + fi # $pass = dlpreopen
49231 +
49232 + if test -z "$libdir"; then
49233 + # Link the convenience library
49234 + if test "$linkmode" = lib; then
49235 + deplibs="$dir/$old_library $deplibs"
49236 + elif test "$linkmode,$pass" = "prog,link"; then
49237 + compile_deplibs="$dir/$old_library $compile_deplibs"
49238 + finalize_deplibs="$dir/$old_library $finalize_deplibs"
49239 + else
49240 + deplibs="$lib $deplibs" # used for prog,scan pass
49241 + fi
49242 + continue
49243 + fi
49244 +
49245 +
49246 + if test "$linkmode" = prog && test "$pass" != link; then
49247 + newlib_search_path="$newlib_search_path $ladir"
49248 + deplibs="$lib $deplibs"
49249 +
49250 + linkalldeplibs=no
49251 + if test "$link_all_deplibs" != no || test -z "$library_names" ||
49252 + test "$build_libtool_libs" = no; then
49253 + linkalldeplibs=yes
49254 + fi
49255 +
49256 + tmp_libs=
49257 + for deplib in $dependency_libs; do
49258 + case $deplib in
49259 + -L*) func_stripname '-L' '' "$deplib"
49260 + newlib_search_path="$newlib_search_path $func_stripname_result"
49261 + ;;
49262 + esac
49263 + # Need to link against all dependency_libs?
49264 + if test "$linkalldeplibs" = yes; then
49265 + deplibs="$deplib $deplibs"
49266 + else
49267 + # Need to hardcode shared library paths
49268 + # or/and link against static libraries
49269 + newdependency_libs="$deplib $newdependency_libs"
49270 + fi
49271 + if $opt_duplicate_deps ; then
49272 + case "$tmp_libs " in
49273 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49274 + esac
49275 + fi
49276 + tmp_libs="$tmp_libs $deplib"
49277 + done # for deplib
49278 + continue
49279 + fi # $linkmode = prog...
49280 +
49281 + if test "$linkmode,$pass" = "prog,link"; then
49282 + if test -n "$library_names" &&
49283 + { { test "$prefer_static_libs" = no ||
49284 + test "$prefer_static_libs,$installed" = "built,yes"; } ||
49285 + test -z "$old_library"; }; then
49286 + # We need to hardcode the library path
49287 + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
49288 + # Make sure the rpath contains only unique directories.
49289 + case "$temp_rpath:" in
49290 + *"$absdir:"*) ;;
49291 + *) temp_rpath="$temp_rpath$absdir:" ;;
49292 + esac
49293 + fi
49294 +
49295 + # Hardcode the library path.
49296 + # Skip directories that are in the system default run-time
49297 + # search path.
49298 + case " $sys_lib_dlsearch_path " in
49299 + *" $absdir "*) ;;
49300 + *)
49301 + case "$compile_rpath " in
49302 + *" $absdir "*) ;;
49303 + *) compile_rpath="$compile_rpath $absdir"
49304 + esac
49305 + ;;
49306 + esac
49307 + case " $sys_lib_dlsearch_path " in
49308 + *" $libdir "*) ;;
49309 + *)
49310 + case "$finalize_rpath " in
49311 + *" $libdir "*) ;;
49312 + *) finalize_rpath="$finalize_rpath $libdir"
49313 + esac
49314 + ;;
49315 + esac
49316 + fi # $linkmode,$pass = prog,link...
49317 +
49318 + if test "$alldeplibs" = yes &&
49319 + { test "$deplibs_check_method" = pass_all ||
49320 + { test "$build_libtool_libs" = yes &&
49321 + test -n "$library_names"; }; }; then
49322 + # We only need to search for static libraries
49323 + continue
49324 + fi
49325 + fi
49326 +
49327 + link_static=no # Whether the deplib will be linked statically
49328 + use_static_libs=$prefer_static_libs
49329 + if test "$use_static_libs" = built && test "$installed" = yes; then
49330 + use_static_libs=no
49331 + fi
49332 + if test -n "$library_names" &&
49333 + { test "$use_static_libs" = no || test -z "$old_library"; }; then
49334 + case $host in
49335 + *cygwin* | *mingw*)
49336 + # No point in relinking DLLs because paths are not encoded
49337 + notinst_deplibs="$notinst_deplibs $lib"
49338 + need_relink=no
49339 + ;;
49340 + *)
49341 + if test "$installed" = no; then
49342 + notinst_deplibs="$notinst_deplibs $lib"
49343 + need_relink=yes
49344 + fi
49345 + ;;
49346 + esac
49347 + # This is a shared library
49348 +
49349 + # Warn about portability, can't link against -module's on some
49350 + # systems (darwin). Don't bleat about dlopened modules though!
49351 + dlopenmodule=""
49352 + for dlpremoduletest in $dlprefiles; do
49353 + if test "X$dlpremoduletest" = "X$lib"; then
49354 + dlopenmodule="$dlpremoduletest"
49355 + break
49356 + fi
49357 + done
49358 + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
49359 + $ECHO
49360 + if test "$linkmode" = prog; then
49361 + $ECHO "*** Warning: Linking the executable $output against the loadable module"
49362 + else
49363 + $ECHO "*** Warning: Linking the shared library $output against the loadable module"
49364 + fi
49365 + $ECHO "*** $linklib is not portable!"
49366 + fi
49367 + if test "$linkmode" = lib &&
49368 + test "$hardcode_into_libs" = yes; then
49369 + # Hardcode the library path.
49370 + # Skip directories that are in the system default run-time
49371 + # search path.
49372 + case " $sys_lib_dlsearch_path " in
49373 + *" $absdir "*) ;;
49374 + *)
49375 + case "$compile_rpath " in
49376 + *" $absdir "*) ;;
49377 + *) compile_rpath="$compile_rpath $absdir"
49378 + esac
49379 + ;;
49380 + esac
49381 + case " $sys_lib_dlsearch_path " in
49382 + *" $libdir "*) ;;
49383 + *)
49384 + case "$finalize_rpath " in
49385 + *" $libdir "*) ;;
49386 + *) finalize_rpath="$finalize_rpath $libdir"
49387 + esac
49388 + ;;
49389 + esac
49390 + fi
49391 +
49392 + if test -n "$old_archive_from_expsyms_cmds"; then
49393 + # figure out the soname
49394 + set dummy $library_names
49395 + shift
49396 + realname="$1"
49397 + shift
49398 + libname=`eval "\\$ECHO \"$libname_spec\""`
49399 + # use dlname if we got it. it's perfectly good, no?
49400 + if test -n "$dlname"; then
49401 + soname="$dlname"
49402 + elif test -n "$soname_spec"; then
49403 + # bleh windows
49404 + case $host in
49405 + *cygwin* | mingw*)
49406 + major=`expr $current - $age`
49407 + versuffix="-$major"
49408 + ;;
49409 + esac
49410 + eval soname=\"$soname_spec\"
49411 + else
49412 + soname="$realname"
49413 + fi
49414 +
49415 + # Make a new name for the extract_expsyms_cmds to use
49416 + soroot="$soname"
49417 + func_basename "$soroot"
49418 + soname="$func_basename_result"
49419 + func_stripname 'lib' '.dll' "$soname"
49420 + newlib=libimp-$func_stripname_result.a
49421 +
49422 + # If the library has no export list, then create one now
49423 + if test -f "$output_objdir/$soname-def"; then :
49424 + else
49425 + func_echo "extracting exported symbol list from \`$soname'"
49426 + func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
49427 + fi
49428 +
49429 + # Create $newlib
49430 + if test -f "$output_objdir/$newlib"; then :; else
49431 + func_echo "generating import library for \`$soname'"
49432 + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
49433 + fi
49434 + # make sure the library variables are pointing to the new library
49435 + dir=$output_objdir
49436 + linklib=$newlib
49437 + fi # test -n "$old_archive_from_expsyms_cmds"
49438 +
49439 + if test "$linkmode" = prog || test "$mode" != relink; then
49440 + add_shlibpath=
49441 + add_dir=
49442 + add=
49443 + lib_linked=yes
49444 + case $hardcode_action in
49445 + immediate | unsupported)
49446 + if test "$hardcode_direct" = no; then
49447 + add="$dir/$linklib"
49448 + case $host in
49449 + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
49450 + *-*-sysv4*uw2*) add_dir="-L$dir" ;;
49451 + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
49452 + *-*-unixware7*) add_dir="-L$dir" ;;
49453 + *-*-darwin* )
49454 + # if the lib is a (non-dlopened) module then we can not
49455 + # link against it, someone is ignoring the earlier warnings
49456 + if /usr/bin/file -L $add 2> /dev/null |
49457 + $GREP ": [^:]* bundle" >/dev/null ; then
49458 + if test "X$dlopenmodule" != "X$lib"; then
49459 + $ECHO "*** Warning: lib $linklib is a module, not a shared library"
49460 + if test -z "$old_library" ; then
49461 + $ECHO
49462 + $ECHO "*** And there doesn't seem to be a static archive available"
49463 + $ECHO "*** The link will probably fail, sorry"
49464 + else
49465 + add="$dir/$old_library"
49466 + fi
49467 + elif test -n "$old_library"; then
49468 + add="$dir/$old_library"
49469 + fi
49470 + fi
49471 + esac
49472 + elif test "$hardcode_minus_L" = no; then
49473 + case $host in
49474 + *-*-sunos*) add_shlibpath="$dir" ;;
49475 + esac
49476 + add_dir="-L$dir"
49477 + add="-l$name"
49478 + elif test "$hardcode_shlibpath_var" = no; then
49479 + add_shlibpath="$dir"
49480 + add="-l$name"
49481 + else
49482 + lib_linked=no
49483 + fi
49484 + ;;
49485 + relink)
49486 + if test "$hardcode_direct" = yes &&
49487 + test "$hardcode_direct_absolute" = no; then
49488 + add="$dir/$linklib"
49489 + elif test "$hardcode_minus_L" = yes; then
49490 + add_dir="-L$dir"
49491 + # Try looking first in the location we're being installed to.
49492 + if test -n "$inst_prefix_dir"; then
49493 + case $libdir in
49494 + [\\/]*)
49495 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49496 + ;;
49497 + esac
49498 + fi
49499 + add="-l$name"
49500 + elif test "$hardcode_shlibpath_var" = yes; then
49501 + add_shlibpath="$dir"
49502 + add="-l$name"
49503 + else
49504 + lib_linked=no
49505 + fi
49506 + ;;
49507 + *) lib_linked=no ;;
49508 + esac
49509 +
49510 + if test "$lib_linked" != yes; then
49511 + func_fatal_configuration "unsupported hardcode properties"
49512 + fi
49513 +
49514 + if test -n "$add_shlibpath"; then
49515 + case :$compile_shlibpath: in
49516 + *":$add_shlibpath:"*) ;;
49517 + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
49518 + esac
49519 + fi
49520 + if test "$linkmode" = prog; then
49521 + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
49522 + test -n "$add" && compile_deplibs="$add $compile_deplibs"
49523 + else
49524 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49525 + test -n "$add" && deplibs="$add $deplibs"
49526 + if test "$hardcode_direct" != yes &&
49527 + test "$hardcode_minus_L" != yes &&
49528 + test "$hardcode_shlibpath_var" = yes; then
49529 + case :$finalize_shlibpath: in
49530 + *":$libdir:"*) ;;
49531 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49532 + esac
49533 + fi
49534 + fi
49535 + fi
49536 +
49537 + if test "$linkmode" = prog || test "$mode" = relink; then
49538 + add_shlibpath=
49539 + add_dir=
49540 + add=
49541 + # Finalize command for both is simple: just hardcode it.
49542 + if test "$hardcode_direct" = yes &&
49543 + test "$hardcode_direct_absolute" = no; then
49544 + add="$libdir/$linklib"
49545 + elif test "$hardcode_minus_L" = yes; then
49546 + add_dir="-L$libdir"
49547 + add="-l$name"
49548 + elif test "$hardcode_shlibpath_var" = yes; then
49549 + case :$finalize_shlibpath: in
49550 + *":$libdir:"*) ;;
49551 + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
49552 + esac
49553 + add="-l$name"
49554 + elif test "$hardcode_automatic" = yes; then
49555 + if test -n "$inst_prefix_dir" &&
49556 + test -f "$inst_prefix_dir$libdir/$linklib" ; then
49557 + add="$inst_prefix_dir$libdir/$linklib"
49558 + else
49559 + add="$libdir/$linklib"
49560 + fi
49561 + else
49562 + # We cannot seem to hardcode it, guess we'll fake it.
49563 + add_dir="-L$libdir"
49564 + # Try looking first in the location we're being installed to.
49565 + if test -n "$inst_prefix_dir"; then
49566 + case $libdir in
49567 + [\\/]*)
49568 + add_dir="$add_dir -L$inst_prefix_dir$libdir"
49569 + ;;
49570 + esac
49571 + fi
49572 + add="-l$name"
49573 + fi
49574 +
49575 + if test "$linkmode" = prog; then
49576 + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
49577 + test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
49578 + else
49579 + test -n "$add_dir" && deplibs="$add_dir $deplibs"
49580 + test -n "$add" && deplibs="$add $deplibs"
49581 + fi
49582 + fi
49583 + elif test "$linkmode" = prog; then
49584 + # Here we assume that one of hardcode_direct or hardcode_minus_L
49585 + # is not unsupported. This is valid on all known static and
49586 + # shared platforms.
49587 + if test "$hardcode_direct" != unsupported; then
49588 + test -n "$old_library" && linklib="$old_library"
49589 + compile_deplibs="$dir/$linklib $compile_deplibs"
49590 + finalize_deplibs="$dir/$linklib $finalize_deplibs"
49591 + else
49592 + compile_deplibs="-l$name -L$dir $compile_deplibs"
49593 + finalize_deplibs="-l$name -L$dir $finalize_deplibs"
49594 + fi
49595 + elif test "$build_libtool_libs" = yes; then
49596 + # Not a shared library
49597 + if test "$deplibs_check_method" != pass_all; then
49598 + # We're trying link a shared library against a static one
49599 + # but the system doesn't support it.
49600 +
49601 + # Just print a warning and add the library to dependency_libs so
49602 + # that the program can be linked against the static library.
49603 + $ECHO
49604 + $ECHO "*** Warning: This system can not link to static lib archive $lib."
49605 + $ECHO "*** I have the capability to make that library automatically link in when"
49606 + $ECHO "*** you link to this library. But I can only do this if you have a"
49607 + $ECHO "*** shared version of the library, which you do not appear to have."
49608 + if test "$module" = yes; then
49609 + $ECHO "*** But as you try to build a module library, libtool will still create "
49610 + $ECHO "*** a static module, that should work as long as the dlopening application"
49611 + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
49612 + if test -z "$global_symbol_pipe"; then
49613 + $ECHO
49614 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
49615 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
49616 + $ECHO "*** not find such a program. So, this module is probably useless."
49617 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
49618 + fi
49619 + if test "$build_old_libs" = no; then
49620 + build_libtool_libs=module
49621 + build_old_libs=yes
49622 + else
49623 + build_libtool_libs=no
49624 + fi
49625 + fi
49626 + else
49627 + deplibs="$dir/$old_library $deplibs"
49628 + link_static=yes
49629 + fi
49630 + fi # link shared/static library?
49631 +
49632 + if test "$linkmode" = lib; then
49633 + if test -n "$dependency_libs" &&
49634 + { test "$hardcode_into_libs" != yes ||
49635 + test "$build_old_libs" = yes ||
49636 + test "$link_static" = yes; }; then
49637 + # Extract -R from dependency_libs
49638 + temp_deplibs=
49639 + for libdir in $dependency_libs; do
49640 + case $libdir in
49641 + -R*) func_stripname '-R' '' "$libdir"
49642 + temp_xrpath=$func_stripname_result
49643 + case " $xrpath " in
49644 + *" $temp_xrpath "*) ;;
49645 + *) xrpath="$xrpath $temp_xrpath";;
49646 + esac;;
49647 + *) temp_deplibs="$temp_deplibs $libdir";;
49648 + esac
49649 + done
49650 + dependency_libs="$temp_deplibs"
49651 + fi
49652 +
49653 + newlib_search_path="$newlib_search_path $absdir"
49654 + # Link against this library
49655 + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
49656 + # ... and its dependency_libs
49657 + tmp_libs=
49658 + for deplib in $dependency_libs; do
49659 + newdependency_libs="$deplib $newdependency_libs"
49660 + if $opt_duplicate_deps ; then
49661 + case "$tmp_libs " in
49662 + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49663 + esac
49664 + fi
49665 + tmp_libs="$tmp_libs $deplib"
49666 + done
49667 +
49668 + if test "$link_all_deplibs" != no; then
49669 + # Add the search paths of all dependency libraries
49670 + for deplib in $dependency_libs; do
49671 + case $deplib in
49672 + -L*) path="$deplib" ;;
49673 + *.la)
49674 + func_dirname "$deplib" "" "."
49675 + dir="$func_dirname_result"
49676 + # We need an absolute path.
49677 + case $dir in
49678 + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
49679 + *)
49680 + absdir=`cd "$dir" && pwd`
49681 + if test -z "$absdir"; then
49682 + func_warning "cannot determine absolute directory name of \`$dir'"
49683 + absdir="$dir"
49684 + fi
49685 + ;;
49686 + esac
49687 + if $GREP "^installed=no" $deplib > /dev/null; then
49688 + case $host in
49689 + *-*-darwin*)
49690 + depdepl=
49691 + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
49692 + if test -n "$deplibrary_names" ; then
49693 + for tmp in $deplibrary_names ; do
49694 + depdepl=$tmp
49695 + done
49696 + if test -f "$absdir/$objdir/$depdepl" ; then
49697 + depdepl="$absdir/$objdir/$depdepl"
49698 + darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49699 + darwin_install_name=`$ECHO $darwin_install_name`
49700 + if test -z "$darwin_install_name"; then
49701 + darwin_install_name=`otool64 -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
49702 + darwin_install_name=`$ECHO $darwin_install_name`
49703 + fi
49704 + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
49705 + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
49706 + path=
49707 + fi
49708 + fi
49709 + ;;
49710 + *)
49711 + path="-L$absdir/$objdir"
49712 + ;;
49713 + esac
49714 + else
49715 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
49716 + test -z "$libdir" && \
49717 + func_fatal_error "\`$deplib' is not a valid libtool archive"
49718 + test "$absdir" != "$libdir" && \
49719 + func_warning "\`$deplib' seems to be moved"
49720 +
49721 + path="-L$absdir"
49722 + fi
49723 + ;;
49724 + esac
49725 + case " $deplibs " in
49726 + *" $path "*) ;;
49727 + *) deplibs="$path $deplibs" ;;
49728 + esac
49729 + done
49730 + fi # link_all_deplibs != no
49731 + fi # linkmode = lib
49732 + done # for deplib in $libs
49733 + dependency_libs="$newdependency_libs"
49734 + if test "$pass" = dlpreopen; then
49735 + # Link the dlpreopened libraries before other libraries
49736 + for deplib in $save_deplibs; do
49737 + deplibs="$deplib $deplibs"
49738 + done
49739 + fi
49740 + if test "$pass" != dlopen; then
49741 + if test "$pass" != conv; then
49742 + # Make sure lib_search_path contains only unique directories.
49743 + lib_search_path=
49744 + for dir in $newlib_search_path; do
49745 + case "$lib_search_path " in
49746 + *" $dir "*) ;;
49747 + *) lib_search_path="$lib_search_path $dir" ;;
49748 + esac
49749 + done
49750 + newlib_search_path=
49751 + fi
49752 +
49753 + if test "$linkmode,$pass" != "prog,link"; then
49754 + vars="deplibs"
49755 + else
49756 + vars="compile_deplibs finalize_deplibs"
49757 + fi
49758 + for var in $vars dependency_libs; do
49759 + # Add libraries to $var in reverse order
49760 + eval tmp_libs=\"\$$var\"
49761 + new_libs=
49762 + for deplib in $tmp_libs; do
49763 + # FIXME: Pedantically, this is the right thing to do, so
49764 + # that some nasty dependency loop isn't accidentally
49765 + # broken:
49766 + #new_libs="$deplib $new_libs"
49767 + # Pragmatically, this seems to cause very few problems in
49768 + # practice:
49769 + case $deplib in
49770 + -L*) new_libs="$deplib $new_libs" ;;
49771 + -R*) ;;
49772 + *)
49773 + # And here is the reason: when a library appears more
49774 + # than once as an explicit dependence of a library, or
49775 + # is implicitly linked in more than once by the
49776 + # compiler, it is considered special, and multiple
49777 + # occurrences thereof are not removed. Compare this
49778 + # with having the same library being listed as a
49779 + # dependency of multiple other libraries: in this case,
49780 + # we know (pedantically, we assume) the library does not
49781 + # need to be listed more than once, so we keep only the
49782 + # last copy. This is not always right, but it is rare
49783 + # enough that we require users that really mean to play
49784 + # such unportable linking tricks to link the library
49785 + # using -Wl,-lname, so that libtool does not consider it
49786 + # for duplicate removal.
49787 + case " $specialdeplibs " in
49788 + *" $deplib "*) new_libs="$deplib $new_libs" ;;
49789 + *)
49790 + case " $new_libs " in
49791 + *" $deplib "*) ;;
49792 + *) new_libs="$deplib $new_libs" ;;
49793 + esac
49794 + ;;
49795 + esac
49796 + ;;
49797 + esac
49798 + done
49799 + tmp_libs=
49800 + for deplib in $new_libs; do
49801 + case $deplib in
49802 + -L*)
49803 + case " $tmp_libs " in
49804 + *" $deplib "*) ;;
49805 + *) tmp_libs="$tmp_libs $deplib" ;;
49806 + esac
49807 + ;;
49808 + *) tmp_libs="$tmp_libs $deplib" ;;
49809 + esac
49810 + done
49811 + eval $var=\"$tmp_libs\"
49812 + done # for var
49813 + fi
49814 + # Last step: remove runtime libs from dependency_libs
49815 + # (they stay in deplibs)
49816 + tmp_libs=
49817 + for i in $dependency_libs ; do
49818 + case " $predeps $postdeps $compiler_lib_search_path " in
49819 + *" $i "*)
49820 + i=""
49821 + ;;
49822 + esac
49823 + if test -n "$i" ; then
49824 + tmp_libs="$tmp_libs $i"
49825 + fi
49826 + done
49827 + dependency_libs=$tmp_libs
49828 + done # for pass
49829 + if test "$linkmode" = prog; then
49830 + dlfiles="$newdlfiles"
49831 + fi
49832 + if test "$linkmode" = prog || test "$linkmode" = lib; then
49833 + dlprefiles="$newdlprefiles"
49834 + fi
49835 +
49836 + case $linkmode in
49837 + oldlib)
49838 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
49839 + func_warning "\`-dlopen' is ignored for archives"
49840 + fi
49841 +
49842 + test -n "$deplibs" && \
49843 + func_warning "\`-l' and \`-L' are ignored for archives"
49844 +
49845 +
49846 + test -n "$rpath" && \
49847 + func_warning "\`-rpath' is ignored for archives"
49848 +
49849 + test -n "$xrpath" && \
49850 + func_warning "\`-R' is ignored for archives"
49851 +
49852 + test -n "$vinfo" && \
49853 + func_warning "\`-version-info/-version-number' is ignored for archives"
49854 +
49855 + test -n "$release" && \
49856 + func_warning "\`-release' is ignored for archives"
49857 +
49858 + test -n "$export_symbols$export_symbols_regex" && \
49859 + func_warning "\`-export-symbols' is ignored for archives"
49860 +
49861 + # Now set the variables for building old libraries.
49862 + build_libtool_libs=no
49863 + oldlibs="$output"
49864 + objs="$objs$old_deplibs"
49865 + ;;
49866 +
49867 + lib)
49868 + # Make sure we only generate libraries of the form `libNAME.la'.
49869 + case $outputname in
49870 + lib*)
49871 + func_stripname 'lib' '.la' "$outputname"
49872 + name=$func_stripname_result
49873 + eval shared_ext=\"$shrext_cmds\"
49874 + eval libname=\"$libname_spec\"
49875 + ;;
49876 + *)
49877 + test "$module" = no && \
49878 + func_fatal_help "libtool library \`$output' must begin with \`lib'"
49879 +
49880 + if test "$need_lib_prefix" != no; then
49881 + # Add the "lib" prefix for modules if required
49882 + func_stripname '' '.la' "$outputname"
49883 + name=$func_stripname_result
49884 + eval shared_ext=\"$shrext_cmds\"
49885 + eval libname=\"$libname_spec\"
49886 + else
49887 + func_stripname '' '.la' "$outputname"
49888 + libname=$func_stripname_result
49889 + fi
49890 + ;;
49891 + esac
49892 +
49893 + if test -n "$objs"; then
49894 + if test "$deplibs_check_method" != pass_all; then
49895 + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
49896 + else
49897 + $ECHO
49898 + $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
49899 + $ECHO "*** objects $objs is not portable!"
49900 + libobjs="$libobjs $objs"
49901 + fi
49902 + fi
49903 +
49904 + test "$dlself" != no && \
49905 + func_warning "\`-dlopen self' is ignored for libtool libraries"
49906 +
49907 + set dummy $rpath
49908 + shift
49909 + test "$#" -gt 1 && \
49910 + func_warning "ignoring multiple \`-rpath's for a libtool library"
49911 +
49912 + install_libdir="$1"
49913 +
49914 + oldlibs=
49915 + if test -z "$rpath"; then
49916 + if test "$build_libtool_libs" = yes; then
49917 + # Building a libtool convenience library.
49918 + # Some compilers have problems with a `.al' extension so
49919 + # convenience libraries should have the same extension an
49920 + # archive normally would.
49921 + oldlibs="$output_objdir/$libname.$libext $oldlibs"
49922 + build_libtool_libs=convenience
49923 + build_old_libs=yes
49924 + fi
49925 +
49926 + test -n "$vinfo" && \
49927 + func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
49928 +
49929 + test -n "$release" && \
49930 + func_warning "\`-release' is ignored for convenience libraries"
49931 + else
49932 +
49933 + # Parse the version information argument.
49934 + save_ifs="$IFS"; IFS=':'
49935 + set dummy $vinfo 0 0 0
49936 + shift
49937 + IFS="$save_ifs"
49938 +
49939 + test -n "$7" && \
49940 + func_fatal_help "too many parameters to \`-version-info'"
49941 +
49942 + # convert absolute version numbers to libtool ages
49943 + # this retains compatibility with .la files and attempts
49944 + # to make the code below a bit more comprehensible
49945 +
49946 + case $vinfo_number in
49947 + yes)
49948 + number_major="$1"
49949 + number_minor="$2"
49950 + number_revision="$3"
49951 + #
49952 + # There are really only two kinds -- those that
49953 + # use the current revision as the major version
49954 + # and those that subtract age and use age as
49955 + # a minor version. But, then there is irix
49956 + # which has an extra 1 added just for fun
49957 + #
49958 + case $version_type in
49959 + darwin|linux|osf|windows|none)
49960 + current=`expr $number_major + $number_minor`
49961 + age="$number_minor"
49962 + revision="$number_revision"
49963 + ;;
49964 + freebsd-aout|freebsd-elf|sunos)
49965 + current="$number_major"
49966 + revision="$number_minor"
49967 + age="0"
49968 + ;;
49969 + irix|nonstopux)
49970 + current=`expr $number_major + $number_minor - 1`
49971 + age="$number_minor"
49972 + revision="$number_minor"
49973 + ;;
49974 + esac
49975 + ;;
49976 + no)
49977 + current="$1"
49978 + revision="$2"
49979 + age="$3"
49980 + ;;
49981 + esac
49982 +
49983 + # Check that each of the things are valid numbers.
49984 + case $current in
49985 + 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]) ;;
49986 + *)
49987 + func_error "CURRENT \`$current' must be a nonnegative integer"
49988 + func_fatal_error "\`$vinfo' is not valid version information"
49989 + ;;
49990 + esac
49991 +
49992 + case $revision in
49993 + 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]) ;;
49994 + *)
49995 + func_error "REVISION \`$revision' must be a nonnegative integer"
49996 + func_fatal_error "\`$vinfo' is not valid version information"
49997 + ;;
49998 + esac
49999 +
50000 + case $age in
50001 + 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]) ;;
50002 + *)
50003 + func_error "AGE \`$age' must be a nonnegative integer"
50004 + func_fatal_error "\`$vinfo' is not valid version information"
50005 + ;;
50006 + esac
50007 +
50008 + if test "$age" -gt "$current"; then
50009 + func_error "AGE \`$age' is greater than the current interface number \`$current'"
50010 + func_fatal_error "\`$vinfo' is not valid version information"
50011 + fi
50012 +
50013 + # Calculate the version variables.
50014 + major=
50015 + versuffix=
50016 + verstring=
50017 + case $version_type in
50018 + none) ;;
50019 +
50020 + darwin)
50021 + # Like Linux, but with the current version available in
50022 + # verstring for coding it into the library header
50023 + major=.`expr $current - $age`
50024 + versuffix="$major.$age.$revision"
50025 + # Darwin ld doesn't like 0 for these options...
50026 + minor_current=`expr $current + 1`
50027 + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
50028 + ;;
50029 +
50030 + freebsd-aout)
50031 + major=".$current"
50032 + versuffix=".$current.$revision";
50033 + ;;
50034 +
50035 + freebsd-elf)
50036 + major=".$current"
50037 + versuffix=".$current"
50038 + ;;
50039 +
50040 + irix | nonstopux)
50041 + major=`expr $current - $age + 1`
50042 +
50043 + case $version_type in
50044 + nonstopux) verstring_prefix=nonstopux ;;
50045 + *) verstring_prefix=sgi ;;
50046 + esac
50047 + verstring="$verstring_prefix$major.$revision"
50048 +
50049 + # Add in all the interfaces that we are compatible with.
50050 + loop=$revision
50051 + while test "$loop" -ne 0; do
50052 + iface=`expr $revision - $loop`
50053 + loop=`expr $loop - 1`
50054 + verstring="$verstring_prefix$major.$iface:$verstring"
50055 + done
50056 +
50057 + # Before this point, $major must not contain `.'.
50058 + major=.$major
50059 + versuffix="$major.$revision"
50060 + ;;
50061 +
50062 + linux)
50063 + major=.`expr $current - $age`
50064 + versuffix="$major.$age.$revision"
50065 + ;;
50066 +
50067 + osf)
50068 + major=.`expr $current - $age`
50069 + versuffix=".$current.$age.$revision"
50070 + verstring="$current.$age.$revision"
50071 +
50072 + # Add in all the interfaces that we are compatible with.
50073 + loop=$age
50074 + while test "$loop" -ne 0; do
50075 + iface=`expr $current - $loop`
50076 + loop=`expr $loop - 1`
50077 + verstring="$verstring:${iface}.0"
50078 + done
50079 +
50080 + # Make executables depend on our current version.
50081 + verstring="$verstring:${current}.0"
50082 + ;;
50083 +
50084 + qnx)
50085 + major=".$current"
50086 + versuffix=".$current"
50087 + ;;
50088 +
50089 + sunos)
50090 + major=".$current"
50091 + versuffix=".$current.$revision"
50092 + ;;
50093 +
50094 + windows)
50095 + # Use '-' rather than '.', since we only want one
50096 + # extension on DOS 8.3 filesystems.
50097 + major=`expr $current - $age`
50098 + versuffix="-$major"
50099 + ;;
50100 +
50101 + *)
50102 + func_fatal_configuration "unknown library version type \`$version_type'"
50103 + ;;
50104 + esac
50105 +
50106 + # Clear the version info if we defaulted, and they specified a release.
50107 + if test -z "$vinfo" && test -n "$release"; then
50108 + major=
50109 + case $version_type in
50110 + darwin)
50111 + # we can't check for "0.0" in archive_cmds due to quoting
50112 + # problems, so we reset it completely
50113 + verstring=
50114 + ;;
50115 + *)
50116 + verstring="0.0"
50117 + ;;
50118 + esac
50119 + if test "$need_version" = no; then
50120 + versuffix=
50121 + else
50122 + versuffix=".0.0"
50123 + fi
50124 + fi
50125 +
50126 + # Remove version info from name if versioning should be avoided
50127 + if test "$avoid_version" = yes && test "$need_version" = no; then
50128 + major=
50129 + versuffix=
50130 + verstring=""
50131 + fi
50132 +
50133 + # Check to see if the archive will have undefined symbols.
50134 + if test "$allow_undefined" = yes; then
50135 + if test "$allow_undefined_flag" = unsupported; then
50136 + func_warning "undefined symbols not allowed in $host shared libraries"
50137 + build_libtool_libs=no
50138 + build_old_libs=yes
50139 + fi
50140 + else
50141 + # Don't allow undefined symbols.
50142 + allow_undefined_flag="$no_undefined_flag"
50143 + fi
50144 +
50145 + fi
50146 +
50147 + func_generate_dlsyms "$libname" "$libname" "yes"
50148 + libobjs="$libobjs $symfileobj"
50149 + test "X$libobjs" = "X " && libobjs=
50150 +
50151 + if test "$mode" != relink; then
50152 + # Remove our outputs, but don't remove object files since they
50153 + # may have been created when compiling PIC objects.
50154 + removelist=
50155 + tempremovelist=`$ECHO "$output_objdir/*"`
50156 + for p in $tempremovelist; do
50157 + case $p in
50158 + *.$objext)
50159 + ;;
50160 + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
50161 + if test "X$precious_files_regex" != "X"; then
50162 + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
50163 + then
50164 + continue
50165 + fi
50166 + fi
50167 + removelist="$removelist $p"
50168 + ;;
50169 + *) ;;
50170 + esac
50171 + done
50172 + test -n "$removelist" && \
50173 + func_show_eval "${RM}r \$removelist"
50174 + fi
50175 +
50176 + # Now set the variables for building old libraries.
50177 + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
50178 + oldlibs="$oldlibs $output_objdir/$libname.$libext"
50179 +
50180 + # Transform .lo files to .o files.
50181 + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
50182 + fi
50183 +
50184 + # Eliminate all temporary directories.
50185 + #for path in $notinst_path; do
50186 + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
50187 + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
50188 + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
50189 + #done
50190 +
50191 + if test -n "$xrpath"; then
50192 + # If the user specified any rpath flags, then add them.
50193 + temp_xrpath=
50194 + for libdir in $xrpath; do
50195 + temp_xrpath="$temp_xrpath -R$libdir"
50196 + case "$finalize_rpath " in
50197 + *" $libdir "*) ;;
50198 + *) finalize_rpath="$finalize_rpath $libdir" ;;
50199 + esac
50200 + done
50201 + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
50202 + dependency_libs="$temp_xrpath $dependency_libs"
50203 + fi
50204 + fi
50205 +
50206 + # Make sure dlfiles contains only unique files that won't be dlpreopened
50207 + old_dlfiles="$dlfiles"
50208 + dlfiles=
50209 + for lib in $old_dlfiles; do
50210 + case " $dlprefiles $dlfiles " in
50211 + *" $lib "*) ;;
50212 + *) dlfiles="$dlfiles $lib" ;;
50213 + esac
50214 + done
50215 +
50216 + # Make sure dlprefiles contains only unique files
50217 + old_dlprefiles="$dlprefiles"
50218 + dlprefiles=
50219 + for lib in $old_dlprefiles; do
50220 + case "$dlprefiles " in
50221 + *" $lib "*) ;;
50222 + *) dlprefiles="$dlprefiles $lib" ;;
50223 + esac
50224 + done
50225 +
50226 + if test "$build_libtool_libs" = yes; then
50227 + if test -n "$rpath"; then
50228 + case $host in
50229 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
50230 + # these systems don't actually have a c library (as such)!
50231 + ;;
50232 + *-*-rhapsody* | *-*-darwin1.[012])
50233 + # Rhapsody C library is in the System framework
50234 + deplibs="$deplibs System.ltframework"
50235 + ;;
50236 + *-*-netbsd*)
50237 + # Don't link with libc until the a.out ld.so is fixed.
50238 + ;;
50239 + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
50240 + # Do not include libc due to us having libc/libc_r.
50241 + ;;
50242 + *-*-sco3.2v5* | *-*-sco5v6*)
50243 + # Causes problems with __ctype
50244 + ;;
50245 + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
50246 + # Compiler inserts libc in the correct place for threads to work
50247 + ;;
50248 + *)
50249 + # Add libc to deplibs on all other systems if necessary.
50250 + if test "$build_libtool_need_lc" = "yes"; then
50251 + deplibs="$deplibs -lc"
50252 + fi
50253 + ;;
50254 + esac
50255 + fi
50256 +
50257 + # Transform deplibs into only deplibs that can be linked in shared.
50258 + name_save=$name
50259 + libname_save=$libname
50260 + release_save=$release
50261 + versuffix_save=$versuffix
50262 + major_save=$major
50263 + # I'm not sure if I'm treating the release correctly. I think
50264 + # release should show up in the -l (ie -lgmp5) so we don't want to
50265 + # add it in twice. Is that correct?
50266 + release=""
50267 + versuffix=""
50268 + major=""
50269 + newdeplibs=
50270 + droppeddeps=no
50271 + case $deplibs_check_method in
50272 + pass_all)
50273 + # Don't check for shared/static. Everything works.
50274 + # This might be a little naive. We might want to check
50275 + # whether the library exists or not. But this is on
50276 + # osf3 & osf4 and I'm not really sure... Just
50277 + # implementing what was already the behavior.
50278 + newdeplibs=$deplibs
50279 + ;;
50280 + test_compile)
50281 + # This code stresses the "libraries are programs" paradigm to its
50282 + # limits. Maybe even breaks it. We compile a program, linking it
50283 + # against the deplibs as a proxy for the library. Then we can check
50284 + # whether they linked in statically or dynamically with ldd.
50285 + $opt_dry_run || $RM conftest.c
50286 + cat > conftest.c <<EOF
50287 + int main() { return 0; }
50288 +EOF
50289 + $opt_dry_run || $RM conftest
50290 + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
50291 + ldd_output=`ldd conftest`
50292 + for i in $deplibs; do
50293 + name=`expr $i : '-l\(.*\)'`
50294 + # If $name is empty we are operating on a -L argument.
50295 + if test "$name" != "" && test "$name" != "0"; then
50296 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50297 + case " $predeps $postdeps " in
50298 + *" $i "*)
50299 + newdeplibs="$newdeplibs $i"
50300 + i=""
50301 + ;;
50302 + esac
50303 + fi
50304 + if test -n "$i" ; then
50305 + libname=`eval "\\$ECHO \"$libname_spec\""`
50306 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
50307 + set dummy $deplib_matches; shift
50308 + deplib_match=$1
50309 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
50310 + newdeplibs="$newdeplibs $i"
50311 + else
50312 + droppeddeps=yes
50313 + $ECHO
50314 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
50315 + $ECHO "*** I have the capability to make that library automatically link in when"
50316 + $ECHO "*** you link to this library. But I can only do this if you have a"
50317 + $ECHO "*** shared version of the library, which I believe you do not have"
50318 + $ECHO "*** because a test_compile did reveal that the linker did not use it for"
50319 + $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
50320 + fi
50321 + fi
50322 + else
50323 + newdeplibs="$newdeplibs $i"
50324 + fi
50325 + done
50326 + else
50327 + # Error occurred in the first compile. Let's try to salvage
50328 + # the situation: Compile a separate program for each library.
50329 + for i in $deplibs; do
50330 + name=`expr $i : '-l\(.*\)'`
50331 + # If $name is empty we are operating on a -L argument.
50332 + if test "$name" != "" && test "$name" != "0"; then
50333 + $opt_dry_run || $RM conftest
50334 + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
50335 + ldd_output=`ldd conftest`
50336 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50337 + case " $predeps $postdeps " in
50338 + *" $i "*)
50339 + newdeplibs="$newdeplibs $i"
50340 + i=""
50341 + ;;
50342 + esac
50343 + fi
50344 + if test -n "$i" ; then
50345 + libname=`eval "\\$ECHO \"$libname_spec\""`
50346 + deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
50347 + set dummy $deplib_matches; shift
50348 + deplib_match=$1
50349 + if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
50350 + newdeplibs="$newdeplibs $i"
50351 + else
50352 + droppeddeps=yes
50353 + $ECHO
50354 + $ECHO "*** Warning: dynamic linker does not accept needed library $i."
50355 + $ECHO "*** I have the capability to make that library automatically link in when"
50356 + $ECHO "*** you link to this library. But I can only do this if you have a"
50357 + $ECHO "*** shared version of the library, which you do not appear to have"
50358 + $ECHO "*** because a test_compile did reveal that the linker did not use this one"
50359 + $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
50360 + fi
50361 + fi
50362 + else
50363 + droppeddeps=yes
50364 + $ECHO
50365 + $ECHO "*** Warning! Library $i is needed by this library but I was not able to"
50366 + $ECHO "*** make it link in! You will probably need to install it or some"
50367 + $ECHO "*** library that it depends on before this library will be fully"
50368 + $ECHO "*** functional. Installing it before continuing would be even better."
50369 + fi
50370 + else
50371 + newdeplibs="$newdeplibs $i"
50372 + fi
50373 + done
50374 + fi
50375 + ;;
50376 + file_magic*)
50377 + set dummy $deplibs_check_method; shift
50378 + file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
50379 + for a_deplib in $deplibs; do
50380 + name=`expr $a_deplib : '-l\(.*\)'`
50381 + # If $name is empty we are operating on a -L argument.
50382 + if test "$name" != "" && test "$name" != "0"; then
50383 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50384 + case " $predeps $postdeps " in
50385 + *" $a_deplib "*)
50386 + newdeplibs="$newdeplibs $a_deplib"
50387 + a_deplib=""
50388 + ;;
50389 + esac
50390 + fi
50391 + if test -n "$a_deplib" ; then
50392 + libname=`eval "\\$ECHO \"$libname_spec\""`
50393 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
50394 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
50395 + for potent_lib in $potential_libs; do
50396 + # Follow soft links.
50397 + if ls -lLd "$potent_lib" 2>/dev/null |
50398 + $GREP " -> " >/dev/null; then
50399 + continue
50400 + fi
50401 + # The statement above tries to avoid entering an
50402 + # endless loop below, in case of cyclic links.
50403 + # We might still enter an endless loop, since a link
50404 + # loop can be closed while we follow links,
50405 + # but so what?
50406 + potlib="$potent_lib"
50407 + while test -h "$potlib" 2>/dev/null; do
50408 + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
50409 + case $potliblink in
50410 + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
50411 + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
50412 + esac
50413 + done
50414 + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
50415 + $SED -e 10q |
50416 + $EGREP "$file_magic_regex" > /dev/null; then
50417 + newdeplibs="$newdeplibs $a_deplib"
50418 + a_deplib=""
50419 + break 2
50420 + fi
50421 + done
50422 + done
50423 + fi
50424 + if test -n "$a_deplib" ; then
50425 + droppeddeps=yes
50426 + $ECHO
50427 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
50428 + $ECHO "*** I have the capability to make that library automatically link in when"
50429 + $ECHO "*** you link to this library. But I can only do this if you have a"
50430 + $ECHO "*** shared version of the library, which you do not appear to have"
50431 + $ECHO "*** because I did check the linker path looking for a file starting"
50432 + if test -z "$potlib" ; then
50433 + $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
50434 + else
50435 + $ECHO "*** with $libname and none of the candidates passed a file format test"
50436 + $ECHO "*** using a file magic. Last file checked: $potlib"
50437 + fi
50438 + fi
50439 + else
50440 + # Add a -L argument.
50441 + newdeplibs="$newdeplibs $a_deplib"
50442 + fi
50443 + done # Gone through all deplibs.
50444 + ;;
50445 + match_pattern*)
50446 + set dummy $deplibs_check_method; shift
50447 + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
50448 + for a_deplib in $deplibs; do
50449 + name=`expr $a_deplib : '-l\(.*\)'`
50450 + # If $name is empty we are operating on a -L argument.
50451 + if test -n "$name" && test "$name" != "0"; then
50452 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50453 + case " $predeps $postdeps " in
50454 + *" $a_deplib "*)
50455 + newdeplibs="$newdeplibs $a_deplib"
50456 + a_deplib=""
50457 + ;;
50458 + esac
50459 + fi
50460 + if test -n "$a_deplib" ; then
50461 + libname=`eval "\\$ECHO \"$libname_spec\""`
50462 + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
50463 + potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
50464 + for potent_lib in $potential_libs; do
50465 + potlib="$potent_lib" # see symlink-check above in file_magic test
50466 + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
50467 + $EGREP "$match_pattern_regex" > /dev/null; then
50468 + newdeplibs="$newdeplibs $a_deplib"
50469 + a_deplib=""
50470 + break 2
50471 + fi
50472 + done
50473 + done
50474 + fi
50475 + if test -n "$a_deplib" ; then
50476 + droppeddeps=yes
50477 + $ECHO
50478 + $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
50479 + $ECHO "*** I have the capability to make that library automatically link in when"
50480 + $ECHO "*** you link to this library. But I can only do this if you have a"
50481 + $ECHO "*** shared version of the library, which you do not appear to have"
50482 + $ECHO "*** because I did check the linker path looking for a file starting"
50483 + if test -z "$potlib" ; then
50484 + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
50485 + else
50486 + $ECHO "*** with $libname and none of the candidates passed a file format test"
50487 + $ECHO "*** using a regex pattern. Last file checked: $potlib"
50488 + fi
50489 + fi
50490 + else
50491 + # Add a -L argument.
50492 + newdeplibs="$newdeplibs $a_deplib"
50493 + fi
50494 + done # Gone through all deplibs.
50495 + ;;
50496 + none | unknown | *)
50497 + newdeplibs=""
50498 + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
50499 + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
50500 + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
50501 + for i in $predeps $postdeps ; do
50502 + # can't use Xsed below, because $i might contain '/'
50503 + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
50504 + done
50505 + fi
50506 + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' |
50507 + $GREP . >/dev/null; then
50508 + $ECHO
50509 + if test "X$deplibs_check_method" = "Xnone"; then
50510 + $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
50511 + else
50512 + $ECHO "*** Warning: inter-library dependencies are not known to be supported."
50513 + fi
50514 + $ECHO "*** All declared inter-library dependencies are being dropped."
50515 + droppeddeps=yes
50516 + fi
50517 + ;;
50518 + esac
50519 + versuffix=$versuffix_save
50520 + major=$major_save
50521 + release=$release_save
50522 + libname=$libname_save
50523 + name=$name_save
50524 +
50525 + case $host in
50526 + *-*-rhapsody* | *-*-darwin1.[012])
50527 + # On Rhapsody replace the C library with the System framework
50528 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
50529 + ;;
50530 + esac
50531 +
50532 + if test "$droppeddeps" = yes; then
50533 + if test "$module" = yes; then
50534 + $ECHO
50535 + $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
50536 + $ECHO "*** dependencies of module $libname. Therefore, libtool will create"
50537 + $ECHO "*** a static module, that should work as long as the dlopening"
50538 + $ECHO "*** application is linked with the -dlopen flag."
50539 + if test -z "$global_symbol_pipe"; then
50540 + $ECHO
50541 + $ECHO "*** However, this would only work if libtool was able to extract symbol"
50542 + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
50543 + $ECHO "*** not find such a program. So, this module is probably useless."
50544 + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
50545 + fi
50546 + if test "$build_old_libs" = no; then
50547 + oldlibs="$output_objdir/$libname.$libext"
50548 + build_libtool_libs=module
50549 + build_old_libs=yes
50550 + else
50551 + build_libtool_libs=no
50552 + fi
50553 + else
50554 + $ECHO "*** The inter-library dependencies that have been dropped here will be"
50555 + $ECHO "*** automatically added whenever a program is linked with this library"
50556 + $ECHO "*** or is declared to -dlopen it."
50557 +
50558 + if test "$allow_undefined" = no; then
50559 + $ECHO
50560 + $ECHO "*** Since this library must not contain undefined symbols,"
50561 + $ECHO "*** because either the platform does not support them or"
50562 + $ECHO "*** it was explicitly requested with -no-undefined,"
50563 + $ECHO "*** libtool will only create a static version of it."
50564 + if test "$build_old_libs" = no; then
50565 + oldlibs="$output_objdir/$libname.$libext"
50566 + build_libtool_libs=module
50567 + build_old_libs=yes
50568 + else
50569 + build_libtool_libs=no
50570 + fi
50571 + fi
50572 + fi
50573 + fi
50574 + # Done checking deplibs!
50575 + deplibs=$newdeplibs
50576 + fi
50577 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
50578 + case $host in
50579 + *-*-darwin*)
50580 + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50581 + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50582 + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
50583 + ;;
50584 + esac
50585 +
50586 + # move library search paths that coincide with paths to not yet
50587 + # installed libraries to the beginning of the library search list
50588 + new_libs=
50589 + for path in $notinst_path; do
50590 + case " $new_libs " in
50591 + *" -L$path/$objdir "*) ;;
50592 + *)
50593 + case " $deplibs " in
50594 + *" -L$path/$objdir "*)
50595 + new_libs="$new_libs -L$path/$objdir" ;;
50596 + esac
50597 + ;;
50598 + esac
50599 + done
50600 + for deplib in $deplibs; do
50601 + case $deplib in
50602 + -L*)
50603 + case " $new_libs " in
50604 + *" $deplib "*) ;;
50605 + *) new_libs="$new_libs $deplib" ;;
50606 + esac
50607 + ;;
50608 + *) new_libs="$new_libs $deplib" ;;
50609 + esac
50610 + done
50611 + deplibs="$new_libs"
50612 +
50613 + # All the library-specific variables (install_libdir is set above).
50614 + library_names=
50615 + old_library=
50616 + dlname=
50617 +
50618 + # Test again, we may have decided not to build it any more
50619 + if test "$build_libtool_libs" = yes; then
50620 + if test "$hardcode_into_libs" = yes; then
50621 + # Hardcode the library paths
50622 + hardcode_libdirs=
50623 + dep_rpath=
50624 + rpath="$finalize_rpath"
50625 + test "$mode" != relink && rpath="$compile_rpath$rpath"
50626 + for libdir in $rpath; do
50627 + if test -n "$hardcode_libdir_flag_spec"; then
50628 + if test -n "$hardcode_libdir_separator"; then
50629 + if test -z "$hardcode_libdirs"; then
50630 + hardcode_libdirs="$libdir"
50631 + else
50632 + # Just accumulate the unique libdirs.
50633 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
50634 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
50635 + ;;
50636 + *)
50637 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
50638 + ;;
50639 + esac
50640 + fi
50641 + else
50642 + eval flag=\"$hardcode_libdir_flag_spec\"
50643 + dep_rpath="$dep_rpath $flag"
50644 + fi
50645 + elif test -n "$runpath_var"; then
50646 + case "$perm_rpath " in
50647 + *" $libdir "*) ;;
50648 + *) perm_rpath="$perm_rpath $libdir" ;;
50649 + esac
50650 + fi
50651 + done
50652 + # Substitute the hardcoded libdirs into the rpath.
50653 + if test -n "$hardcode_libdir_separator" &&
50654 + test -n "$hardcode_libdirs"; then
50655 + libdir="$hardcode_libdirs"
50656 + if test -n "$hardcode_libdir_flag_spec_ld"; then
50657 + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
50658 + else
50659 + eval dep_rpath=\"$hardcode_libdir_flag_spec\"
50660 + fi
50661 + fi
50662 + if test -n "$runpath_var" && test -n "$perm_rpath"; then
50663 + # We should set the runpath_var.
50664 + rpath=
50665 + for dir in $perm_rpath; do
50666 + rpath="$rpath$dir:"
50667 + done
50668 + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
50669 + fi
50670 + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
50671 + fi
50672 +
50673 + shlibpath="$finalize_shlibpath"
50674 + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
50675 + if test -n "$shlibpath"; then
50676 + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
50677 + fi
50678 +
50679 + # Get the real and link names of the library.
50680 + eval shared_ext=\"$shrext_cmds\"
50681 + eval library_names=\"$library_names_spec\"
50682 + set dummy $library_names
50683 + shift
50684 + realname="$1"
50685 + shift
50686 +
50687 + if test -n "$soname_spec"; then
50688 + eval soname=\"$soname_spec\"
50689 + else
50690 + soname="$realname"
50691 + fi
50692 + if test -z "$dlname"; then
50693 + dlname=$soname
50694 + fi
50695 +
50696 + lib="$output_objdir/$realname"
50697 + linknames=
50698 + for link
50699 + do
50700 + linknames="$linknames $link"
50701 + done
50702 +
50703 + # Use standard objects if they are pic
50704 + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
50705 + test "X$libobjs" = "X " && libobjs=
50706 +
50707 + delfiles=
50708 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50709 + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
50710 + export_symbols="$output_objdir/$libname.uexp"
50711 + delfiles="$delfiles $export_symbols"
50712 + fi
50713 +
50714 + orig_export_symbols=
50715 + case $host_os in
50716 + cygwin* | mingw*)
50717 + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
50718 + # exporting using user supplied symfile
50719 + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
50720 + # and it's NOT already a .def file. Must figure out
50721 + # which of the given symbols are data symbols and tag
50722 + # them as such. So, trigger use of export_symbols_cmds.
50723 + # export_symbols gets reassigned inside the "prepare
50724 + # the list of exported symbols" if statement, so the
50725 + # include_expsyms logic still works.
50726 + orig_export_symbols="$export_symbols"
50727 + export_symbols=
50728 + always_export_symbols=yes
50729 + fi
50730 + fi
50731 + ;;
50732 + esac
50733 +
50734 + # Prepare the list of exported symbols
50735 + if test -z "$export_symbols"; then
50736 + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
50737 + func_echo "generating symbol list for \`$libname.la'"
50738 + export_symbols="$output_objdir/$libname.exp"
50739 + $opt_dry_run || $RM $export_symbols
50740 + cmds=$export_symbols_cmds
50741 + save_ifs="$IFS"; IFS='~'
50742 + for cmd in $cmds; do
50743 + IFS="$save_ifs"
50744 + eval cmd=\"$cmd\"
50745 + if len=`expr "X$cmd" : ".*"` &&
50746 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
50747 + func_show_eval "$cmd" 'exit $?'
50748 + skipped_export=false
50749 + else
50750 + # The command line is too long to execute in one step.
50751 + func_echo "using reloadable object file for export list..."
50752 + skipped_export=:
50753 + # Break out early, otherwise skipped_export may be
50754 + # set to false by a later but shorter cmd.
50755 + break
50756 + fi
50757 + done
50758 + IFS="$save_ifs"
50759 + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
50760 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
50761 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
50762 + fi
50763 + fi
50764 + fi
50765 +
50766 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50767 + tmp_export_symbols="$export_symbols"
50768 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
50769 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
50770 + fi
50771 +
50772 + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
50773 + # The given exports_symbols file has to be filtered, so filter it.
50774 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
50775 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
50776 + # 's' commands which not all seds can handle. GNU sed should be fine
50777 + # though. Also, the filter scales superlinearly with the number of
50778 + # global variables. join(1) would be nice here, but unfortunately
50779 + # isn't a blessed tool.
50780 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
50781 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
50782 + export_symbols=$output_objdir/$libname.def
50783 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
50784 + fi
50785 +
50786 + tmp_deplibs=
50787 + for test_deplib in $deplibs; do
50788 + case " $convenience " in
50789 + *" $test_deplib "*) ;;
50790 + *)
50791 + tmp_deplibs="$tmp_deplibs $test_deplib"
50792 + ;;
50793 + esac
50794 + done
50795 + deplibs="$tmp_deplibs"
50796 +
50797 + if test -n "$convenience"; then
50798 + if test -n "$whole_archive_flag_spec" &&
50799 + test "$compiler_needs_object" = yes &&
50800 + test -z "$libobjs"; then
50801 + # extract the archives, so we have objects to list.
50802 + # TODO: could optimize this to just extract one archive.
50803 + whole_archive_flag_spec=
50804 + fi
50805 + if test -n "$whole_archive_flag_spec"; then
50806 + save_libobjs=$libobjs
50807 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
50808 + test "X$libobjs" = "X " && libobjs=
50809 + else
50810 + gentop="$output_objdir/${outputname}x"
50811 + generated="$generated $gentop"
50812 +
50813 + func_extract_archives $gentop $convenience
50814 + libobjs="$libobjs $func_extract_archives_result"
50815 + test "X$libobjs" = "X " && libobjs=
50816 + fi
50817 + fi
50818 +
50819 + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
50820 + eval flag=\"$thread_safe_flag_spec\"
50821 + linker_flags="$linker_flags $flag"
50822 + fi
50823 +
50824 + # Make a backup of the uninstalled library when relinking
50825 + if test "$mode" = relink; then
50826 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
50827 + fi
50828 +
50829 + # Do each of the archive commands.
50830 + if test "$module" = yes && test -n "$module_cmds" ; then
50831 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
50832 + eval test_cmds=\"$module_expsym_cmds\"
50833 + cmds=$module_expsym_cmds
50834 + else
50835 + eval test_cmds=\"$module_cmds\"
50836 + cmds=$module_cmds
50837 + fi
50838 + else
50839 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
50840 + eval test_cmds=\"$archive_expsym_cmds\"
50841 + cmds=$archive_expsym_cmds
50842 + else
50843 + eval test_cmds=\"$archive_cmds\"
50844 + cmds=$archive_cmds
50845 + fi
50846 + fi
50847 +
50848 + if test "X$skipped_export" != "X:" &&
50849 + len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
50850 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
50851 + :
50852 + else
50853 + # The command line is too long to link in one step, link piecewise
50854 + # or, if using GNU ld and skipped_export is not :, use a linker
50855 + # script.
50856 +
50857 + # Save the value of $output and $libobjs because we want to
50858 + # use them later. If we have whole_archive_flag_spec, we
50859 + # want to use save_libobjs as it was before
50860 + # whole_archive_flag_spec was expanded, because we can't
50861 + # assume the linker understands whole_archive_flag_spec.
50862 + # This may have to be revisited, in case too many
50863 + # convenience libraries get linked in and end up exceeding
50864 + # the spec.
50865 + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
50866 + save_libobjs=$libobjs
50867 + fi
50868 + save_output=$output
50869 + output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
50870 +
50871 + # Clear the reloadable object creation command queue and
50872 + # initialize k to one.
50873 + test_cmds=
50874 + concat_cmds=
50875 + objlist=
50876 + last_robj=
50877 + k=1
50878 +
50879 + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
50880 + output=${output_objdir}/${output_la}.lnkscript
50881 + func_echo "creating GNU ld script: $output"
50882 + $ECHO 'INPUT (' > $output
50883 + for obj in $save_libobjs
50884 + do
50885 + $ECHO "$obj" >> $output
50886 + done
50887 + $ECHO ')' >> $output
50888 + delfiles="$delfiles $output"
50889 + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
50890 + output=${output_objdir}/${output_la}.lnk
50891 + func_echo "creating linker input file list: $output"
50892 + : > $output
50893 + set x $save_libobjs
50894 + shift
50895 + firstobj=
50896 + if test "$compiler_needs_object" = yes; then
50897 + firstobj="$1 "
50898 + shift
50899 + fi
50900 + for obj
50901 + do
50902 + $ECHO "$obj" >> $output
50903 + done
50904 + delfiles="$delfiles $output"
50905 + output=$firstobj\"$file_list_spec$output\"
50906 + else
50907 + if test -n "$save_libobjs"; then
50908 + func_echo "creating reloadable object files..."
50909 + output=$output_objdir/$output_la-${k}.$objext
50910 + # Loop over the list of objects to be linked.
50911 + for obj in $save_libobjs
50912 + do
50913 + eval test_cmds=\"$reload_cmds $objlist $last_robj\"
50914 + if test "X$objlist" = X ||
50915 + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
50916 + test "$len" -le "$max_cmd_len"; }; then
50917 + objlist="$objlist $obj"
50918 + else
50919 + # The command $test_cmds is almost too long, add a
50920 + # command to the queue.
50921 + if test "$k" -eq 1 ; then
50922 + # The first file doesn't have a previous command to add.
50923 + eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
50924 + else
50925 + # All subsequent reloadable object files will link in
50926 + # the last one created.
50927 + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
50928 + fi
50929 + last_robj=$output_objdir/$output_la-${k}.$objext
50930 + k=`expr $k + 1`
50931 + output=$output_objdir/$output_la-${k}.$objext
50932 + objlist=$obj
50933 + len=1
50934 + fi
50935 + done
50936 + # Handle the remaining objects by creating one last
50937 + # reloadable object file. All subsequent reloadable object
50938 + # files will link in the last one created.
50939 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
50940 + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
50941 +
50942 + # Set up a command to remove the reloadable object files
50943 + # after they are used.
50944 + i=0
50945 + while test "$i" -lt "$k"
50946 + do
50947 + i=`expr $i + 1`
50948 + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
50949 + done
50950 + else
50951 + output=
50952 + fi
50953 +
50954 + if ${skipped_export-false}; then
50955 + func_echo "generating symbol list for \`$libname.la'"
50956 + export_symbols="$output_objdir/$libname.exp"
50957 + $opt_dry_run || $RM $export_symbols
50958 + libobjs=$output
50959 + # Append the command to create the export file.
50960 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
50961 + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
50962 + fi
50963 +
50964 + test -n "$save_libobjs" &&
50965 + func_echo "creating a temporary reloadable object file: $output"
50966 +
50967 + # Loop through the commands generated above and execute them.
50968 + save_ifs="$IFS"; IFS='~'
50969 + for cmd in $concat_cmds; do
50970 + IFS="$save_ifs"
50971 + $opt_silent || {
50972 + func_quote_for_expand "$cmd"
50973 + eval "func_echo $func_quote_for_expand_result"
50974 + }
50975 + $opt_dry_run || eval "$cmd" || {
50976 + lt_exit=$?
50977 +
50978 + # Restore the uninstalled library and exit
50979 + if test "$mode" = relink; then
50980 + ( cd "$output_objdir" && \
50981 + $RM "${realname}T" && \
50982 + $MV "${realname}U" "$realname" )
50983 + fi
50984 +
50985 + exit $lt_exit
50986 + }
50987 + done
50988 + IFS="$save_ifs"
50989 +
50990 + if test -n "$export_symbols_regex" && ${skipped_export-false}; then
50991 + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
50992 + func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
50993 + fi
50994 + fi
50995 +
50996 + if ${skipped_export-false}; then
50997 + if test -n "$export_symbols" && test -n "$include_expsyms"; then
50998 + tmp_export_symbols="$export_symbols"
50999 + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
51000 + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
51001 + fi
51002 +
51003 + if test -n "$orig_export_symbols"; then
51004 + # The given exports_symbols file has to be filtered, so filter it.
51005 + func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
51006 + # FIXME: $output_objdir/$libname.filter potentially contains lots of
51007 + # 's' commands which not all seds can handle. GNU sed should be fine
51008 + # though. Also, the filter scales superlinearly with the number of
51009 + # global variables. join(1) would be nice here, but unfortunately
51010 + # isn't a blessed tool.
51011 + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
51012 + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
51013 + export_symbols=$output_objdir/$libname.def
51014 + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
51015 + fi
51016 + fi
51017 +
51018 + libobjs=$output
51019 + # Restore the value of output.
51020 + output=$save_output
51021 +
51022 + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
51023 + eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
51024 + test "X$libobjs" = "X " && libobjs=
51025 + fi
51026 + # Expand the library linking commands again to reset the
51027 + # value of $libobjs for piecewise linking.
51028 +
51029 + # Do each of the archive commands.
51030 + if test "$module" = yes && test -n "$module_cmds" ; then
51031 + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
51032 + cmds=$module_expsym_cmds
51033 + else
51034 + cmds=$module_cmds
51035 + fi
51036 + else
51037 + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
51038 + cmds=$archive_expsym_cmds
51039 + else
51040 + cmds=$archive_cmds
51041 + fi
51042 + fi
51043 + fi
51044 +
51045 + if test -n "$delfiles"; then
51046 + # Append the command to remove temporary files to $cmds.
51047 + eval cmds=\"\$cmds~\$RM $delfiles\"
51048 + fi
51049 +
51050 + # Add any objects from preloaded convenience libraries
51051 + if test -n "$dlprefiles"; then
51052 + gentop="$output_objdir/${outputname}x"
51053 + generated="$generated $gentop"
51054 +
51055 + func_extract_archives $gentop $dlprefiles
51056 + libobjs="$libobjs $func_extract_archives_result"
51057 + test "X$libobjs" = "X " && libobjs=
51058 + fi
51059 +
51060 + save_ifs="$IFS"; IFS='~'
51061 + for cmd in $cmds; do
51062 + IFS="$save_ifs"
51063 + eval cmd=\"$cmd\"
51064 + $opt_silent || {
51065 + func_quote_for_expand "$cmd"
51066 + eval "func_echo $func_quote_for_expand_result"
51067 + }
51068 + $opt_dry_run || eval "$cmd" || {
51069 + lt_exit=$?
51070 +
51071 + # Restore the uninstalled library and exit
51072 + if test "$mode" = relink; then
51073 + ( cd "$output_objdir" && \
51074 + $RM "${realname}T" && \
51075 + $MV "${realname}U" "$realname" )
51076 + fi
51077 +
51078 + exit $lt_exit
51079 + }
51080 + done
51081 + IFS="$save_ifs"
51082 +
51083 + # Restore the uninstalled library and exit
51084 + if test "$mode" = relink; then
51085 + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
51086 +
51087 + if test -n "$convenience"; then
51088 + if test -z "$whole_archive_flag_spec"; then
51089 + func_show_eval '${RM}r "$gentop"'
51090 + fi
51091 + fi
51092 +
51093 + exit $EXIT_SUCCESS
51094 + fi
51095 +
51096 + # Create links to the real library.
51097 + for linkname in $linknames; do
51098 + if test "$realname" != "$linkname"; then
51099 + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
51100 + fi
51101 + done
51102 +
51103 + # If -module or -export-dynamic was specified, set the dlname.
51104 + if test "$module" = yes || test "$export_dynamic" = yes; then
51105 + # On all known operating systems, these are identical.
51106 + dlname="$soname"
51107 + fi
51108 + fi
51109 + ;;
51110 +
51111 + obj)
51112 + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
51113 + func_warning "\`-dlopen' is ignored for objects"
51114 + fi
51115 +
51116 + test -n "$deplibs" && \
51117 + func_warning "\`-l' and \`-L' are ignored for objects"
51118 +
51119 + test -n "$rpath" && \
51120 + func_warning "\`-rpath' is ignored for objects"
51121 +
51122 + test -n "$xrpath" && \
51123 + func_warning "\`-R' is ignored for objects"
51124 +
51125 + test -n "$vinfo" && \
51126 + func_warning "\`-version-info' is ignored for objects"
51127 +
51128 + test -n "$release" && \
51129 + func_warning "\`-release' is ignored for objects"
51130 +
51131 + case $output in
51132 + *.lo)
51133 + test -n "$objs$old_deplibs" && \
51134 + func_fatal_error "cannot build library object \`$output' from non-libtool objects"
51135 +
51136 + libobj=$output
51137 + func_lo2o "$libobj"
51138 + obj=$func_lo2o_result
51139 + ;;
51140 + *)
51141 + libobj=
51142 + obj="$output"
51143 + ;;
51144 + esac
51145 +
51146 + # Delete the old objects.
51147 + $opt_dry_run || $RM $obj $libobj
51148 +
51149 + # Objects from convenience libraries. This assumes
51150 + # single-version convenience libraries. Whenever we create
51151 + # different ones for PIC/non-PIC, this we'll have to duplicate
51152 + # the extraction.
51153 + reload_conv_objs=
51154 + gentop=
51155 + # reload_cmds runs $LD directly, so let us get rid of
51156 + # -Wl from whole_archive_flag_spec and hope we can get by with
51157 + # turning comma into space..
51158 + wl=
51159 +
51160 + if test -n "$convenience"; then
51161 + if test -n "$whole_archive_flag_spec"; then
51162 + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
51163 + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
51164 + else
51165 + gentop="$output_objdir/${obj}x"
51166 + generated="$generated $gentop"
51167 +
51168 + func_extract_archives $gentop $convenience
51169 + reload_conv_objs="$reload_objs $func_extract_archives_result"
51170 + fi
51171 + fi
51172 +
51173 + # Create the old-style object.
51174 + 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
51175 +
51176 + output="$obj"
51177 + func_execute_cmds "$reload_cmds" 'exit $?'
51178 +
51179 + # Exit if we aren't doing a library object file.
51180 + if test -z "$libobj"; then
51181 + if test -n "$gentop"; then
51182 + func_show_eval '${RM}r "$gentop"'
51183 + fi
51184 +
51185 + exit $EXIT_SUCCESS
51186 + fi
51187 +
51188 + if test "$build_libtool_libs" != yes; then
51189 + if test -n "$gentop"; then
51190 + func_show_eval '${RM}r "$gentop"'
51191 + fi
51192 +
51193 + # Create an invalid libtool object if no PIC, so that we don't
51194 + # accidentally link it into a program.
51195 + # $show "echo timestamp > $libobj"
51196 + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
51197 + exit $EXIT_SUCCESS
51198 + fi
51199 +
51200 + if test -n "$pic_flag" || test "$pic_mode" != default; then
51201 + # Only do commands if we really have different PIC objects.
51202 + reload_objs="$libobjs $reload_conv_objs"
51203 + output="$libobj"
51204 + func_execute_cmds "$reload_cmds" 'exit $?'
51205 + fi
51206 +
51207 + if test -n "$gentop"; then
51208 + func_show_eval '${RM}r "$gentop"'
51209 + fi
51210 +
51211 + exit $EXIT_SUCCESS
51212 + ;;
51213 +
51214 + prog)
51215 + case $host in
51216 + *cygwin*) func_stripname '' '.exe' "$output"
51217 + output=$func_stripname_result.exe;;
51218 + esac
51219 + test -n "$vinfo" && \
51220 + func_warning "\`-version-info' is ignored for programs"
51221 +
51222 + test -n "$release" && \
51223 + func_warning "\`-release' is ignored for programs"
51224 +
51225 + test "$preload" = yes \
51226 + && test "$dlopen_support" = unknown \
51227 + && test "$dlopen_self" = unknown \
51228 + && test "$dlopen_self_static" = unknown && \
51229 + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
51230 +
51231 + case $host in
51232 + *-*-rhapsody* | *-*-darwin1.[012])
51233 + # On Rhapsody replace the C library is the System framework
51234 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
51235 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
51236 + ;;
51237 + esac
51238 +
51239 + case $host in
51240 + *-*-darwin*)
51241 + # Don't allow lazy linking, it breaks C++ global constructors
51242 + # But is supposedly fixed on 10.4 or later (yay!).
51243 + if test "$tagname" = CXX ; then
51244 + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
51245 + 10.[0123])
51246 + compile_command="$compile_command ${wl}-bind_at_load"
51247 + finalize_command="$finalize_command ${wl}-bind_at_load"
51248 + ;;
51249 + esac
51250 + fi
51251 + # Time to change all our "foo.ltframework" stuff back to "-framework foo"
51252 + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
51253 + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
51254 + ;;
51255 + esac
51256 +
51257 +
51258 + # move library search paths that coincide with paths to not yet
51259 + # installed libraries to the beginning of the library search list
51260 + new_libs=
51261 + for path in $notinst_path; do
51262 + case " $new_libs " in
51263 + *" -L$path/$objdir "*) ;;
51264 + *)
51265 + case " $compile_deplibs " in
51266 + *" -L$path/$objdir "*)
51267 + new_libs="$new_libs -L$path/$objdir" ;;
51268 + esac
51269 + ;;
51270 + esac
51271 + done
51272 + for deplib in $compile_deplibs; do
51273 + case $deplib in
51274 + -L*)
51275 + case " $new_libs " in
51276 + *" $deplib "*) ;;
51277 + *) new_libs="$new_libs $deplib" ;;
51278 + esac
51279 + ;;
51280 + *) new_libs="$new_libs $deplib" ;;
51281 + esac
51282 + done
51283 + compile_deplibs="$new_libs"
51284 +
51285 +
51286 + compile_command="$compile_command $compile_deplibs"
51287 + finalize_command="$finalize_command $finalize_deplibs"
51288 +
51289 + if test -n "$rpath$xrpath"; then
51290 + # If the user specified any rpath flags, then add them.
51291 + for libdir in $rpath $xrpath; do
51292 + # This is the magic to use -rpath.
51293 + case "$finalize_rpath " in
51294 + *" $libdir "*) ;;
51295 + *) finalize_rpath="$finalize_rpath $libdir" ;;
51296 + esac
51297 + done
51298 + fi
51299 +
51300 + # Now hardcode the library paths
51301 + rpath=
51302 + hardcode_libdirs=
51303 + for libdir in $compile_rpath $finalize_rpath; do
51304 + if test -n "$hardcode_libdir_flag_spec"; then
51305 + if test -n "$hardcode_libdir_separator"; then
51306 + if test -z "$hardcode_libdirs"; then
51307 + hardcode_libdirs="$libdir"
51308 + else
51309 + # Just accumulate the unique libdirs.
51310 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
51311 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
51312 + ;;
51313 + *)
51314 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
51315 + ;;
51316 + esac
51317 + fi
51318 + else
51319 + eval flag=\"$hardcode_libdir_flag_spec\"
51320 + rpath="$rpath $flag"
51321 + fi
51322 + elif test -n "$runpath_var"; then
51323 + case "$perm_rpath " in
51324 + *" $libdir "*) ;;
51325 + *) perm_rpath="$perm_rpath $libdir" ;;
51326 + esac
51327 + fi
51328 + case $host in
51329 + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
51330 + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
51331 + case :$dllsearchpath: in
51332 + *":$libdir:"*) ;;
51333 + *) dllsearchpath="$dllsearchpath:$libdir";;
51334 + esac
51335 + case :$dllsearchpath: in
51336 + *":$testbindir:"*) ;;
51337 + *) dllsearchpath="$dllsearchpath:$testbindir";;
51338 + esac
51339 + ;;
51340 + esac
51341 + done
51342 + # Substitute the hardcoded libdirs into the rpath.
51343 + if test -n "$hardcode_libdir_separator" &&
51344 + test -n "$hardcode_libdirs"; then
51345 + libdir="$hardcode_libdirs"
51346 + eval rpath=\" $hardcode_libdir_flag_spec\"
51347 + fi
51348 + compile_rpath="$rpath"
51349 +
51350 + rpath=
51351 + hardcode_libdirs=
51352 + for libdir in $finalize_rpath; do
51353 + if test -n "$hardcode_libdir_flag_spec"; then
51354 + if test -n "$hardcode_libdir_separator"; then
51355 + if test -z "$hardcode_libdirs"; then
51356 + hardcode_libdirs="$libdir"
51357 + else
51358 + # Just accumulate the unique libdirs.
51359 + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
51360 + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
51361 + ;;
51362 + *)
51363 + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
51364 + ;;
51365 + esac
51366 + fi
51367 + else
51368 + eval flag=\"$hardcode_libdir_flag_spec\"
51369 + rpath="$rpath $flag"
51370 + fi
51371 + elif test -n "$runpath_var"; then
51372 + case "$finalize_perm_rpath " in
51373 + *" $libdir "*) ;;
51374 + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
51375 + esac
51376 + fi
51377 + done
51378 + # Substitute the hardcoded libdirs into the rpath.
51379 + if test -n "$hardcode_libdir_separator" &&
51380 + test -n "$hardcode_libdirs"; then
51381 + libdir="$hardcode_libdirs"
51382 + eval rpath=\" $hardcode_libdir_flag_spec\"
51383 + fi
51384 + finalize_rpath="$rpath"
51385 +
51386 + if test -n "$libobjs" && test "$build_old_libs" = yes; then
51387 + # Transform all the library objects into standard objects.
51388 + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
51389 + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
51390 + fi
51391 +
51392 + func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
51393 +
51394 + # template prelinking step
51395 + if test -n "$prelink_cmds"; then
51396 + func_execute_cmds "$prelink_cmds" 'exit $?'
51397 + fi
51398 +
51399 + wrappers_required=yes
51400 + case $host in
51401 + *cygwin* | *mingw* )
51402 + if test "$build_libtool_libs" != yes; then
51403 + wrappers_required=no
51404 + fi
51405 + ;;
51406 + *)
51407 + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
51408 + wrappers_required=no
51409 + fi
51410 + ;;
51411 + esac
51412 + if test "$wrappers_required" = no; then
51413 + # Replace the output file specification.
51414 + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
51415 + link_command="$compile_command$compile_rpath"
51416 +
51417 + # We have no uninstalled library dependencies, so finalize right now.
51418 + exit_status=0
51419 + func_show_eval "$link_command" 'exit_status=$?'
51420 +
51421 + # Delete the generated files.
51422 + if test -f "$output_objdir/${outputname}S.${objext}"; then
51423 + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
51424 + fi
51425 +
51426 + exit $exit_status
51427 + fi
51428 +
51429 + if test -n "$compile_shlibpath$finalize_shlibpath"; then
51430 + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
51431 + fi
51432 + if test -n "$finalize_shlibpath"; then
51433 + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
51434 + fi
51435 +
51436 + compile_var=
51437 + finalize_var=
51438 + if test -n "$runpath_var"; then
51439 + if test -n "$perm_rpath"; then
51440 + # We should set the runpath_var.
51441 + rpath=
51442 + for dir in $perm_rpath; do
51443 + rpath="$rpath$dir:"
51444 + done
51445 + compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
51446 + fi
51447 + if test -n "$finalize_perm_rpath"; then
51448 + # We should set the runpath_var.
51449 + rpath=
51450 + for dir in $finalize_perm_rpath; do
51451 + rpath="$rpath$dir:"
51452 + done
51453 + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
51454 + fi
51455 + fi
51456 +
51457 + if test "$no_install" = yes; then
51458 + # We don't need to create a wrapper script.
51459 + link_command="$compile_var$compile_command$compile_rpath"
51460 + # Replace the output file specification.
51461 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
51462 + # Delete the old output file.
51463 + $opt_dry_run || $RM $output
51464 + # Link the executable and exit
51465 + func_show_eval "$link_command" 'exit $?'
51466 + exit $EXIT_SUCCESS
51467 + fi
51468 +
51469 + if test "$hardcode_action" = relink; then
51470 + # Fast installation is not supported
51471 + link_command="$compile_var$compile_command$compile_rpath"
51472 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51473 +
51474 + func_warning "this platform does not like uninstalled shared libraries"
51475 + func_warning "\`$output' will be relinked during installation"
51476 + else
51477 + if test "$fast_install" != no; then
51478 + link_command="$finalize_var$compile_command$finalize_rpath"
51479 + if test "$fast_install" = yes; then
51480 + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
51481 + else
51482 + # fast_install is set to needless
51483 + relink_command=
51484 + fi
51485 + else
51486 + link_command="$compile_var$compile_command$compile_rpath"
51487 + relink_command="$finalize_var$finalize_command$finalize_rpath"
51488 + fi
51489 + fi
51490 +
51491 + # Replace the output file specification.
51492 + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
51493 +
51494 + # Delete the old output files.
51495 + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
51496 +
51497 + func_show_eval "$link_command" 'exit $?'
51498 +
51499 + # Now create the wrapper script.
51500 + func_echo "creating $output"
51501 +
51502 + # Quote the relink command for shipping.
51503 + if test -n "$relink_command"; then
51504 + # Preserve any variables that may affect compiler behavior
51505 + for var in $variables_saved_for_relink; do
51506 + if eval test -z \"\${$var+set}\"; then
51507 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
51508 + elif eval var_value=\$$var; test -z "$var_value"; then
51509 + relink_command="$var=; export $var; $relink_command"
51510 + else
51511 + func_quote_for_eval "$var_value"
51512 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
51513 + fi
51514 + done
51515 + relink_command="(cd `pwd`; $relink_command)"
51516 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
51517 + fi
51518 +
51519 + # Quote $ECHO for shipping.
51520 + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
51521 + case $progpath in
51522 + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
51523 + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
51524 + esac
51525 + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
51526 + else
51527 + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
51528 + fi
51529 +
51530 + # Only actually do things if not in dry run mode.
51531 + $opt_dry_run || {
51532 + # win32 will think the script is a binary if it has
51533 + # a .exe suffix, so we strip it off here.
51534 + case $output in
51535 + *.exe) func_stripname '' '.exe' "$output"
51536 + output=$func_stripname_result ;;
51537 + esac
51538 + # test for cygwin because mv fails w/o .exe extensions
51539 + case $host in
51540 + *cygwin*)
51541 + exeext=.exe
51542 + func_stripname '' '.exe' "$outputname"
51543 + outputname=$func_stripname_result ;;
51544 + *) exeext= ;;
51545 + esac
51546 + case $host in
51547 + *cygwin* | *mingw* )
51548 + output_name=`basename $output`
51549 + output_path=`dirname $output`
51550 + cwrappersource="$output_path/$objdir/lt-$output_name.c"
51551 + cwrapper="$output_path/$output_name.exe"
51552 + $RM $cwrappersource $cwrapper
51553 + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
51554 +
51555 + cat > $cwrappersource <<EOF
51556 +
51557 +/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
51558 + Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51559 +
51560 + The $output program cannot be directly executed until all the libtool
51561 + libraries that it depends on are installed.
51562 +
51563 + This wrapper executable should never be moved out of the build directory.
51564 + If it is, it will not operate correctly.
51565 +
51566 + Currently, it simply execs the wrapper *script* "/bin/sh $output",
51567 + but could eventually absorb all of the scripts functionality and
51568 + exec $objdir/$outputname directly.
51569 +*/
51570 +EOF
51571 + cat >> $cwrappersource<<"EOF"
51572 +#include <stdio.h>
51573 +#include <stdlib.h>
51574 +#include <unistd.h>
51575 +#include <malloc.h>
51576 +#include <stdarg.h>
51577 +#include <assert.h>
51578 +#include <string.h>
51579 +#include <ctype.h>
51580 +#include <sys/stat.h>
51581 +
51582 +#if defined(PATH_MAX)
51583 +# define LT_PATHMAX PATH_MAX
51584 +#elif defined(MAXPATHLEN)
51585 +# define LT_PATHMAX MAXPATHLEN
51586 +#else
51587 +# define LT_PATHMAX 1024
51588 +#endif
51589 +
51590 +#ifndef DIR_SEPARATOR
51591 +# define DIR_SEPARATOR '/'
51592 +# define PATH_SEPARATOR ':'
51593 +#endif
51594 +
51595 +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
51596 + defined (__OS2__)
51597 +# define HAVE_DOS_BASED_FILE_SYSTEM
51598 +# ifndef DIR_SEPARATOR_2
51599 +# define DIR_SEPARATOR_2 '\\'
51600 +# endif
51601 +# ifndef PATH_SEPARATOR_2
51602 +# define PATH_SEPARATOR_2 ';'
51603 +# endif
51604 +#endif
51605 +
51606 +#ifndef DIR_SEPARATOR_2
51607 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
51608 +#else /* DIR_SEPARATOR_2 */
51609 +# define IS_DIR_SEPARATOR(ch) \
51610 + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
51611 +#endif /* DIR_SEPARATOR_2 */
51612 +
51613 +#ifndef PATH_SEPARATOR_2
51614 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
51615 +#else /* PATH_SEPARATOR_2 */
51616 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
51617 +#endif /* PATH_SEPARATOR_2 */
51618 +
51619 +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
51620 +#define XFREE(stale) do { \
51621 + if (stale) { free ((void *) stale); stale = 0; } \
51622 +} while (0)
51623 +
51624 +/* -DDEBUG is fairly common in CFLAGS. */
51625 +#undef DEBUG
51626 +#if defined DEBUGWRAPPER
51627 +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
51628 +#else
51629 +# define DEBUG(format, ...)
51630 +#endif
51631 +
51632 +const char *program_name = NULL;
51633 +
51634 +void * xmalloc (size_t num);
51635 +char * xstrdup (const char *string);
51636 +const char * base_name (const char *name);
51637 +char * find_executable(const char *wrapper);
51638 +int check_executable(const char *path);
51639 +char * strendzap(char *str, const char *pat);
51640 +void lt_fatal (const char *message, ...);
51641 +
51642 +int
51643 +main (int argc, char *argv[])
51644 +{
51645 + char **newargz;
51646 + int i;
51647 +
51648 + program_name = (char *) xstrdup (base_name (argv[0]));
51649 + DEBUG("(main) argv[0] : %s\n",argv[0]);
51650 + DEBUG("(main) program_name : %s\n",program_name);
51651 + newargz = XMALLOC(char *, argc+2);
51652 +EOF
51653 +
51654 + cat >> $cwrappersource <<EOF
51655 + newargz[0] = (char *) xstrdup("$SHELL");
51656 +EOF
51657 +
51658 + cat >> $cwrappersource <<"EOF"
51659 + newargz[1] = find_executable(argv[0]);
51660 + if (newargz[1] == NULL)
51661 + lt_fatal("Couldn't find %s", argv[0]);
51662 + DEBUG("(main) found exe at : %s\n",newargz[1]);
51663 + /* we know the script has the same name, without the .exe */
51664 + /* so make sure newargz[1] doesn't end in .exe */
51665 + strendzap(newargz[1],".exe");
51666 + for (i = 1; i < argc; i++)
51667 + newargz[i+1] = xstrdup(argv[i]);
51668 + newargz[argc+1] = NULL;
51669 +
51670 + for (i=0; i<argc+1; i++)
51671 + {
51672 + DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
51673 + ;
51674 + }
51675 +
51676 +EOF
51677 +
51678 + case $host_os in
51679 + mingw*)
51680 + cat >> $cwrappersource <<EOF
51681 + execv("$SHELL",(char const **)newargz);
51682 +EOF
51683 + ;;
51684 + *)
51685 + cat >> $cwrappersource <<EOF
51686 + execv("$SHELL",newargz);
51687 +EOF
51688 + ;;
51689 + esac
51690 +
51691 + cat >> $cwrappersource <<"EOF"
51692 + return 127;
51693 +}
51694 +
51695 +void *
51696 +xmalloc (size_t num)
51697 +{
51698 + void * p = (void *) malloc (num);
51699 + if (!p)
51700 + lt_fatal ("Memory exhausted");
51701 +
51702 + return p;
51703 +}
51704 +
51705 +char *
51706 +xstrdup (const char *string)
51707 +{
51708 + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
51709 +;
51710 +}
51711 +
51712 +const char *
51713 +base_name (const char *name)
51714 +{
51715 + const char *base;
51716 +
51717 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51718 + /* Skip over the disk name in MSDOS pathnames. */
51719 + if (isalpha ((unsigned char)name[0]) && name[1] == ':')
51720 + name += 2;
51721 +#endif
51722 +
51723 + for (base = name; *name; name++)
51724 + if (IS_DIR_SEPARATOR (*name))
51725 + base = name + 1;
51726 + return base;
51727 +}
51728 +
51729 +int
51730 +check_executable(const char * path)
51731 +{
51732 + struct stat st;
51733 +
51734 + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
51735 + if ((!path) || (!*path))
51736 + return 0;
51737 +
51738 + if ((stat (path, &st) >= 0) &&
51739 + (
51740 + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
51741 +#if defined (S_IXOTH)
51742 + ((st.st_mode & S_IXOTH) == S_IXOTH) ||
51743 +#endif
51744 +#if defined (S_IXGRP)
51745 + ((st.st_mode & S_IXGRP) == S_IXGRP) ||
51746 +#endif
51747 + ((st.st_mode & S_IXUSR) == S_IXUSR))
51748 + )
51749 + return 1;
51750 + else
51751 + return 0;
51752 +}
51753 +
51754 +/* Searches for the full path of the wrapper. Returns
51755 + newly allocated full path name if found, NULL otherwise */
51756 +char *
51757 +find_executable (const char* wrapper)
51758 +{
51759 + int has_slash = 0;
51760 + const char* p;
51761 + const char* p_next;
51762 + /* static buffer for getcwd */
51763 + char tmp[LT_PATHMAX + 1];
51764 + int tmp_len;
51765 + char* concat_name;
51766 +
51767 + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
51768 +
51769 + if ((wrapper == NULL) || (*wrapper == '\0'))
51770 + return NULL;
51771 +
51772 + /* Absolute path? */
51773 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51774 + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
51775 + {
51776 + concat_name = xstrdup (wrapper);
51777 + if (check_executable(concat_name))
51778 + return concat_name;
51779 + XFREE(concat_name);
51780 + }
51781 + else
51782 + {
51783 +#endif
51784 + if (IS_DIR_SEPARATOR (wrapper[0]))
51785 + {
51786 + concat_name = xstrdup (wrapper);
51787 + if (check_executable(concat_name))
51788 + return concat_name;
51789 + XFREE(concat_name);
51790 + }
51791 +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
51792 + }
51793 +#endif
51794 +
51795 + for (p = wrapper; *p; p++)
51796 + if (*p == '/')
51797 + {
51798 + has_slash = 1;
51799 + break;
51800 + }
51801 + if (!has_slash)
51802 + {
51803 + /* no slashes; search PATH */
51804 + const char* path = getenv ("PATH");
51805 + if (path != NULL)
51806 + {
51807 + for (p = path; *p; p = p_next)
51808 + {
51809 + const char* q;
51810 + size_t p_len;
51811 + for (q = p; *q; q++)
51812 + if (IS_PATH_SEPARATOR(*q))
51813 + break;
51814 + p_len = q - p;
51815 + p_next = (*q == '\0' ? q : q + 1);
51816 + if (p_len == 0)
51817 + {
51818 + /* empty path: current directory */
51819 + if (getcwd (tmp, LT_PATHMAX) == NULL)
51820 + lt_fatal ("getcwd failed");
51821 + tmp_len = strlen(tmp);
51822 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51823 + memcpy (concat_name, tmp, tmp_len);
51824 + concat_name[tmp_len] = '/';
51825 + strcpy (concat_name + tmp_len + 1, wrapper);
51826 + }
51827 + else
51828 + {
51829 + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
51830 + memcpy (concat_name, p, p_len);
51831 + concat_name[p_len] = '/';
51832 + strcpy (concat_name + p_len + 1, wrapper);
51833 + }
51834 + if (check_executable(concat_name))
51835 + return concat_name;
51836 + XFREE(concat_name);
51837 + }
51838 + }
51839 + /* not found in PATH; assume curdir */
51840 + }
51841 + /* Relative path | not found in path: prepend cwd */
51842 + if (getcwd (tmp, LT_PATHMAX) == NULL)
51843 + lt_fatal ("getcwd failed");
51844 + tmp_len = strlen(tmp);
51845 + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
51846 + memcpy (concat_name, tmp, tmp_len);
51847 + concat_name[tmp_len] = '/';
51848 + strcpy (concat_name + tmp_len + 1, wrapper);
51849 +
51850 + if (check_executable(concat_name))
51851 + return concat_name;
51852 + XFREE(concat_name);
51853 + return NULL;
51854 +}
51855 +
51856 +char *
51857 +strendzap(char *str, const char *pat)
51858 +{
51859 + size_t len, patlen;
51860 +
51861 + assert(str != NULL);
51862 + assert(pat != NULL);
51863 +
51864 + len = strlen(str);
51865 + patlen = strlen(pat);
51866 +
51867 + if (patlen <= len)
51868 + {
51869 + str += len - patlen;
51870 + if (strcmp(str, pat) == 0)
51871 + *str = '\0';
51872 + }
51873 + return str;
51874 +}
51875 +
51876 +static void
51877 +lt_error_core (int exit_status, const char * mode,
51878 + const char * message, va_list ap)
51879 +{
51880 + fprintf (stderr, "%s: %s: ", program_name, mode);
51881 + vfprintf (stderr, message, ap);
51882 + fprintf (stderr, ".\n");
51883 +
51884 + if (exit_status >= 0)
51885 + exit (exit_status);
51886 +}
51887 +
51888 +void
51889 +lt_fatal (const char *message, ...)
51890 +{
51891 + va_list ap;
51892 + va_start (ap, message);
51893 + lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
51894 + va_end (ap);
51895 +}
51896 +EOF
51897 + # we should really use a build-platform specific compiler
51898 + # here, but OTOH, the wrappers (shell script and this C one)
51899 + # are only useful if you want to execute the "real" binary.
51900 + # Since the "real" binary is built for $host, then this
51901 + # wrapper might as well be built for $host, too.
51902 + $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
51903 + ;;
51904 + esac
51905 + $RM $output
51906 + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
51907 +
51908 + $ECHO > $output "\
51909 +#! $SHELL
51910 +
51911 +# $output - temporary wrapper script for $objdir/$outputname
51912 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
51913 +#
51914 +# The $output program cannot be directly executed until all the libtool
51915 +# libraries that it depends on are installed.
51916 +#
51917 +# This wrapper script should never be moved out of the build directory.
51918 +# If it is, it will not operate correctly.
51919 +
51920 +# Sed substitution that helps us do robust quoting. It backslashifies
51921 +# metacharacters that are still active within double-quoted strings.
51922 +Xsed='${SED} -e 1s/^X//'
51923 +sed_quote_subst='$sed_quote_subst'
51924 +
51925 +# Be Bourne compatible
51926 +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
51927 + emulate sh
51928 + NULLCMD=:
51929 + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
51930 + # is contrary to our usage. Disable this feature.
51931 + alias -g '\${1+\"\$@\"}'='\"\$@\"'
51932 + setopt NO_GLOB_SUBST
51933 +else
51934 + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
51935 +fi
51936 +BIN_SH=xpg4; export BIN_SH # for Tru64
51937 +DUALCASE=1; export DUALCASE # for MKS sh
51938 +
51939 +# The HP-UX ksh and POSIX shell print the target directory to stdout
51940 +# if CDPATH is set.
51941 +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
51942 +
51943 +relink_command=\"$relink_command\"
51944 +
51945 +# This environment variable determines our operation mode.
51946 +if test \"\$libtool_install_magic\" = \"$magic\"; then
51947 + # install mode needs the following variables:
51948 + generated_by_libtool_version='$macro_version'
51949 + notinst_deplibs='$notinst_deplibs'
51950 +else
51951 + # When we are sourced in execute mode, \$file and \$ECHO are already set.
51952 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
51953 + ECHO=\"$qecho\"
51954 + file=\"\$0\"
51955 + # Make sure echo works.
51956 + if test \"X\$1\" = X--no-reexec; then
51957 + # Discard the --no-reexec flag, and continue.
51958 + shift
51959 + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
51960 + # Yippee, \$ECHO works!
51961 + :
51962 + else
51963 + # Restart under the correct shell, and then maybe \$ECHO will work.
51964 + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
51965 + fi
51966 + fi\
51967 +"
51968 + $ECHO >> $output "\
51969 +
51970 + # Find the directory that this script lives in.
51971 + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
51972 + test \"x\$thisdir\" = \"x\$file\" && thisdir=.
51973 +
51974 + # Follow symbolic links until we get to the real thisdir.
51975 + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
51976 + while test -n \"\$file\"; do
51977 + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
51978 +
51979 + # If there was a directory component, then change thisdir.
51980 + if test \"x\$destdir\" != \"x\$file\"; then
51981 + case \"\$destdir\" in
51982 + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
51983 + *) thisdir=\"\$thisdir/\$destdir\" ;;
51984 + esac
51985 + fi
51986 +
51987 + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
51988 + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
51989 + done
51990 +
51991 + # Try to get the absolute directory name.
51992 + absdir=\`cd \"\$thisdir\" && pwd\`
51993 + test -n \"\$absdir\" && thisdir=\"\$absdir\"
51994 +"
51995 +
51996 + if test "$fast_install" = yes; then
51997 + $ECHO >> $output "\
51998 + program=lt-'$outputname'$exeext
51999 + progdir=\"\$thisdir/$objdir\"
52000 +
52001 + if test ! -f \"\$progdir/\$program\" ||
52002 + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
52003 + test \"X\$file\" != \"X\$progdir/\$program\"; }; then
52004 +
52005 + file=\"\$\$-\$program\"
52006 +
52007 + if test ! -d \"\$progdir\"; then
52008 + $MKDIR \"\$progdir\"
52009 + else
52010 + $RM \"\$progdir/\$file\"
52011 + fi"
52012 +
52013 + $ECHO >> $output "\
52014 +
52015 + # relink executable if necessary
52016 + if test -n \"\$relink_command\"; then
52017 + if relink_command_output=\`eval \$relink_command 2>&1\`; then :
52018 + else
52019 + $ECHO \"\$relink_command_output\" >&2
52020 + $RM \"\$progdir/\$file\"
52021 + exit 1
52022 + fi
52023 + fi
52024 +
52025 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
52026 + { $RM \"\$progdir/\$program\";
52027 + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
52028 + $RM \"\$progdir/\$file\"
52029 + fi"
52030 + else
52031 + $ECHO >> $output "\
52032 + program='$outputname'
52033 + progdir=\"\$thisdir/$objdir\"
52034 +"
52035 + fi
52036 +
52037 + $ECHO >> $output "\
52038 +
52039 + if test -f \"\$progdir/\$program\"; then"
52040 +
52041 + # Export our shlibpath_var if we have one.
52042 + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
52043 + $ECHO >> $output "\
52044 + # Add our own library path to $shlibpath_var
52045 + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
52046 +
52047 + # Some systems cannot cope with colon-terminated $shlibpath_var
52048 + # The second colon is a workaround for a bug in BeOS R4 sed
52049 + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
52050 +
52051 + export $shlibpath_var
52052 +"
52053 + fi
52054 +
52055 + # fixup the dll searchpath if we need to.
52056 + if test -n "$dllsearchpath"; then
52057 + $ECHO >> $output "\
52058 + # Add the dll search path components to the executable PATH
52059 + PATH=$dllsearchpath:\$PATH
52060 +"
52061 + fi
52062 +
52063 + $ECHO >> $output "\
52064 + if test \"\$libtool_execute_magic\" != \"$magic\"; then
52065 + # Run the actual program with our arguments.
52066 +"
52067 + case $host in
52068 + # Backslashes separate directories on plain windows
52069 + *-*-mingw | *-*-os2*)
52070 + $ECHO >> $output "\
52071 + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
52072 +"
52073 + ;;
52074 +
52075 + *)
52076 + $ECHO >> $output "\
52077 + exec \"\$progdir/\$program\" \${1+\"\$@\"}
52078 +"
52079 + ;;
52080 + esac
52081 + $ECHO >> $output "\
52082 + \$ECHO \"\$0: cannot exec \$program \$*\"
52083 + exit 1
52084 + fi
52085 + else
52086 + # The program doesn't exist.
52087 + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
52088 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
52089 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
52090 + exit 1
52091 + fi
52092 +fi\
52093 +"
52094 + chmod +x $output
52095 + }
52096 + exit $EXIT_SUCCESS
52097 + ;;
52098 + esac
52099 +
52100 + # See if we need to build an old-fashioned archive.
52101 + for oldlib in $oldlibs; do
52102 +
52103 + if test "$build_libtool_libs" = convenience; then
52104 + oldobjs="$libobjs_save $symfileobj"
52105 + addlibs="$convenience"
52106 + build_libtool_libs=no
52107 + else
52108 + if test "$build_libtool_libs" = module; then
52109 + oldobjs="$libobjs_save"
52110 + build_libtool_libs=no
52111 + else
52112 + oldobjs="$old_deplibs $non_pic_objects"
52113 + if test "$preload" = yes && test -f "$symfileobj"; then
52114 + oldobjs="$oldobjs $symfileobj"
52115 + fi
52116 + fi
52117 + addlibs="$old_convenience"
52118 + fi
52119 +
52120 + if test -n "$addlibs"; then
52121 + gentop="$output_objdir/${outputname}x"
52122 + generated="$generated $gentop"
52123 +
52124 + func_extract_archives $gentop $addlibs
52125 + oldobjs="$oldobjs $func_extract_archives_result"
52126 + fi
52127 +
52128 + # Do each command in the archive commands.
52129 + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
52130 + cmds=$old_archive_from_new_cmds
52131 + else
52132 +
52133 + # Add any objects from preloaded convenience libraries
52134 + if test -n "$dlprefiles"; then
52135 + gentop="$output_objdir/${outputname}x"
52136 + generated="$generated $gentop"
52137 +
52138 + func_extract_archives $gentop $dlprefiles
52139 + oldobjs="$oldobjs $func_extract_archives_result"
52140 + fi
52141 +
52142 + # POSIX demands no paths to be encoded in archives. We have
52143 + # to avoid creating archives with duplicate basenames if we
52144 + # might have to extract them afterwards, e.g., when creating a
52145 + # static archive out of a convenience library, or when linking
52146 + # the entirety of a libtool archive into another (currently
52147 + # not supported by libtool).
52148 + if (for obj in $oldobjs
52149 + do
52150 + func_basename "$obj"
52151 + $ECHO "$func_basename_result"
52152 + done | sort | sort -uc >/dev/null 2>&1); then
52153 + :
52154 + else
52155 + $ECHO "copying selected object files to avoid basename conflicts..."
52156 + gentop="$output_objdir/${outputname}x"
52157 + generated="$generated $gentop"
52158 + func_mkdir_p "$gentop"
52159 + save_oldobjs=$oldobjs
52160 + oldobjs=
52161 + counter=1
52162 + for obj in $save_oldobjs
52163 + do
52164 + func_basename "$obj"
52165 + objbase="$func_basename_result"
52166 + case " $oldobjs " in
52167 + " ") oldobjs=$obj ;;
52168 + *[\ /]"$objbase "*)
52169 + while :; do
52170 + # Make sure we don't pick an alternate name that also
52171 + # overlaps.
52172 + newobj=lt$counter-$objbase
52173 + counter=`expr $counter + 1`
52174 + case " $oldobjs " in
52175 + *[\ /]"$newobj "*) ;;
52176 + *) if test ! -f "$gentop/$newobj"; then break; fi ;;
52177 + esac
52178 + done
52179 + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
52180 + oldobjs="$oldobjs $gentop/$newobj"
52181 + ;;
52182 + *) oldobjs="$oldobjs $obj" ;;
52183 + esac
52184 + done
52185 + fi
52186 + eval cmds=\"$old_archive_cmds\"
52187 +
52188 + if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
52189 + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
52190 + cmds=$old_archive_cmds
52191 + else
52192 + # the command line is too long to link in one step, link in parts
52193 + func_echo "using piecewise archive linking..."
52194 + save_RANLIB=$RANLIB
52195 + RANLIB=:
52196 + objlist=
52197 + concat_cmds=
52198 + save_oldobjs=$oldobjs
52199 + # Is there a better way of finding the last object in the list?
52200 + for obj in $save_oldobjs
52201 + do
52202 + last_oldobj=$obj
52203 + done
52204 + for obj in $save_oldobjs
52205 + do
52206 + oldobjs="$objlist $obj"
52207 + objlist="$objlist $obj"
52208 + eval test_cmds=\"$old_archive_cmds\"
52209 + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
52210 + test "$len" -le "$max_cmd_len"; then
52211 + :
52212 + else
52213 + # the above command should be used before it gets too long
52214 + oldobjs=$objlist
52215 + if test "$obj" = "$last_oldobj" ; then
52216 + RANLIB=$save_RANLIB
52217 + fi
52218 + test -z "$concat_cmds" || concat_cmds=$concat_cmds~
52219 + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
52220 + objlist=
52221 + fi
52222 + done
52223 + RANLIB=$save_RANLIB
52224 + oldobjs=$objlist
52225 + if test "X$oldobjs" = "X" ; then
52226 + eval cmds=\"\$concat_cmds\"
52227 + else
52228 + eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
52229 + fi
52230 + fi
52231 + fi
52232 + func_execute_cmds "$cmds" 'exit $?'
52233 + done
52234 +
52235 + test -n "$generated" && \
52236 + func_show_eval "${RM}r$generated"
52237 +
52238 + # Now create the libtool archive.
52239 + case $output in
52240 + *.la)
52241 + old_library=
52242 + test "$build_old_libs" = yes && old_library="$libname.$libext"
52243 + func_echo "creating $output"
52244 +
52245 + # Preserve any variables that may affect compiler behavior
52246 + for var in $variables_saved_for_relink; do
52247 + if eval test -z \"\${$var+set}\"; then
52248 + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
52249 + elif eval var_value=\$$var; test -z "$var_value"; then
52250 + relink_command="$var=; export $var; $relink_command"
52251 + else
52252 + func_quote_for_eval "$var_value"
52253 + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
52254 + fi
52255 + done
52256 + # Quote the link command for shipping.
52257 + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
52258 + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
52259 + if test "$hardcode_automatic" = yes ; then
52260 + relink_command=
52261 + fi
52262 +
52263 + # Only create the output if not a dry run.
52264 + $opt_dry_run || {
52265 + for installed in no yes; do
52266 + if test "$installed" = yes; then
52267 + if test -z "$install_libdir"; then
52268 + break
52269 + fi
52270 + output="$output_objdir/$outputname"i
52271 + # Replace all uninstalled libtool libraries with the installed ones
52272 + newdependency_libs=
52273 + for deplib in $dependency_libs; do
52274 + case $deplib in
52275 + *.la)
52276 + func_basename "$deplib"
52277 + name="$func_basename_result"
52278 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
52279 + test -z "$libdir" && \
52280 + func_fatal_error "\`$deplib' is not a valid libtool archive"
52281 + newdependency_libs="$newdependency_libs $libdir/$name"
52282 + ;;
52283 + *) newdependency_libs="$newdependency_libs $deplib" ;;
52284 + esac
52285 + done
52286 + dependency_libs="$newdependency_libs"
52287 + newdlfiles=
52288 +
52289 + for lib in $dlfiles; do
52290 + case $lib in
52291 + *.la)
52292 + func_basename "$lib"
52293 + name="$func_basename_result"
52294 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
52295 + test -z "$libdir" && \
52296 + func_fatal_error "\`$lib' is not a valid libtool archive"
52297 + newdlfiles="$newdlfiles $libdir/$name"
52298 + ;;
52299 + *) newdlfiles="$newdlfiles $lib" ;;
52300 + esac
52301 + done
52302 + dlfiles="$newdlfiles"
52303 + newdlprefiles=
52304 + for lib in $dlprefiles; do
52305 + case $lib in
52306 + *.la)
52307 + # Only pass preopened files to the pseudo-archive (for
52308 + # eventual linking with the app. that links it) if we
52309 + # didn't already link the preopened objects directly into
52310 + # the library:
52311 + func_basename "$lib"
52312 + name="$func_basename_result"
52313 + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
52314 + test -z "$libdir" && \
52315 + func_fatal_error "\`$lib' is not a valid libtool archive"
52316 + newdlprefiles="$newdlprefiles $libdir/$name"
52317 + ;;
52318 + esac
52319 + done
52320 + dlprefiles="$newdlprefiles"
52321 + else
52322 + newdlfiles=
52323 + for lib in $dlfiles; do
52324 + case $lib in
52325 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
52326 + *) abs=`pwd`"/$lib" ;;
52327 + esac
52328 + newdlfiles="$newdlfiles $abs"
52329 + done
52330 + dlfiles="$newdlfiles"
52331 + newdlprefiles=
52332 + for lib in $dlprefiles; do
52333 + case $lib in
52334 + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
52335 + *) abs=`pwd`"/$lib" ;;
52336 + esac
52337 + newdlprefiles="$newdlprefiles $abs"
52338 + done
52339 + dlprefiles="$newdlprefiles"
52340 + fi
52341 + $RM $output
52342 + # place dlname in correct position for cygwin
52343 + tdlname=$dlname
52344 + case $host,$output,$installed,$module,$dlname in
52345 + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
52346 + esac
52347 + $ECHO > $output "\
52348 +# $outputname - a libtool library file
52349 +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
52350 +#
52351 +# Please DO NOT delete this file!
52352 +# It is necessary for linking the library.
52353 +
52354 +# The name that we can dlopen(3).
52355 +dlname='$tdlname'
52356 +
52357 +# Names of this library.
52358 +library_names='$library_names'
52359 +
52360 +# The name of the static archive.
52361 +old_library='$old_library'
52362 +
52363 +# Linker flags that can not go in dependency_libs.
52364 +inherited_linker_flags='$new_inherited_linker_flags'
52365 +
52366 +# Libraries that this one depends upon.
52367 +dependency_libs='$dependency_libs'
52368 +
52369 +# Names of additional weak libraries provided by this library
52370 +weak_library_names='$weak_libs'
52371 +
52372 +# Version information for $libname.
52373 +current=$current
52374 +age=$age
52375 +revision=$revision
52376 +
52377 +# Is this an already installed library?
52378 +installed=$installed
52379 +
52380 +# Should we warn about portability when linking against -modules?
52381 +shouldnotlink=$module
52382 +
52383 +# Files to dlopen/dlpreopen
52384 +dlopen='$dlfiles'
52385 +dlpreopen='$dlprefiles'
52386 +
52387 +# Directory that this library needs to be installed in:
52388 +libdir='$install_libdir'"
52389 + if test "$installed" = no && test "$need_relink" = yes; then
52390 + $ECHO >> $output "\
52391 +relink_command=\"$relink_command\""
52392 + fi
52393 + done
52394 + }
52395 +
52396 + # Do a symbolic link so that the libtool archive can be found in
52397 + # LD_LIBRARY_PATH before the program is installed.
52398 + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
52399 + ;;
52400 + esac
52401 + exit $EXIT_SUCCESS
52402 +}
52403 +
52404 +{ test "$mode" = link || test "$mode" = relink; } &&
52405 + func_mode_link ${1+"$@"}
52406 +
52407 +
52408 +# func_mode_uninstall arg...
52409 +func_mode_uninstall ()
52410 +{
52411 + $opt_debug
52412 + RM="$nonopt"
52413 + files=
52414 + rmforce=
52415 + exit_status=0
52416 +
52417 + # This variable tells wrapper scripts just to set variables rather
52418 + # than running their programs.
52419 + libtool_install_magic="$magic"
52420 +
52421 + for arg
52422 + do
52423 + case $arg in
52424 + -f) RM="$RM $arg"; rmforce=yes ;;
52425 + -*) RM="$RM $arg" ;;
52426 + *) files="$files $arg" ;;
52427 + esac
52428 + done
52429 +
52430 + test -z "$RM" && \
52431 + func_fatal_help "you must specify an RM program"
52432 +
52433 + rmdirs=
52434 +
52435 + origobjdir="$objdir"
52436 + for file in $files; do
52437 + func_dirname "$file" "" "."
52438 + dir="$func_dirname_result"
52439 + if test "X$dir" = X.; then
52440 + objdir="$origobjdir"
52441 + else
52442 + objdir="$dir/$origobjdir"
52443 + fi
52444 + func_basename "$file"
52445 + name="$func_basename_result"
52446 + test "$mode" = uninstall && objdir="$dir"
52447 +
52448 + # Remember objdir for removal later, being careful to avoid duplicates
52449 + if test "$mode" = clean; then
52450 + case " $rmdirs " in
52451 + *" $objdir "*) ;;
52452 + *) rmdirs="$rmdirs $objdir" ;;
52453 + esac
52454 + fi
52455 +
52456 + # Don't error if the file doesn't exist and rm -f was used.
52457 + if { test -L "$file"; } >/dev/null 2>&1 ||
52458 + { test -h "$file"; } >/dev/null 2>&1 ||
52459 + test -f "$file"; then
52460 + :
52461 + elif test -d "$file"; then
52462 + exit_status=1
52463 + continue
52464 + elif test "$rmforce" = yes; then
52465 + continue
52466 + fi
52467 +
52468 + rmfiles="$file"
52469 +
52470 + case $name in
52471 + *.la)
52472 + # Possibly a libtool archive, so verify it.
52473 + if func_lalib_p "$file"; then
52474 + func_source $dir/$name
52475 +
52476 + # Delete the libtool libraries and symlinks.
52477 + for n in $library_names; do
52478 + rmfiles="$rmfiles $objdir/$n"
52479 + done
52480 + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
52481 +
52482 + case "$mode" in
52483 + clean)
52484 + case " $library_names " in
52485 + # " " in the beginning catches empty $dlname
52486 + *" $dlname "*) ;;
52487 + *) rmfiles="$rmfiles $objdir/$dlname" ;;
52488 + esac
52489 + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
52490 + ;;
52491 + uninstall)
52492 + if test -n "$library_names"; then
52493 + # Do each command in the postuninstall commands.
52494 + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52495 + fi
52496 +
52497 + if test -n "$old_library"; then
52498 + # Do each command in the old_postuninstall commands.
52499 + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
52500 + fi
52501 + # FIXME: should reinstall the best remaining shared library.
52502 + ;;
52503 + esac
52504 + fi
52505 + ;;
52506 +
52507 + *.lo)
52508 + # Possibly a libtool object, so verify it.
52509 + if func_lalib_p "$file"; then
52510 +
52511 + # Read the .lo file
52512 + func_source $dir/$name
52513 +
52514 + # Add PIC object to the list of files to remove.
52515 + if test -n "$pic_object" &&
52516 + test "$pic_object" != none; then
52517 + rmfiles="$rmfiles $dir/$pic_object"
52518 + fi
52519 +
52520 + # Add non-PIC object to the list of files to remove.
52521 + if test -n "$non_pic_object" &&
52522 + test "$non_pic_object" != none; then
52523 + rmfiles="$rmfiles $dir/$non_pic_object"
52524 + fi
52525 + fi
52526 + ;;
52527 +
52528 + *)
52529 + if test "$mode" = clean ; then
52530 + noexename=$name
52531 + case $file in
52532 + *.exe)
52533 + func_stripname '' '.exe' "$file"
52534 + file=$func_stripname_result
52535 + func_stripname '' '.exe' "$name"
52536 + noexename=$func_stripname_result
52537 + # $file with .exe has already been added to rmfiles,
52538 + # add $file without .exe
52539 + rmfiles="$rmfiles $file"
52540 + ;;
52541 + esac
52542 + # Do a test to see if this is a libtool program.
52543 + if func_ltwrapper_p "$file"; then
52544 + relink_command=
52545 + func_source $dir/$noexename
52546 +
52547 + # note $name still contains .exe if it was in $file originally
52548 + # as does the version of $file that was added into $rmfiles
52549 + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
52550 + if test "$fast_install" = yes && test -n "$relink_command"; then
52551 + rmfiles="$rmfiles $objdir/lt-$name"
52552 + fi
52553 + if test "X$noexename" != "X$name" ; then
52554 + rmfiles="$rmfiles $objdir/lt-${noexename}.c"
52555 + fi
52556 + fi
52557 + fi
52558 + ;;
52559 + esac
52560 + func_show_eval "$RM $rmfiles" 'exit_status=1'
52561 + done
52562 + objdir="$origobjdir"
52563 +
52564 + # Try to remove the ${objdir}s in the directories where we deleted files
52565 + for dir in $rmdirs; do
52566 + if test -d "$dir"; then
52567 + func_show_eval "rmdir $dir >/dev/null 2>&1"
52568 + fi
52569 + done
52570 +
52571 + exit $exit_status
52572 +}
52573 +
52574 +{ test "$mode" = uninstall || test "$mode" = clean; } &&
52575 + func_mode_uninstall ${1+"$@"}
52576 +
52577 +test -z "$mode" && {
52578 + help="$generic_help"
52579 + func_fatal_help "you must specify a MODE"
52580 +}
52581 +
52582 +test -z "$exec_cmd" && \
52583 + func_fatal_help "invalid operation mode \`$mode'"
52584 +
52585 +if test -n "$exec_cmd"; then
52586 + eval exec "$exec_cmd"
52587 + exit $EXIT_FAILURE
52588 +fi
52589 +
52590 +exit $exit_status
52591 +
52592 +
52593 +# The TAGs below are defined such that we never get into a situation
52594 +# in which we disable both kinds of libraries. Given conflicting
52595 +# choices, we go for a static library, that is the most portable,
52596 +# since we can't tell whether shared libraries were disabled because
52597 +# the user asked for that or because the platform doesn't support
52598 +# them. This is particularly important on AIX, because we don't
52599 +# support having both static and shared libraries enabled at the same
52600 +# time on that platform, so we default to a shared-only configuration.
52601 +# If a disable-shared tag is given, we'll fallback to a static-only
52602 +# configuration. But we'll never go from static-only to shared-only.
52603 +
52604 +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
52605 +build_libtool_libs=no
52606 +build_old_libs=yes
52607 +# ### END LIBTOOL TAG CONFIG: disable-shared
52608 +
52609 +# ### BEGIN LIBTOOL TAG CONFIG: disable-static
52610 +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
52611 +# ### END LIBTOOL TAG CONFIG: disable-static
52612 +
52613 +# Local Variables:
52614 +# mode:shell-script
52615 +# sh-indentation:2
52616 +# End:
52617 +# vi:sw=2
52618 --- a/bfd/Makefile.in
52619 +++ b/bfd/Makefile.in
52620 @@ -312,6 +312,7 @@ ALL_MACHINES = \
52621 cpu-arc.lo \
52622 cpu-arm.lo \
52623 cpu-avr.lo \
52624 + cpu-avr32.lo \
52625 cpu-bfin.lo \
52626 cpu-cr16.lo \
52627 cpu-cr16c.lo \
52628 @@ -493,6 +494,7 @@ BFD32_BACKENDS = \
52629 elf32-arc.lo \
52630 elf32-arm.lo \
52631 elf32-avr.lo \
52632 + elf32-avr32.lo \
52633 elf32-bfin.lo \
52634 elf32-cr16.lo \
52635 elf32-cr16c.lo \
52636 @@ -1908,6 +1910,10 @@ elf32-cr16.lo: elf32-cr16.c $(INCDIR)/fi
52637 $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h elf-bfd.h \
52638 $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52639 $(INCDIR)/elf/cr16.h $(INCDIR)/elf/reloc-macros.h elf32-target.h
52640 +elf32-avr32.lo: elf32-avr32.c $(INCDIR)/filenames.h elf-bfd.h \
52641 + $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
52642 + $(INCDIR)/bfdlink.h $(INCDIR)/elf/avr32.h $(INCDIR)/elf/reloc-macros.h \
52643 + elf32-target.h
52644 elf32-cr16c.lo: elf32-cr16c.c $(INCDIR)/filenames.h \
52645 $(INCDIR)/hashtab.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/cr16c.h \
52646 $(INCDIR)/elf/reloc-macros.h elf-bfd.h $(INCDIR)/elf/common.h \
52647 --- /dev/null
52648 +++ b/bfd/po/Makefile.in
52649 @@ -0,0 +1,297 @@
52650 +# Makefile for program source directory in GNU NLS utilities package.
52651 +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
52652 +# Copyright 2001, 2003, 2006 Free Software Foundation, Inc.
52653 +#
52654 +# This file may be copied and used freely without restrictions. It can
52655 +# be used in projects which are not available under the GNU Public License
52656 +# but which still want to provide support for the GNU gettext functionality.
52657 +# Please note that the actual code is *not* freely available.
52658 +
52659 +PACKAGE = bfd
52660 +VERSION = 2.18
52661 +
52662 +SHELL = /bin/sh
52663 +
52664 +
52665 +srcdir = .
52666 +top_srcdir = ..
52667 +
52668 +top_builddir = ..
52669 +
52670 +prefix = /usr
52671 +exec_prefix = ${prefix}
52672 +datadir = $(prefix)/share
52673 +localedir = $(datadir)/locale
52674 +gnulocaledir = $(prefix)/share/locale
52675 +gettextsrcdir = $(prefix)/share/gettext/po
52676 +subdir = po
52677 +
52678 +DESTDIR =
52679 +
52680 +INSTALL = /usr/bin/install -c
52681 +INSTALL_DATA = ${INSTALL} -m 644
52682 +MKINSTALLDIRS = $(top_builddir)/./../mkinstalldirs
52683 +
52684 +CC = gcc
52685 +GENCAT = gencat
52686 +GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt
52687 +MSGFMT = /usr/bin/msgfmt
52688 +XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext
52689 +MSGMERGE = PATH=../src:$$PATH msgmerge
52690 +
52691 +DEFS = -DHAVE_CONFIG_H
52692 +CFLAGS = -g -O2
52693 +CPPFLAGS =
52694 +
52695 +INCLUDES = -I.. -I$(top_srcdir)/intl
52696 +
52697 +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
52698 +
52699 +SOURCES = cat-id-tbl.c
52700 +POFILES = @POFILES@
52701 +GMOFILES = @GMOFILES@
52702 +DISTFILES = ChangeLog Makefile.in.in SRC-POTFILES.in BLD-POTFILES.in $(PACKAGE).pot \
52703 +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
52704 +
52705 +# Note - the following line gets processed by bfd/configure and amended
52706 +# to contain the full list of source dir POTFILES.
52707 +SRC-POTFILES = \
52708 +
52709 +# Note - the following line gets processed by bfd/configure and amended
52710 +# to contain the full list of build dir POTFILES.
52711 +BLD-POTFILES = \
52712 +
52713 +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
52714 +CATOBJEXT = .gmo
52715 +INSTOBJEXT = .mo
52716 +
52717 +.SUFFIXES:
52718 +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
52719 +
52720 +.c.o:
52721 + $(COMPILE) $<
52722 +
52723 +.po.pox:
52724 + $(MAKE) $(PACKAGE).pot
52725 + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
52726 +
52727 +.po.mo:
52728 + $(MSGFMT) -o $@ $<
52729 +
52730 +.po.gmo:
52731 + file=`echo $* | sed 's,.*/,,'`.gmo \
52732 + && rm -f $$file && $(GMSGFMT) -o $$file $<
52733 +
52734 +.po.cat:
52735 + sed -f ../intl/po2msg.sed < $< > $*.msg \
52736 + && rm -f $@ && $(GENCAT) $@ $*.msg
52737 +
52738 +
52739 +all: all-yes
52740 +
52741 +all-yes: $(CATALOGS) # $(PACKAGE).pot
52742 +all-no:
52743 +
52744 +$(srcdir)/$(PACKAGE).pot: $(SRC-POTFILES) $(BLD-POTFILES)
52745 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52746 + --directory=$(top_srcdir) \
52747 + --add-comments --keyword=_ --keyword=N_ \
52748 + --msgid-bugs-address=bug-binutils@gnu.org \
52749 + --files-from=$(srcdir)/SRC-POTFILES.in
52750 + $(XGETTEXT) --default-domain=$(PACKAGE) \
52751 + --directory=.. \
52752 + --directory=. \
52753 + --add-comments --keyword=_ --keyword=N_ \
52754 + --join-existing \
52755 + --msgid-bugs-address=bug-binutils@gnu.org \
52756 + --files-from=$(srcdir)/BLD-POTFILES.in
52757 + rm -f $(srcdir)/$(PACKAGE).pot
52758 + mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
52759 +
52760 +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
52761 +$(srcdir)/stamp-cat-id: $(PACKAGE).pot
52762 + rm -f cat-id-tbl.tmp
52763 + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
52764 + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
52765 + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
52766 + rm cat-id-tbl.tmp; \
52767 + else \
52768 + echo cat-id-tbl.c changed; \
52769 + rm -f $(srcdir)/cat-id-tbl.c; \
52770 + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
52771 + fi
52772 + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
52773 +
52774 +
52775 +install: install-exec install-data
52776 +install-exec:
52777 +install-info:
52778 +install-html:
52779 +install-data: install-data-yes
52780 +install-data-no: all
52781 +install-data-yes: all
52782 + if test -r $(MKINSTALLDIRS); then \
52783 + $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
52784 + else \
52785 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
52786 + fi
52787 + @catalogs='$(CATALOGS)'; \
52788 + for cat in $$catalogs; do \
52789 + cat=`basename $$cat`; \
52790 + case "$$cat" in \
52791 + *.gmo) destdir=$(gnulocaledir);; \
52792 + *) destdir=$(localedir);; \
52793 + esac; \
52794 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52795 + dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
52796 + if test -r $(MKINSTALLDIRS); then \
52797 + $(MKINSTALLDIRS) $$dir; \
52798 + else \
52799 + $(top_srcdir)/mkinstalldirs $$dir; \
52800 + fi; \
52801 + if test -r $$cat; then \
52802 + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
52803 + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
52804 + else \
52805 + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
52806 + echo "installing $(srcdir)/$$cat as" \
52807 + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
52808 + fi; \
52809 + if test -r $$cat.m; then \
52810 + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
52811 + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
52812 + else \
52813 + if test -r $(srcdir)/$$cat.m ; then \
52814 + $(INSTALL_DATA) $(srcdir)/$$cat.m \
52815 + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
52816 + echo "installing $(srcdir)/$$cat as" \
52817 + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
52818 + else \
52819 + true; \
52820 + fi; \
52821 + fi; \
52822 + done
52823 + if test "$(PACKAGE)" = "gettext"; then \
52824 + if test -r $(MKINSTALLDIRS); then \
52825 + $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
52826 + else \
52827 + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
52828 + fi; \
52829 + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
52830 + $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
52831 + else \
52832 + : ; \
52833 + fi
52834 +
52835 +# Define this as empty until I found a useful application.
52836 +installcheck:
52837 +
52838 +uninstall:
52839 + catalogs='$(CATALOGS)'; \
52840 + for cat in $$catalogs; do \
52841 + cat=`basename $$cat`; \
52842 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52843 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
52844 + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
52845 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
52846 + rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
52847 + done
52848 + rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
52849 +
52850 +check: all
52851 +
52852 +cat-id-tbl.o: ../intl/libgettext.h
52853 +
52854 +html dvi pdf ps info tags TAGS ID:
52855 +
52856 +mostlyclean:
52857 + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
52858 + rm -fr *.o
52859 +
52860 +clean: mostlyclean
52861 +
52862 +distclean: clean
52863 + rm -f Makefile Makefile.in *.mo *.msg *.cat *.cat.m
52864 + rm -f SRC-POTFILES BLD-POTFILES
52865 +
52866 +maintainer-clean: distclean
52867 + @echo "This command is intended for maintainers to use;"
52868 + @echo "it deletes files that may require special tools to rebuild."
52869 + rm -f $(GMOFILES) SRC-POTFILES.in BLD-POTFILES.in
52870 +
52871 +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
52872 +dist distdir: update-po $(DISTFILES)
52873 + dists="$(DISTFILES)"; \
52874 + for file in $$dists; do \
52875 + ln $(srcdir)/$$file $(distdir) 2> /dev/null \
52876 + || cp -p $(srcdir)/$$file $(distdir); \
52877 + done
52878 +
52879 +update-po: Makefile
52880 + $(MAKE) $(PACKAGE).pot
52881 + PATH=`pwd`/../src:$$PATH; \
52882 + cd $(srcdir); \
52883 + catalogs='$(CATALOGS)'; \
52884 + for cat in $$catalogs; do \
52885 + cat=`basename $$cat`; \
52886 + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
52887 + mv $$lang.po $$lang.old.po; \
52888 + echo "$$lang:"; \
52889 + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
52890 + rm -f $$lang.old.po; \
52891 + else \
52892 + echo "msgmerge for $$cat failed!"; \
52893 + rm -f $$lang.po; \
52894 + mv $$lang.old.po $$lang.po; \
52895 + fi; \
52896 + done
52897 +
52898 +SRC-POTFILES: SRC-POTFILES.in
52899 + ( if test 'x$(srcdir)' != 'x.'; then \
52900 + posrcprefix='$(top_srcdir)/'; \
52901 + else \
52902 + posrcprefix="../"; \
52903 + fi; \
52904 + rm -f $@-t $@ \
52905 + && (sed -e '/^#/d' \
52906 + -e '/^[ ]*$$/d' \
52907 + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
52908 + | sed -e '$$s/\\$$//') > $@-t \
52909 + && chmod a-w $@-t \
52910 + && mv $@-t $@ )
52911 +
52912 +BLD-POTFILES: BLD-POTFILES.in
52913 + ( rm -f $@-t $@ \
52914 + && (sed -e '/^#/d' \
52915 + -e '/^[ ]*$$/d' \
52916 + -e "s@.*@ ../& \\\\@" < $(srcdir)/$@.in \
52917 + | sed -e '$$s/\\$$//') > $@-t \
52918 + && chmod a-w $@-t \
52919 + && mv $@-t $@ )
52920 +
52921 +SRC-POTFILES.in: # ../Makefile
52922 + cd .. && $(MAKE) po/SRC-POTFILES.in
52923 +
52924 +BLD-POTFILES.in: # ../Makefile
52925 + cd .. && $(MAKE) po/BLD-POTFILES.in
52926 +
52927 +# Note - The presence of SRC-POTFILES and BLD-POTFILES as dependencies
52928 +# here breaks the implementation of the 'distclean' rule for maintainers.
52929 +# This is because if 'make distclean' is run in the BFD directory, the
52930 +# Makefile there will be deleted before 'distclean' is made here, and so
52931 +# the dependency SRC-POTFILES -> SRC-POTFILES.in -> ../Makefile cannot
52932 +# be satisfied.
52933 +#
52934 +# The SRC-POTFILES and BLD-POTFILES dependencies cannot be removed,
52935 +# however since it is necessary that these files be built during
52936 +# *configure* time, so that configure can insert them into the
52937 +# po/Makefile that it is creating, so that the Makefile will have
52938 +# the correct dependencies.
52939 +Makefile: Make-in ../config.status SRC-POTFILES BLD-POTFILES
52940 + cd .. \
52941 + && CONFIG_FILES=$(subdir)/Makefile.in:$(subdir)/Make-in \
52942 + CONFIG_HEADERS= $(SHELL) ./config.status
52943 +
52944 +# Tell versions [3.59,3.63) of GNU make not to export all variables.
52945 +# Otherwise a system limit (for SysV at least) may be exceeded.
52946 +.NOEXPORT:
52947 --- a/binutils/Makefile.in
52948 +++ b/binutils/Makefile.in
52949 @@ -1327,7 +1327,7 @@ readelf.o: readelf.c sysdep.h $(INCDIR)/
52950 $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bucomm.h dwarf.h \
52951 $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h $(INCDIR)/elf/internal.h \
52952 $(INCDIR)/elf/h8.h $(INCDIR)/elf/reloc-macros.h $(INCDIR)/elf/alpha.h \
52953 - $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h \
52954 + $(INCDIR)/elf/arc.h $(INCDIR)/elf/arm.h $(INCDIR)/elf/avr.h $(INCDIR)/elf/avr32.h\
52955 $(INCDIR)/elf/bfin.h $(INCDIR)/elf/cris.h $(INCDIR)/elf/crx.h \
52956 $(INCDIR)/elf/d10v.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/dlx.h \
52957 $(INCDIR)/elf/fr30.h $(INCDIR)/elf/frv.h $(INCDIR)/elf/hppa.h \
52958 --- a/ld/Makefile.in
52959 +++ b/ld/Makefile.in
52960 @@ -384,7 +384,34 @@ ALL_EMULATIONS = \
52961 eavr3.o \
52962 eavr4.o \
52963 eavr5.o \
52964 - eavr6.o \
52965 + eavr6.o \
52966 + eavr32elf_ap7000.o \
52967 + eavr32elf_ap7001.o \
52968 + eavr32elf_ap7002.o \
52969 + eavr32elf_ap7200.o \
52970 + eavr32elf_uc3a0128.o \
52971 + eavr32elf_uc3a0256.o \
52972 + eavr32elf_uc3a0512.o \
52973 + eavr32elf_uc3a0512es.o \
52974 + eavr32elf_uc3a1128.o \
52975 + eavr32elf_uc3a1256.o \
52976 + eavr32elf_uc3a1512es.o \
52977 + eavr32elf_uc3a1512.o \
52978 + eavr32elf_uc3a364.o \
52979 + eavr32elf_uc3a364s.o \
52980 + eavr32elf_uc3a3128.o \
52981 + eavr32elf_uc3a3128s.o \
52982 + eavr32elf_uc3a3256.o \
52983 + eavr32elf_uc3a3256s.o \
52984 + eavr32elf_uc3b064.o \
52985 + eavr32elf_uc3b0128.o \
52986 + eavr32elf_uc3b0256es.o \
52987 + eavr32elf_uc3b0256.o \
52988 + eavr32elf_uc3b164.o \
52989 + eavr32elf_uc3b1128.o \
52990 + eavr32elf_uc3b1256es.o \
52991 + eavr32elf_uc3b1256.o \
52992 + eavr32linux.o \
52993 ecoff_i860.o \
52994 ecoff_sparc.o \
52995 eelf32_spu.o \
52996 @@ -1448,6 +1475,114 @@ eavr6.c: $(srcdir)/emulparams/avr6.sh $(
52997 $(ELF_DEPS) $(srcdir)/scripttempl/avr.sc \
52998 ${GEN_DEPENDS}
52999 ${GENSCRIPTS} avr6 "$(tdir_avr2)"
53000 +eavr32elf_ap7000.c: $(srcdir)/emulparams/avr32elf.sh \
53001 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53002 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53003 + ${GENSCRIPTS} avr32elf_ap7000 "$(tdir_avr32)" avr32elf
53004 +eavr32elf_ap7001.c: $(srcdir)/emulparams/avr32elf.sh \
53005 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53006 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53007 + ${GENSCRIPTS} avr32elf_ap7001 "$(tdir_avr32)" avr32elf
53008 +eavr32elf_ap7002.c: $(srcdir)/emulparams/avr32elf.sh \
53009 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53010 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53011 + ${GENSCRIPTS} avr32elf_ap7002 "$(tdir_avr32)" avr32elf
53012 +eavr32elf_ap7200.c: $(srcdir)/emulparams/avr32elf.sh \
53013 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53014 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53015 + ${GENSCRIPTS} avr32elf_ap7200 "$(tdir_avr32)" avr32elf
53016 +eavr32elf_uc3a0128.c: $(srcdir)/emulparams/avr32elf.sh \
53017 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53018 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53019 + ${GENSCRIPTS} avr32elf_uc3a0128 "$(tdir_avr32)" avr32elf
53020 +eavr32elf_uc3a0256.c: $(srcdir)/emulparams/avr32elf.sh \
53021 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53022 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53023 + ${GENSCRIPTS} avr32elf_uc3a0256 "$(tdir_avr32)" avr32elf
53024 +eavr32elf_uc3a0512.c: $(srcdir)/emulparams/avr32elf.sh \
53025 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53026 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53027 + ${GENSCRIPTS} avr32elf_uc3a0512 "$(tdir_avr32)" avr32elf
53028 +eavr32elf_uc3a0512es.c: $(srcdir)/emulparams/avr32elf.sh \
53029 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53030 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53031 + ${GENSCRIPTS} avr32elf_uc3a0512es "$(tdir_avr32)" avr32elf
53032 +eavr32elf_uc3a1128.c: $(srcdir)/emulparams/avr32elf.sh \
53033 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53034 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53035 + ${GENSCRIPTS} avr32elf_uc3a1128 "$(tdir_avr32)" avr32elf
53036 +eavr32elf_uc3a1256.c: $(srcdir)/emulparams/avr32elf.sh \
53037 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53038 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53039 + ${GENSCRIPTS} avr32elf_uc3a1256 "$(tdir_avr32)" avr32elf
53040 +eavr32elf_uc3a1512.c: $(srcdir)/emulparams/avr32elf.sh \
53041 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53042 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53043 + ${GENSCRIPTS} avr32elf_uc3a1512 "$(tdir_avr32)" avr32elf
53044 +eavr32elf_uc3a1512es.c: $(srcdir)/emulparams/avr32elf.sh \
53045 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53046 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53047 + ${GENSCRIPTS} avr32elf_uc3a1512es "$(tdir_avr32)" avr32elf
53048 +eavr32elf_uc3a364.c: $(srcdir)/emulparams/avr32elf.sh \
53049 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53050 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53051 + ${GENSCRIPTS} avr32elf_uc3a364 "$(tdir_avr32)" avr32elf
53052 +eavr32elf_uc3a364s.c: $(srcdir)/emulparams/avr32elf.sh \
53053 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53054 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53055 + ${GENSCRIPTS} avr32elf_uc3a364s "$(tdir_avr32)" avr32elf
53056 +eavr32elf_uc3a3128.c: $(srcdir)/emulparams/avr32elf.sh \
53057 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53058 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53059 + ${GENSCRIPTS} avr32elf_uc3a3128 "$(tdir_avr32)" avr32elf
53060 +eavr32elf_uc3a3128s.c: $(srcdir)/emulparams/avr32elf.sh \
53061 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53062 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53063 + ${GENSCRIPTS} avr32elf_uc3a3128s "$(tdir_avr32)" avr32elf
53064 +eavr32elf_uc3a3256.c: $(srcdir)/emulparams/avr32elf.sh \
53065 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53066 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53067 + ${GENSCRIPTS} avr32elf_uc3a3256 "$(tdir_avr32)" avr32elf
53068 +eavr32elf_uc3a3256s.c: $(srcdir)/emulparams/avr32elf.sh \
53069 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53070 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53071 + ${GENSCRIPTS} avr32elf_uc3a3256s "$(tdir_avr32)" avr32elf
53072 +eavr32elf_uc3b064.c: $(srcdir)/emulparams/avr32elf.sh \
53073 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53074 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53075 + ${GENSCRIPTS} avr32elf_uc3b064 "$(tdir_avr32)" avr32elf
53076 +eavr32elf_uc3b0128.c: $(srcdir)/emulparams/avr32elf.sh \
53077 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53078 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53079 + ${GENSCRIPTS} avr32elf_uc3b0128 "$(tdir_avr32)" avr32elf
53080 +eavr32elf_uc3b0256.c: $(srcdir)/emulparams/avr32elf.sh \
53081 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53082 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53083 + ${GENSCRIPTS} avr32elf_uc3b0256 "$(tdir_avr32)" avr32elf
53084 +eavr32elf_uc3b0256es.c: $(srcdir)/emulparams/avr32elf.sh \
53085 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53086 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53087 + ${GENSCRIPTS} avr32elf_uc3b0256es "$(tdir_avr32)" avr32elf
53088 +eavr32elf_uc3b164.c: $(srcdir)/emulparams/avr32elf.sh \
53089 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53090 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53091 + ${GENSCRIPTS} avr32elf_uc3b164 "$(tdir_avr32)" avr32elf
53092 +eavr32elf_uc3b1128.c: $(srcdir)/emulparams/avr32elf.sh \
53093 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53094 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53095 + ${GENSCRIPTS} avr32elf_uc3b1128 "$(tdir_avr32)" avr32elf
53096 +eavr32elf_uc3b1256.c: $(srcdir)/emulparams/avr32elf.sh \
53097 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53098 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53099 + ${GENSCRIPTS} avr32elf_uc3b1256 "$(tdir_avr32)" avr32elf
53100 +eavr32elf_uc3b1256es.c: $(srcdir)/emulparams/avr32elf.sh \
53101 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53102 + $(srcdir)/scripttempl/elf_xip.sc ${GEN_DEPENDS}
53103 + ${GENSCRIPTS} avr32elf_uc3b1256es "$(tdir_avr32)" avr32elf
53104 +eavr32linux.c: $(srcdir)/emulparams/avr32linux.sh \
53105 + $(srcdir)/emultempl/elf32.em $(srcdir)/emultempl/avr32elf.em \
53106 + $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
53107 + ${GENSCRIPTS} avr32linux "$(tdir_avr32)"
53108 ecoff_i860.c: $(srcdir)/emulparams/coff_i860.sh \
53109 $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/i860coff.sc ${GEN_DEPENDS}
53110 ${GENSCRIPTS} coff_i860 "$(tdir_coff_i860)"
53111 @@ -2679,7 +2814,9 @@ install-exec-local: ld-new$(EXEEXT)
53112 || $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
53113 fi
53114
53115 -install-data-local:
53116 +# We want install to imply install-info as per GNU standards, despite the
53117 +# cygnus option.
53118 +install-data-local: install-info
53119 $(mkinstalldirs) $(DESTDIR)$(scriptdir)/ldscripts
53120 for f in ldscripts/*; do \
53121 $(INSTALL_DATA) $$f $(DESTDIR)$(scriptdir)/$$f ; \
53122 --- /dev/null
53123 +++ b/libiberty/required-list
53124 @@ -0,0 +1 @@
53125 +./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
53126 --- a/opcodes/configure
53127 +++ b/opcodes/configure
53128 @@ -11418,6 +11418,7 @@ if test x${all_targets} = xfalse ; then
53129 bfd_arc_arch) ta="$ta arc-dis.lo arc-opc.lo arc-ext.lo" ;;
53130 bfd_arm_arch) ta="$ta arm-dis.lo" ;;
53131 bfd_avr_arch) ta="$ta avr-dis.lo" ;;
53132 + bfd_avr32_arch) ta="$ta avr32-asm.lo avr32-dis.lo avr32-opc.lo" ;;
53133 bfd_bfin_arch) ta="$ta bfin-dis.lo" ;;
53134 bfd_cr16_arch) ta="$ta cr16-dis.lo cr16-opc.lo" ;;
53135 bfd_cris_arch) ta="$ta cris-dis.lo cris-opc.lo cgen-bitset.lo" ;;
53136 @@ -11476,7 +11477,7 @@ if test x${all_targets} = xfalse ; then
53137 ta="$ta sh64-dis.lo sh64-opc.lo"
53138 archdefs="$archdefs -DINCLUDE_SHMEDIA"
53139 break;;
53140 - esac;
53141 + esac
53142 done
53143 ta="$ta sh-dis.lo cgen-bitset.lo" ;;
53144 bfd_sparc_arch) ta="$ta sparc-dis.lo sparc-opc.lo" ;;
53145 --- a/opcodes/Makefile.in
53146 +++ b/opcodes/Makefile.in
53147 @@ -257,6 +257,7 @@ LIBIBERTY = ../libiberty/libiberty.a
53148 # Header files.
53149 HFILES = \
53150 cgen-ops.h cgen-types.h \
53151 + avr32-asm.h avr32-opc.h \
53152 fr30-desc.h fr30-opc.h \
53153 frv-desc.h frv-opc.h \
53154 h8500-opc.h \
53155 @@ -291,6 +292,9 @@ CFILES = \
53156 arc-ext.c \
53157 arm-dis.c \
53158 avr-dis.c \
53159 + avr32-asm.c \
53160 + avr32-dis.c \
53161 + avr32-opc.c \
53162 bfin-dis.c \
53163 cgen-asm.c \
53164 cgen-bitset.c \
53165 @@ -445,6 +449,9 @@ ALL_MACHINES = \
53166 arc-ext.lo \
53167 arm-dis.lo \
53168 avr-dis.lo \
53169 + avr32-asm.lo \
53170 + avr32-dis.lo \
53171 + avr32-opc.lo \
53172 bfin-dis.lo \
53173 cgen-asm.lo \
53174 cgen-bitset.lo \
53175 @@ -1225,6 +1232,15 @@ avr-dis.lo: avr-dis.c sysdep.h config.h
53176 $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
53177 opintl.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \
53178 $(INCDIR)/opcode/avr.h
53179 +avr32-asm.lo: avr32-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53180 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h opintl.h \
53181 + $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
53182 + $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
53183 +avr32-dis.lo: avr32-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53184 + $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
53185 + avr32-opc.h opintl.h
53186 +avr32-opc.lo: avr32-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
53187 + $(BFD_H) $(INCDIR)/symcat.h avr32-opc.h $(INCDIR)/libiberty.h
53188 bfin-dis.lo: bfin-dis.c $(INCDIR)/opcode/bfin.h $(INCDIR)/dis-asm.h \
53189 $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h
53190 cgen-asm.lo: cgen-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \